; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc -mtriple=thumbv8.1m.main-arm-none-eabi %s -o - -mattr=+mve.fp | FileCheck %s define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_1(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_1: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #1 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_2(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_2: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #2 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_3(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_3: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #3 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_4(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_4: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #4 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_5(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_5: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #5 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_6(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_6: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #6 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_7(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_7: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #7 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_8(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_8: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #8 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_9(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_9: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #9 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_10(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_10: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #10 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_11(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_11: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #11 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_12(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_12: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #12 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_13(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_13: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #13 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_14(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_14: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #14 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_15(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_15: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #15 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_16(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_16: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #16 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_17(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_17: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #17 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_18(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_18: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #18 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_19(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_19: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #19 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_20(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_20: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #20 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_21(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_21: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #21 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_22(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_22: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #22 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_23(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_23: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #23 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_24(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_24: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #24 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_25(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_25: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #25 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_26(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_26: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #26 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_27(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_27: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #27 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_28(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_28: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #28 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_29(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_29: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #29 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_30(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_30: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #30 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_31(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_31: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #31 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_32(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_32: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s32.f32 q0, q0, #32 ; CHECK-NEXT: bx lr %2 = fmul <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_i32_33(<4 x float> %0) { ; CHECK-LABEL: vcvt_i32_33: ; CHECK: @ %bb.0: ; CHECK-NEXT: vmov.i32 q1, #0x50000000 ; CHECK-NEXT: vmul.f32 q0, q0, q1 ; CHECK-NEXT: vcvt.s32.f32 q0, q0 ; CHECK-NEXT: bx lr %2 = fmul <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_1(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_1: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #1 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_2(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_2: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #2 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_3(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_3: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #3 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_4(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_4: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #4 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_5(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_5: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #5 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_6(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_6: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #6 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_7(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_7: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #7 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_8(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_8: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #8 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_9(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_9: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #9 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_10(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_10: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #10 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_11(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_11: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #11 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_12(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_12: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #12 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_13(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_13: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #13 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_14(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_14: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #14 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_i16_15(<8 x half> %0) { ; CHECK-LABEL: vcvt_i16_15: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #15 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_1(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_1: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #1 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_2(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_2: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #2 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_3(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_3: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #3 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_4(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_4: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #4 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_5(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_5: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #5 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_6(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_6: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #6 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_7(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_7: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #7 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_8(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_8: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #8 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_9(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_9: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #9 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_10(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_10: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #10 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_11(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_11: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #11 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_12(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_12: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #12 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_13(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_13: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #13 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_14(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_14: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #14 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_15(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_15: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #15 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_16(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_16: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #16 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_17(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_17: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #17 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_18(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_18: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #18 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_19(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_19: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #19 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_20(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_20: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #20 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_21(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_21: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #21 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_22(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_22: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #22 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_23(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_23: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #23 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_24(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_24: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #24 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_25(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_25: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #25 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_26(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_26: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #26 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_27(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_27: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #27 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_28(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_28: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #28 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_29(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_29: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #29 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_30(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_30: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #30 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_31(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_31: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #31 ; CHECK-NEXT: bx lr %2 = fmul fast <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_32(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_32: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u32.f32 q0, q0, #32 ; CHECK-NEXT: bx lr %2 = fmul <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_u32_33(<4 x float> %0) { ; CHECK-LABEL: vcvt_u32_33: ; CHECK: @ %bb.0: ; CHECK-NEXT: vmov.i32 q1, #0x50000000 ; CHECK-NEXT: vmul.f32 q0, q0, q1 ; CHECK-NEXT: vcvt.u32.f32 q0, q0 ; CHECK-NEXT: bx lr %2 = fmul <4 x float> %0, %3 = fptoui <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_1(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_1: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #1 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_2(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_2: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #2 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_3(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_3: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #3 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_4(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_4: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #4 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_5(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_5: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #5 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_6(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_6: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #6 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_7(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_7: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #7 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_8(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_8: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #8 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_9(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_9: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #9 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_10(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_10: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #10 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_11(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_11: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #11 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_12(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_12: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #12 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_13(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_13: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #13 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_14(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_14: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #14 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_15(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_15: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.u16.f16 q0, q0, #15 ; CHECK-NEXT: bx lr %2 = fmul fast <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_u16_inf(<8 x half> %0) { ; CHECK-LABEL: vcvt_u16_inf: ; CHECK: @ %bb.0: ; CHECK-NEXT: vmov.i16 q1, #0x7800 ; CHECK-NEXT: vmul.f16 q0, q0, q1 ; CHECK-NEXT: vcvt.u16.f16 q0, q0 ; CHECK-NEXT: bx lr %2 = fmul <8 x half> %0, %3 = fptoui <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <8 x i16> @vcvt_s16_inf(<8 x half> %0) { ; CHECK-LABEL: vcvt_s16_inf: ; CHECK: @ %bb.0: ; CHECK-NEXT: vcvt.s16.f16 q0, q0, #15 ; CHECK-NEXT: bx lr %2 = fmul <8 x half> %0, %3 = fptosi <8 x half> %2 to <8 x i16> ret <8 x i16> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_bad_imm(<4 x float> %0) { ; CHECK-LABEL: vcvt_bad_imm: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #2048 ; CHECK-NEXT: movt r0, #15104 ; CHECK-NEXT: vmul.f32 q0, q0, r0 ; CHECK-NEXT: vcvt.s32.f32 q0, q0 ; CHECK-NEXT: bx lr %2 = fmul <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_negative(<4 x float> %0) { ; CHECK-LABEL: vcvt_negative: ; CHECK: @ %bb.0: ; CHECK-NEXT: vmov.i32 q1, #0xb8000000 ; CHECK-NEXT: vmul.f32 q0, q0, q1 ; CHECK-NEXT: vcvt.s32.f32 q0, q0 ; CHECK-NEXT: bx lr %2 = fmul <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 } define arm_aapcs_vfpcc <4 x i32> @vcvt_negative2(<4 x float> %0) { ; CHECK-LABEL: vcvt_negative2: ; CHECK: @ %bb.0: ; CHECK-NEXT: vmov.i32 q1, #0xb0000000 ; CHECK-NEXT: vmul.f32 q0, q0, q1 ; CHECK-NEXT: vcvt.s32.f32 q0, q0 ; CHECK-NEXT: bx lr %2 = fmul <4 x float> %0, %3 = fptosi <4 x float> %2 to <4 x i32> ret <4 x i32> %3 }