MIR Parser: Report an error when a fixed stack object is redefined.
[oota-llvm.git] / test / CodeGen / MIR / X86 / constant-pool.mir
1 # RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s | FileCheck %s
2 # This test ensures that the MIR parser parses constant pool constants and
3 # constant pool operands correctly.
4
5 --- |
6
7   define double @test(double %a, float %b) {
8   entry:
9     %c = fadd double %a, 3.250000e+00
10     %d = fadd float %b, 6.250000e+00
11     %e = fpext float %d to double
12     %f = fmul double %c, %e
13     ret double %f
14   }
15
16   define double @test2(double %a, float %b) {
17   entry:
18     %c = fadd double %a, 3.250000e+00
19     %d = fadd float %b, 6.250000e+00
20     %e = fpext float %d to double
21     %f = fmul double %c, %e
22     ret double %f
23   }
24
25   define double @test3(double %a, float %b) {
26   entry:
27     %c = fadd double %a, 3.250000e+00
28     %d = fadd float %b, 6.250000e+00
29     %e = fpext float %d to double
30     %f = fmul double %c, %e
31     ret double %f
32   }
33
34   define double @test4(double %a, float %b) {
35   entry:
36     %c = fadd double %a, 3.250000e+00
37     %d = fadd float %b, 6.250000e+00
38     %e = fpext float %d to double
39     %f = fmul double %c, %e
40     ret double %f
41   }
42 ...
43 ---
44 # CHECK: name: test
45 # CHECK: constants:
46 # CHECK-NEXT: - id: 0
47 # CHECK-NEXT:   value: 'double 3.250000e+00'
48 # CHECK-NEXT:   alignment: 8
49 # CHECK-NEXT: - id: 1
50 # CHECK-NEXT:   value: 'float 6.250000e+00'
51 # CHECK-NEXT:   alignment: 4
52 name:            test
53 constants:
54   - id:          0
55     value:       'double 3.250000e+00'
56     alignment:   8
57   - id:          1
58     value:       'float 6.250000e+00'
59     alignment:   4
60 body:
61   - id: 0
62     name: entry
63     instructions:
64       # CHECK:      %xmm0 = ADDSDrm killed %xmm0, %rip, 1, _, %const.0, _
65       # CHECK-NEXT: %xmm1 = ADDSSrm killed %xmm1, %rip, 1, _, %const.1, _
66       - '%xmm0 = ADDSDrm killed %xmm0, %rip, 1, _, %const.0, _'
67       - '%xmm1 = ADDSSrm killed %xmm1, %rip, 1, _, %const.1, _'
68       - '%xmm1 = CVTSS2SDrr killed %xmm1'
69       - '%xmm0 = MULSDrr killed %xmm0, killed %xmm1'
70       - 'RETQ %xmm0'
71 ...
72 ---
73 # Verify that alignment can be inferred:
74 # CHECK: name: test2
75 # CHECK: constants:
76 # CHECK-NEXT: - id: 0
77 # CHECK-NEXT:   value: 'double 3.250000e+00'
78 # CHECK-NEXT:   alignment: 8
79 # CHECK-NEXT: - id: 1
80 # CHECK-NEXT:   value: 'float 6.250000e+00'
81 # CHECK-NEXT:   alignment: 4
82 name:            test2
83 constants:
84   - id:          0
85     value:       'double 3.250000e+00'
86   - id:          1
87     value:       'float 6.250000e+00'
88 body:
89   - id: 0
90     name: entry
91     instructions:
92       - '%xmm0 = ADDSDrm killed %xmm0, %rip, 1, _, %const.0, _'
93       - '%xmm1 = ADDSSrm killed %xmm1, %rip, 1, _, %const.1, _'
94       - '%xmm1 = CVTSS2SDrr killed %xmm1'
95       - '%xmm0 = MULSDrr killed %xmm0, killed %xmm1'
96       - 'RETQ %xmm0'
97 ...
98 ---
99 # Verify that the non-standard alignments are respected:
100 # CHECK: name: test3
101 # CHECK: constants:
102 # CHECK-NEXT: - id: 0
103 # CHECK-NEXT:   value: 'double 3.250000e+00'
104 # CHECK-NEXT:   alignment: 128
105 # CHECK-NEXT: - id: 1
106 # CHECK-NEXT:   value: 'float 6.250000e+00'
107 # CHECK-NEXT:   alignment: 1
108 name:            test3
109 constants:
110   - id:          0
111     value:       'double 3.250000e+00'
112     alignment:   128
113   - id:          1
114     value:       'float 6.250000e+00'
115     alignment:   1
116 body:
117   - id: 0
118     name: entry
119     instructions:
120       # CHECK:      %xmm0 = ADDSDrm killed %xmm0, %rip, 1, _, %const.0, _
121       # CHECK-NEXT: %xmm1 = ADDSSrm killed %xmm1, %rip, 1, _, %const.1, _
122       - '%xmm0 = ADDSDrm killed %xmm0, %rip, 1, _, %const.0, _'
123       - '%xmm1 = ADDSSrm killed %xmm1, %rip, 1, _, %const.1, _'
124       - '%xmm1 = CVTSS2SDrr killed %xmm1'
125       - '%xmm0 = MULSDrr killed %xmm0, killed %xmm1'
126       - 'RETQ %xmm0'
127 ...
128 ---
129 # CHECK:  name:  test4
130 name:            test4
131 constants:
132   - id:          0
133     value:       'double 3.250000e+00'
134   - id:          1
135     value:       'float 6.250000e+00'
136 body:
137   - id: 0
138     name: entry
139     instructions:
140       # CHECK:      %xmm0 = ADDSDrm killed %xmm0, %rip, 1, _, %const.1 - 12, _
141       # CHECK-NEXT: %xmm1 = ADDSSrm killed %xmm1, %rip, 1, _, %const.0 + 8, _
142       - '%xmm0 = ADDSDrm killed %xmm0, %rip, 1, _, %const.1 - 12, _'
143       - '%xmm1 = ADDSSrm killed %xmm1, %rip, 1, _, %const.0 + 8, _'
144       - '%xmm1 = CVTSS2SDrr killed %xmm1'
145       - '%xmm0 = MULSDrr killed %xmm0, killed %xmm1'
146       - 'RETQ %xmm0'
147 ...