def : Pat<(insertelt (v8f16 MQPR:$src1), HPR:$src2, imm:$lane),
(MVE_VMOV_to_lane_16 MQPR:$src1, (COPY_TO_REGCLASS HPR:$src2, rGPR), imm:$lane)>;
- def : Pat<(extractelt (v8f16 MQPR:$src), imm:$lane),
- (COPY_TO_REGCLASS (MVE_VMOV_from_lane_u16 MQPR:$src, imm:$lane), HPR)>;
+ def : Pat<(extractelt (v8f16 MQPR:$src), imm_even:$lane),
+ (EXTRACT_SUBREG MQPR:$src, (SSubReg_f16_reg imm_even:$lane))>;
+ def : Pat<(extractelt (v8f16 MQPR:$src), imm_odd:$lane),
+ (COPY_TO_REGCLASS
+ (VMOVH (EXTRACT_SUBREG MQPR:$src, (SSubReg_f16_reg imm_odd:$lane))),
+ HPR)>;
def : Pat<(v4f32 (scalar_to_vector SPR:$src)),
(INSERT_SUBREG (v4f32 (IMPLICIT_DEF)), SPR:$src, ssub_0)>;
define arm_aapcs_vfpcc <8 x half> @fdiv_f16(<8 x half> %in1, <8 x half> %in2) {
; CHECK-LABEL: fdiv_f16:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: vmov.u16 r0, q1[0]
-; CHECK-NEXT: vmov.u16 r1, q1[1]
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vmov.u16 r0, q0[0]
-; CHECK-NEXT: vmov s10, r0
-; CHECK-NEXT: vmov.u16 r2, q0[1]
-; CHECK-NEXT: vdiv.f16 s8, s10, s8
-; CHECK-NEXT: vmov s10, r2
+; CHECK-NEXT: vdiv.f16 s8, s0, s4
+; CHECK-NEXT: vmovx.f16 s10, s0
; CHECK-NEXT: vmov r0, s8
-; CHECK-NEXT: vmov s8, r1
+; CHECK-NEXT: vmovx.f16 s8, s4
; CHECK-NEXT: vdiv.f16 s8, s10, s8
+; CHECK-NEXT: vdiv.f16 s12, s1, s5
; CHECK-NEXT: vmov r1, s8
; CHECK-NEXT: vmov.16 q2[0], r0
-; CHECK-NEXT: vmov.u16 r0, q1[2]
+; CHECK-NEXT: vmov r0, s12
+; CHECK-NEXT: vmovx.f16 s12, s5
+; CHECK-NEXT: vmovx.f16 s14, s1
; CHECK-NEXT: vmov.16 q2[1], r1
-; CHECK-NEXT: vmov s12, r0
-; CHECK-NEXT: vmov.u16 r0, q0[2]
-; CHECK-NEXT: vmov s14, r0
; CHECK-NEXT: vdiv.f16 s12, s14, s12
-; CHECK-NEXT: vmov r0, s12
; CHECK-NEXT: vmov.16 q2[2], r0
-; CHECK-NEXT: vmov.u16 r0, q1[3]
-; CHECK-NEXT: vmov s12, r0
-; CHECK-NEXT: vmov.u16 r0, q0[3]
-; CHECK-NEXT: vmov s14, r0
-; CHECK-NEXT: vdiv.f16 s12, s14, s12
; CHECK-NEXT: vmov r0, s12
+; CHECK-NEXT: vdiv.f16 s12, s2, s6
; CHECK-NEXT: vmov.16 q2[3], r0
-; CHECK-NEXT: vmov.u16 r0, q1[4]
-; CHECK-NEXT: vmov s12, r0
-; CHECK-NEXT: vmov.u16 r0, q0[4]
-; CHECK-NEXT: vmov s14, r0
-; CHECK-NEXT: vdiv.f16 s12, s14, s12
; CHECK-NEXT: vmov r0, s12
-; CHECK-NEXT: vmov.16 q2[4], r0
-; CHECK-NEXT: vmov.u16 r0, q1[5]
-; CHECK-NEXT: vmov s12, r0
-; CHECK-NEXT: vmov.u16 r0, q0[5]
-; CHECK-NEXT: vmov s14, r0
+; CHECK-NEXT: vmovx.f16 s12, s6
+; CHECK-NEXT: vmovx.f16 s14, s2
; CHECK-NEXT: vdiv.f16 s12, s14, s12
+; CHECK-NEXT: vmov.16 q2[4], r0
; CHECK-NEXT: vmov r0, s12
+; CHECK-NEXT: vdiv.f16 s12, s3, s7
+; CHECK-NEXT: vmovx.f16 s4, s7
+; CHECK-NEXT: vmovx.f16 s0, s3
; CHECK-NEXT: vmov.16 q2[5], r0
-; CHECK-NEXT: vmov.u16 r0, q1[6]
-; CHECK-NEXT: vmov s12, r0
-; CHECK-NEXT: vmov.u16 r0, q0[6]
-; CHECK-NEXT: vmov s14, r0
-; CHECK-NEXT: vdiv.f16 s12, s14, s12
; CHECK-NEXT: vmov r0, s12
-; CHECK-NEXT: vmov.16 q2[6], r0
-; CHECK-NEXT: vmov.u16 r0, q1[7]
-; CHECK-NEXT: vmov s4, r0
-; CHECK-NEXT: vmov.u16 r0, q0[7]
-; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vdiv.f16 s0, s0, s4
+; CHECK-NEXT: vmov.16 q2[6], r0
; CHECK-NEXT: vmov r0, s0
; CHECK-NEXT: vmov.16 q2[7], r0
; CHECK-NEXT: vmov q0, q2
; CHECK-NEXT: .pad #64
; CHECK-NEXT: sub sp, #64
; CHECK-NEXT: vmov q4, q0
-; CHECK-NEXT: vmov.u16 r0, q1[0]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[0]
-; CHECK-NEXT: vmov s2, r0
; CHECK-NEXT: vmov q5, q1
-; CHECK-NEXT: vcvtb.f32.f16 s2, s2
-; CHECK-NEXT: vstr s2, [sp, #56]
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s16
+; CHECK-NEXT: vstr s0, [sp, #56]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s20
; CHECK-NEXT: vstr s0, [sp, #60]
; CHECK-NEXT: ldrd r0, r1, [sp, #56]
; CHECK-NEXT: bl fmodf
; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q5[1]
+; CHECK-NEXT: vmovx.f16 s2, s16
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
-; CHECK-NEXT: vmov r4, s0
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[1]
-; CHECK-NEXT: vmov s2, r0
; CHECK-NEXT: vcvtb.f32.f16 s2, s2
+; CHECK-NEXT: vmov r4, s0
+; CHECK-NEXT: vmovx.f16 s0, s20
; CHECK-NEXT: vstr s2, [sp, #48]
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
; CHECK-NEXT: vstr s0, [sp, #52]
; CHECK-NEXT: vmov.16 q6[0], r4
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q6[1], r0
-; CHECK-NEXT: vmov.u16 r0, q5[2]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[2]
-; CHECK-NEXT: vmov s2, r0
-; CHECK-NEXT: vcvtb.f32.f16 s2, s2
-; CHECK-NEXT: vstr s2, [sp, #40]
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s17
+; CHECK-NEXT: vstr s0, [sp, #40]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s21
; CHECK-NEXT: vstr s0, [sp, #44]
+; CHECK-NEXT: vmov.16 q6[1], r0
; CHECK-NEXT: ldrd r0, r1, [sp, #40]
; CHECK-NEXT: bl fmodf
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s2, s17
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
-; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q6[2], r0
-; CHECK-NEXT: vmov.u16 r0, q5[3]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[3]
-; CHECK-NEXT: vmov s2, r0
; CHECK-NEXT: vcvtb.f32.f16 s2, s2
+; CHECK-NEXT: vmov r0, s0
+; CHECK-NEXT: vmovx.f16 s0, s21
; CHECK-NEXT: vstr s2, [sp, #32]
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
; CHECK-NEXT: vstr s0, [sp, #36]
+; CHECK-NEXT: vmov.16 q6[2], r0
; CHECK-NEXT: ldrd r0, r1, [sp, #32]
; CHECK-NEXT: bl fmodf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q6[3], r0
-; CHECK-NEXT: vmov.u16 r0, q5[4]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[4]
-; CHECK-NEXT: vmov s2, r0
-; CHECK-NEXT: vcvtb.f32.f16 s2, s2
-; CHECK-NEXT: vstr s2, [sp, #24]
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s18
+; CHECK-NEXT: vstr s0, [sp, #24]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s22
; CHECK-NEXT: vstr s0, [sp, #28]
+; CHECK-NEXT: vmov.16 q6[3], r0
; CHECK-NEXT: ldrd r0, r1, [sp, #24]
; CHECK-NEXT: bl fmodf
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s2, s18
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
-; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q6[4], r0
-; CHECK-NEXT: vmov.u16 r0, q5[5]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[5]
-; CHECK-NEXT: vmov s2, r0
; CHECK-NEXT: vcvtb.f32.f16 s2, s2
+; CHECK-NEXT: vmov r0, s0
+; CHECK-NEXT: vmovx.f16 s0, s22
; CHECK-NEXT: vstr s2, [sp, #16]
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
; CHECK-NEXT: vstr s0, [sp, #20]
+; CHECK-NEXT: vmov.16 q6[4], r0
; CHECK-NEXT: ldrd r0, r1, [sp, #16]
; CHECK-NEXT: bl fmodf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q6[5], r0
-; CHECK-NEXT: vmov.u16 r0, q5[6]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[6]
-; CHECK-NEXT: vmov s2, r0
-; CHECK-NEXT: vcvtb.f32.f16 s2, s2
-; CHECK-NEXT: vstr s2, [sp, #8]
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s19
+; CHECK-NEXT: vstr s0, [sp, #8]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s23
; CHECK-NEXT: vstr s0, [sp, #12]
+; CHECK-NEXT: vmov.16 q6[5], r0
; CHECK-NEXT: ldrd r0, r1, [sp, #8]
; CHECK-NEXT: bl fmodf
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s2, s19
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
-; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q6[6], r0
-; CHECK-NEXT: vmov.u16 r0, q5[7]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[7]
-; CHECK-NEXT: vmov s2, r0
; CHECK-NEXT: vcvtb.f32.f16 s2, s2
+; CHECK-NEXT: vmov r0, s0
+; CHECK-NEXT: vmovx.f16 s0, s23
; CHECK-NEXT: vstr s2, [sp]
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
; CHECK-NEXT: vstr s0, [sp, #4]
+; CHECK-NEXT: vmov.16 q6[6], r0
; CHECK-NEXT: ldrd r0, r1, [sp]
; CHECK-NEXT: bl fmodf
; CHECK-NEXT: vmov s0, r0
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
-; CHECK-MVE-NEXT: vmov s14, r1
-; CHECK-MVE-NEXT: vmov s13, r2
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[1]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[1]
+; CHECK-MVE-NEXT: vmovx.f16 s13, s0
+; CHECK-MVE-NEXT: vmla.f16 s0, s4, s8
+; CHECK-MVE-NEXT: vmovx.f16 s12, s8
+; CHECK-MVE-NEXT: vmovx.f16 s14, s4
+; CHECK-MVE-NEXT: vmov.f32 s16, s1
; CHECK-MVE-NEXT: vmla.f16 s13, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[1]
+; CHECK-MVE-NEXT: vmov r1, s0
+; CHECK-MVE-NEXT: vmla.f16 s16, s5, s9
; CHECK-MVE-NEXT: vmov r0, s13
-; CHECK-MVE-NEXT: vmov s14, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
-; CHECK-MVE-NEXT: vmov s12, r1
-; CHECK-MVE-NEXT: vmov s13, r3
-; CHECK-MVE-NEXT: vmla.f16 s13, s14, s12
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmov r1, s13
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.16 q3[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[2]
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmov s18, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmla.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
-; CHECK-MVE-NEXT: vmov r0, s20
+; CHECK-MVE-NEXT: vmov.16 q3[0], r1
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: vmov r0, s16
+; CHECK-MVE-NEXT: vmovx.f16 s16, s9
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
+; CHECK-MVE-NEXT: vmovx.f16 s20, s1
; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[3]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s20, r0
; CHECK-MVE-NEXT: vmla.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov s18, r1
+; CHECK-MVE-NEXT: vmov.f32 s16, s2
; CHECK-MVE-NEXT: vmov r0, s20
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
+; CHECK-MVE-NEXT: vmla.f16 s16, s6, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[4]
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmla.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov r0, s20
+; CHECK-MVE-NEXT: vmov r0, s16
+; CHECK-MVE-NEXT: vmovx.f16 s16, s10
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
+; CHECK-MVE-NEXT: vmovx.f16 s20, s2
; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[5]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s20, r0
; CHECK-MVE-NEXT: vmla.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov s18, r1
+; CHECK-MVE-NEXT: vmov.f32 s16, s3
; CHECK-MVE-NEXT: vmov r0, s20
+; CHECK-MVE-NEXT: vmla.f16 s16, s7, s11
+; CHECK-MVE-NEXT: vmovx.f16 s8, s11
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[6]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmla.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov r0, s20
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vmov s4, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vmov r0, s16
; CHECK-MVE-NEXT: vmla.f16 s0, s4, s8
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
-; CHECK-MVE-NEXT: vmov s14, r1
-; CHECK-MVE-NEXT: vmov s13, r2
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[1]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[1]
+; CHECK-MVE-NEXT: vmovx.f16 s13, s0
+; CHECK-MVE-NEXT: vmla.f16 s0, s4, s8
+; CHECK-MVE-NEXT: vmovx.f16 s12, s8
+; CHECK-MVE-NEXT: vmovx.f16 s14, s4
+; CHECK-MVE-NEXT: vmov.f32 s16, s1
; CHECK-MVE-NEXT: vmla.f16 s13, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[1]
+; CHECK-MVE-NEXT: vmov r1, s0
+; CHECK-MVE-NEXT: vmla.f16 s16, s5, s9
; CHECK-MVE-NEXT: vmov r0, s13
-; CHECK-MVE-NEXT: vmov s14, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
-; CHECK-MVE-NEXT: vmov s12, r1
-; CHECK-MVE-NEXT: vmov s13, r3
-; CHECK-MVE-NEXT: vmla.f16 s13, s14, s12
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmov r1, s13
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.16 q3[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[2]
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmov s18, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmla.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
-; CHECK-MVE-NEXT: vmov r0, s20
+; CHECK-MVE-NEXT: vmov.16 q3[0], r1
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: vmov r0, s16
+; CHECK-MVE-NEXT: vmovx.f16 s16, s9
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
+; CHECK-MVE-NEXT: vmovx.f16 s20, s1
; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[3]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s20, r0
; CHECK-MVE-NEXT: vmla.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov s18, r1
+; CHECK-MVE-NEXT: vmov.f32 s16, s2
; CHECK-MVE-NEXT: vmov r0, s20
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
+; CHECK-MVE-NEXT: vmla.f16 s16, s6, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[4]
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmla.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov r0, s20
+; CHECK-MVE-NEXT: vmov r0, s16
+; CHECK-MVE-NEXT: vmovx.f16 s16, s10
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
+; CHECK-MVE-NEXT: vmovx.f16 s20, s2
; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[5]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s20, r0
; CHECK-MVE-NEXT: vmla.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov s18, r1
+; CHECK-MVE-NEXT: vmov.f32 s16, s3
; CHECK-MVE-NEXT: vmov r0, s20
+; CHECK-MVE-NEXT: vmla.f16 s16, s7, s11
+; CHECK-MVE-NEXT: vmovx.f16 s8, s11
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[6]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmla.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov r0, s20
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vmov s4, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vmov r0, s16
; CHECK-MVE-NEXT: vmla.f16 s0, s4, s8
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
-; CHECK-MVE-NEXT: vmov s14, r1
-; CHECK-MVE-NEXT: vmov s13, r2
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[1]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[1]
+; CHECK-MVE-NEXT: vmovx.f16 s13, s0
+; CHECK-MVE-NEXT: vmls.f16 s0, s4, s8
+; CHECK-MVE-NEXT: vmovx.f16 s12, s8
+; CHECK-MVE-NEXT: vmovx.f16 s14, s4
+; CHECK-MVE-NEXT: vmov.f32 s16, s1
; CHECK-MVE-NEXT: vmls.f16 s13, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[1]
+; CHECK-MVE-NEXT: vmov r1, s0
+; CHECK-MVE-NEXT: vmls.f16 s16, s5, s9
; CHECK-MVE-NEXT: vmov r0, s13
-; CHECK-MVE-NEXT: vmov s14, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
-; CHECK-MVE-NEXT: vmov s12, r1
-; CHECK-MVE-NEXT: vmov s13, r3
-; CHECK-MVE-NEXT: vmls.f16 s13, s14, s12
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmov r1, s13
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.16 q3[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[2]
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmov s18, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmls.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
-; CHECK-MVE-NEXT: vmov r0, s20
+; CHECK-MVE-NEXT: vmov.16 q3[0], r1
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: vmov r0, s16
+; CHECK-MVE-NEXT: vmovx.f16 s16, s9
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
+; CHECK-MVE-NEXT: vmovx.f16 s20, s1
; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[3]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s20, r0
; CHECK-MVE-NEXT: vmls.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov s18, r1
+; CHECK-MVE-NEXT: vmov.f32 s16, s2
; CHECK-MVE-NEXT: vmov r0, s20
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
+; CHECK-MVE-NEXT: vmls.f16 s16, s6, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[4]
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmls.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov r0, s20
+; CHECK-MVE-NEXT: vmov r0, s16
+; CHECK-MVE-NEXT: vmovx.f16 s16, s10
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
+; CHECK-MVE-NEXT: vmovx.f16 s20, s2
; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[5]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s20, r0
; CHECK-MVE-NEXT: vmls.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov s18, r1
+; CHECK-MVE-NEXT: vmov.f32 s16, s3
; CHECK-MVE-NEXT: vmov r0, s20
+; CHECK-MVE-NEXT: vmls.f16 s16, s7, s11
+; CHECK-MVE-NEXT: vmovx.f16 s8, s11
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[6]
-; CHECK-MVE-NEXT: vmov s16, r0
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmls.f16 s20, s18, s16
-; CHECK-MVE-NEXT: vmov r0, s20
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vmov s4, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vmov r0, s16
; CHECK-MVE-NEXT: vmls.f16 s0, s4, s8
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
define arm_aapcs_vfpcc <8 x half> @sqrt_float16_t(<8 x half> %src) {
; CHECK-LABEL: sqrt_float16_t:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: vmov.u16 r0, q0[0]
-; CHECK-NEXT: vmov.u16 r1, q0[1]
-; CHECK-NEXT: vmov s4, r0
+; CHECK-NEXT: vmovx.f16 s4, s0
+; CHECK-NEXT: vsqrt.f16 s8, s1
; CHECK-NEXT: vsqrt.f16 s4, s4
; CHECK-NEXT: vmov r0, s4
-; CHECK-NEXT: vmov s4, r1
-; CHECK-NEXT: vsqrt.f16 s4, s4
+; CHECK-NEXT: vsqrt.f16 s4, s0
; CHECK-NEXT: vmov r1, s4
-; CHECK-NEXT: vmov.16 q1[0], r0
-; CHECK-NEXT: vmov.u16 r0, q0[2]
-; CHECK-NEXT: vmov.16 q1[1], r1
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vsqrt.f16 s8, s8
+; CHECK-NEXT: vmovx.f16 s0, s3
+; CHECK-NEXT: vmov.16 q1[0], r1
+; CHECK-NEXT: vsqrt.f16 s0, s0
+; CHECK-NEXT: vmov.16 q1[1], r0
; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vmovx.f16 s8, s1
; CHECK-NEXT: vmov.16 q1[2], r0
-; CHECK-NEXT: vmov.u16 r0, q0[3]
-; CHECK-NEXT: vmov s8, r0
; CHECK-NEXT: vsqrt.f16 s8, s8
; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vsqrt.f16 s8, s2
; CHECK-NEXT: vmov.16 q1[3], r0
-; CHECK-NEXT: vmov.u16 r0, q0[4]
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vsqrt.f16 s8, s8
; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vmovx.f16 s8, s2
; CHECK-NEXT: vmov.16 q1[4], r0
-; CHECK-NEXT: vmov.u16 r0, q0[5]
-; CHECK-NEXT: vmov s8, r0
; CHECK-NEXT: vsqrt.f16 s8, s8
; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vsqrt.f16 s8, s3
; CHECK-NEXT: vmov.16 q1[5], r0
-; CHECK-NEXT: vmov.u16 r0, q0[6]
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vsqrt.f16 s8, s8
; CHECK-NEXT: vmov r0, s8
; CHECK-NEXT: vmov.16 q1[6], r0
-; CHECK-NEXT: vmov.u16 r0, q0[7]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vsqrt.f16 s0, s0
; CHECK-NEXT: vmov r0, s0
; CHECK-NEXT: vmov.16 q1[7], r0
; CHECK-NEXT: vmov q0, q1
; CHECK-NEXT: vpush {d8, d9, d10, d11}
; CHECK-NEXT: .pad #32
; CHECK-NEXT: sub sp, #32
-; CHECK-NEXT: vmov.u16 r0, q0[1]
; CHECK-NEXT: vmov q4, q0
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #24]
-; CHECK-NEXT: ldr r0, [sp, #24]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s16
+; CHECK-NEXT: vstr s0, [sp, #28]
+; CHECK-NEXT: ldr r0, [sp, #28]
; CHECK-NEXT: bl cosf
; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[0]
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r4, s0
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s16
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #28]
-; CHECK-NEXT: ldr r0, [sp, #28]
+; CHECK-NEXT: vstr s0, [sp, #24]
+; CHECK-NEXT: ldr r0, [sp, #24]
; CHECK-NEXT: bl cosf
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmov.16 q5[0], r4
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[0], r0
-; CHECK-NEXT: vmov.u16 r0, q4[2]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.16 q5[1], r4
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s17
; CHECK-NEXT: vstr s0, [sp, #20]
+; CHECK-NEXT: vmov.16 q5[1], r0
; CHECK-NEXT: ldr r0, [sp, #20]
; CHECK-NEXT: bl cosf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[2], r0
-; CHECK-NEXT: vmov.u16 r0, q4[3]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s17
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[2], r0
; CHECK-NEXT: vstr s0, [sp, #16]
; CHECK-NEXT: ldr r0, [sp, #16]
; CHECK-NEXT: bl cosf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[3], r0
-; CHECK-NEXT: vmov.u16 r0, q4[4]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s18
; CHECK-NEXT: vstr s0, [sp, #12]
+; CHECK-NEXT: vmov.16 q5[3], r0
; CHECK-NEXT: ldr r0, [sp, #12]
; CHECK-NEXT: bl cosf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[4], r0
-; CHECK-NEXT: vmov.u16 r0, q4[5]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s18
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[4], r0
; CHECK-NEXT: vstr s0, [sp, #8]
; CHECK-NEXT: ldr r0, [sp, #8]
; CHECK-NEXT: bl cosf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[5], r0
-; CHECK-NEXT: vmov.u16 r0, q4[6]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s19
; CHECK-NEXT: vstr s0, [sp, #4]
+; CHECK-NEXT: vmov.16 q5[5], r0
; CHECK-NEXT: ldr r0, [sp, #4]
; CHECK-NEXT: bl cosf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[6], r0
-; CHECK-NEXT: vmov.u16 r0, q4[7]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s19
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[6], r0
; CHECK-NEXT: vstr s0, [sp]
; CHECK-NEXT: ldr r0, [sp]
; CHECK-NEXT: bl cosf
; CHECK-NEXT: vpush {d8, d9, d10, d11}
; CHECK-NEXT: .pad #32
; CHECK-NEXT: sub sp, #32
-; CHECK-NEXT: vmov.u16 r0, q0[1]
; CHECK-NEXT: vmov q4, q0
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #24]
-; CHECK-NEXT: ldr r0, [sp, #24]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s16
+; CHECK-NEXT: vstr s0, [sp, #28]
+; CHECK-NEXT: ldr r0, [sp, #28]
; CHECK-NEXT: bl sinf
; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[0]
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r4, s0
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s16
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #28]
-; CHECK-NEXT: ldr r0, [sp, #28]
+; CHECK-NEXT: vstr s0, [sp, #24]
+; CHECK-NEXT: ldr r0, [sp, #24]
; CHECK-NEXT: bl sinf
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmov.16 q5[0], r4
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[0], r0
-; CHECK-NEXT: vmov.u16 r0, q4[2]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.16 q5[1], r4
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s17
; CHECK-NEXT: vstr s0, [sp, #20]
+; CHECK-NEXT: vmov.16 q5[1], r0
; CHECK-NEXT: ldr r0, [sp, #20]
; CHECK-NEXT: bl sinf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[2], r0
-; CHECK-NEXT: vmov.u16 r0, q4[3]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s17
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[2], r0
; CHECK-NEXT: vstr s0, [sp, #16]
; CHECK-NEXT: ldr r0, [sp, #16]
; CHECK-NEXT: bl sinf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[3], r0
-; CHECK-NEXT: vmov.u16 r0, q4[4]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s18
; CHECK-NEXT: vstr s0, [sp, #12]
+; CHECK-NEXT: vmov.16 q5[3], r0
; CHECK-NEXT: ldr r0, [sp, #12]
; CHECK-NEXT: bl sinf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[4], r0
-; CHECK-NEXT: vmov.u16 r0, q4[5]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s18
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[4], r0
; CHECK-NEXT: vstr s0, [sp, #8]
; CHECK-NEXT: ldr r0, [sp, #8]
; CHECK-NEXT: bl sinf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[5], r0
-; CHECK-NEXT: vmov.u16 r0, q4[6]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s19
; CHECK-NEXT: vstr s0, [sp, #4]
+; CHECK-NEXT: vmov.16 q5[5], r0
; CHECK-NEXT: ldr r0, [sp, #4]
; CHECK-NEXT: bl sinf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[6], r0
-; CHECK-NEXT: vmov.u16 r0, q4[7]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s19
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[6], r0
; CHECK-NEXT: vstr s0, [sp]
; CHECK-NEXT: ldr r0, [sp]
; CHECK-NEXT: bl sinf
; CHECK-NEXT: vpush {d8, d9, d10, d11}
; CHECK-NEXT: .pad #32
; CHECK-NEXT: sub sp, #32
-; CHECK-NEXT: vmov.u16 r0, q0[1]
; CHECK-NEXT: vmov q4, q0
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #24]
-; CHECK-NEXT: ldr r0, [sp, #24]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s16
+; CHECK-NEXT: vstr s0, [sp, #28]
+; CHECK-NEXT: ldr r0, [sp, #28]
; CHECK-NEXT: bl expf
; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[0]
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r4, s0
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s16
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #28]
-; CHECK-NEXT: ldr r0, [sp, #28]
+; CHECK-NEXT: vstr s0, [sp, #24]
+; CHECK-NEXT: ldr r0, [sp, #24]
; CHECK-NEXT: bl expf
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmov.16 q5[0], r4
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[0], r0
-; CHECK-NEXT: vmov.u16 r0, q4[2]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.16 q5[1], r4
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s17
; CHECK-NEXT: vstr s0, [sp, #20]
+; CHECK-NEXT: vmov.16 q5[1], r0
; CHECK-NEXT: ldr r0, [sp, #20]
; CHECK-NEXT: bl expf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[2], r0
-; CHECK-NEXT: vmov.u16 r0, q4[3]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s17
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[2], r0
; CHECK-NEXT: vstr s0, [sp, #16]
; CHECK-NEXT: ldr r0, [sp, #16]
; CHECK-NEXT: bl expf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[3], r0
-; CHECK-NEXT: vmov.u16 r0, q4[4]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s18
; CHECK-NEXT: vstr s0, [sp, #12]
+; CHECK-NEXT: vmov.16 q5[3], r0
; CHECK-NEXT: ldr r0, [sp, #12]
; CHECK-NEXT: bl expf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[4], r0
-; CHECK-NEXT: vmov.u16 r0, q4[5]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s18
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[4], r0
; CHECK-NEXT: vstr s0, [sp, #8]
; CHECK-NEXT: ldr r0, [sp, #8]
; CHECK-NEXT: bl expf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[5], r0
-; CHECK-NEXT: vmov.u16 r0, q4[6]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s19
; CHECK-NEXT: vstr s0, [sp, #4]
+; CHECK-NEXT: vmov.16 q5[5], r0
; CHECK-NEXT: ldr r0, [sp, #4]
; CHECK-NEXT: bl expf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[6], r0
-; CHECK-NEXT: vmov.u16 r0, q4[7]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s19
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[6], r0
; CHECK-NEXT: vstr s0, [sp]
; CHECK-NEXT: ldr r0, [sp]
; CHECK-NEXT: bl expf
; CHECK-NEXT: vpush {d8, d9, d10, d11}
; CHECK-NEXT: .pad #32
; CHECK-NEXT: sub sp, #32
-; CHECK-NEXT: vmov.u16 r0, q0[1]
; CHECK-NEXT: vmov q4, q0
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #24]
-; CHECK-NEXT: ldr r0, [sp, #24]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s16
+; CHECK-NEXT: vstr s0, [sp, #28]
+; CHECK-NEXT: ldr r0, [sp, #28]
; CHECK-NEXT: bl exp2f
; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[0]
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r4, s0
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s16
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #28]
-; CHECK-NEXT: ldr r0, [sp, #28]
+; CHECK-NEXT: vstr s0, [sp, #24]
+; CHECK-NEXT: ldr r0, [sp, #24]
; CHECK-NEXT: bl exp2f
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmov.16 q5[0], r4
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[0], r0
-; CHECK-NEXT: vmov.u16 r0, q4[2]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.16 q5[1], r4
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s17
; CHECK-NEXT: vstr s0, [sp, #20]
+; CHECK-NEXT: vmov.16 q5[1], r0
; CHECK-NEXT: ldr r0, [sp, #20]
; CHECK-NEXT: bl exp2f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[2], r0
-; CHECK-NEXT: vmov.u16 r0, q4[3]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s17
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[2], r0
; CHECK-NEXT: vstr s0, [sp, #16]
; CHECK-NEXT: ldr r0, [sp, #16]
; CHECK-NEXT: bl exp2f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[3], r0
-; CHECK-NEXT: vmov.u16 r0, q4[4]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s18
; CHECK-NEXT: vstr s0, [sp, #12]
+; CHECK-NEXT: vmov.16 q5[3], r0
; CHECK-NEXT: ldr r0, [sp, #12]
; CHECK-NEXT: bl exp2f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[4], r0
-; CHECK-NEXT: vmov.u16 r0, q4[5]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s18
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[4], r0
; CHECK-NEXT: vstr s0, [sp, #8]
; CHECK-NEXT: ldr r0, [sp, #8]
; CHECK-NEXT: bl exp2f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[5], r0
-; CHECK-NEXT: vmov.u16 r0, q4[6]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s19
; CHECK-NEXT: vstr s0, [sp, #4]
+; CHECK-NEXT: vmov.16 q5[5], r0
; CHECK-NEXT: ldr r0, [sp, #4]
; CHECK-NEXT: bl exp2f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[6], r0
-; CHECK-NEXT: vmov.u16 r0, q4[7]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s19
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[6], r0
; CHECK-NEXT: vstr s0, [sp]
; CHECK-NEXT: ldr r0, [sp]
; CHECK-NEXT: bl exp2f
; CHECK-NEXT: vpush {d8, d9, d10, d11}
; CHECK-NEXT: .pad #32
; CHECK-NEXT: sub sp, #32
-; CHECK-NEXT: vmov.u16 r0, q0[1]
; CHECK-NEXT: vmov q4, q0
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #24]
-; CHECK-NEXT: ldr r0, [sp, #24]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s16
+; CHECK-NEXT: vstr s0, [sp, #28]
+; CHECK-NEXT: ldr r0, [sp, #28]
; CHECK-NEXT: bl logf
; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[0]
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r4, s0
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s16
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #28]
-; CHECK-NEXT: ldr r0, [sp, #28]
+; CHECK-NEXT: vstr s0, [sp, #24]
+; CHECK-NEXT: ldr r0, [sp, #24]
; CHECK-NEXT: bl logf
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmov.16 q5[0], r4
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[0], r0
-; CHECK-NEXT: vmov.u16 r0, q4[2]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.16 q5[1], r4
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s17
; CHECK-NEXT: vstr s0, [sp, #20]
+; CHECK-NEXT: vmov.16 q5[1], r0
; CHECK-NEXT: ldr r0, [sp, #20]
; CHECK-NEXT: bl logf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[2], r0
-; CHECK-NEXT: vmov.u16 r0, q4[3]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s17
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[2], r0
; CHECK-NEXT: vstr s0, [sp, #16]
; CHECK-NEXT: ldr r0, [sp, #16]
; CHECK-NEXT: bl logf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[3], r0
-; CHECK-NEXT: vmov.u16 r0, q4[4]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s18
; CHECK-NEXT: vstr s0, [sp, #12]
+; CHECK-NEXT: vmov.16 q5[3], r0
; CHECK-NEXT: ldr r0, [sp, #12]
; CHECK-NEXT: bl logf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[4], r0
-; CHECK-NEXT: vmov.u16 r0, q4[5]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s18
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[4], r0
; CHECK-NEXT: vstr s0, [sp, #8]
; CHECK-NEXT: ldr r0, [sp, #8]
; CHECK-NEXT: bl logf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[5], r0
-; CHECK-NEXT: vmov.u16 r0, q4[6]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s19
; CHECK-NEXT: vstr s0, [sp, #4]
+; CHECK-NEXT: vmov.16 q5[5], r0
; CHECK-NEXT: ldr r0, [sp, #4]
; CHECK-NEXT: bl logf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[6], r0
-; CHECK-NEXT: vmov.u16 r0, q4[7]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s19
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[6], r0
; CHECK-NEXT: vstr s0, [sp]
; CHECK-NEXT: ldr r0, [sp]
; CHECK-NEXT: bl logf
; CHECK-NEXT: vpush {d8, d9, d10, d11}
; CHECK-NEXT: .pad #32
; CHECK-NEXT: sub sp, #32
-; CHECK-NEXT: vmov.u16 r0, q0[1]
; CHECK-NEXT: vmov q4, q0
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #24]
-; CHECK-NEXT: ldr r0, [sp, #24]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s16
+; CHECK-NEXT: vstr s0, [sp, #28]
+; CHECK-NEXT: ldr r0, [sp, #28]
; CHECK-NEXT: bl log2f
; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[0]
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r4, s0
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s16
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #28]
-; CHECK-NEXT: ldr r0, [sp, #28]
+; CHECK-NEXT: vstr s0, [sp, #24]
+; CHECK-NEXT: ldr r0, [sp, #24]
; CHECK-NEXT: bl log2f
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmov.16 q5[0], r4
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[0], r0
-; CHECK-NEXT: vmov.u16 r0, q4[2]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.16 q5[1], r4
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s17
; CHECK-NEXT: vstr s0, [sp, #20]
+; CHECK-NEXT: vmov.16 q5[1], r0
; CHECK-NEXT: ldr r0, [sp, #20]
; CHECK-NEXT: bl log2f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[2], r0
-; CHECK-NEXT: vmov.u16 r0, q4[3]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s17
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[2], r0
; CHECK-NEXT: vstr s0, [sp, #16]
; CHECK-NEXT: ldr r0, [sp, #16]
; CHECK-NEXT: bl log2f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[3], r0
-; CHECK-NEXT: vmov.u16 r0, q4[4]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s18
; CHECK-NEXT: vstr s0, [sp, #12]
+; CHECK-NEXT: vmov.16 q5[3], r0
; CHECK-NEXT: ldr r0, [sp, #12]
; CHECK-NEXT: bl log2f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[4], r0
-; CHECK-NEXT: vmov.u16 r0, q4[5]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s18
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[4], r0
; CHECK-NEXT: vstr s0, [sp, #8]
; CHECK-NEXT: ldr r0, [sp, #8]
; CHECK-NEXT: bl log2f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[5], r0
-; CHECK-NEXT: vmov.u16 r0, q4[6]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s19
; CHECK-NEXT: vstr s0, [sp, #4]
+; CHECK-NEXT: vmov.16 q5[5], r0
; CHECK-NEXT: ldr r0, [sp, #4]
; CHECK-NEXT: bl log2f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[6], r0
-; CHECK-NEXT: vmov.u16 r0, q4[7]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s19
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[6], r0
; CHECK-NEXT: vstr s0, [sp]
; CHECK-NEXT: ldr r0, [sp]
; CHECK-NEXT: bl log2f
; CHECK-NEXT: vpush {d8, d9, d10, d11}
; CHECK-NEXT: .pad #32
; CHECK-NEXT: sub sp, #32
-; CHECK-NEXT: vmov.u16 r0, q0[1]
; CHECK-NEXT: vmov q4, q0
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #24]
-; CHECK-NEXT: ldr r0, [sp, #24]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s16
+; CHECK-NEXT: vstr s0, [sp, #28]
+; CHECK-NEXT: ldr r0, [sp, #28]
; CHECK-NEXT: bl log10f
; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[0]
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r4, s0
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s16
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
-; CHECK-NEXT: vstr s0, [sp, #28]
-; CHECK-NEXT: ldr r0, [sp, #28]
+; CHECK-NEXT: vstr s0, [sp, #24]
+; CHECK-NEXT: ldr r0, [sp, #24]
; CHECK-NEXT: bl log10f
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmov.16 q5[0], r4
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[0], r0
-; CHECK-NEXT: vmov.u16 r0, q4[2]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.16 q5[1], r4
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s17
; CHECK-NEXT: vstr s0, [sp, #20]
+; CHECK-NEXT: vmov.16 q5[1], r0
; CHECK-NEXT: ldr r0, [sp, #20]
; CHECK-NEXT: bl log10f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[2], r0
-; CHECK-NEXT: vmov.u16 r0, q4[3]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s17
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[2], r0
; CHECK-NEXT: vstr s0, [sp, #16]
; CHECK-NEXT: ldr r0, [sp, #16]
; CHECK-NEXT: bl log10f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[3], r0
-; CHECK-NEXT: vmov.u16 r0, q4[4]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s18
; CHECK-NEXT: vstr s0, [sp, #12]
+; CHECK-NEXT: vmov.16 q5[3], r0
; CHECK-NEXT: ldr r0, [sp, #12]
; CHECK-NEXT: bl log10f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[4], r0
-; CHECK-NEXT: vmov.u16 r0, q4[5]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s18
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[4], r0
; CHECK-NEXT: vstr s0, [sp, #8]
; CHECK-NEXT: ldr r0, [sp, #8]
; CHECK-NEXT: bl log10f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[5], r0
-; CHECK-NEXT: vmov.u16 r0, q4[6]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s19
; CHECK-NEXT: vstr s0, [sp, #4]
+; CHECK-NEXT: vmov.16 q5[5], r0
; CHECK-NEXT: ldr r0, [sp, #4]
; CHECK-NEXT: bl log10f
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q5[6], r0
-; CHECK-NEXT: vmov.u16 r0, q4[7]
-; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s0, s19
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vmov.16 q5[6], r0
; CHECK-NEXT: vstr s0, [sp]
; CHECK-NEXT: ldr r0, [sp]
; CHECK-NEXT: bl log10f
; CHECK-NEXT: .pad #64
; CHECK-NEXT: sub sp, #64
; CHECK-NEXT: vmov q4, q0
-; CHECK-NEXT: vmov.u16 r0, q1[0]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[0]
-; CHECK-NEXT: vmov s2, r0
; CHECK-NEXT: vmov q5, q1
-; CHECK-NEXT: vcvtb.f32.f16 s2, s2
-; CHECK-NEXT: vstr s2, [sp, #56]
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s16
+; CHECK-NEXT: vstr s0, [sp, #56]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s20
; CHECK-NEXT: vstr s0, [sp, #60]
; CHECK-NEXT: ldrd r0, r1, [sp, #56]
; CHECK-NEXT: bl powf
; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q5[1]
+; CHECK-NEXT: vmovx.f16 s2, s16
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
-; CHECK-NEXT: vmov r4, s0
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[1]
-; CHECK-NEXT: vmov s2, r0
; CHECK-NEXT: vcvtb.f32.f16 s2, s2
+; CHECK-NEXT: vmov r4, s0
+; CHECK-NEXT: vmovx.f16 s0, s20
; CHECK-NEXT: vstr s2, [sp, #48]
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
; CHECK-NEXT: vstr s0, [sp, #52]
; CHECK-NEXT: vmov.16 q6[0], r4
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q6[1], r0
-; CHECK-NEXT: vmov.u16 r0, q5[2]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[2]
-; CHECK-NEXT: vmov s2, r0
-; CHECK-NEXT: vcvtb.f32.f16 s2, s2
-; CHECK-NEXT: vstr s2, [sp, #40]
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s17
+; CHECK-NEXT: vstr s0, [sp, #40]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s21
; CHECK-NEXT: vstr s0, [sp, #44]
+; CHECK-NEXT: vmov.16 q6[1], r0
; CHECK-NEXT: ldrd r0, r1, [sp, #40]
; CHECK-NEXT: bl powf
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s2, s17
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
-; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q6[2], r0
-; CHECK-NEXT: vmov.u16 r0, q5[3]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[3]
-; CHECK-NEXT: vmov s2, r0
; CHECK-NEXT: vcvtb.f32.f16 s2, s2
+; CHECK-NEXT: vmov r0, s0
+; CHECK-NEXT: vmovx.f16 s0, s21
; CHECK-NEXT: vstr s2, [sp, #32]
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
; CHECK-NEXT: vstr s0, [sp, #36]
+; CHECK-NEXT: vmov.16 q6[2], r0
; CHECK-NEXT: ldrd r0, r1, [sp, #32]
; CHECK-NEXT: bl powf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q6[3], r0
-; CHECK-NEXT: vmov.u16 r0, q5[4]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[4]
-; CHECK-NEXT: vmov s2, r0
-; CHECK-NEXT: vcvtb.f32.f16 s2, s2
-; CHECK-NEXT: vstr s2, [sp, #24]
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s18
+; CHECK-NEXT: vstr s0, [sp, #24]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s22
; CHECK-NEXT: vstr s0, [sp, #28]
+; CHECK-NEXT: vmov.16 q6[3], r0
; CHECK-NEXT: ldrd r0, r1, [sp, #24]
; CHECK-NEXT: bl powf
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s2, s18
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
-; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q6[4], r0
-; CHECK-NEXT: vmov.u16 r0, q5[5]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[5]
-; CHECK-NEXT: vmov s2, r0
; CHECK-NEXT: vcvtb.f32.f16 s2, s2
+; CHECK-NEXT: vmov r0, s0
+; CHECK-NEXT: vmovx.f16 s0, s22
; CHECK-NEXT: vstr s2, [sp, #16]
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
; CHECK-NEXT: vstr s0, [sp, #20]
+; CHECK-NEXT: vmov.16 q6[4], r0
; CHECK-NEXT: ldrd r0, r1, [sp, #16]
; CHECK-NEXT: bl powf
; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q6[5], r0
-; CHECK-NEXT: vmov.u16 r0, q5[6]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[6]
-; CHECK-NEXT: vmov s2, r0
-; CHECK-NEXT: vcvtb.f32.f16 s2, s2
-; CHECK-NEXT: vstr s2, [sp, #8]
-; CHECK-NEXT: vcvtb.f32.f16 s0, s0
+; CHECK-NEXT: vcvtb.f32.f16 s0, s19
+; CHECK-NEXT: vstr s0, [sp, #8]
+; CHECK-NEXT: vcvtb.f32.f16 s0, s23
; CHECK-NEXT: vstr s0, [sp, #12]
+; CHECK-NEXT: vmov.16 q6[5], r0
; CHECK-NEXT: ldrd r0, r1, [sp, #8]
; CHECK-NEXT: bl powf
; CHECK-NEXT: vmov s0, r0
+; CHECK-NEXT: vmovx.f16 s2, s19
; CHECK-NEXT: vcvtb.f16.f32 s0, s0
-; CHECK-NEXT: vmov r0, s0
-; CHECK-NEXT: vmov.16 q6[6], r0
-; CHECK-NEXT: vmov.u16 r0, q5[7]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vmov.u16 r0, q4[7]
-; CHECK-NEXT: vmov s2, r0
; CHECK-NEXT: vcvtb.f32.f16 s2, s2
+; CHECK-NEXT: vmov r0, s0
+; CHECK-NEXT: vmovx.f16 s0, s23
; CHECK-NEXT: vstr s2, [sp]
; CHECK-NEXT: vcvtb.f32.f16 s0, s0
; CHECK-NEXT: vstr s0, [sp, #4]
+; CHECK-NEXT: vmov.16 q6[6], r0
; CHECK-NEXT: ldrd r0, r1, [sp]
; CHECK-NEXT: bl powf
; CHECK-NEXT: vmov s0, r0
; CHECK: @ %bb.0: @ %entry
; CHECK-NEXT: .pad #32
; CHECK-NEXT: sub sp, #32
-; CHECK-NEXT: vmov.u16 r0, q1[1]
-; CHECK-NEXT: vmov.u16 r1, q0[0]
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vmov.u16 r0, q1[0]
+; CHECK-NEXT: vmovx.f16 s8, s4
+; CHECK-NEXT: vstr.16 s4, [sp, #28]
; CHECK-NEXT: vstr.16 s8, [sp, #24]
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vmov.u16 r0, q1[2]
-; CHECK-NEXT: vstr.16 s8, [sp, #28]
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vmov.u16 r0, q1[3]
-; CHECK-NEXT: vstr.16 s8, [sp, #20]
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vmov.u16 r0, q1[4]
+; CHECK-NEXT: vmovx.f16 s8, s5
+; CHECK-NEXT: vstr.16 s5, [sp, #20]
; CHECK-NEXT: vstr.16 s8, [sp, #16]
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vmov.u16 r0, q1[5]
-; CHECK-NEXT: vstr.16 s8, [sp, #12]
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vmov.u16 r0, q1[6]
+; CHECK-NEXT: vmovx.f16 s8, s6
+; CHECK-NEXT: vmovx.f16 s4, s7
+; CHECK-NEXT: vstr.16 s6, [sp, #12]
; CHECK-NEXT: vstr.16 s8, [sp, #8]
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vmov.u16 r0, q1[7]
-; CHECK-NEXT: vmov s4, r0
-; CHECK-NEXT: vstr.16 s8, [sp, #4]
+; CHECK-NEXT: vstr.16 s7, [sp, #4]
; CHECK-NEXT: vstr.16 s4, [sp]
-; CHECK-NEXT: vmov.u16 r0, q0[1]
-; CHECK-NEXT: vmov s4, r0
-; CHECK-NEXT: ldrb.w r0, [sp, #25]
-; CHECK-NEXT: vabs.f16 s4, s4
-; CHECK-NEXT: ands r0, r0, #128
+; CHECK-NEXT: ldrb.w r0, [sp, #29]
+; CHECK-NEXT: vabs.f16 s4, s0
; CHECK-NEXT: vneg.f16 s6, s4
+; CHECK-NEXT: vabs.f16 s8, s1
+; CHECK-NEXT: ands r0, r0, #128
+; CHECK-NEXT: vneg.f16 s10, s8
; CHECK-NEXT: it ne
; CHECK-NEXT: movne r0, #1
; CHECK-NEXT: cmp r0, #0
; CHECK-NEXT: vseleq.f16 s4, s4, s6
+; CHECK-NEXT: ldrb.w r1, [sp, #25]
; CHECK-NEXT: vmov r0, s4
-; CHECK-NEXT: vmov s4, r1
-; CHECK-NEXT: ldrb.w r1, [sp, #29]
-; CHECK-NEXT: vabs.f16 s4, s4
+; CHECK-NEXT: vmovx.f16 s4, s0
; CHECK-NEXT: ands r1, r1, #128
-; CHECK-NEXT: vneg.f16 s6, s4
+; CHECK-NEXT: vabs.f16 s4, s4
; CHECK-NEXT: it ne
; CHECK-NEXT: movne r1, #1
+; CHECK-NEXT: vneg.f16 s6, s4
; CHECK-NEXT: cmp r1, #0
+; CHECK-NEXT: vmovx.f16 s0, s3
; CHECK-NEXT: vseleq.f16 s4, s4, s6
+; CHECK-NEXT: vabs.f16 s0, s0
; CHECK-NEXT: vmov r1, s4
-; CHECK-NEXT: vmov.16 q1[0], r1
-; CHECK-NEXT: vmov.16 q1[1], r0
-; CHECK-NEXT: vmov.u16 r0, q0[2]
-; CHECK-NEXT: vmov s8, r0
+; CHECK-NEXT: vmov.16 q1[0], r0
; CHECK-NEXT: ldrb.w r0, [sp, #21]
-; CHECK-NEXT: vabs.f16 s8, s8
+; CHECK-NEXT: vmov.16 q1[1], r1
; CHECK-NEXT: ands r0, r0, #128
-; CHECK-NEXT: vneg.f16 s10, s8
; CHECK-NEXT: it ne
; CHECK-NEXT: movne r0, #1
; CHECK-NEXT: cmp r0, #0
; CHECK-NEXT: vseleq.f16 s8, s8, s10
; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vmovx.f16 s8, s1
; CHECK-NEXT: vmov.16 q1[2], r0
-; CHECK-NEXT: vmov.u16 r0, q0[3]
-; CHECK-NEXT: vmov s8, r0
; CHECK-NEXT: ldrb.w r0, [sp, #17]
; CHECK-NEXT: vabs.f16 s8, s8
; CHECK-NEXT: ands r0, r0, #128
; CHECK-NEXT: cmp r0, #0
; CHECK-NEXT: vseleq.f16 s8, s8, s10
; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vabs.f16 s8, s2
; CHECK-NEXT: vmov.16 q1[3], r0
-; CHECK-NEXT: vmov.u16 r0, q0[4]
-; CHECK-NEXT: vmov s8, r0
; CHECK-NEXT: ldrb.w r0, [sp, #13]
-; CHECK-NEXT: vabs.f16 s8, s8
-; CHECK-NEXT: ands r0, r0, #128
; CHECK-NEXT: vneg.f16 s10, s8
+; CHECK-NEXT: ands r0, r0, #128
; CHECK-NEXT: it ne
; CHECK-NEXT: movne r0, #1
; CHECK-NEXT: cmp r0, #0
; CHECK-NEXT: vseleq.f16 s8, s8, s10
; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vmovx.f16 s8, s2
; CHECK-NEXT: vmov.16 q1[4], r0
-; CHECK-NEXT: vmov.u16 r0, q0[5]
-; CHECK-NEXT: vmov s8, r0
; CHECK-NEXT: ldrb.w r0, [sp, #9]
; CHECK-NEXT: vabs.f16 s8, s8
+; CHECK-NEXT: vneg.f16 s2, s0
; CHECK-NEXT: ands r0, r0, #128
; CHECK-NEXT: vneg.f16 s10, s8
; CHECK-NEXT: it ne
; CHECK-NEXT: cmp r0, #0
; CHECK-NEXT: vseleq.f16 s8, s8, s10
; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vabs.f16 s8, s3
; CHECK-NEXT: vmov.16 q1[5], r0
-; CHECK-NEXT: vmov.u16 r0, q0[6]
-; CHECK-NEXT: vmov s8, r0
; CHECK-NEXT: ldrb.w r0, [sp, #5]
-; CHECK-NEXT: vabs.f16 s8, s8
-; CHECK-NEXT: ands r0, r0, #128
; CHECK-NEXT: vneg.f16 s10, s8
+; CHECK-NEXT: ands r0, r0, #128
; CHECK-NEXT: it ne
; CHECK-NEXT: movne r0, #1
; CHECK-NEXT: cmp r0, #0
; CHECK-NEXT: vseleq.f16 s8, s8, s10
; CHECK-NEXT: vmov r0, s8
; CHECK-NEXT: vmov.16 q1[6], r0
-; CHECK-NEXT: vmov.u16 r0, q0[7]
-; CHECK-NEXT: vmov s0, r0
; CHECK-NEXT: ldrb.w r0, [sp, #1]
-; CHECK-NEXT: vabs.f16 s0, s0
; CHECK-NEXT: ands r0, r0, #128
-; CHECK-NEXT: vneg.f16 s2, s0
; CHECK-NEXT: it ne
; CHECK-NEXT: movne r0, #1
; CHECK-NEXT: cmp r0, #0
define arm_aapcs_vfpcc <8 x half> @fneg_float16_t(<8 x half> %src) {
; CHECK-MVE-LABEL: fneg_float16_t:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[1]
-; CHECK-MVE-NEXT: vmov s4, r0
+; CHECK-MVE-NEXT: vmovx.f16 s4, s0
+; CHECK-MVE-NEXT: vneg.f16 s8, s1
; CHECK-MVE-NEXT: vneg.f16 s4, s4
; CHECK-MVE-NEXT: vmov r0, s4
-; CHECK-MVE-NEXT: vmov s4, r1
-; CHECK-MVE-NEXT: vneg.f16 s4, s4
+; CHECK-MVE-NEXT: vneg.f16 s4, s0
; CHECK-MVE-NEXT: vmov r1, s4
-; CHECK-MVE-NEXT: vmov.16 q1[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q1[1], r1
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vneg.f16 s8, s8
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
+; CHECK-MVE-NEXT: vmov.16 q1[0], r1
+; CHECK-MVE-NEXT: vneg.f16 s0, s0
+; CHECK-MVE-NEXT: vmov.16 q1[1], r0
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s1
; CHECK-MVE-NEXT: vmov.16 q1[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vneg.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vneg.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vneg.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vneg.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vneg.f16 s8, s3
; CHECK-MVE-NEXT: vmov.16 q1[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vneg.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
; CHECK-MVE-NEXT: vmov.16 q1[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vneg.f16 s0, s0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q1[7], r0
; CHECK-MVE-NEXT: vmov q0, q1
define arm_aapcs_vfpcc <8 x half> @fabs_float16_t(<8 x half> %src) {
; CHECK-MVE-LABEL: fabs_float16_t:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[1]
-; CHECK-MVE-NEXT: vmov s4, r0
+; CHECK-MVE-NEXT: vmovx.f16 s4, s0
+; CHECK-MVE-NEXT: vabs.f16 s8, s1
; CHECK-MVE-NEXT: vabs.f16 s4, s4
; CHECK-MVE-NEXT: vmov r0, s4
-; CHECK-MVE-NEXT: vmov s4, r1
-; CHECK-MVE-NEXT: vabs.f16 s4, s4
+; CHECK-MVE-NEXT: vabs.f16 s4, s0
; CHECK-MVE-NEXT: vmov r1, s4
-; CHECK-MVE-NEXT: vmov.16 q1[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q1[1], r1
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vabs.f16 s8, s8
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
+; CHECK-MVE-NEXT: vmov.16 q1[0], r1
+; CHECK-MVE-NEXT: vabs.f16 s0, s0
+; CHECK-MVE-NEXT: vmov.16 q1[1], r0
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s1
; CHECK-MVE-NEXT: vmov.16 q1[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vabs.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vabs.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vabs.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vabs.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vabs.f16 s8, s3
; CHECK-MVE-NEXT: vmov.16 q1[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vabs.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
; CHECK-MVE-NEXT: vmov.16 q1[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vabs.f16 s0, s0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q1[7], r0
; CHECK-MVE-NEXT: vmov q0, q1
define arm_aapcs_vfpcc <8 x half> @fceil_float16_t(<8 x half> %src) {
; CHECK-MVE-LABEL: fceil_float16_t:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[1]
-; CHECK-MVE-NEXT: vmov s4, r0
+; CHECK-MVE-NEXT: vmovx.f16 s4, s0
+; CHECK-MVE-NEXT: vrintp.f16 s8, s1
; CHECK-MVE-NEXT: vrintp.f16 s4, s4
; CHECK-MVE-NEXT: vmov r0, s4
-; CHECK-MVE-NEXT: vmov s4, r1
-; CHECK-MVE-NEXT: vrintp.f16 s4, s4
+; CHECK-MVE-NEXT: vrintp.f16 s4, s0
; CHECK-MVE-NEXT: vmov r1, s4
-; CHECK-MVE-NEXT: vmov.16 q1[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q1[1], r1
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrintp.f16 s8, s8
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
+; CHECK-MVE-NEXT: vmov.16 q1[0], r1
+; CHECK-MVE-NEXT: vrintp.f16 s0, s0
+; CHECK-MVE-NEXT: vmov.16 q1[1], r0
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s1
; CHECK-MVE-NEXT: vmov.16 q1[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vrintp.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vrintp.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrintp.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vrintp.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vrintp.f16 s8, s3
; CHECK-MVE-NEXT: vmov.16 q1[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrintp.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
; CHECK-MVE-NEXT: vmov.16 q1[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vrintp.f16 s0, s0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q1[7], r0
; CHECK-MVE-NEXT: vmov q0, q1
define arm_aapcs_vfpcc <8 x half> @ftrunc_float16_t(<8 x half> %src) {
; CHECK-MVE-LABEL: ftrunc_float16_t:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[1]
-; CHECK-MVE-NEXT: vmov s4, r0
+; CHECK-MVE-NEXT: vmovx.f16 s4, s0
+; CHECK-MVE-NEXT: vrintz.f16 s8, s1
; CHECK-MVE-NEXT: vrintz.f16 s4, s4
; CHECK-MVE-NEXT: vmov r0, s4
-; CHECK-MVE-NEXT: vmov s4, r1
-; CHECK-MVE-NEXT: vrintz.f16 s4, s4
+; CHECK-MVE-NEXT: vrintz.f16 s4, s0
; CHECK-MVE-NEXT: vmov r1, s4
-; CHECK-MVE-NEXT: vmov.16 q1[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q1[1], r1
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrintz.f16 s8, s8
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
+; CHECK-MVE-NEXT: vmov.16 q1[0], r1
+; CHECK-MVE-NEXT: vrintz.f16 s0, s0
+; CHECK-MVE-NEXT: vmov.16 q1[1], r0
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s1
; CHECK-MVE-NEXT: vmov.16 q1[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vrintz.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vrintz.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrintz.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vrintz.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vrintz.f16 s8, s3
; CHECK-MVE-NEXT: vmov.16 q1[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrintz.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
; CHECK-MVE-NEXT: vmov.16 q1[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vrintz.f16 s0, s0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q1[7], r0
; CHECK-MVE-NEXT: vmov q0, q1
define arm_aapcs_vfpcc <8 x half> @frint_float16_t(<8 x half> %src) {
; CHECK-MVE-LABEL: frint_float16_t:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[1]
-; CHECK-MVE-NEXT: vmov s4, r0
+; CHECK-MVE-NEXT: vmovx.f16 s4, s0
+; CHECK-MVE-NEXT: vrintx.f16 s8, s1
; CHECK-MVE-NEXT: vrintx.f16 s4, s4
; CHECK-MVE-NEXT: vmov r0, s4
-; CHECK-MVE-NEXT: vmov s4, r1
-; CHECK-MVE-NEXT: vrintx.f16 s4, s4
+; CHECK-MVE-NEXT: vrintx.f16 s4, s0
; CHECK-MVE-NEXT: vmov r1, s4
-; CHECK-MVE-NEXT: vmov.16 q1[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q1[1], r1
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrintx.f16 s8, s8
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
+; CHECK-MVE-NEXT: vmov.16 q1[0], r1
+; CHECK-MVE-NEXT: vrintx.f16 s0, s0
+; CHECK-MVE-NEXT: vmov.16 q1[1], r0
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s1
; CHECK-MVE-NEXT: vmov.16 q1[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vrintx.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vrintx.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrintx.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vrintx.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vrintx.f16 s8, s3
; CHECK-MVE-NEXT: vmov.16 q1[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrintx.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
; CHECK-MVE-NEXT: vmov.16 q1[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vrintx.f16 s0, s0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q1[7], r0
; CHECK-MVE-NEXT: vmov q0, q1
define arm_aapcs_vfpcc <8 x half> @fnearbyint_float16_t(<8 x half> %src) {
; CHECK-LABEL: fnearbyint_float16_t:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: vmov.u16 r0, q0[0]
-; CHECK-NEXT: vmov.u16 r1, q0[1]
-; CHECK-NEXT: vmov s4, r0
+; CHECK-NEXT: vmovx.f16 s4, s0
+; CHECK-NEXT: vrintr.f16 s8, s1
; CHECK-NEXT: vrintr.f16 s4, s4
; CHECK-NEXT: vmov r0, s4
-; CHECK-NEXT: vmov s4, r1
-; CHECK-NEXT: vrintr.f16 s4, s4
+; CHECK-NEXT: vrintr.f16 s4, s0
; CHECK-NEXT: vmov r1, s4
-; CHECK-NEXT: vmov.16 q1[0], r0
-; CHECK-NEXT: vmov.u16 r0, q0[2]
-; CHECK-NEXT: vmov.16 q1[1], r1
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vrintr.f16 s8, s8
+; CHECK-NEXT: vmovx.f16 s0, s3
+; CHECK-NEXT: vmov.16 q1[0], r1
+; CHECK-NEXT: vrintr.f16 s0, s0
+; CHECK-NEXT: vmov.16 q1[1], r0
; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vmovx.f16 s8, s1
; CHECK-NEXT: vmov.16 q1[2], r0
-; CHECK-NEXT: vmov.u16 r0, q0[3]
-; CHECK-NEXT: vmov s8, r0
; CHECK-NEXT: vrintr.f16 s8, s8
; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vrintr.f16 s8, s2
; CHECK-NEXT: vmov.16 q1[3], r0
-; CHECK-NEXT: vmov.u16 r0, q0[4]
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vrintr.f16 s8, s8
; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vmovx.f16 s8, s2
; CHECK-NEXT: vmov.16 q1[4], r0
-; CHECK-NEXT: vmov.u16 r0, q0[5]
-; CHECK-NEXT: vmov s8, r0
; CHECK-NEXT: vrintr.f16 s8, s8
; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vrintr.f16 s8, s3
; CHECK-NEXT: vmov.16 q1[5], r0
-; CHECK-NEXT: vmov.u16 r0, q0[6]
-; CHECK-NEXT: vmov s8, r0
-; CHECK-NEXT: vrintr.f16 s8, s8
; CHECK-NEXT: vmov r0, s8
; CHECK-NEXT: vmov.16 q1[6], r0
-; CHECK-NEXT: vmov.u16 r0, q0[7]
-; CHECK-NEXT: vmov s0, r0
-; CHECK-NEXT: vrintr.f16 s0, s0
; CHECK-NEXT: vmov r0, s0
; CHECK-NEXT: vmov.16 q1[7], r0
; CHECK-NEXT: vmov q0, q1
define arm_aapcs_vfpcc <8 x half> @ffloor_float16_t(<8 x half> %src) {
; CHECK-MVE-LABEL: ffloor_float16_t:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[1]
-; CHECK-MVE-NEXT: vmov s4, r0
+; CHECK-MVE-NEXT: vmovx.f16 s4, s0
+; CHECK-MVE-NEXT: vrintm.f16 s8, s1
; CHECK-MVE-NEXT: vrintm.f16 s4, s4
; CHECK-MVE-NEXT: vmov r0, s4
-; CHECK-MVE-NEXT: vmov s4, r1
-; CHECK-MVE-NEXT: vrintm.f16 s4, s4
+; CHECK-MVE-NEXT: vrintm.f16 s4, s0
; CHECK-MVE-NEXT: vmov r1, s4
-; CHECK-MVE-NEXT: vmov.16 q1[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q1[1], r1
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrintm.f16 s8, s8
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
+; CHECK-MVE-NEXT: vmov.16 q1[0], r1
+; CHECK-MVE-NEXT: vrintm.f16 s0, s0
+; CHECK-MVE-NEXT: vmov.16 q1[1], r0
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s1
; CHECK-MVE-NEXT: vmov.16 q1[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vrintm.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vrintm.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrintm.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vrintm.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vrintm.f16 s8, s3
; CHECK-MVE-NEXT: vmov.16 q1[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrintm.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
; CHECK-MVE-NEXT: vmov.16 q1[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vrintm.f16 s0, s0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q1[7], r0
; CHECK-MVE-NEXT: vmov q0, q1
define arm_aapcs_vfpcc <8 x half> @fround_float16_t(<8 x half> %src) {
; CHECK-MVE-LABEL: fround_float16_t:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[1]
-; CHECK-MVE-NEXT: vmov s4, r0
+; CHECK-MVE-NEXT: vmovx.f16 s4, s0
+; CHECK-MVE-NEXT: vrinta.f16 s8, s1
; CHECK-MVE-NEXT: vrinta.f16 s4, s4
; CHECK-MVE-NEXT: vmov r0, s4
-; CHECK-MVE-NEXT: vmov s4, r1
-; CHECK-MVE-NEXT: vrinta.f16 s4, s4
+; CHECK-MVE-NEXT: vrinta.f16 s4, s0
; CHECK-MVE-NEXT: vmov r1, s4
-; CHECK-MVE-NEXT: vmov.16 q1[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q1[1], r1
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrinta.f16 s8, s8
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
+; CHECK-MVE-NEXT: vmov.16 q1[0], r1
+; CHECK-MVE-NEXT: vrinta.f16 s0, s0
+; CHECK-MVE-NEXT: vmov.16 q1[1], r0
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s1
; CHECK-MVE-NEXT: vmov.16 q1[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vrinta.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vrinta.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrinta.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vmovx.f16 s8, s2
; CHECK-MVE-NEXT: vmov.16 q1[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s8, r0
; CHECK-MVE-NEXT: vrinta.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
+; CHECK-MVE-NEXT: vrinta.f16 s8, s3
; CHECK-MVE-NEXT: vmov.16 q1[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vrinta.f16 s8, s8
; CHECK-MVE-NEXT: vmov r0, s8
; CHECK-MVE-NEXT: vmov.16 q1[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vrinta.f16 s0, s0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q1[7], r0
; CHECK-MVE-NEXT: vmov q0, q1
define arm_aapcs_vfpcc <8 x half> @minnm_float16_t(<8 x half> %src1, <8 x half> %src2) {
; CHECK-MVE-LABEL: minnm_float16_t:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[1]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[0]
-; CHECK-MVE-NEXT: vmov s10, r0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[1]
-; CHECK-MVE-NEXT: vminnm.f16 s8, s10, s8
-; CHECK-MVE-NEXT: vmov s10, r2
+; CHECK-MVE-NEXT: vminnm.f16 s8, s4, s0
+; CHECK-MVE-NEXT: vmovx.f16 s10, s4
; CHECK-MVE-NEXT: vmov r0, s8
-; CHECK-MVE-NEXT: vmov s8, r1
+; CHECK-MVE-NEXT: vmovx.f16 s8, s0
; CHECK-MVE-NEXT: vminnm.f16 s8, s10, s8
+; CHECK-MVE-NEXT: vminnm.f16 s12, s5, s1
; CHECK-MVE-NEXT: vmov r1, s8
; CHECK-MVE-NEXT: vmov.16 q2[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
+; CHECK-MVE-NEXT: vmov r0, s12
+; CHECK-MVE-NEXT: vmovx.f16 s12, s1
+; CHECK-MVE-NEXT: vmovx.f16 s14, s5
; CHECK-MVE-NEXT: vmov.16 q2[1], r1
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[2]
-; CHECK-MVE-NEXT: vmov s14, r0
; CHECK-MVE-NEXT: vminnm.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: vmov.16 q2[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[3]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vminnm.f16 s12, s14, s12
; CHECK-MVE-NEXT: vmov r0, s12
+; CHECK-MVE-NEXT: vminnm.f16 s12, s6, s2
; CHECK-MVE-NEXT: vmov.16 q2[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[4]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vminnm.f16 s12, s14, s12
; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.16 q2[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[5]
-; CHECK-MVE-NEXT: vmov s14, r0
+; CHECK-MVE-NEXT: vmovx.f16 s12, s2
+; CHECK-MVE-NEXT: vmovx.f16 s14, s6
; CHECK-MVE-NEXT: vminnm.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov.16 q2[4], r0
; CHECK-MVE-NEXT: vmov r0, s12
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
+; CHECK-MVE-NEXT: vmovx.f16 s2, s7
+; CHECK-MVE-NEXT: vminnm.f16 s12, s7, s3
; CHECK-MVE-NEXT: vmov.16 q2[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[6]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vminnm.f16 s12, s14, s12
; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.16 q2[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vmov s2, r0
; CHECK-MVE-NEXT: vminnm.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q2[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q2[7], r0
; CHECK-MVE-NEXT: vmov q0, q2
define arm_aapcs_vfpcc <8 x half> @shuffle1_f16(<8 x half> %src) {
; CHECK-LABEL: shuffle1_f16:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: vmov.u16 r0, q0[7]
-; CHECK-NEXT: vmov.u16 r1, q0[6]
-; CHECK-NEXT: vmov.16 q1[0], r0
-; CHECK-NEXT: vmov.u16 r0, q0[5]
-; CHECK-NEXT: vmov.16 q1[1], r1
+; CHECK-NEXT: vmovx.f16 s4, s3
+; CHECK-NEXT: vmov r0, s3
+; CHECK-NEXT: vmov r1, s4
+; CHECK-NEXT: vmovx.f16 s8, s2
+; CHECK-NEXT: vmov.16 q1[0], r1
+; CHECK-NEXT: vmov.16 q1[1], r0
+; CHECK-NEXT: vmov r0, s8
; CHECK-NEXT: vmov.16 q1[2], r0
-; CHECK-NEXT: vmov.u16 r0, q0[4]
+; CHECK-NEXT: vmov r0, s2
+; CHECK-NEXT: vmovx.f16 s8, s1
; CHECK-NEXT: vmov.16 q1[3], r0
-; CHECK-NEXT: vmov.u16 r0, q0[3]
+; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vmovx.f16 s8, s0
; CHECK-NEXT: vmov.16 q1[4], r0
-; CHECK-NEXT: vmov.u16 r0, q0[2]
+; CHECK-NEXT: vmov r0, s1
; CHECK-NEXT: vmov.16 q1[5], r0
-; CHECK-NEXT: vmov.u16 r0, q0[1]
+; CHECK-NEXT: vmov r0, s8
; CHECK-NEXT: vmov.16 q1[6], r0
-; CHECK-NEXT: vmov.u16 r0, q0[0]
+; CHECK-NEXT: vmov r0, s0
; CHECK-NEXT: vmov.16 q1[7], r0
; CHECK-NEXT: vmov q0, q1
; CHECK-NEXT: bx lr
define arm_aapcs_vfpcc <8 x half> @shuffle3_f16(<8 x half> %src) {
; CHECK-LABEL: shuffle3_f16:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: vmov.u16 r0, q0[4]
-; CHECK-NEXT: vmov.u16 r1, q0[5]
-; CHECK-NEXT: vmov.16 q1[0], r0
-; CHECK-NEXT: vmov.u16 r0, q0[7]
-; CHECK-NEXT: vmov.16 q1[1], r1
+; CHECK-NEXT: vmovx.f16 s4, s2
+; CHECK-NEXT: vmov r1, s2
+; CHECK-NEXT: vmov r0, s4
+; CHECK-NEXT: vmov.16 q1[0], r1
+; CHECK-NEXT: vmovx.f16 s8, s3
+; CHECK-NEXT: vmov.16 q1[1], r0
+; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vmovx.f16 s8, s1
; CHECK-NEXT: vmov.16 q1[2], r0
-; CHECK-NEXT: vmov.u16 r0, q0[6]
+; CHECK-NEXT: vmov r0, s3
; CHECK-NEXT: vmov.16 q1[3], r0
-; CHECK-NEXT: vmov.u16 r0, q0[3]
+; CHECK-NEXT: vmov r0, s8
+; CHECK-NEXT: vmovx.f16 s8, s0
; CHECK-NEXT: vmov.16 q1[4], r0
-; CHECK-NEXT: vmov.u16 r0, q0[1]
+; CHECK-NEXT: vmov r0, s8
; CHECK-NEXT: vmov.16 q1[5], r0
-; CHECK-NEXT: vmov.u16 r0, q0[2]
+; CHECK-NEXT: vmov r0, s1
; CHECK-NEXT: vmov.16 q1[6], r0
-; CHECK-NEXT: vmov.u16 r0, q0[0]
+; CHECK-NEXT: vmov r0, s0
; CHECK-NEXT: vmov.16 q1[7], r0
; CHECK-NEXT: vmov q0, q1
; CHECK-NEXT: bx lr
define arm_aapcs_vfpcc half @extract_f16_0(<8 x half> %a) {
; CHECK-LABEL: extract_f16_0:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: vmov.u16 r1, q0[0]
-; CHECK-NEXT: vmov s0, r1
; CHECK-NEXT: vstr.16 s0, [r0]
; CHECK-NEXT: bx lr
entry:
define arm_aapcs_vfpcc half @extract_f16_3(<8 x half> %a) {
; CHECK-LABEL: extract_f16_3:
; CHECK: @ %bb.0: @ %entry
-; CHECK-NEXT: vmov.u16 r1, q0[3]
-; CHECK-NEXT: vmov s0, r1
+; CHECK-NEXT: vmovx.f16 s0, s1
; CHECK-NEXT: vstr.16 s0, [r0]
; CHECK-NEXT: bx lr
entry:
define arm_aapcs_vfpcc <8 x half> @add_float16_t(<8 x half> %src1, <8 x half> %src2) {
; CHECK-MVE-LABEL: add_float16_t:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[1]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[0]
-; CHECK-MVE-NEXT: vmov s10, r0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[1]
-; CHECK-MVE-NEXT: vadd.f16 s8, s10, s8
-; CHECK-MVE-NEXT: vmov s10, r2
+; CHECK-MVE-NEXT: vadd.f16 s8, s4, s0
+; CHECK-MVE-NEXT: vmovx.f16 s10, s4
; CHECK-MVE-NEXT: vmov r0, s8
-; CHECK-MVE-NEXT: vmov s8, r1
+; CHECK-MVE-NEXT: vmovx.f16 s8, s0
; CHECK-MVE-NEXT: vadd.f16 s8, s10, s8
+; CHECK-MVE-NEXT: vadd.f16 s12, s5, s1
; CHECK-MVE-NEXT: vmov r1, s8
; CHECK-MVE-NEXT: vmov.16 q2[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
+; CHECK-MVE-NEXT: vmov r0, s12
+; CHECK-MVE-NEXT: vmovx.f16 s12, s1
+; CHECK-MVE-NEXT: vmovx.f16 s14, s5
; CHECK-MVE-NEXT: vmov.16 q2[1], r1
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[2]
-; CHECK-MVE-NEXT: vmov s14, r0
; CHECK-MVE-NEXT: vadd.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: vmov.16 q2[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[3]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vadd.f16 s12, s14, s12
; CHECK-MVE-NEXT: vmov r0, s12
+; CHECK-MVE-NEXT: vadd.f16 s12, s6, s2
; CHECK-MVE-NEXT: vmov.16 q2[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[4]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vadd.f16 s12, s14, s12
; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.16 q2[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[5]
-; CHECK-MVE-NEXT: vmov s14, r0
+; CHECK-MVE-NEXT: vmovx.f16 s12, s2
+; CHECK-MVE-NEXT: vmovx.f16 s14, s6
; CHECK-MVE-NEXT: vadd.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov.16 q2[4], r0
; CHECK-MVE-NEXT: vmov r0, s12
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
+; CHECK-MVE-NEXT: vmovx.f16 s2, s7
+; CHECK-MVE-NEXT: vadd.f16 s12, s7, s3
; CHECK-MVE-NEXT: vmov.16 q2[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[6]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vadd.f16 s12, s14, s12
; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.16 q2[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vmov s2, r0
; CHECK-MVE-NEXT: vadd.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q2[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q2[7], r0
; CHECK-MVE-NEXT: vmov q0, q2
define arm_aapcs_vfpcc <8 x half> @sub_float16_t(<8 x half> %src1, <8 x half> %src2) {
; CHECK-MVE-LABEL: sub_float16_t:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[1]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[0]
-; CHECK-MVE-NEXT: vmov s10, r0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[1]
-; CHECK-MVE-NEXT: vsub.f16 s8, s10, s8
-; CHECK-MVE-NEXT: vmov s10, r2
+; CHECK-MVE-NEXT: vsub.f16 s8, s4, s0
+; CHECK-MVE-NEXT: vmovx.f16 s10, s4
; CHECK-MVE-NEXT: vmov r0, s8
-; CHECK-MVE-NEXT: vmov s8, r1
+; CHECK-MVE-NEXT: vmovx.f16 s8, s0
; CHECK-MVE-NEXT: vsub.f16 s8, s10, s8
+; CHECK-MVE-NEXT: vsub.f16 s12, s5, s1
; CHECK-MVE-NEXT: vmov r1, s8
; CHECK-MVE-NEXT: vmov.16 q2[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
+; CHECK-MVE-NEXT: vmov r0, s12
+; CHECK-MVE-NEXT: vmovx.f16 s12, s1
+; CHECK-MVE-NEXT: vmovx.f16 s14, s5
; CHECK-MVE-NEXT: vmov.16 q2[1], r1
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[2]
-; CHECK-MVE-NEXT: vmov s14, r0
; CHECK-MVE-NEXT: vsub.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: vmov.16 q2[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[3]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vsub.f16 s12, s14, s12
; CHECK-MVE-NEXT: vmov r0, s12
+; CHECK-MVE-NEXT: vsub.f16 s12, s6, s2
; CHECK-MVE-NEXT: vmov.16 q2[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[4]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vsub.f16 s12, s14, s12
; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.16 q2[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[5]
-; CHECK-MVE-NEXT: vmov s14, r0
+; CHECK-MVE-NEXT: vmovx.f16 s12, s2
+; CHECK-MVE-NEXT: vmovx.f16 s14, s6
; CHECK-MVE-NEXT: vsub.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov.16 q2[4], r0
; CHECK-MVE-NEXT: vmov r0, s12
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
+; CHECK-MVE-NEXT: vmovx.f16 s2, s7
+; CHECK-MVE-NEXT: vsub.f16 s12, s7, s3
; CHECK-MVE-NEXT: vmov.16 q2[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[6]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vsub.f16 s12, s14, s12
; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.16 q2[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vmov s2, r0
; CHECK-MVE-NEXT: vsub.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q2[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q2[7], r0
; CHECK-MVE-NEXT: vmov q0, q2
define arm_aapcs_vfpcc <8 x half> @mul_float16_t(<8 x half> %src1, <8 x half> %src2) {
; CHECK-MVE-LABEL: mul_float16_t:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[1]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[0]
-; CHECK-MVE-NEXT: vmov s10, r0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[1]
-; CHECK-MVE-NEXT: vmul.f16 s8, s10, s8
-; CHECK-MVE-NEXT: vmov s10, r2
+; CHECK-MVE-NEXT: vmul.f16 s8, s4, s0
+; CHECK-MVE-NEXT: vmovx.f16 s10, s4
; CHECK-MVE-NEXT: vmov r0, s8
-; CHECK-MVE-NEXT: vmov s8, r1
+; CHECK-MVE-NEXT: vmovx.f16 s8, s0
; CHECK-MVE-NEXT: vmul.f16 s8, s10, s8
+; CHECK-MVE-NEXT: vmul.f16 s12, s5, s1
; CHECK-MVE-NEXT: vmov r1, s8
; CHECK-MVE-NEXT: vmov.16 q2[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
+; CHECK-MVE-NEXT: vmov r0, s12
+; CHECK-MVE-NEXT: vmovx.f16 s12, s1
+; CHECK-MVE-NEXT: vmovx.f16 s14, s5
; CHECK-MVE-NEXT: vmov.16 q2[1], r1
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[2]
-; CHECK-MVE-NEXT: vmov s14, r0
; CHECK-MVE-NEXT: vmul.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: vmov.16 q2[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[3]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vmul.f16 s12, s14, s12
; CHECK-MVE-NEXT: vmov r0, s12
+; CHECK-MVE-NEXT: vmul.f16 s12, s6, s2
; CHECK-MVE-NEXT: vmov.16 q2[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[4]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vmul.f16 s12, s14, s12
; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.16 q2[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[5]
-; CHECK-MVE-NEXT: vmov s14, r0
+; CHECK-MVE-NEXT: vmovx.f16 s12, s2
+; CHECK-MVE-NEXT: vmovx.f16 s14, s6
; CHECK-MVE-NEXT: vmul.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov.16 q2[4], r0
; CHECK-MVE-NEXT: vmov r0, s12
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
+; CHECK-MVE-NEXT: vmovx.f16 s2, s7
+; CHECK-MVE-NEXT: vmul.f16 s12, s7, s3
; CHECK-MVE-NEXT: vmov.16 q2[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[6]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vmul.f16 s12, s14, s12
; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.16 q2[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vmov s2, r0
; CHECK-MVE-NEXT: vmul.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q2[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q2[7], r0
; CHECK-MVE-NEXT: vmov q0, q2
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmp.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmp.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmp.f16 s2, s6
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmp.f16 s3, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vcmp.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vcmp.f16 s0, s4
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmp.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r2, #1
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmp.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s20
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
+; CHECK-MVE-NEXT: vcmp.f16 s22, s20
; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vcmp.f16 s2, s6
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s20
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: vmov r1, s20
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
+; CHECK-MVE-NEXT: vcmp.f16 s22, s20
; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vcmp.f16 s3, s7
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s20
+; CHECK-MVE-NEXT: vcmp.f16 s0, s4
; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vcmp.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
; CHECK-MVE-NEXT: cmp r0, #0
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s6
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s6
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s6
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s6
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmp.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r2, #1
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmp.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s20
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
+; CHECK-MVE-NEXT: vcmp.f16 s22, s20
; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vcmp.f16 s2, s6
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s20
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: vmov r1, s20
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
+; CHECK-MVE-NEXT: vcmp.f16 s22, s20
; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vcmp.f16 s3, s7
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s20
+; CHECK-MVE-NEXT: vcmp.f16 s0, s4
; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vcmp.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
; CHECK-MVE-NEXT: cmp r0, #0
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmp.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmp.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmp.f16 s2, s6
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmp.f16 s3, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vcmp.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vcmp.f16 s0, s4
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s6
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s6
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s6
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s6
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s6
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10, d11}
; CHECK-MVE-NEXT: vpush {d8, d9, d10, d11}
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[1]
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[1]
+; CHECK-MVE-NEXT: vmovx.f16 s16, s4
+; CHECK-MVE-NEXT: vmovx.f16 s18, s0
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vmovx.f16 s16, s8
+; CHECK-MVE-NEXT: vmovx.f16 s18, s12
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r3, q0[0]
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vmov s18, r3
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[0]
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s16, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q3[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s18, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s12, s8
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s5
; CHECK-MVE-NEXT: vmov r2, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov.16 q4[0], r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[2]
+; CHECK-MVE-NEXT: vmovx.f16 s22, s1
; CHECK-MVE-NEXT: vmov.16 q4[1], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[2]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s22, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[3]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s13, s9
+; CHECK-MVE-NEXT: vmovx.f16 s4, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
-; CHECK-MVE-NEXT: vmov.16 q4[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[3]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s5
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmovx.f16 s22, s13
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[4]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s6
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
-; CHECK-MVE-NEXT: vmov.16 q4[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[4]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[5]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vseleq.f16 s20, s14, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s2
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
-; CHECK-MVE-NEXT: vmov.16 q4[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[5]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s20, s6
; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmov.16 q4[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
+; CHECK-MVE-NEXT: vmovx.f16 s22, s14
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[6]
; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s22, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s7
; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
-; CHECK-MVE-NEXT: vmov.16 q4[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[6]
-; CHECK-MVE-NEXT: vmov s20, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s22, s20
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q4[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q3[6]
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s22, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[7]
-; CHECK-MVE-NEXT: vseleq.f16 s20, s22, s20
-; CHECK-MVE-NEXT: vmov s2, r2
-; CHECK-MVE-NEXT: vmov r1, s20
-; CHECK-MVE-NEXT: vmov.16 q4[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s2, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s4
+; CHECK-MVE-NEXT: vseleq.f16 s20, s15, s11
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q3[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s11
+; CHECK-MVE-NEXT: vmovx.f16 s2, s15
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s20
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q4[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q4[7], r0
; CHECK-MVE-NEXT: vmov q0, q4
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmp.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vcmp.f16 s0, s16
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmp.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: mov.w r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmp.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmp.f16 s2, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmp.f16 s3, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vcmp.f16 s0, s16
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmp.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmp.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: vcmp.f16 s0, s16
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmp.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r2, #1
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmp.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
+; CHECK-MVE-NEXT: vcmp.f16 s18, s16
; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmp.f16 s2, s16
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[3], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
+; CHECK-MVE-NEXT: vcmp.f16 s18, s16
; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmp.f16 s3, s16
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[5], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
+; CHECK-MVE-NEXT: vcmp.f16 s0, s16
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmp.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: mov.w r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: mov.w r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: mov.w r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: mov.w r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmp.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: vcmp.f16 s0, s16
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmp.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r2, #1
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmp.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
+; CHECK-MVE-NEXT: vcmp.f16 s18, s16
; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmp.f16 s2, s16
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[3], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
+; CHECK-MVE-NEXT: vcmp.f16 s18, s16
; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmp.f16 s3, s16
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[5], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
+; CHECK-MVE-NEXT: vcmp.f16 s0, s16
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmp.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmp.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vcmp.f16 s0, s16
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmp.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: mov.w r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmp.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmp.f16 s2, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmp.f16 s3, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vcmp.f16 s0, s16
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmp.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmp.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: mov.w r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: mov.w r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: mov.w r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: mov.w r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: mov.w r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9, d10}
; CHECK-MVE-NEXT: vpush {d8, d9, d10}
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[0]
; CHECK-MVE-NEXT: vldr.16 s16, [r0]
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s14, r2
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r0, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, s16
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r2, #0
+; CHECK-MVE-NEXT: vmov r0, s12
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: mov.w r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s16
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
+; CHECK-MVE-NEXT: vmovx.f16 s20, s9
+; CHECK-MVE-NEXT: vmov.16 q3[1], r0
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s18, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[2], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s1
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s5
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vmovx.f16 s20, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vseleq.f16 s18, s10, s6
+; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[4], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s18, s2
; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
+; CHECK-MVE-NEXT: vmovx.f16 s18, s6
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s16
; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r0, s18
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
; CHECK-MVE-NEXT: vmov.16 q3[5], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s18, r0
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s18, s16
-; CHECK-MVE-NEXT: vmov s18, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r0, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s20, r2
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vseleq.f16 s18, s20, s18
-; CHECK-MVE-NEXT: vmov r0, s18
-; CHECK-MVE-NEXT: vmov.16 q3[6], r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, s16
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vseleq.f16 s18, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r0, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s2, r0
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: vmov r0, s18
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmp.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmp.f16 s0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmp.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmp.f16 s1, #0
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmp.f16 s2, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmp.f16 s3, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vcmp.f16 s0, #0
; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmp.f16 s0, #0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmp.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmp.f16 s0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmp.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r2, #1
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmp.f16 s1, #0
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
+; CHECK-MVE-NEXT: vcmp.f16 s16, #0
; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmp.f16 s2, #0
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
+; CHECK-MVE-NEXT: vcmp.f16 s16, #0
; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmp.f16 s3, #0
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
+; CHECK-MVE-NEXT: vcmp.f16 s0, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmp.f16 s0, #0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmpe.f16 s1, #0
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it gt
; CHECK-MVE-NEXT: movgt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmpe.f16 s1, #0
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ge
; CHECK-MVE-NEXT: movge r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmpe.f16 s1, #0
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it mi
; CHECK-MVE-NEXT: movmi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmpe.f16 s1, #0
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ls
; CHECK-MVE-NEXT: movls r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmp.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmp.f16 s0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmp.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r2, #1
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: movs r0, #0
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmp.f16 s1, #0
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
+; CHECK-MVE-NEXT: vcmp.f16 s16, #0
; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmp.f16 s2, #0
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[3], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
+; CHECK-MVE-NEXT: vcmp.f16 s16, #0
; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmp.f16 s3, #0
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[5], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r1, #1
+; CHECK-MVE-NEXT: vcmp.f16 s0, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmp.f16 s0, #0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it eq
; CHECK-MVE-NEXT: moveq r0, #1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmp.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmp.f16 s0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmp.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmp.f16 s1, #0
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmp.f16 s2, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmp.f16 s3, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vcmp.f16 s0, #0
; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmp.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmp.f16 s0, #0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmpe.f16 s1, #0
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it hi
; CHECK-MVE-NEXT: movhi r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmpe.f16 s1, #0
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it pl
; CHECK-MVE-NEXT: movpl r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmpe.f16 s1, #0
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it lt
; CHECK-MVE-NEXT: movlt r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, #0
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmpe.f16 s1, #0
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, #0
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, #0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it le
; CHECK-MVE-NEXT: movle r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmpe.f16 s12, s12
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, s12
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s1
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
; CHECK-MVE-NEXT: vcmpe.f16 s16, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s2
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, s16
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
; CHECK-MVE-NEXT: vcmpe.f16 s16, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s3
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s0
; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, s16
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vc
; CHECK-MVE-NEXT: movvc r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
; CHECK-MVE: @ %bb.0: @ %entry
; CHECK-MVE-NEXT: .vsave {d8, d9}
; CHECK-MVE-NEXT: vpush {d8, d9}
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[0]
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[0]
-; CHECK-MVE-NEXT: vmov s12, r1
+; CHECK-MVE-NEXT: vmovx.f16 s12, s0
; CHECK-MVE-NEXT: movs r1, #0
; CHECK-MVE-NEXT: vcmpe.f16 s12, s12
-; CHECK-MVE-NEXT: vmov s12, r2
+; CHECK-MVE-NEXT: vmovx.f16 s12, s4
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[0]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s14, r2
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s0
+; CHECK-MVE-NEXT: vmovx.f16 s14, s8
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q0[1]
+; CHECK-MVE-NEXT: mov.w r2, #0
; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
-; CHECK-MVE-NEXT: vmov.u16 r3, q1[1]
-; CHECK-MVE-NEXT: vmov r1, s12
-; CHECK-MVE-NEXT: movs r0, #0
-; CHECK-MVE-NEXT: vmov s12, r2
-; CHECK-MVE-NEXT: movs r2, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s12, s12
-; CHECK-MVE-NEXT: vmov s12, r3
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r2, #1
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vmov.u16 r3, q2[1]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r2, #1
-; CHECK-MVE-NEXT: vmov s14, r3
; CHECK-MVE-NEXT: cmp r2, #0
-; CHECK-MVE-NEXT: vseleq.f16 s12, s14, s12
+; CHECK-MVE-NEXT: vmov r1, s12
+; CHECK-MVE-NEXT: vseleq.f16 s12, s8, s4
; CHECK-MVE-NEXT: vmov r2, s12
-; CHECK-MVE-NEXT: vmov.16 q3[0], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[2]
-; CHECK-MVE-NEXT: vmov.16 q3[1], r2
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[2]
+; CHECK-MVE-NEXT: vcmpe.f16 s1, s1
+; CHECK-MVE-NEXT: vmov.16 q3[0], r2
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: vmov.16 q3[1], r1
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[2]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[3]
+; CHECK-MVE-NEXT: vseleq.f16 s16, s9, s5
+; CHECK-MVE-NEXT: vmovx.f16 s18, s9
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[2], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[3]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s1
; CHECK-MVE-NEXT: vcmpe.f16 s16, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[2], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[3]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s5
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[4]
+; CHECK-MVE-NEXT: vcmpe.f16 s2, s2
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vmovx.f16 s18, s10
; CHECK-MVE-NEXT: vmov.16 q3[3], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[4]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, s16
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[4]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[5]
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vseleq.f16 s16, s10, s6
+; CHECK-MVE-NEXT: vmovx.f16 s0, s3
; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[4], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[5]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
+; CHECK-MVE-NEXT: vmovx.f16 s16, s2
; CHECK-MVE-NEXT: vcmpe.f16 s16, s16
-; CHECK-MVE-NEXT: vmov s16, r2
+; CHECK-MVE-NEXT: vmov.16 q3[4], r1
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[5]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
+; CHECK-MVE-NEXT: vmovx.f16 s16, s6
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q1[6]
+; CHECK-MVE-NEXT: vcmpe.f16 s3, s3
; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
+; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: vmov r1, s16
+; CHECK-MVE-NEXT: vcmpe.f16 s0, s0
; CHECK-MVE-NEXT: vmov.16 q3[5], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[6]
-; CHECK-MVE-NEXT: vmov s16, r1
-; CHECK-MVE-NEXT: movs r1, #0
-; CHECK-MVE-NEXT: vcmpe.f16 s16, s16
-; CHECK-MVE-NEXT: vmov s16, r2
-; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
+; CHECK-MVE-NEXT: mov.w r1, #0
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r1, #1
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vmov.u16 r2, q2[6]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r1, #1
-; CHECK-MVE-NEXT: vmov s18, r2
; CHECK-MVE-NEXT: cmp r1, #0
-; CHECK-MVE-NEXT: vseleq.f16 s16, s18, s16
-; CHECK-MVE-NEXT: vmov r1, s16
-; CHECK-MVE-NEXT: vmov.16 q3[6], r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q0[7]
-; CHECK-MVE-NEXT: vmov s0, r1
-; CHECK-MVE-NEXT: vmov.u16 r1, q1[7]
-; CHECK-MVE-NEXT: vcmpe.f16 s0, s0
-; CHECK-MVE-NEXT: vmov s0, r1
+; CHECK-MVE-NEXT: vseleq.f16 s16, s11, s7
+; CHECK-MVE-NEXT: movs r0, #0
; CHECK-MVE-NEXT: vmrs APSR_nzcv, fpscr
; CHECK-MVE-NEXT: it vs
; CHECK-MVE-NEXT: movvs r0, #1
; CHECK-MVE-NEXT: cmp r0, #0
-; CHECK-MVE-NEXT: vmov.u16 r1, q2[7]
; CHECK-MVE-NEXT: it ne
; CHECK-MVE-NEXT: movne r0, #1
-; CHECK-MVE-NEXT: vmov s2, r1
+; CHECK-MVE-NEXT: vmovx.f16 s0, s7
+; CHECK-MVE-NEXT: vmovx.f16 s2, s11
; CHECK-MVE-NEXT: cmp r0, #0
+; CHECK-MVE-NEXT: vmov r1, s16
; CHECK-MVE-NEXT: vseleq.f16 s0, s2, s0
+; CHECK-MVE-NEXT: vmov.16 q3[6], r1
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q3[7], r0
; CHECK-MVE-NEXT: vmov q0, q3
define arm_aapcs_vfpcc <8 x i16> @foo_int16_half(<8 x half> %src) {
; CHECK-MVE-LABEL: foo_int16_half:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s4, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s6, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s10, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[1]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov s5, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vmovx.f16 s4, s3
+; CHECK-MVE-NEXT: vmovx.f16 s6, s2
+; CHECK-MVE-NEXT: vmovx.f16 s10, s1
+; CHECK-MVE-NEXT: vmovx.f16 s14, s0
; CHECK-MVE-NEXT: vcvt.s32.f16 s4, s4
; CHECK-MVE-NEXT: vcvt.s32.f16 s6, s6
-; CHECK-MVE-NEXT: vcvt.s32.f16 s8, s8
+; CHECK-MVE-NEXT: vcvt.s32.f16 s8, s3
; CHECK-MVE-NEXT: vcvt.s32.f16 s10, s10
-; CHECK-MVE-NEXT: vcvt.s32.f16 s12, s12
+; CHECK-MVE-NEXT: vcvt.s32.f16 s12, s2
; CHECK-MVE-NEXT: vcvt.s32.f16 s14, s14
-; CHECK-MVE-NEXT: vcvt.s32.f16 s5, s5
+; CHECK-MVE-NEXT: vcvt.s32.f16 s5, s1
; CHECK-MVE-NEXT: vcvt.s32.f16 s0, s0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q0[0], r0
define arm_aapcs_vfpcc <8 x i16> @foo_uint16_half(<8 x half> %src) {
; CHECK-MVE-LABEL: foo_uint16_half:
; CHECK-MVE: @ %bb.0: @ %entry
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[7]
-; CHECK-MVE-NEXT: vmov s4, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[5]
-; CHECK-MVE-NEXT: vmov s6, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[6]
-; CHECK-MVE-NEXT: vmov s8, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[3]
-; CHECK-MVE-NEXT: vmov s10, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[4]
-; CHECK-MVE-NEXT: vmov s12, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[1]
-; CHECK-MVE-NEXT: vmov s14, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[2]
-; CHECK-MVE-NEXT: vmov s5, r0
-; CHECK-MVE-NEXT: vmov.u16 r0, q0[0]
-; CHECK-MVE-NEXT: vmov s0, r0
+; CHECK-MVE-NEXT: vmovx.f16 s4, s3
+; CHECK-MVE-NEXT: vmovx.f16 s6, s2
+; CHECK-MVE-NEXT: vmovx.f16 s10, s1
+; CHECK-MVE-NEXT: vmovx.f16 s14, s0
; CHECK-MVE-NEXT: vcvt.s32.f16 s4, s4
; CHECK-MVE-NEXT: vcvt.s32.f16 s6, s6
-; CHECK-MVE-NEXT: vcvt.s32.f16 s8, s8
+; CHECK-MVE-NEXT: vcvt.s32.f16 s8, s3
; CHECK-MVE-NEXT: vcvt.s32.f16 s10, s10
-; CHECK-MVE-NEXT: vcvt.s32.f16 s12, s12
+; CHECK-MVE-NEXT: vcvt.s32.f16 s12, s2
; CHECK-MVE-NEXT: vcvt.s32.f16 s14, s14
-; CHECK-MVE-NEXT: vcvt.s32.f16 s5, s5
+; CHECK-MVE-NEXT: vcvt.s32.f16 s5, s1
; CHECK-MVE-NEXT: vcvt.s32.f16 s0, s0
; CHECK-MVE-NEXT: vmov r0, s0
; CHECK-MVE-NEXT: vmov.16 q0[0], r0
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=thumbv8.1m.main-arm-none-eabi -mattr=+mve.fp %s -o - | FileCheck %s
define arm_aapcs_vfpcc <4 x float> @fma_v4f32(<4 x float> %dst, <4 x float> %s1, <4 x float> %s2) {