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.
7 define double @test(double %a, float %b) {
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
16 define double @test2(double %a, float %b) {
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
25 define double @test3(double %a, float %b) {
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
34 define double @test4(double %a, float %b) {
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
47 # CHECK-NEXT: value: 'double 3.250000e+00'
48 # CHECK-NEXT: alignment: 8
50 # CHECK-NEXT: value: 'float 6.250000e+00'
51 # CHECK-NEXT: alignment: 4
55 value: 'double 3.250000e+00'
58 value: 'float 6.250000e+00'
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'
73 # Verify that alignment can be inferred:
77 # CHECK-NEXT: value: 'double 3.250000e+00'
78 # CHECK-NEXT: alignment: 8
80 # CHECK-NEXT: value: 'float 6.250000e+00'
81 # CHECK-NEXT: alignment: 4
85 value: 'double 3.250000e+00'
87 value: 'float 6.250000e+00'
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'
99 # Verify that the non-standard alignments are respected:
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
111 value: 'double 3.250000e+00'
114 value: 'float 6.250000e+00'
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'
133 value: 'double 3.250000e+00'
135 value: 'float 6.250000e+00'
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'