@@ -1108,61 +1108,54 @@ define <7 x i32> @v7f16_i32(<7 x half> %a, <7 x half> %b, <7 x i32> %d, <7 x i32
11081108;
11091109; CHECK-GI-FP16-LABEL: v7f16_i32:
11101110; CHECK-GI-FP16: // %bb.0: // %entry
1111- ; CHECK-GI-FP16-NEXT: fcmgt v1 .8h, v1.8h, v0.8h
1112- ; CHECK-GI-FP16-NEXT: mov w12 , #31 // =0x1f
1113- ; CHECK-GI-FP16-NEXT: ldr s4 , [sp]
1114- ; CHECK-GI-FP16-NEXT: fmov s2, w12
1111+ ; CHECK-GI-FP16-NEXT: fcmgt v0 .8h, v1.8h, v0.8h
1112+ ; CHECK-GI-FP16-NEXT: mov w10 , #31 // =0x1f
1113+ ; CHECK-GI-FP16-NEXT: ldr s3 , [sp]
1114+ ; CHECK-GI-FP16-NEXT: fmov s1, w10
11151115; CHECK-GI-FP16-NEXT: fmov s6, w0
1116- ; CHECK-GI-FP16-NEXT: ldr s5 , [sp, #8]
1116+ ; CHECK-GI-FP16-NEXT: ldr s4 , [sp, #8]
11171117; CHECK-GI-FP16-NEXT: ldr s7, [sp, #24]
11181118; CHECK-GI-FP16-NEXT: ldr s16, [sp, #32]
1119- ; CHECK-GI-FP16-NEXT: umov w9, v1.h[4]
1120- ; CHECK-GI-FP16-NEXT: umov w8, v1.h[0]
1121- ; CHECK-GI-FP16-NEXT: umov w11, v1.h[5]
1122- ; CHECK-GI-FP16-NEXT: umov w10, v1.h[1]
1123- ; CHECK-GI-FP16-NEXT: mov v2.s[1], w12
1124- ; CHECK-GI-FP16-NEXT: umov w13, v1.h[2]
1119+ ; CHECK-GI-FP16-NEXT: umov w8, v0.h[4]
1120+ ; CHECK-GI-FP16-NEXT: umov w9, v0.h[5]
1121+ ; CHECK-GI-FP16-NEXT: mov v1.s[1], w10
11251122; CHECK-GI-FP16-NEXT: mov v6.s[1], w1
11261123; CHECK-GI-FP16-NEXT: mov v7.s[1], v16.s[0]
11271124; CHECK-GI-FP16-NEXT: ldr s16, [sp, #40]
1128- ; CHECK-GI-FP16-NEXT: fmov s3, w9
1129- ; CHECK-GI-FP16-NEXT: fmov s0, w8
1130- ; CHECK-GI-FP16-NEXT: umov w8, v1.h[6]
1131- ; CHECK-GI-FP16-NEXT: mov v2.s[2], w12
1132- ; CHECK-GI-FP16-NEXT: umov w9, v1.h[3]
1125+ ; CHECK-GI-FP16-NEXT: fmov s2, w8
1126+ ; CHECK-GI-FP16-NEXT: umov w8, v0.h[6]
1127+ ; CHECK-GI-FP16-NEXT: mov v1.s[2], w10
1128+ ; CHECK-GI-FP16-NEXT: ushll v0.4s, v0.4h, #0
11331129; CHECK-GI-FP16-NEXT: mov v6.s[2], w2
11341130; CHECK-GI-FP16-NEXT: mov v7.s[2], v16.s[0]
1135- ; CHECK-GI-FP16-NEXT: mov v3 .s[1], w11
1136- ; CHECK-GI-FP16-NEXT: mov v0.s[1], w10
1137- ; CHECK-GI-FP16-NEXT: mov w10, #-1 // =0xffffffff
1138- ; CHECK-GI-FP16-NEXT: fmov s1, w10
1139- ; CHECK-GI-FP16-NEXT: neg v17 .4s, v2 .4s
1131+ ; CHECK-GI-FP16-NEXT: mov v2 .s[1], w9
1132+ ; CHECK-GI-FP16-NEXT: mov w9, #-1 // =0xffffffff
1133+ ; CHECK-GI-FP16-NEXT: fmov s5, w9
1134+ ; CHECK-GI-FP16-NEXT: neg v17.4s, v1.4s
1135+ ; CHECK-GI-FP16-NEXT: shl v0 .4s, v0 .4s, #31
11401136; CHECK-GI-FP16-NEXT: mov v6.s[3], w3
1137+ ; CHECK-GI-FP16-NEXT: mov v2.s[2], w8
1138+ ; CHECK-GI-FP16-NEXT: fmov w8, s3
1139+ ; CHECK-GI-FP16-NEXT: fmov s3, w7
1140+ ; CHECK-GI-FP16-NEXT: mov v5.s[1], w9
1141+ ; CHECK-GI-FP16-NEXT: sshr v0.4s, v0.4s, #31
1142+ ; CHECK-GI-FP16-NEXT: mov v3.s[1], w8
1143+ ; CHECK-GI-FP16-NEXT: fmov w8, s4
1144+ ; CHECK-GI-FP16-NEXT: ldr s4, [sp, #16]
1145+ ; CHECK-GI-FP16-NEXT: ushl v1.4s, v2.4s, v1.4s
1146+ ; CHECK-GI-FP16-NEXT: fmov s2, w4
1147+ ; CHECK-GI-FP16-NEXT: mov v5.s[2], w9
1148+ ; CHECK-GI-FP16-NEXT: mov v2.s[1], w5
11411149; CHECK-GI-FP16-NEXT: mov v3.s[2], w8
1150+ ; CHECK-GI-FP16-NEXT: sshl v1.4s, v1.4s, v17.4s
11421151; CHECK-GI-FP16-NEXT: fmov w8, s4
1143- ; CHECK-GI-FP16-NEXT: fmov s4, w7
1144- ; CHECK-GI-FP16-NEXT: mov v0.s[2], w13
1145- ; CHECK-GI-FP16-NEXT: mov v1.s[1], w10
1146- ; CHECK-GI-FP16-NEXT: mov v4.s[1], w8
1147- ; CHECK-GI-FP16-NEXT: fmov w8, s5
1148- ; CHECK-GI-FP16-NEXT: ldr s5, [sp, #16]
1149- ; CHECK-GI-FP16-NEXT: ushl v2.4s, v3.4s, v2.4s
1150- ; CHECK-GI-FP16-NEXT: fmov s3, w4
1151- ; CHECK-GI-FP16-NEXT: mov v0.s[3], w9
1152- ; CHECK-GI-FP16-NEXT: mov v1.s[2], w10
1153- ; CHECK-GI-FP16-NEXT: mov v3.s[1], w5
1154- ; CHECK-GI-FP16-NEXT: mov v4.s[2], w8
1155- ; CHECK-GI-FP16-NEXT: sshl v2.4s, v2.4s, v17.4s
1156- ; CHECK-GI-FP16-NEXT: fmov w8, s5
1157- ; CHECK-GI-FP16-NEXT: shl v0.4s, v0.4s, #31
1158- ; CHECK-GI-FP16-NEXT: eor v1.16b, v2.16b, v1.16b
1159- ; CHECK-GI-FP16-NEXT: mov v3.s[2], w6
1160- ; CHECK-GI-FP16-NEXT: mov v4.s[3], w8
1161- ; CHECK-GI-FP16-NEXT: sshr v0.4s, v0.4s, #31
1162- ; CHECK-GI-FP16-NEXT: and v1.16b, v7.16b, v1.16b
1163- ; CHECK-GI-FP16-NEXT: and v2.16b, v3.16b, v2.16b
1164- ; CHECK-GI-FP16-NEXT: bsl v0.16b, v6.16b, v4.16b
1165- ; CHECK-GI-FP16-NEXT: orr v1.16b, v2.16b, v1.16b
1152+ ; CHECK-GI-FP16-NEXT: eor v4.16b, v1.16b, v5.16b
1153+ ; CHECK-GI-FP16-NEXT: mov v2.s[2], w6
1154+ ; CHECK-GI-FP16-NEXT: mov v3.s[3], w8
1155+ ; CHECK-GI-FP16-NEXT: and v1.16b, v2.16b, v1.16b
1156+ ; CHECK-GI-FP16-NEXT: and v2.16b, v7.16b, v4.16b
1157+ ; CHECK-GI-FP16-NEXT: bsl v0.16b, v6.16b, v3.16b
1158+ ; CHECK-GI-FP16-NEXT: orr v1.16b, v1.16b, v2.16b
11661159; CHECK-GI-FP16-NEXT: mov s2, v0.s[1]
11671160; CHECK-GI-FP16-NEXT: mov s3, v0.s[2]
11681161; CHECK-GI-FP16-NEXT: mov s4, v0.s[3]
0 commit comments