@@ -142,23 +142,13 @@ define <1 x i64> @sqshl1d_constant(ptr %A) nounwind {
142142}
143143
144144define i64 @sqshl_scalar (ptr %A , ptr %B ) nounwind {
145- ; CHECK-SD-LABEL: sqshl_scalar:
146- ; CHECK-SD: // %bb.0:
147- ; CHECK-SD-NEXT: ldr x8, [x0]
148- ; CHECK-SD-NEXT: ldr x9, [x1]
149- ; CHECK-SD-NEXT: fmov d0, x8
150- ; CHECK-SD-NEXT: fmov d1, x9
151- ; CHECK-SD-NEXT: sqshl d0, d0, d1
152- ; CHECK-SD-NEXT: fmov x0, d0
153- ; CHECK-SD-NEXT: ret
154- ;
155- ; CHECK-GI-LABEL: sqshl_scalar:
156- ; CHECK-GI: // %bb.0:
157- ; CHECK-GI-NEXT: ldr d0, [x0]
158- ; CHECK-GI-NEXT: ldr d1, [x1]
159- ; CHECK-GI-NEXT: sqshl d0, d0, d1
160- ; CHECK-GI-NEXT: fmov x0, d0
161- ; CHECK-GI-NEXT: ret
145+ ; CHECK-LABEL: sqshl_scalar:
146+ ; CHECK: // %bb.0:
147+ ; CHECK-NEXT: ldr d0, [x0]
148+ ; CHECK-NEXT: ldr d1, [x1]
149+ ; CHECK-NEXT: sqshl d0, d0, d1
150+ ; CHECK-NEXT: fmov x0, d0
151+ ; CHECK-NEXT: ret
162152 %tmp1 = load i64 , ptr %A
163153 %tmp2 = load i64 , ptr %B
164154 %tmp3 = call i64 @llvm.aarch64.neon.sqshl.i64 (i64 %tmp1 , i64 %tmp2 )
@@ -362,23 +352,13 @@ define <1 x i64> @uqshl1d_constant(ptr %A) nounwind {
362352}
363353
364354define i64 @uqshl_scalar (ptr %A , ptr %B ) nounwind {
365- ; CHECK-SD-LABEL: uqshl_scalar:
366- ; CHECK-SD: // %bb.0:
367- ; CHECK-SD-NEXT: ldr x8, [x0]
368- ; CHECK-SD-NEXT: ldr x9, [x1]
369- ; CHECK-SD-NEXT: fmov d0, x8
370- ; CHECK-SD-NEXT: fmov d1, x9
371- ; CHECK-SD-NEXT: uqshl d0, d0, d1
372- ; CHECK-SD-NEXT: fmov x0, d0
373- ; CHECK-SD-NEXT: ret
374- ;
375- ; CHECK-GI-LABEL: uqshl_scalar:
376- ; CHECK-GI: // %bb.0:
377- ; CHECK-GI-NEXT: ldr d0, [x0]
378- ; CHECK-GI-NEXT: ldr d1, [x1]
379- ; CHECK-GI-NEXT: uqshl d0, d0, d1
380- ; CHECK-GI-NEXT: fmov x0, d0
381- ; CHECK-GI-NEXT: ret
355+ ; CHECK-LABEL: uqshl_scalar:
356+ ; CHECK: // %bb.0:
357+ ; CHECK-NEXT: ldr d0, [x0]
358+ ; CHECK-NEXT: ldr d1, [x1]
359+ ; CHECK-NEXT: uqshl d0, d0, d1
360+ ; CHECK-NEXT: fmov x0, d0
361+ ; CHECK-NEXT: ret
382362 %tmp1 = load i64 , ptr %A
383363 %tmp2 = load i64 , ptr %B
384364 %tmp3 = call i64 @llvm.aarch64.neon.uqshl.i64 (i64 %tmp1 , i64 %tmp2 )
@@ -938,23 +918,13 @@ define <1 x i64> @sqrshl1d_constant(ptr %A) nounwind {
938918}
939919
940920define i64 @sqrshl_scalar (ptr %A , ptr %B ) nounwind {
941- ; CHECK-SD-LABEL: sqrshl_scalar:
942- ; CHECK-SD: // %bb.0:
943- ; CHECK-SD-NEXT: ldr x8, [x0]
944- ; CHECK-SD-NEXT: ldr x9, [x1]
945- ; CHECK-SD-NEXT: fmov d0, x8
946- ; CHECK-SD-NEXT: fmov d1, x9
947- ; CHECK-SD-NEXT: sqrshl d0, d0, d1
948- ; CHECK-SD-NEXT: fmov x0, d0
949- ; CHECK-SD-NEXT: ret
950- ;
951- ; CHECK-GI-LABEL: sqrshl_scalar:
952- ; CHECK-GI: // %bb.0:
953- ; CHECK-GI-NEXT: ldr d0, [x0]
954- ; CHECK-GI-NEXT: ldr d1, [x1]
955- ; CHECK-GI-NEXT: sqrshl d0, d0, d1
956- ; CHECK-GI-NEXT: fmov x0, d0
957- ; CHECK-GI-NEXT: ret
921+ ; CHECK-LABEL: sqrshl_scalar:
922+ ; CHECK: // %bb.0:
923+ ; CHECK-NEXT: ldr d0, [x0]
924+ ; CHECK-NEXT: ldr d1, [x1]
925+ ; CHECK-NEXT: sqrshl d0, d0, d1
926+ ; CHECK-NEXT: fmov x0, d0
927+ ; CHECK-NEXT: ret
958928 %tmp1 = load i64 , ptr %A
959929 %tmp2 = load i64 , ptr %B
960930 %tmp3 = call i64 @llvm.aarch64.neon.sqrshl.i64 (i64 %tmp1 , i64 %tmp2 )
@@ -964,10 +934,9 @@ define i64 @sqrshl_scalar(ptr %A, ptr %B) nounwind {
964934define i64 @sqrshl_scalar_constant (ptr %A ) nounwind {
965935; CHECK-SD-LABEL: sqrshl_scalar_constant:
966936; CHECK-SD: // %bb.0:
967- ; CHECK-SD-NEXT: ldr x9, [x0]
968- ; CHECK-SD-NEXT: mov w8, #1 // =0x1
937+ ; CHECK-SD-NEXT: mov x8, #1 // =0x1
938+ ; CHECK-SD-NEXT: ldr d0, [x0]
969939; CHECK-SD-NEXT: fmov d1, x8
970- ; CHECK-SD-NEXT: fmov d0, x9
971940; CHECK-SD-NEXT: sqrshl d0, d0, d1
972941; CHECK-SD-NEXT: fmov x0, d0
973942; CHECK-SD-NEXT: ret
@@ -1064,23 +1033,13 @@ define <1 x i64> @uqrshl1d_constant(ptr %A) nounwind {
10641033}
10651034
10661035define i64 @uqrshl_scalar (ptr %A , ptr %B ) nounwind {
1067- ; CHECK-SD-LABEL: uqrshl_scalar:
1068- ; CHECK-SD: // %bb.0:
1069- ; CHECK-SD-NEXT: ldr x8, [x0]
1070- ; CHECK-SD-NEXT: ldr x9, [x1]
1071- ; CHECK-SD-NEXT: fmov d0, x8
1072- ; CHECK-SD-NEXT: fmov d1, x9
1073- ; CHECK-SD-NEXT: uqrshl d0, d0, d1
1074- ; CHECK-SD-NEXT: fmov x0, d0
1075- ; CHECK-SD-NEXT: ret
1076- ;
1077- ; CHECK-GI-LABEL: uqrshl_scalar:
1078- ; CHECK-GI: // %bb.0:
1079- ; CHECK-GI-NEXT: ldr d0, [x0]
1080- ; CHECK-GI-NEXT: ldr d1, [x1]
1081- ; CHECK-GI-NEXT: uqrshl d0, d0, d1
1082- ; CHECK-GI-NEXT: fmov x0, d0
1083- ; CHECK-GI-NEXT: ret
1036+ ; CHECK-LABEL: uqrshl_scalar:
1037+ ; CHECK: // %bb.0:
1038+ ; CHECK-NEXT: ldr d0, [x0]
1039+ ; CHECK-NEXT: ldr d1, [x1]
1040+ ; CHECK-NEXT: uqrshl d0, d0, d1
1041+ ; CHECK-NEXT: fmov x0, d0
1042+ ; CHECK-NEXT: ret
10841043 %tmp1 = load i64 , ptr %A
10851044 %tmp2 = load i64 , ptr %B
10861045 %tmp3 = call i64 @llvm.aarch64.neon.uqrshl.i64 (i64 %tmp1 , i64 %tmp2 )
@@ -1090,10 +1049,9 @@ define i64 @uqrshl_scalar(ptr %A, ptr %B) nounwind {
10901049define i64 @uqrshl_scalar_constant (ptr %A ) nounwind {
10911050; CHECK-SD-LABEL: uqrshl_scalar_constant:
10921051; CHECK-SD: // %bb.0:
1093- ; CHECK-SD-NEXT: ldr x9, [x0]
1094- ; CHECK-SD-NEXT: mov w8, #1 // =0x1
1052+ ; CHECK-SD-NEXT: mov x8, #1 // =0x1
1053+ ; CHECK-SD-NEXT: ldr d0, [x0]
10951054; CHECK-SD-NEXT: fmov d1, x8
1096- ; CHECK-SD-NEXT: fmov d0, x9
10971055; CHECK-SD-NEXT: uqrshl d0, d0, d1
10981056; CHECK-SD-NEXT: fmov x0, d0
10991057; CHECK-SD-NEXT: ret
@@ -2746,6 +2704,7 @@ define <4 x i32> @neon_sshl4s_wrong_ext_constant_shift(ptr %A) nounwind {
27462704; CHECK-GI-NEXT: ret
27472705 %tmp1 = load <4 x i8 >, ptr %A
27482706 %tmp2 = sext <4 x i8 > %tmp1 to <4 x i32 >
2707+ %tmp3 = call <4 x i32 > @llvm.aarch64.neon.sshl.v4i32 (<4 x i32 > %tmp2 , <4 x i32 > <i32 1 , i32 1 , i32 1 , i32 1 >)
27492708 ret <4 x i32 > %tmp3
27502709}
27512710
0 commit comments