xref: /aosp_15_r20/external/llvm/test/CodeGen/ARM/vcvt-v8.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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