1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=armv8 -mattr=+neon | FileCheck %s 2*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @vcvtasq(<4 x float>* %A) { 3*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtasq 4*9880d681SAndroid Build Coastguard Worker; CHECK: vcvta.s32.f32 q{{[0-9]+}}, q{{[0-9]+}} 5*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x float>, <4 x float>* %A 6*9880d681SAndroid Build Coastguard Worker %tmp2 = call <4 x i32> @llvm.arm.neon.vcvtas.v4i32.v4f32(<4 x float> %tmp1) 7*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp2 8*9880d681SAndroid Build Coastguard Worker} 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @vcvtasd(<2 x float>* %A) { 11*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtasd 12*9880d681SAndroid Build Coastguard Worker; CHECK: vcvta.s32.f32 d{{[0-9]+}}, d{{[0-9]+}} 13*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x float>, <2 x float>* %A 14*9880d681SAndroid Build Coastguard Worker %tmp2 = call <2 x i32> @llvm.arm.neon.vcvtas.v2i32.v2f32(<2 x float> %tmp1) 15*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp2 16*9880d681SAndroid Build Coastguard Worker} 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @vcvtnsq(<4 x float>* %A) { 19*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtnsq 20*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtn.s32.f32 q{{[0-9]+}}, q{{[0-9]+}} 21*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x float>, <4 x float>* %A 22*9880d681SAndroid Build Coastguard Worker %tmp2 = call <4 x i32> @llvm.arm.neon.vcvtns.v4i32.v4f32(<4 x float> %tmp1) 23*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp2 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @vcvtnsd(<2 x float>* %A) { 27*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtnsd 28*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtn.s32.f32 d{{[0-9]+}}, d{{[0-9]+}} 29*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x float>, <2 x float>* %A 30*9880d681SAndroid Build Coastguard Worker %tmp2 = call <2 x i32> @llvm.arm.neon.vcvtns.v2i32.v2f32(<2 x float> %tmp1) 31*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp2 32*9880d681SAndroid Build Coastguard Worker} 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @vcvtpsq(<4 x float>* %A) { 35*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtpsq 36*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtp.s32.f32 q{{[0-9]+}}, q{{[0-9]+}} 37*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x float>, <4 x float>* %A 38*9880d681SAndroid Build Coastguard Worker %tmp2 = call <4 x i32> @llvm.arm.neon.vcvtps.v4i32.v4f32(<4 x float> %tmp1) 39*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp2 40*9880d681SAndroid Build Coastguard Worker} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @vcvtpsd(<2 x float>* %A) { 43*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtpsd 44*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtp.s32.f32 d{{[0-9]+}}, d{{[0-9]+}} 45*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x float>, <2 x float>* %A 46*9880d681SAndroid Build Coastguard Worker %tmp2 = call <2 x i32> @llvm.arm.neon.vcvtps.v2i32.v2f32(<2 x float> %tmp1) 47*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp2 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @vcvtmsq(<4 x float>* %A) { 51*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtmsq 52*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtm.s32.f32 q{{[0-9]+}}, q{{[0-9]+}} 53*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x float>, <4 x float>* %A 54*9880d681SAndroid Build Coastguard Worker %tmp2 = call <4 x i32> @llvm.arm.neon.vcvtms.v4i32.v4f32(<4 x float> %tmp1) 55*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp2 56*9880d681SAndroid Build Coastguard Worker} 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @vcvtmsd(<2 x float>* %A) { 59*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtmsd 60*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtm.s32.f32 d{{[0-9]+}}, d{{[0-9]+}} 61*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x float>, <2 x float>* %A 62*9880d681SAndroid Build Coastguard Worker %tmp2 = call <2 x i32> @llvm.arm.neon.vcvtms.v2i32.v2f32(<2 x float> %tmp1) 63*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp2 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @vcvtauq(<4 x float>* %A) { 67*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtauq 68*9880d681SAndroid Build Coastguard Worker; CHECK: vcvta.u32.f32 q{{[0-9]+}}, q{{[0-9]+}} 69*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x float>, <4 x float>* %A 70*9880d681SAndroid Build Coastguard Worker %tmp2 = call <4 x i32> @llvm.arm.neon.vcvtau.v4i32.v4f32(<4 x float> %tmp1) 71*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp2 72*9880d681SAndroid Build Coastguard Worker} 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @vcvtaud(<2 x float>* %A) { 75*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtaud 76*9880d681SAndroid Build Coastguard Worker; CHECK: vcvta.u32.f32 d{{[0-9]+}}, d{{[0-9]+}} 77*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x float>, <2 x float>* %A 78*9880d681SAndroid Build Coastguard Worker %tmp2 = call <2 x i32> @llvm.arm.neon.vcvtau.v2i32.v2f32(<2 x float> %tmp1) 79*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp2 80*9880d681SAndroid Build Coastguard Worker} 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @vcvtnuq(<4 x float>* %A) { 83*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtnuq 84*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtn.u32.f32 q{{[0-9]+}}, q{{[0-9]+}} 85*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x float>, <4 x float>* %A 86*9880d681SAndroid Build Coastguard Worker %tmp2 = call <4 x i32> @llvm.arm.neon.vcvtnu.v4i32.v4f32(<4 x float> %tmp1) 87*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp2 88*9880d681SAndroid Build Coastguard Worker} 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @vcvtnud(<2 x float>* %A) { 91*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtnud 92*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtn.u32.f32 d{{[0-9]+}}, d{{[0-9]+}} 93*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x float>, <2 x float>* %A 94*9880d681SAndroid Build Coastguard Worker %tmp2 = call <2 x i32> @llvm.arm.neon.vcvtnu.v2i32.v2f32(<2 x float> %tmp1) 95*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp2 96*9880d681SAndroid Build Coastguard Worker} 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @vcvtpuq(<4 x float>* %A) { 99*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtpuq 100*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtp.u32.f32 q{{[0-9]+}}, q{{[0-9]+}} 101*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x float>, <4 x float>* %A 102*9880d681SAndroid Build Coastguard Worker %tmp2 = call <4 x i32> @llvm.arm.neon.vcvtpu.v4i32.v4f32(<4 x float> %tmp1) 103*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp2 104*9880d681SAndroid Build Coastguard Worker} 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @vcvtpud(<2 x float>* %A) { 107*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtpud 108*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtp.u32.f32 d{{[0-9]+}}, d{{[0-9]+}} 109*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x float>, <2 x float>* %A 110*9880d681SAndroid Build Coastguard Worker %tmp2 = call <2 x i32> @llvm.arm.neon.vcvtpu.v2i32.v2f32(<2 x float> %tmp1) 111*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp2 112*9880d681SAndroid Build Coastguard Worker} 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @vcvtmuq(<4 x float>* %A) { 115*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtmuq 116*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtm.u32.f32 q{{[0-9]+}}, q{{[0-9]+}} 117*9880d681SAndroid Build Coastguard Worker %tmp1 = load <4 x float>, <4 x float>* %A 118*9880d681SAndroid Build Coastguard Worker %tmp2 = call <4 x i32> @llvm.arm.neon.vcvtmu.v4i32.v4f32(<4 x float> %tmp1) 119*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %tmp2 120*9880d681SAndroid Build Coastguard Worker} 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @vcvtmud(<2 x float>* %A) { 123*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtmud 124*9880d681SAndroid Build Coastguard Worker; CHECK: vcvtm.u32.f32 d{{[0-9]+}}, d{{[0-9]+}} 125*9880d681SAndroid Build Coastguard Worker %tmp1 = load <2 x float>, <2 x float>* %A 126*9880d681SAndroid Build Coastguard Worker %tmp2 = call <2 x i32> @llvm.arm.neon.vcvtmu.v2i32.v2f32(<2 x float> %tmp1) 127*9880d681SAndroid Build Coastguard Worker ret <2 x i32> %tmp2 128*9880d681SAndroid Build Coastguard Worker} 129*9880d681SAndroid Build Coastguard Worker 130*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.arm.neon.vcvtas.v4i32.v4f32(<4 x float>) nounwind readnone 131*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.arm.neon.vcvtas.v2i32.v2f32(<2 x float>) nounwind readnone 132*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.arm.neon.vcvtns.v4i32.v4f32(<4 x float>) nounwind readnone 133*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.arm.neon.vcvtns.v2i32.v2f32(<2 x float>) nounwind readnone 134*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.arm.neon.vcvtps.v4i32.v4f32(<4 x float>) nounwind readnone 135*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.arm.neon.vcvtps.v2i32.v2f32(<2 x float>) nounwind readnone 136*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.arm.neon.vcvtms.v4i32.v4f32(<4 x float>) nounwind readnone 137*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.arm.neon.vcvtms.v2i32.v2f32(<2 x float>) nounwind readnone 138*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.arm.neon.vcvtau.v4i32.v4f32(<4 x float>) nounwind readnone 139*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.arm.neon.vcvtau.v2i32.v2f32(<2 x float>) nounwind readnone 140*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.arm.neon.vcvtnu.v4i32.v4f32(<4 x float>) nounwind readnone 141*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.arm.neon.vcvtnu.v2i32.v2f32(<2 x float>) nounwind readnone 142*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.arm.neon.vcvtpu.v4i32.v4f32(<4 x float>) nounwind readnone 143*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.arm.neon.vcvtpu.v2i32.v2f32(<2 x float>) nounwind readnone 144*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.arm.neon.vcvtmu.v4i32.v4f32(<4 x float>) nounwind readnone 145*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.arm.neon.vcvtmu.v2i32.v2f32(<2 x float>) nounwind readnone 146