@@ -24,130 +24,66 @@ define <1 x i64> @v1i64(<1 x i64> %a) {
2424}
2525
2626define <2 x i64 > @v2i64 (<2 x i64 > %a ) {
27- ; CHECK-SD-LABEL: v2i64:
28- ; CHECK-SD: // %bb.0:
29- ; CHECK-SD-NEXT: cmlt v0.4s, v0.4s, #0
30- ; CHECK-SD-NEXT: ret
31- ;
32- ; CHECK-GI-LABEL: v2i64:
33- ; CHECK-GI: // %bb.0:
34- ; CHECK-GI-NEXT: movi v1.4s, #1
35- ; CHECK-GI-NEXT: ushr v0.2d, v0.2d, #31
36- ; CHECK-GI-NEXT: movi v2.2d, #0x000000ffffffff
37- ; CHECK-GI-NEXT: and v0.16b, v0.16b, v1.16b
38- ; CHECK-GI-NEXT: fmov x11, d2
39- ; CHECK-GI-NEXT: mov x9, v2.d[1]
40- ; CHECK-GI-NEXT: fmov x10, d0
41- ; CHECK-GI-NEXT: mov x8, v0.d[1]
42- ; CHECK-GI-NEXT: mul x10, x10, x11
43- ; CHECK-GI-NEXT: mul x8, x8, x9
44- ; CHECK-GI-NEXT: fmov d0, x10
45- ; CHECK-GI-NEXT: mov v0.d[1], x8
46- ; CHECK-GI-NEXT: ret
27+ ; CHECK-LABEL: v2i64:
28+ ; CHECK: // %bb.0:
29+ ; CHECK-NEXT: cmlt v0.4s, v0.4s, #0
30+ ; CHECK-NEXT: ret
4731 %b = lshr <2 x i64 > %a , <i64 31 , i64 31 >
4832 %c = and <2 x i64 > %b , <i64 4294967297 , i64 4294967297 >
4933 %d = mul nuw <2 x i64 > %c , <i64 4294967295 , i64 4294967295 >
5034 ret <2 x i64 > %d
5135}
5236
5337define <2 x i32 > @v2i32 (<2 x i32 > %a ) {
54- ; CHECK-SD-LABEL: v2i32:
55- ; CHECK-SD: // %bb.0:
56- ; CHECK-SD-NEXT: cmlt v0.4h, v0.4h, #0
57- ; CHECK-SD-NEXT: ret
58- ;
59- ; CHECK-GI-LABEL: v2i32:
60- ; CHECK-GI: // %bb.0:
61- ; CHECK-GI-NEXT: movi v1.4h, #1
62- ; CHECK-GI-NEXT: ushr v0.2s, v0.2s, #15
63- ; CHECK-GI-NEXT: movi d2, #0x00ffff0000ffff
64- ; CHECK-GI-NEXT: and v0.8b, v0.8b, v1.8b
65- ; CHECK-GI-NEXT: mul v0.2s, v0.2s, v2.2s
66- ; CHECK-GI-NEXT: ret
38+ ; CHECK-LABEL: v2i32:
39+ ; CHECK: // %bb.0:
40+ ; CHECK-NEXT: cmlt v0.4h, v0.4h, #0
41+ ; CHECK-NEXT: ret
6742 %b = lshr <2 x i32 > %a , <i32 15 , i32 15 >
6843 %c = and <2 x i32 > %b , <i32 65537 , i32 65537 >
6944 %d = mul nuw <2 x i32 > %c , <i32 65535 , i32 65535 >
7045 ret <2 x i32 > %d
7146}
7247
7348define <4 x i32 > @v4i32 (<4 x i32 > %a ) {
74- ; CHECK-SD-LABEL: v4i32:
75- ; CHECK-SD: // %bb.0:
76- ; CHECK-SD-NEXT: cmlt v0.8h, v0.8h, #0
77- ; CHECK-SD-NEXT: ret
78- ;
79- ; CHECK-GI-LABEL: v4i32:
80- ; CHECK-GI: // %bb.0:
81- ; CHECK-GI-NEXT: movi v1.8h, #1
82- ; CHECK-GI-NEXT: ushr v0.4s, v0.4s, #15
83- ; CHECK-GI-NEXT: movi v2.2d, #0x00ffff0000ffff
84- ; CHECK-GI-NEXT: and v0.16b, v0.16b, v1.16b
85- ; CHECK-GI-NEXT: mul v0.4s, v0.4s, v2.4s
86- ; CHECK-GI-NEXT: ret
49+ ; CHECK-LABEL: v4i32:
50+ ; CHECK: // %bb.0:
51+ ; CHECK-NEXT: cmlt v0.8h, v0.8h, #0
52+ ; CHECK-NEXT: ret
8753 %b = lshr <4 x i32 > %a , <i32 15 , i32 15 , i32 15 , i32 15 >
8854 %c = and <4 x i32 > %b , <i32 65537 , i32 65537 , i32 65537 , i32 65537 >
8955 %d = mul nuw <4 x i32 > %c , <i32 65535 , i32 65535 , i32 65535 , i32 65535 >
9056 ret <4 x i32 > %d
9157}
9258
9359define <8 x i32 > @v8i32 (<8 x i32 > %a ) {
94- ; CHECK-SD-LABEL: v8i32:
95- ; CHECK-SD: // %bb.0:
96- ; CHECK-SD-NEXT: cmlt v0.8h, v0.8h, #0
97- ; CHECK-SD-NEXT: cmlt v1.8h, v1.8h, #0
98- ; CHECK-SD-NEXT: ret
99- ;
100- ; CHECK-GI-LABEL: v8i32:
101- ; CHECK-GI: // %bb.0:
102- ; CHECK-GI-NEXT: movi v2.8h, #1
103- ; CHECK-GI-NEXT: ushr v0.4s, v0.4s, #15
104- ; CHECK-GI-NEXT: ushr v1.4s, v1.4s, #15
105- ; CHECK-GI-NEXT: movi v3.2d, #0x00ffff0000ffff
106- ; CHECK-GI-NEXT: and v0.16b, v0.16b, v2.16b
107- ; CHECK-GI-NEXT: and v1.16b, v1.16b, v2.16b
108- ; CHECK-GI-NEXT: mul v0.4s, v0.4s, v3.4s
109- ; CHECK-GI-NEXT: mul v1.4s, v1.4s, v3.4s
110- ; CHECK-GI-NEXT: ret
60+ ; CHECK-LABEL: v8i32:
61+ ; CHECK: // %bb.0:
62+ ; CHECK-NEXT: cmlt v0.8h, v0.8h, #0
63+ ; CHECK-NEXT: cmlt v1.8h, v1.8h, #0
64+ ; CHECK-NEXT: ret
11165 %b = lshr <8 x i32 > %a , <i32 15 , i32 15 , i32 15 , i32 15 , i32 15 , i32 15 , i32 15 , i32 15 >
11266 %c = and <8 x i32 > %b , <i32 65537 , i32 65537 , i32 65537 , i32 65537 , i32 65537 , i32 65537 , i32 65537 , i32 65537 >
11367 %d = mul nuw <8 x i32 > %c , <i32 65535 , i32 65535 , i32 65535 , i32 65535 , i32 65535 , i32 65535 , i32 65535 , i32 65535 >
11468 ret <8 x i32 > %d
11569}
11670
11771define <4 x i16 > @v4i16 (<4 x i16 > %a ) {
118- ; CHECK-SD-LABEL: v4i16:
119- ; CHECK-SD: // %bb.0:
120- ; CHECK-SD-NEXT: cmlt v0.8b, v0.8b, #0
121- ; CHECK-SD-NEXT: ret
122- ;
123- ; CHECK-GI-LABEL: v4i16:
124- ; CHECK-GI: // %bb.0:
125- ; CHECK-GI-NEXT: movi v1.8b, #1
126- ; CHECK-GI-NEXT: ushr v0.4h, v0.4h, #7
127- ; CHECK-GI-NEXT: movi d2, #0xff00ff00ff00ff
128- ; CHECK-GI-NEXT: and v0.8b, v0.8b, v1.8b
129- ; CHECK-GI-NEXT: mul v0.4h, v0.4h, v2.4h
130- ; CHECK-GI-NEXT: ret
72+ ; CHECK-LABEL: v4i16:
73+ ; CHECK: // %bb.0:
74+ ; CHECK-NEXT: cmlt v0.8b, v0.8b, #0
75+ ; CHECK-NEXT: ret
13176 %b = lshr <4 x i16 > %a , <i16 7 , i16 7 , i16 7 , i16 7 >
13277 %c = and <4 x i16 > %b , <i16 257 , i16 257 , i16 257 , i16 257 >
13378 %d = mul nuw <4 x i16 > %c , <i16 255 , i16 255 , i16 255 , i16 255 >
13479 ret <4 x i16 > %d
13580}
13681
13782define <8 x i16 > @v8i16 (<8 x i16 > %a ) {
138- ; CHECK-SD-LABEL: v8i16:
139- ; CHECK-SD: // %bb.0:
140- ; CHECK-SD-NEXT: cmlt v0.16b, v0.16b, #0
141- ; CHECK-SD-NEXT: ret
142- ;
143- ; CHECK-GI-LABEL: v8i16:
144- ; CHECK-GI: // %bb.0:
145- ; CHECK-GI-NEXT: movi v1.16b, #1
146- ; CHECK-GI-NEXT: ushr v0.8h, v0.8h, #7
147- ; CHECK-GI-NEXT: movi v2.2d, #0xff00ff00ff00ff
148- ; CHECK-GI-NEXT: and v0.16b, v0.16b, v1.16b
149- ; CHECK-GI-NEXT: mul v0.8h, v0.8h, v2.8h
150- ; CHECK-GI-NEXT: ret
83+ ; CHECK-LABEL: v8i16:
84+ ; CHECK: // %bb.0:
85+ ; CHECK-NEXT: cmlt v0.16b, v0.16b, #0
86+ ; CHECK-NEXT: ret
15187 %b = lshr <8 x i16 > %a , <i16 7 , i16 7 , i16 7 , i16 7 , i16 7 , i16 7 , i16 7 , i16 7 >
15288 %c = and <8 x i16 > %b , <i16 257 , i16 257 , i16 257 , i16 257 , i16 257 , i16 257 , i16 257 , i16 257 >
15389 %d = mul nuw <8 x i16 > %c , <i16 255 , i16 255 , i16 255 , i16 255 , i16 255 , i16 255 , i16 255 , i16 255 >
0 commit comments