diff --git a/llvm/lib/Target/ARM/ARMInstrThumb2.td b/llvm/lib/Target/ARM/ARMInstrThumb2.td index d8721cbebd2dc..521cb0695384c 100644 --- a/llvm/lib/Target/ARM/ARMInstrThumb2.td +++ b/llvm/lib/Target/ARM/ARMInstrThumb2.td @@ -5663,7 +5663,7 @@ let Predicates = [HasV8_1MMainline] in { defm : ModifiedV8_1CSEL; def : T2Pat<(ARMcmov (topbitsallzero32:$Rn), (i32 1), cmovpred:$imm), - (t2CSINC $Rn, ZR, $imm)>; + (t2CSINC $Rn, ZR, (inv_cond_XFORM imm:$imm))>; def : T2Pat<(and (topbitsallzero32:$Rn), (ARMcsinc_su (i32 0), (i32 0), cmovpred:$imm)), (t2CSEL ZR, $Rn, $imm)>; } diff --git a/llvm/test/CodeGen/Thumb2/csel-andor-onebit.ll b/llvm/test/CodeGen/Thumb2/csel-andor-onebit.ll index 759a8169389cc..5219c74e35817 100644 --- a/llvm/test/CodeGen/Thumb2/csel-andor-onebit.ll +++ b/llvm/test/CodeGen/Thumb2/csel-andor-onebit.ll @@ -6,7 +6,7 @@ define i32 @ori32i32_eq(i32 %x, i32 %y) { ; CHECK: @ %bb.0: ; CHECK-NEXT: and r0, r0, #1 ; CHECK-NEXT: cmp r1, #0 -; CHECK-NEXT: csinc r0, r0, zr, eq +; CHECK-NEXT: csinc r0, r0, zr, ne ; CHECK-NEXT: bx lr %xa = and i32 %x, 1 %c = icmp eq i32 %y, 0 @@ -20,7 +20,7 @@ define i32 @ori32_eq_c(i32 %x, i32 %y) { ; CHECK: @ %bb.0: ; CHECK-NEXT: and r0, r0, #1 ; CHECK-NEXT: cmp r1, #0 -; CHECK-NEXT: csinc r0, r0, zr, eq +; CHECK-NEXT: csinc r0, r0, zr, ne ; CHECK-NEXT: bx lr %xa = and i32 %x, 1 %c = icmp eq i32 %y, 0 @@ -34,7 +34,7 @@ define i32 @ori32i64_eq(i32 %x, i64 %y) { ; CHECK: @ %bb.0: ; CHECK-NEXT: orrs.w r1, r2, r3 ; CHECK-NEXT: and r0, r0, #1 -; CHECK-NEXT: csinc r0, r0, zr, eq +; CHECK-NEXT: csinc r0, r0, zr, ne ; CHECK-NEXT: bx lr %xa = and i32 %x, 1 %c = icmp eq i64 %y, 0 @@ -48,7 +48,7 @@ define i32 @ori32_sgt(i32 %x, i32 %y) { ; CHECK: @ %bb.0: ; CHECK-NEXT: and r0, r0, #1 ; CHECK-NEXT: cmp r1, #0 -; CHECK-NEXT: csinc r0, r0, zr, gt +; CHECK-NEXT: csinc r0, r0, zr, le ; CHECK-NEXT: bx lr %xa = and i32 %x, 1 %c = icmp sgt i32 %y, 0 @@ -195,3 +195,18 @@ entry: ret i32 %g.0 } +define i32 @test(i32 %a, i32 %b) { +; CHECK-LABEL: test: +; CHECK: @ %bb.0: @ %entry +; CHECK-NEXT: movs r2, #1 +; CHECK-NEXT: cmp r1, r0 +; CHECK-NEXT: lsr.w r2, r2, r1 +; CHECK-NEXT: csinc r0, r2, zr, le +; CHECK-NEXT: bx lr +entry: + %cmp = icmp sgt i32 %b, %a + %b.op = lshr i32 1, %b + %shr = select i1 %cmp, i32 1, i32 %b.op + ret i32 %shr +} + diff --git a/llvm/test/CodeGen/Thumb2/mve-pred-or.ll b/llvm/test/CodeGen/Thumb2/mve-pred-or.ll index b2e9877343bac..46406aeebfa4e 100644 --- a/llvm/test/CodeGen/Thumb2/mve-pred-or.ll +++ b/llvm/test/CodeGen/Thumb2/mve-pred-or.ll @@ -384,7 +384,7 @@ define arm_aapcs_vfpcc <2 x i64> @cmpeqz_v2i1(<2 x i64> %a, <2 x i64> %b) { ; CHECK-NEXT: orrs r1, r2 ; CHECK-NEXT: cset r1, eq ; CHECK-NEXT: cmp r0, #0 -; CHECK-NEXT: csinc r0, r1, zr, eq +; CHECK-NEXT: csinc r0, r1, zr, ne ; CHECK-NEXT: movs r1, #0 ; CHECK-NEXT: rsbs r0, r0, #0 ; CHECK-NEXT: bfi r1, r0, #0, #8 @@ -394,7 +394,7 @@ define arm_aapcs_vfpcc <2 x i64> @cmpeqz_v2i1(<2 x i64> %a, <2 x i64> %b) { ; CHECK-NEXT: orrs r2, r3 ; CHECK-NEXT: cset r2, eq ; CHECK-NEXT: cmp r0, #0 -; CHECK-NEXT: csinc r0, r2, zr, eq +; CHECK-NEXT: csinc r0, r2, zr, ne ; CHECK-NEXT: rsbs r0, r0, #0 ; CHECK-NEXT: bfi r1, r0, #8, #8 ; CHECK-NEXT: vmsr p0, r1 @@ -420,7 +420,7 @@ define arm_aapcs_vfpcc <2 x i64> @cmpeq_v2i1(<2 x i64> %a, <2 x i64> %b, <2 x i6 ; CHECK-NEXT: cset r0, eq ; CHECK-NEXT: orrs r1, r2 ; CHECK-NEXT: vmov r12, r2, d5 -; CHECK-NEXT: csinc r0, r0, zr, eq +; CHECK-NEXT: csinc r0, r0, zr, ne ; CHECK-NEXT: movs r1, #0 ; CHECK-NEXT: rsbs r0, r0, #0 ; CHECK-NEXT: bfi r1, r0, #0, #8 @@ -431,7 +431,7 @@ define arm_aapcs_vfpcc <2 x i64> @cmpeq_v2i1(<2 x i64> %a, <2 x i64> %b, <2 x i6 ; CHECK-NEXT: vmov r2, r3, d1 ; CHECK-NEXT: cset r0, eq ; CHECK-NEXT: orrs r2, r3 -; CHECK-NEXT: csinc r0, r0, zr, eq +; CHECK-NEXT: csinc r0, r0, zr, ne ; CHECK-NEXT: rsbs r0, r0, #0 ; CHECK-NEXT: bfi r1, r0, #8, #8 ; CHECK-NEXT: vmsr p0, r1 diff --git a/llvm/test/CodeGen/Thumb2/mve-vcmpf.ll b/llvm/test/CodeGen/Thumb2/mve-vcmpf.ll index b30fa9b66274f..baf0076277e50 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vcmpf.ll +++ b/llvm/test/CodeGen/Thumb2/mve-vcmpf.ll @@ -47,18 +47,18 @@ define arm_aapcs_vfpcc <4 x float> @vcmp_one_v4f32(<4 x float> %src, <4 x float> ; CHECK-MVE-NEXT: cset r0, mi ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s0, s4 -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s3, s7 ; CHECK-MVE-NEXT: cset r1, mi -; CHECK-MVE-NEXT: csinc r1, r1, zr, gt +; CHECK-MVE-NEXT: csinc r1, r1, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s2, s6 ; CHECK-MVE-NEXT: cset r2, mi -; CHECK-MVE-NEXT: csinc r2, r2, zr, gt +; CHECK-MVE-NEXT: csinc r2, r2, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r3, mi -; CHECK-MVE-NEXT: csinc r3, r3, zr, gt +; CHECK-MVE-NEXT: csinc r3, r3, zr, le ; CHECK-MVE-NEXT: cmp r2, #0 ; CHECK-MVE-NEXT: vseleq.f32 s3, s15, s11 ; CHECK-MVE-NEXT: cmp r3, #0 @@ -234,18 +234,18 @@ define arm_aapcs_vfpcc <4 x float> @vcmp_ueq_v4f32(<4 x float> %src, <4 x float> ; CHECK-MVE-NEXT: cset r0, eq ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s0, s4 -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s3, s7 ; CHECK-MVE-NEXT: cset r1, eq -; CHECK-MVE-NEXT: csinc r1, r1, zr, vs +; CHECK-MVE-NEXT: csinc r1, r1, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s2, s6 ; CHECK-MVE-NEXT: cset r2, eq -; CHECK-MVE-NEXT: csinc r2, r2, zr, vs +; CHECK-MVE-NEXT: csinc r2, r2, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r3, eq -; CHECK-MVE-NEXT: csinc r3, r3, zr, vs +; CHECK-MVE-NEXT: csinc r3, r3, zr, vc ; CHECK-MVE-NEXT: cmp r2, #0 ; CHECK-MVE-NEXT: vseleq.f32 s3, s15, s11 ; CHECK-MVE-NEXT: cmp r3, #0 @@ -609,12 +609,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_one_v8f16(<8 x half> %src, <8 x half> %s ; CHECK-MVE-NEXT: vmovx.f16 s18, s12 ; CHECK-MVE-NEXT: vmovx.f16 s4, s5 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s0, s12, s8 ; CHECK-MVE-NEXT: vmovx.f16 s8, s1 @@ -625,13 +625,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_one_v8f16(<8 x half> %src, <8 x half> %s ; CHECK-MVE-NEXT: vcmp.f16 s1, s5 ; CHECK-MVE-NEXT: vins.f16 s0, s16 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s8, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s2 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s1, s13, s9 ; CHECK-MVE-NEXT: vins.f16 s1, s4 @@ -643,12 +643,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_one_v8f16(<8 x half> %src, <8 x half> %s ; CHECK-MVE-NEXT: vmovx.f16 s8, s14 ; CHECK-MVE-NEXT: vmovx.f16 s6, s3 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s8, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s2, s14, s10 ; CHECK-MVE-NEXT: vins.f16 s2, s4 @@ -659,12 +659,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_one_v8f16(<8 x half> %src, <8 x half> %s ; CHECK-MVE-NEXT: vmovx.f16 s6, s15 ; CHECK-MVE-NEXT: vcmp.f16 s3, s7 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s6, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s3, s15, s11 ; CHECK-MVE-NEXT: vins.f16 s3, s4 @@ -1013,12 +1013,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_ueq_v8f16(<8 x half> %src, <8 x half> %s ; CHECK-MVE-NEXT: vmovx.f16 s18, s12 ; CHECK-MVE-NEXT: vmovx.f16 s4, s5 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s0, s12, s8 ; CHECK-MVE-NEXT: vmovx.f16 s8, s1 @@ -1029,13 +1029,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_ueq_v8f16(<8 x half> %src, <8 x half> %s ; CHECK-MVE-NEXT: vcmp.f16 s1, s5 ; CHECK-MVE-NEXT: vins.f16 s0, s16 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s8, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s2 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s1, s13, s9 ; CHECK-MVE-NEXT: vins.f16 s1, s4 @@ -1047,12 +1047,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_ueq_v8f16(<8 x half> %src, <8 x half> %s ; CHECK-MVE-NEXT: vmovx.f16 s8, s14 ; CHECK-MVE-NEXT: vmovx.f16 s6, s3 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s8, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s2, s14, s10 ; CHECK-MVE-NEXT: vins.f16 s2, s4 @@ -1063,12 +1063,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_ueq_v8f16(<8 x half> %src, <8 x half> %s ; CHECK-MVE-NEXT: vmovx.f16 s6, s15 ; CHECK-MVE-NEXT: vcmp.f16 s3, s7 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s6, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s3, s15, s11 ; CHECK-MVE-NEXT: vins.f16 s3, s4 diff --git a/llvm/test/CodeGen/Thumb2/mve-vcmpfr.ll b/llvm/test/CodeGen/Thumb2/mve-vcmpfr.ll index f35aa43f5a7aa..fe82255bff6c8 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vcmpfr.ll +++ b/llvm/test/CodeGen/Thumb2/mve-vcmpfr.ll @@ -50,18 +50,18 @@ define arm_aapcs_vfpcc <4 x float> @vcmp_one_v4f32(<4 x float> %src, float %src2 ; CHECK-MVE-NEXT: cset r0, mi ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s0, s4 -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s3, s4 ; CHECK-MVE-NEXT: cset r1, mi -; CHECK-MVE-NEXT: csinc r1, r1, zr, gt +; CHECK-MVE-NEXT: csinc r1, r1, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s2, s4 ; CHECK-MVE-NEXT: cset r2, mi -; CHECK-MVE-NEXT: csinc r2, r2, zr, gt +; CHECK-MVE-NEXT: csinc r2, r2, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r3, mi -; CHECK-MVE-NEXT: csinc r3, r3, zr, gt +; CHECK-MVE-NEXT: csinc r3, r3, zr, le ; CHECK-MVE-NEXT: cmp r2, #0 ; CHECK-MVE-NEXT: vseleq.f32 s3, s15, s11 ; CHECK-MVE-NEXT: cmp r3, #0 @@ -252,18 +252,18 @@ define arm_aapcs_vfpcc <4 x float> @vcmp_ueq_v4f32(<4 x float> %src, float %src2 ; CHECK-MVE-NEXT: cset r0, eq ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s0, s4 -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s3, s4 ; CHECK-MVE-NEXT: cset r1, eq -; CHECK-MVE-NEXT: csinc r1, r1, zr, vs +; CHECK-MVE-NEXT: csinc r1, r1, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s2, s4 ; CHECK-MVE-NEXT: cset r2, eq -; CHECK-MVE-NEXT: csinc r2, r2, zr, vs +; CHECK-MVE-NEXT: csinc r2, r2, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r3, eq -; CHECK-MVE-NEXT: csinc r3, r3, zr, vs +; CHECK-MVE-NEXT: csinc r3, r3, zr, vc ; CHECK-MVE-NEXT: cmp r2, #0 ; CHECK-MVE-NEXT: vseleq.f32 s3, s15, s11 ; CHECK-MVE-NEXT: cmp r3, #0 @@ -643,12 +643,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_one_v8f16(<8 x half> %src, half %src2, < ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s0, s4 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s5, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s0, s12, s8 ; CHECK-MVE-NEXT: vmovx.f16 s8, s13 @@ -659,13 +659,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_one_v8f16(<8 x half> %src, half %src2, < ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s1, s4 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s8, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s14 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s1, s13, s9 ; CHECK-MVE-NEXT: vins.f16 s1, s6 @@ -675,13 +675,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_one_v8f16(<8 x half> %src, half %src2, < ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s2, s4 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s8, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s15 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s2, s14, s10 ; CHECK-MVE-NEXT: vins.f16 s2, s6 @@ -691,12 +691,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_one_v8f16(<8 x half> %src, half %src2, < ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s3, s4 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s8, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s3, s15, s11 ; CHECK-MVE-NEXT: vins.f16 s3, s6 @@ -1027,12 +1027,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_ueq_v8f16(<8 x half> %src, half %src2, < ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s0, s4 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s5, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s0, s12, s8 ; CHECK-MVE-NEXT: vmovx.f16 s8, s13 @@ -1043,13 +1043,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_ueq_v8f16(<8 x half> %src, half %src2, < ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s1, s4 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s8, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s14 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s1, s13, s9 ; CHECK-MVE-NEXT: vins.f16 s1, s6 @@ -1059,13 +1059,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_ueq_v8f16(<8 x half> %src, half %src2, < ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s2, s4 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s8, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s15 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s2, s14, s10 ; CHECK-MVE-NEXT: vins.f16 s2, s6 @@ -1075,12 +1075,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_ueq_v8f16(<8 x half> %src, half %src2, < ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s3, s4 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s8, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s3, s15, s11 ; CHECK-MVE-NEXT: vins.f16 s3, s6 @@ -1663,18 +1663,18 @@ define arm_aapcs_vfpcc <4 x float> @vcmp_r_one_v4f32(<4 x float> %src, float %sr ; CHECK-MVE-NEXT: cset r0, mi ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s4, s0 -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s4, s3 ; CHECK-MVE-NEXT: cset r1, mi -; CHECK-MVE-NEXT: csinc r1, r1, zr, gt +; CHECK-MVE-NEXT: csinc r1, r1, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s4, s2 ; CHECK-MVE-NEXT: cset r2, mi -; CHECK-MVE-NEXT: csinc r2, r2, zr, gt +; CHECK-MVE-NEXT: csinc r2, r2, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r3, mi -; CHECK-MVE-NEXT: csinc r3, r3, zr, gt +; CHECK-MVE-NEXT: csinc r3, r3, zr, le ; CHECK-MVE-NEXT: cmp r2, #0 ; CHECK-MVE-NEXT: vseleq.f32 s3, s15, s11 ; CHECK-MVE-NEXT: cmp r3, #0 @@ -1865,18 +1865,18 @@ define arm_aapcs_vfpcc <4 x float> @vcmp_r_ueq_v4f32(<4 x float> %src, float %sr ; CHECK-MVE-NEXT: cset r0, eq ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s4, s0 -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s4, s3 ; CHECK-MVE-NEXT: cset r1, eq -; CHECK-MVE-NEXT: csinc r1, r1, zr, vs +; CHECK-MVE-NEXT: csinc r1, r1, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s4, s2 ; CHECK-MVE-NEXT: cset r2, eq -; CHECK-MVE-NEXT: csinc r2, r2, zr, vs +; CHECK-MVE-NEXT: csinc r2, r2, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r3, eq -; CHECK-MVE-NEXT: csinc r3, r3, zr, vs +; CHECK-MVE-NEXT: csinc r3, r3, zr, vc ; CHECK-MVE-NEXT: cmp r2, #0 ; CHECK-MVE-NEXT: vseleq.f32 s3, s15, s11 ; CHECK-MVE-NEXT: cmp r3, #0 @@ -2256,12 +2256,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_one_v8f16(<8 x half> %src, half %src2, ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s4, s0 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s5, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s0, s12, s8 ; CHECK-MVE-NEXT: vmovx.f16 s8, s13 @@ -2272,13 +2272,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_one_v8f16(<8 x half> %src, half %src2, ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s4, s1 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s8, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s14 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s1, s13, s9 ; CHECK-MVE-NEXT: vins.f16 s1, s6 @@ -2288,13 +2288,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_one_v8f16(<8 x half> %src, half %src2, ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s4, s2 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s8, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s15 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s2, s14, s10 ; CHECK-MVE-NEXT: vins.f16 s2, s6 @@ -2304,12 +2304,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_one_v8f16(<8 x half> %src, half %src2, ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s4, s3 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s8, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s3, s15, s11 ; CHECK-MVE-NEXT: vins.f16 s3, s6 @@ -2640,12 +2640,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_ueq_v8f16(<8 x half> %src, half %src2, ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s4, s0 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s5, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s0, s12, s8 ; CHECK-MVE-NEXT: vmovx.f16 s8, s13 @@ -2656,13 +2656,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_ueq_v8f16(<8 x half> %src, half %src2, ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s4, s1 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s8, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s14 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s1, s13, s9 ; CHECK-MVE-NEXT: vins.f16 s1, s6 @@ -2672,13 +2672,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_ueq_v8f16(<8 x half> %src, half %src2, ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s4, s2 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s8, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s15 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s2, s14, s10 ; CHECK-MVE-NEXT: vins.f16 s2, s6 @@ -2688,12 +2688,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_ueq_v8f16(<8 x half> %src, half %src2, ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s4, s3 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s6, s8, s6 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s3, s15, s11 ; CHECK-MVE-NEXT: vins.f16 s3, s6 diff --git a/llvm/test/CodeGen/Thumb2/mve-vcmpfz.ll b/llvm/test/CodeGen/Thumb2/mve-vcmpfz.ll index a48d45064f74b..16689f1e7ecd1 100644 --- a/llvm/test/CodeGen/Thumb2/mve-vcmpfz.ll +++ b/llvm/test/CodeGen/Thumb2/mve-vcmpfz.ll @@ -47,18 +47,18 @@ define arm_aapcs_vfpcc <4 x float> @vcmp_one_v4f32(<4 x float> %src, <4 x float> ; CHECK-MVE-NEXT: cset r0, mi ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s0, #0 -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s3, #0 ; CHECK-MVE-NEXT: cset r1, mi -; CHECK-MVE-NEXT: csinc r1, r1, zr, gt +; CHECK-MVE-NEXT: csinc r1, r1, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s2, #0 ; CHECK-MVE-NEXT: cset r2, mi -; CHECK-MVE-NEXT: csinc r2, r2, zr, gt +; CHECK-MVE-NEXT: csinc r2, r2, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r3, mi -; CHECK-MVE-NEXT: csinc r3, r3, zr, gt +; CHECK-MVE-NEXT: csinc r3, r3, zr, le ; CHECK-MVE-NEXT: cmp r2, #0 ; CHECK-MVE-NEXT: vseleq.f32 s3, s11, s7 ; CHECK-MVE-NEXT: cmp r3, #0 @@ -234,18 +234,18 @@ define arm_aapcs_vfpcc <4 x float> @vcmp_ueq_v4f32(<4 x float> %src, <4 x float> ; CHECK-MVE-NEXT: cset r0, eq ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s0, #0 -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s3, #0 ; CHECK-MVE-NEXT: cset r1, eq -; CHECK-MVE-NEXT: csinc r1, r1, zr, vs +; CHECK-MVE-NEXT: csinc r1, r1, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s2, #0 ; CHECK-MVE-NEXT: cset r2, eq -; CHECK-MVE-NEXT: csinc r2, r2, zr, vs +; CHECK-MVE-NEXT: csinc r2, r2, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r3, eq -; CHECK-MVE-NEXT: csinc r3, r3, zr, vs +; CHECK-MVE-NEXT: csinc r3, r3, zr, vc ; CHECK-MVE-NEXT: cmp r2, #0 ; CHECK-MVE-NEXT: vseleq.f32 s3, s11, s7 ; CHECK-MVE-NEXT: cmp r3, #0 @@ -598,12 +598,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_one_v8f16(<8 x half> %src, <8 x half> %a ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s0, #0 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s0, s8, s4 ; CHECK-MVE-NEXT: vmovx.f16 s4, s1 @@ -614,13 +614,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_one_v8f16(<8 x half> %src, <8 x half> %a ; CHECK-MVE-NEXT: vcmp.f16 s1, #0 ; CHECK-MVE-NEXT: vins.f16 s0, s12 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s8, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s10 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s1, s9, s5 ; CHECK-MVE-NEXT: vins.f16 s1, s4 @@ -630,12 +630,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_one_v8f16(<8 x half> %src, <8 x half> %a ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s2, #0 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s8, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s2, s10, s6 ; CHECK-MVE-NEXT: vmovx.f16 s6, s11 @@ -646,12 +646,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_one_v8f16(<8 x half> %src, <8 x half> %a ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s3, #0 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s6, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s3, s11, s7 ; CHECK-MVE-NEXT: vins.f16 s3, s4 @@ -967,12 +967,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_ueq_v8f16(<8 x half> %src, <8 x half> %a ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s0, #0 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s0, s8, s4 ; CHECK-MVE-NEXT: vmovx.f16 s4, s1 @@ -983,13 +983,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_ueq_v8f16(<8 x half> %src, <8 x half> %a ; CHECK-MVE-NEXT: vcmp.f16 s1, #0 ; CHECK-MVE-NEXT: vins.f16 s0, s12 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s8, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s10 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s1, s9, s5 ; CHECK-MVE-NEXT: vins.f16 s1, s4 @@ -999,12 +999,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_ueq_v8f16(<8 x half> %src, <8 x half> %a ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s2, #0 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s8, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s2, s10, s6 ; CHECK-MVE-NEXT: vmovx.f16 s6, s11 @@ -1015,12 +1015,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_ueq_v8f16(<8 x half> %src, <8 x half> %a ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s3, #0 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s6, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s3, s11, s7 ; CHECK-MVE-NEXT: vins.f16 s3, s4 @@ -1576,18 +1576,18 @@ define arm_aapcs_vfpcc <4 x float> @vcmp_r_one_v4f32(<4 x float> %src, <4 x floa ; CHECK-MVE-NEXT: cset r0, mi ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s0, #0 -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s3, #0 ; CHECK-MVE-NEXT: cset r1, mi -; CHECK-MVE-NEXT: csinc r1, r1, zr, gt +; CHECK-MVE-NEXT: csinc r1, r1, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s2, #0 ; CHECK-MVE-NEXT: cset r2, mi -; CHECK-MVE-NEXT: csinc r2, r2, zr, gt +; CHECK-MVE-NEXT: csinc r2, r2, zr, le ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r3, mi -; CHECK-MVE-NEXT: csinc r3, r3, zr, gt +; CHECK-MVE-NEXT: csinc r3, r3, zr, le ; CHECK-MVE-NEXT: cmp r2, #0 ; CHECK-MVE-NEXT: vseleq.f32 s3, s11, s7 ; CHECK-MVE-NEXT: cmp r3, #0 @@ -1763,18 +1763,18 @@ define arm_aapcs_vfpcc <4 x float> @vcmp_r_ueq_v4f32(<4 x float> %src, <4 x floa ; CHECK-MVE-NEXT: cset r0, eq ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s0, #0 -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s3, #0 ; CHECK-MVE-NEXT: cset r1, eq -; CHECK-MVE-NEXT: csinc r1, r1, zr, vs +; CHECK-MVE-NEXT: csinc r1, r1, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f32 s2, #0 ; CHECK-MVE-NEXT: cset r2, eq -; CHECK-MVE-NEXT: csinc r2, r2, zr, vs +; CHECK-MVE-NEXT: csinc r2, r2, zr, vc ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r3, eq -; CHECK-MVE-NEXT: csinc r3, r3, zr, vs +; CHECK-MVE-NEXT: csinc r3, r3, zr, vc ; CHECK-MVE-NEXT: cmp r2, #0 ; CHECK-MVE-NEXT: vseleq.f32 s3, s11, s7 ; CHECK-MVE-NEXT: cmp r3, #0 @@ -2127,12 +2127,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_one_v8f16(<8 x half> %src, <8 x half> ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s0, #0 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s0, s8, s4 ; CHECK-MVE-NEXT: vmovx.f16 s4, s1 @@ -2143,13 +2143,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_one_v8f16(<8 x half> %src, <8 x half> ; CHECK-MVE-NEXT: vcmp.f16 s1, #0 ; CHECK-MVE-NEXT: vins.f16 s0, s12 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s8, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s10 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s1, s9, s5 ; CHECK-MVE-NEXT: vins.f16 s1, s4 @@ -2159,12 +2159,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_one_v8f16(<8 x half> %src, <8 x half> ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s2, #0 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s8, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s2, s10, s6 ; CHECK-MVE-NEXT: vmovx.f16 s6, s11 @@ -2175,12 +2175,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_one_v8f16(<8 x half> %src, <8 x half> ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s3, #0 ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s6, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, mi -; CHECK-MVE-NEXT: csinc r0, r0, zr, gt +; CHECK-MVE-NEXT: csinc r0, r0, zr, le ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s3, s11, s7 ; CHECK-MVE-NEXT: vins.f16 s3, s4 @@ -2496,12 +2496,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_ueq_v8f16(<8 x half> %src, <8 x half> ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s0, #0 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s0, s8, s4 ; CHECK-MVE-NEXT: vmovx.f16 s4, s1 @@ -2512,13 +2512,13 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_ueq_v8f16(<8 x half> %src, <8 x half> ; CHECK-MVE-NEXT: vcmp.f16 s1, #0 ; CHECK-MVE-NEXT: vins.f16 s0, s12 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s8, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vmovx.f16 s8, s10 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s1, s9, s5 ; CHECK-MVE-NEXT: vins.f16 s1, s4 @@ -2528,12 +2528,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_ueq_v8f16(<8 x half> %src, <8 x half> ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s2, #0 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s8, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s2, s10, s6 ; CHECK-MVE-NEXT: vmovx.f16 s6, s11 @@ -2544,12 +2544,12 @@ define arm_aapcs_vfpcc <8 x half> @vcmp_r_ueq_v8f16(<8 x half> %src, <8 x half> ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: vcmp.f16 s3, #0 ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s4, s6, s4 ; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr ; CHECK-MVE-NEXT: cset r0, eq -; CHECK-MVE-NEXT: csinc r0, r0, zr, vs +; CHECK-MVE-NEXT: csinc r0, r0, zr, vc ; CHECK-MVE-NEXT: cmp r0, #0 ; CHECK-MVE-NEXT: vseleq.f16 s3, s11, s7 ; CHECK-MVE-NEXT: vins.f16 s3, s4