@@ -7,38 +7,8 @@ define void @ceil_v8f32(ptr %res, ptr %a0) nounwind {
77; CHECK-LABEL: ceil_v8f32:
88; CHECK: # %bb.0: # %entry
99; CHECK-NEXT: xvld $xr0, $a1, 0
10- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 5
11- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
12- ; CHECK-NEXT: vfrintrp.s $vr1, $vr1
13- ; CHECK-NEXT: xvpickve.w $xr2, $xr0, 4
14- ; CHECK-NEXT: vreplvei.w $vr2, $vr2, 0
15- ; CHECK-NEXT: vfrintrp.s $vr2, $vr2
16- ; CHECK-NEXT: vextrins.w $vr2, $vr1, 16
17- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 6
18- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
19- ; CHECK-NEXT: vfrintrp.s $vr1, $vr1
20- ; CHECK-NEXT: vextrins.w $vr2, $vr1, 32
21- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 7
22- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
23- ; CHECK-NEXT: vfrintrp.s $vr1, $vr1
24- ; CHECK-NEXT: vextrins.w $vr2, $vr1, 48
25- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 1
26- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
27- ; CHECK-NEXT: vfrintrp.s $vr1, $vr1
28- ; CHECK-NEXT: xvpickve.w $xr3, $xr0, 0
29- ; CHECK-NEXT: vreplvei.w $vr3, $vr3, 0
30- ; CHECK-NEXT: vfrintrp.s $vr3, $vr3
31- ; CHECK-NEXT: vextrins.w $vr3, $vr1, 16
32- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 2
33- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
34- ; CHECK-NEXT: vfrintrp.s $vr1, $vr1
35- ; CHECK-NEXT: vextrins.w $vr3, $vr1, 32
36- ; CHECK-NEXT: xvpickve.w $xr0, $xr0, 3
37- ; CHECK-NEXT: vreplvei.w $vr0, $vr0, 0
38- ; CHECK-NEXT: vfrintrp.s $vr0, $vr0
39- ; CHECK-NEXT: vextrins.w $vr3, $vr0, 48
40- ; CHECK-NEXT: xvpermi.q $xr3, $xr2, 2
41- ; CHECK-NEXT: xvst $xr3, $a0, 0
10+ ; CHECK-NEXT: xvfrintrp.s $xr0, $xr0
11+ ; CHECK-NEXT: xvst $xr0, $a0, 0
4212; CHECK-NEXT: ret
4313entry:
4414 %v0 = load <8 x float >, ptr %a0
@@ -52,21 +22,7 @@ define void @ceil_v4f64(ptr %res, ptr %a0) nounwind {
5222; CHECK-LABEL: ceil_v4f64:
5323; CHECK: # %bb.0: # %entry
5424; CHECK-NEXT: xvld $xr0, $a1, 0
55- ; CHECK-NEXT: xvpickve.d $xr1, $xr0, 3
56- ; CHECK-NEXT: vreplvei.d $vr1, $vr1, 0
57- ; CHECK-NEXT: vfrintrp.d $vr1, $vr1
58- ; CHECK-NEXT: xvpickve.d $xr2, $xr0, 2
59- ; CHECK-NEXT: vreplvei.d $vr2, $vr2, 0
60- ; CHECK-NEXT: vfrintrp.d $vr2, $vr2
61- ; CHECK-NEXT: vextrins.d $vr2, $vr1, 16
62- ; CHECK-NEXT: xvpickve.d $xr1, $xr0, 1
63- ; CHECK-NEXT: vreplvei.d $vr1, $vr1, 0
64- ; CHECK-NEXT: vfrintrp.d $vr1, $vr1
65- ; CHECK-NEXT: xvpickve.d $xr0, $xr0, 0
66- ; CHECK-NEXT: vreplvei.d $vr0, $vr0, 0
67- ; CHECK-NEXT: vfrintrp.d $vr0, $vr0
68- ; CHECK-NEXT: vextrins.d $vr0, $vr1, 16
69- ; CHECK-NEXT: xvpermi.q $xr0, $xr2, 2
25+ ; CHECK-NEXT: xvfrintrp.d $xr0, $xr0
7026; CHECK-NEXT: xvst $xr0, $a0, 0
7127; CHECK-NEXT: ret
7228entry:
@@ -81,38 +37,8 @@ define void @floor_v8f32(ptr %res, ptr %a0) nounwind {
8137; CHECK-LABEL: floor_v8f32:
8238; CHECK: # %bb.0: # %entry
8339; CHECK-NEXT: xvld $xr0, $a1, 0
84- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 5
85- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
86- ; CHECK-NEXT: vfrintrm.s $vr1, $vr1
87- ; CHECK-NEXT: xvpickve.w $xr2, $xr0, 4
88- ; CHECK-NEXT: vreplvei.w $vr2, $vr2, 0
89- ; CHECK-NEXT: vfrintrm.s $vr2, $vr2
90- ; CHECK-NEXT: vextrins.w $vr2, $vr1, 16
91- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 6
92- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
93- ; CHECK-NEXT: vfrintrm.s $vr1, $vr1
94- ; CHECK-NEXT: vextrins.w $vr2, $vr1, 32
95- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 7
96- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
97- ; CHECK-NEXT: vfrintrm.s $vr1, $vr1
98- ; CHECK-NEXT: vextrins.w $vr2, $vr1, 48
99- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 1
100- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
101- ; CHECK-NEXT: vfrintrm.s $vr1, $vr1
102- ; CHECK-NEXT: xvpickve.w $xr3, $xr0, 0
103- ; CHECK-NEXT: vreplvei.w $vr3, $vr3, 0
104- ; CHECK-NEXT: vfrintrm.s $vr3, $vr3
105- ; CHECK-NEXT: vextrins.w $vr3, $vr1, 16
106- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 2
107- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
108- ; CHECK-NEXT: vfrintrm.s $vr1, $vr1
109- ; CHECK-NEXT: vextrins.w $vr3, $vr1, 32
110- ; CHECK-NEXT: xvpickve.w $xr0, $xr0, 3
111- ; CHECK-NEXT: vreplvei.w $vr0, $vr0, 0
112- ; CHECK-NEXT: vfrintrm.s $vr0, $vr0
113- ; CHECK-NEXT: vextrins.w $vr3, $vr0, 48
114- ; CHECK-NEXT: xvpermi.q $xr3, $xr2, 2
115- ; CHECK-NEXT: xvst $xr3, $a0, 0
40+ ; CHECK-NEXT: xvfrintrm.s $xr0, $xr0
41+ ; CHECK-NEXT: xvst $xr0, $a0, 0
11642; CHECK-NEXT: ret
11743entry:
11844 %v0 = load <8 x float >, ptr %a0
@@ -126,21 +52,7 @@ define void @floor_v4f64(ptr %res, ptr %a0) nounwind {
12652; CHECK-LABEL: floor_v4f64:
12753; CHECK: # %bb.0: # %entry
12854; CHECK-NEXT: xvld $xr0, $a1, 0
129- ; CHECK-NEXT: xvpickve.d $xr1, $xr0, 3
130- ; CHECK-NEXT: vreplvei.d $vr1, $vr1, 0
131- ; CHECK-NEXT: vfrintrm.d $vr1, $vr1
132- ; CHECK-NEXT: xvpickve.d $xr2, $xr0, 2
133- ; CHECK-NEXT: vreplvei.d $vr2, $vr2, 0
134- ; CHECK-NEXT: vfrintrm.d $vr2, $vr2
135- ; CHECK-NEXT: vextrins.d $vr2, $vr1, 16
136- ; CHECK-NEXT: xvpickve.d $xr1, $xr0, 1
137- ; CHECK-NEXT: vreplvei.d $vr1, $vr1, 0
138- ; CHECK-NEXT: vfrintrm.d $vr1, $vr1
139- ; CHECK-NEXT: xvpickve.d $xr0, $xr0, 0
140- ; CHECK-NEXT: vreplvei.d $vr0, $vr0, 0
141- ; CHECK-NEXT: vfrintrm.d $vr0, $vr0
142- ; CHECK-NEXT: vextrins.d $vr0, $vr1, 16
143- ; CHECK-NEXT: xvpermi.q $xr0, $xr2, 2
55+ ; CHECK-NEXT: xvfrintrm.d $xr0, $xr0
14456; CHECK-NEXT: xvst $xr0, $a0, 0
14557; CHECK-NEXT: ret
14658entry:
@@ -155,38 +67,8 @@ define void @trunc_v8f32(ptr %res, ptr %a0) nounwind {
15567; CHECK-LABEL: trunc_v8f32:
15668; CHECK: # %bb.0: # %entry
15769; CHECK-NEXT: xvld $xr0, $a1, 0
158- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 5
159- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
160- ; CHECK-NEXT: vfrintrz.s $vr1, $vr1
161- ; CHECK-NEXT: xvpickve.w $xr2, $xr0, 4
162- ; CHECK-NEXT: vreplvei.w $vr2, $vr2, 0
163- ; CHECK-NEXT: vfrintrz.s $vr2, $vr2
164- ; CHECK-NEXT: vextrins.w $vr2, $vr1, 16
165- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 6
166- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
167- ; CHECK-NEXT: vfrintrz.s $vr1, $vr1
168- ; CHECK-NEXT: vextrins.w $vr2, $vr1, 32
169- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 7
170- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
171- ; CHECK-NEXT: vfrintrz.s $vr1, $vr1
172- ; CHECK-NEXT: vextrins.w $vr2, $vr1, 48
173- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 1
174- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
175- ; CHECK-NEXT: vfrintrz.s $vr1, $vr1
176- ; CHECK-NEXT: xvpickve.w $xr3, $xr0, 0
177- ; CHECK-NEXT: vreplvei.w $vr3, $vr3, 0
178- ; CHECK-NEXT: vfrintrz.s $vr3, $vr3
179- ; CHECK-NEXT: vextrins.w $vr3, $vr1, 16
180- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 2
181- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
182- ; CHECK-NEXT: vfrintrz.s $vr1, $vr1
183- ; CHECK-NEXT: vextrins.w $vr3, $vr1, 32
184- ; CHECK-NEXT: xvpickve.w $xr0, $xr0, 3
185- ; CHECK-NEXT: vreplvei.w $vr0, $vr0, 0
186- ; CHECK-NEXT: vfrintrz.s $vr0, $vr0
187- ; CHECK-NEXT: vextrins.w $vr3, $vr0, 48
188- ; CHECK-NEXT: xvpermi.q $xr3, $xr2, 2
189- ; CHECK-NEXT: xvst $xr3, $a0, 0
70+ ; CHECK-NEXT: xvfrintrz.s $xr0, $xr0
71+ ; CHECK-NEXT: xvst $xr0, $a0, 0
19072; CHECK-NEXT: ret
19173entry:
19274 %v0 = load <8 x float >, ptr %a0
@@ -200,21 +82,7 @@ define void @trunc_v4f64(ptr %res, ptr %a0) nounwind {
20082; CHECK-LABEL: trunc_v4f64:
20183; CHECK: # %bb.0: # %entry
20284; CHECK-NEXT: xvld $xr0, $a1, 0
203- ; CHECK-NEXT: xvpickve.d $xr1, $xr0, 3
204- ; CHECK-NEXT: vreplvei.d $vr1, $vr1, 0
205- ; CHECK-NEXT: vfrintrz.d $vr1, $vr1
206- ; CHECK-NEXT: xvpickve.d $xr2, $xr0, 2
207- ; CHECK-NEXT: vreplvei.d $vr2, $vr2, 0
208- ; CHECK-NEXT: vfrintrz.d $vr2, $vr2
209- ; CHECK-NEXT: vextrins.d $vr2, $vr1, 16
210- ; CHECK-NEXT: xvpickve.d $xr1, $xr0, 1
211- ; CHECK-NEXT: vreplvei.d $vr1, $vr1, 0
212- ; CHECK-NEXT: vfrintrz.d $vr1, $vr1
213- ; CHECK-NEXT: xvpickve.d $xr0, $xr0, 0
214- ; CHECK-NEXT: vreplvei.d $vr0, $vr0, 0
215- ; CHECK-NEXT: vfrintrz.d $vr0, $vr0
216- ; CHECK-NEXT: vextrins.d $vr0, $vr1, 16
217- ; CHECK-NEXT: xvpermi.q $xr0, $xr2, 2
85+ ; CHECK-NEXT: xvfrintrz.d $xr0, $xr0
21886; CHECK-NEXT: xvst $xr0, $a0, 0
21987; CHECK-NEXT: ret
22088entry:
@@ -229,38 +97,8 @@ define void @roundeven_v8f32(ptr %res, ptr %a0) nounwind {
22997; CHECK-LABEL: roundeven_v8f32:
23098; CHECK: # %bb.0: # %entry
23199; CHECK-NEXT: xvld $xr0, $a1, 0
232- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 5
233- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
234- ; CHECK-NEXT: vfrintrne.s $vr1, $vr1
235- ; CHECK-NEXT: xvpickve.w $xr2, $xr0, 4
236- ; CHECK-NEXT: vreplvei.w $vr2, $vr2, 0
237- ; CHECK-NEXT: vfrintrne.s $vr2, $vr2
238- ; CHECK-NEXT: vextrins.w $vr2, $vr1, 16
239- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 6
240- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
241- ; CHECK-NEXT: vfrintrne.s $vr1, $vr1
242- ; CHECK-NEXT: vextrins.w $vr2, $vr1, 32
243- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 7
244- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
245- ; CHECK-NEXT: vfrintrne.s $vr1, $vr1
246- ; CHECK-NEXT: vextrins.w $vr2, $vr1, 48
247- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 1
248- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
249- ; CHECK-NEXT: vfrintrne.s $vr1, $vr1
250- ; CHECK-NEXT: xvpickve.w $xr3, $xr0, 0
251- ; CHECK-NEXT: vreplvei.w $vr3, $vr3, 0
252- ; CHECK-NEXT: vfrintrne.s $vr3, $vr3
253- ; CHECK-NEXT: vextrins.w $vr3, $vr1, 16
254- ; CHECK-NEXT: xvpickve.w $xr1, $xr0, 2
255- ; CHECK-NEXT: vreplvei.w $vr1, $vr1, 0
256- ; CHECK-NEXT: vfrintrne.s $vr1, $vr1
257- ; CHECK-NEXT: vextrins.w $vr3, $vr1, 32
258- ; CHECK-NEXT: xvpickve.w $xr0, $xr0, 3
259- ; CHECK-NEXT: vreplvei.w $vr0, $vr0, 0
260- ; CHECK-NEXT: vfrintrne.s $vr0, $vr0
261- ; CHECK-NEXT: vextrins.w $vr3, $vr0, 48
262- ; CHECK-NEXT: xvpermi.q $xr3, $xr2, 2
263- ; CHECK-NEXT: xvst $xr3, $a0, 0
100+ ; CHECK-NEXT: xvfrintrne.s $xr0, $xr0
101+ ; CHECK-NEXT: xvst $xr0, $a0, 0
264102; CHECK-NEXT: ret
265103entry:
266104 %v0 = load <8 x float >, ptr %a0
@@ -274,21 +112,7 @@ define void @roundeven_v4f64(ptr %res, ptr %a0) nounwind {
274112; CHECK-LABEL: roundeven_v4f64:
275113; CHECK: # %bb.0: # %entry
276114; CHECK-NEXT: xvld $xr0, $a1, 0
277- ; CHECK-NEXT: xvpickve.d $xr1, $xr0, 3
278- ; CHECK-NEXT: vreplvei.d $vr1, $vr1, 0
279- ; CHECK-NEXT: vfrintrne.d $vr1, $vr1
280- ; CHECK-NEXT: xvpickve.d $xr2, $xr0, 2
281- ; CHECK-NEXT: vreplvei.d $vr2, $vr2, 0
282- ; CHECK-NEXT: vfrintrne.d $vr2, $vr2
283- ; CHECK-NEXT: vextrins.d $vr2, $vr1, 16
284- ; CHECK-NEXT: xvpickve.d $xr1, $xr0, 1
285- ; CHECK-NEXT: vreplvei.d $vr1, $vr1, 0
286- ; CHECK-NEXT: vfrintrne.d $vr1, $vr1
287- ; CHECK-NEXT: xvpickve.d $xr0, $xr0, 0
288- ; CHECK-NEXT: vreplvei.d $vr0, $vr0, 0
289- ; CHECK-NEXT: vfrintrne.d $vr0, $vr0
290- ; CHECK-NEXT: vextrins.d $vr0, $vr1, 16
291- ; CHECK-NEXT: xvpermi.q $xr0, $xr2, 2
115+ ; CHECK-NEXT: xvfrintrne.d $xr0, $xr0
292116; CHECK-NEXT: xvst $xr0, $a0, 0
293117; CHECK-NEXT: ret
294118entry:
0 commit comments