[ARM] Split large truncating MVE stores
[llvm-complete.git] / test / CodeGen / MIR / X86 / constant-pool.mir
blob69a436b41f39faa6b16ba81d50a7d09da3a68355
1 # RUN: llc -march=x86-64 -run-pass none -o - %s | FileCheck %s
2 # This test ensures that the MIR parser parses constant pool constants and
3 # constant pool operands correctly.
5 --- |
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   }
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   }
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   }
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:   isTargetSpecific: false
50 # CHECK-NEXT: - id: 1
51 # CHECK-NEXT:   value: 'float 6.250000e+00'
52 # CHECK-NEXT:   alignment: 4
53 # CHECK-NEXT:   isTargetSpecific: false
54 name:            test
55 constants:
56   - id:          0
57     value:       'double 3.250000e+00'
58     alignment:   8
59   - id:          1
60     value:       'float 6.250000e+00'
61     alignment:   4
62 body: |
63   bb.0.entry:
64     ; CHECK:      $xmm0 = ADDSDrm killed $xmm0, $rip, 1, $noreg, %const.0, $noreg
65     ; CHECK-NEXT: $xmm1 = ADDSSrm killed $xmm1, $rip, 1, $noreg, %const.1, $noreg
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:   isTargetSpecific: false
80 # CHECK-NEXT: - id: 1
81 # CHECK-NEXT:   value: 'float 6.250000e+00'
82 # CHECK-NEXT:   alignment: 4
83 # CHECK-NEXT:   isTargetSpecific: false
84 name:            test2
85 constants:
86   - id:          0
87     value:       'double 3.250000e+00'
88   - id:          1
89     value:       'float 6.250000e+00'
90 body: |
91   bb.0.entry:
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:   isTargetSpecific: false
106 # CHECK-NEXT: - id: 1
107 # CHECK-NEXT:   value: 'float 6.250000e+00'
108 # CHECK-NEXT:   alignment: 1
109 # CHECK-NEXT:   isTargetSpecific: false
110 name:            test3
111 constants:
112   - id:          0
113     value:       'double 3.250000e+00'
114     alignment:   128
115   - id:          1
116     value:       'float 6.250000e+00'
117     alignment:   1
118 body: |
119   bb.0.entry:
120     ; CHECK:      $xmm0 = ADDSDrm killed $xmm0, $rip, 1, $noreg, %const.0, $noreg
121     ; CHECK-NEXT: $xmm1 = ADDSSrm killed $xmm1, $rip, 1, $noreg, %const.1, $noreg
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
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   bb.0.entry:
138     ; CHECK:      $xmm0 = ADDSDrm killed $xmm0, $rip, 1, $noreg, %const.1 - 12, $noreg
139     ; CHECK-NEXT: $xmm1 = ADDSSrm killed $xmm1, $rip, 1, $noreg, %const.0 + 8, $noreg
140     $xmm0 = ADDSDrm killed $xmm0, $rip, 1, _, %const.1 - 12, _
141     $xmm1 = ADDSSrm killed $xmm1, $rip, 1, _, %const.0 + 8, _
142     $xmm1 = CVTSS2SDrr killed $xmm1
143     $xmm0 = MULSDrr killed $xmm0, killed $xmm1
144     RETQ $xmm0