1 # RUN: llc -mtriple=s390x-linux-gnu -mcpu=z10 -start-before=greedy %s -o - \
4 define void @f0(ptr %ptr1, ptr %ptr2) {
5 %val0 = load volatile float, ptr %ptr2
6 %val1 = load volatile float, ptr %ptr2
7 %val2 = load volatile float, ptr %ptr2
8 %val3 = load volatile float, ptr %ptr2
9 %val4 = load volatile float, ptr %ptr2
10 %val5 = load volatile float, ptr %ptr2
11 %val6 = load volatile float, ptr %ptr2
12 %val7 = load volatile float, ptr %ptr2
13 %val8 = load volatile float, ptr %ptr2
14 %val9 = load volatile float, ptr %ptr2
15 %val10 = load volatile float, ptr %ptr2
16 %val11 = load volatile float, ptr %ptr2
17 %val12 = load volatile float, ptr %ptr2
18 %val13 = load volatile float, ptr %ptr2
19 %val14 = load volatile float, ptr %ptr2
20 %val15 = load volatile float, ptr %ptr2
21 %val16 = load volatile float, ptr %ptr2
22 %ext0 = fpext float %val0 to double
23 %ext1 = fpext float %val1 to double
24 %ext2 = fpext float %val2 to double
25 %ext3 = fpext float %val3 to double
26 %ext4 = fpext float %val4 to double
27 %ext5 = fpext float %val5 to double
28 %ext6 = fpext float %val6 to double
29 %ext7 = fpext float %val7 to double
30 %ext8 = fpext float %val8 to double
31 %ext9 = fpext float %val9 to double
32 %ext10 = fpext float %val10 to double
33 %ext11 = fpext float %val11 to double
34 %ext12 = fpext float %val12 to double
35 %ext13 = fpext float %val13 to double
36 %ext14 = fpext float %val14 to double
37 %ext15 = fpext float %val15 to double
38 %ext16 = fpext float %val16 to double
39 store volatile float %val0, ptr %ptr2
40 store volatile float %val1, ptr %ptr2
41 store volatile float %val2, ptr %ptr2
42 store volatile float %val3, ptr %ptr2
43 store volatile float %val4, ptr %ptr2
44 store volatile float %val5, ptr %ptr2
45 store volatile float %val6, ptr %ptr2
46 store volatile float %val7, ptr %ptr2
47 store volatile float %val8, ptr %ptr2
48 store volatile float %val9, ptr %ptr2
49 store volatile float %val10, ptr %ptr2
50 store volatile float %val11, ptr %ptr2
51 store volatile float %val12, ptr %ptr2
52 store volatile float %val13, ptr %ptr2
53 store volatile float %val14, ptr %ptr2
54 store volatile float %val15, ptr %ptr2
55 store volatile float %val16, ptr %ptr2
56 store volatile double %ext0, ptr %ptr1
57 store volatile double %ext1, ptr %ptr1
58 store volatile double %ext2, ptr %ptr1
59 store volatile double %ext3, ptr %ptr1
60 store volatile double %ext4, ptr %ptr1
61 store volatile double %ext5, ptr %ptr1
62 store volatile double %ext6, ptr %ptr1
63 store volatile double %ext7, ptr %ptr1
64 store volatile double %ext8, ptr %ptr1
65 store volatile double %ext9, ptr %ptr1
66 store volatile double %ext10, ptr %ptr1
67 store volatile double %ext11, ptr %ptr1
68 store volatile double %ext12, ptr %ptr1
69 store volatile double %ext13, ptr %ptr1
70 store volatile double %ext14, ptr %ptr1
71 store volatile double %ext15, ptr %ptr1
72 store volatile double %ext16, ptr %ptr1
79 # CHECK: ldeb {{%f[0-9]+}}, 16{{[04]}}(%r15)
85 tracksRegLiveness: true
87 - { id: 0, class: addr64bit }
88 - { id: 1, class: addr64bit }
89 - { id: 2, class: fp32bit }
90 - { id: 3, class: fp32bit }
91 - { id: 4, class: fp32bit }
92 - { id: 5, class: fp32bit }
93 - { id: 6, class: fp32bit }
94 - { id: 7, class: fp32bit }
95 - { id: 8, class: fp32bit }
96 - { id: 9, class: fp32bit }
97 - { id: 10, class: fp32bit }
98 - { id: 11, class: fp32bit }
99 - { id: 12, class: fp32bit }
100 - { id: 13, class: fp32bit }
101 - { id: 14, class: fp32bit }
102 - { id: 15, class: fp32bit }
103 - { id: 16, class: fp32bit }
104 - { id: 17, class: fp32bit }
105 - { id: 18, class: fp32bit }
106 - { id: 19, class: fp64bit }
107 - { id: 20, class: fp64bit }
108 - { id: 21, class: fp64bit }
109 - { id: 22, class: fp64bit }
110 - { id: 23, class: fp64bit }
111 - { id: 24, class: fp64bit }
112 - { id: 25, class: fp64bit }
113 - { id: 26, class: fp64bit }
114 - { id: 27, class: fp64bit }
115 - { id: 28, class: fp64bit }
116 - { id: 29, class: fp64bit }
117 - { id: 30, class: fp64bit }
118 - { id: 31, class: fp64bit }
119 - { id: 32, class: fp64bit }
120 - { id: 33, class: fp64bit }
121 - { id: 34, class: fp64bit }
122 - { id: 35, class: fp64bit }
124 - { reg: '$r2d', virtual-reg: '%0' }
125 - { reg: '$r3d', virtual-reg: '%1' }
132 %2 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
133 %3 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
134 %4 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
135 %5 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
136 %6 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
137 %7 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
138 %8 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
139 %9 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
140 %10 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
141 %11 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
142 %12 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
143 %13 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
144 %14 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
145 %15 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
146 %16 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
147 %17 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
148 %18 = LE %1, 0, $noreg :: (volatile load (s32) from %ir.ptr2)
149 STE %2, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
150 STE %3, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
151 STE %4, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
152 STE %5, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
153 STE %6, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
154 STE %7, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
155 STE %8, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
156 STE %9, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
157 STE %10, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
158 STE %11, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
159 STE %12, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
160 STE %13, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
161 STE %14, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
162 STE %15, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
163 STE %16, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
164 STE %17, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
165 STE %18, %1, 0, $noreg :: (volatile store (s32) into %ir.ptr2)
166 %19 = LDEBR %2, implicit $fpc
167 STD %19, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
168 %20 = LDEBR %3, implicit $fpc
169 STD %20, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
170 %21 = LDEBR %4, implicit $fpc
171 STD %21, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
172 %22 = LDEBR %5, implicit $fpc
173 STD %22, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
174 %23 = LDEBR %6, implicit $fpc
175 STD %23, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
176 %24 = LDEBR %7, implicit $fpc
177 STD %24, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
178 %25 = LDEBR %8, implicit $fpc
179 STD %25, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
180 %26 = LDEBR %9, implicit $fpc
181 STD %26, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
182 %27 = LDEBR %10, implicit $fpc
183 STD %27, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
184 %28 = LDEBR %11, implicit $fpc
185 STD %28, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
186 %29 = LDEBR %12, implicit $fpc
187 STD %29, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
188 %30 = LDEBR %13, implicit $fpc
189 STD %30, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
190 %31 = LDEBR %14, implicit $fpc
191 STD %31, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
192 %32 = LDEBR %15, implicit $fpc
193 STD %32, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
194 %33 = LDEBR %16, implicit $fpc
195 STD %33, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
196 %34 = LDEBR %17, implicit $fpc
197 STD %34, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)
198 %35 = LDEBR %18, implicit $fpc
199 STD %35, %0, 0, $noreg :: (volatile store (s64) into %ir.ptr1)