[Clang/AMDGPU] Zero sized arrays not allowed in HIP device code. (#113470)
[llvm-project.git] / llvm / test / CodeGen / VE / Scalar / fp_to_int.ll
blob988e63fef15e9d8355efb860a2bb916472ae2df1
1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
3 ; Function Attrs: norecurse nounwind readnone
4 define signext i8 @f2c(float %a) {
5 ; CHECK-LABEL: f2c:
6 ; CHECK:       # %bb.0: # %entry
7 ; CHECK-NEXT:    cvt.w.s.sx.rz %s0, %s0
8 ; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
9 ; CHECK-NEXT:    b.l.t (, %s10)
10 entry:
11   %conv = fptosi float %a to i8
12   ret i8 %conv
15 ; Function Attrs: norecurse nounwind readnone
16 define signext i16 @f2s(float %a) {
17 ; CHECK-LABEL: f2s:
18 ; CHECK:       # %bb.0: # %entry
19 ; CHECK-NEXT:    cvt.w.s.sx.rz %s0, %s0
20 ; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
21 ; CHECK-NEXT:    b.l.t (, %s10)
22 entry:
23   %conv = fptosi float %a to i16
24   ret i16 %conv
27 ; Function Attrs: norecurse nounwind readnone
28 define i32 @f2i(float %a) {
29 ; CHECK-LABEL: f2i:
30 ; CHECK:       # %bb.0: # %entry
31 ; CHECK-NEXT:    cvt.w.s.sx.rz %s0, %s0
32 ; CHECK-NEXT:    b.l.t (, %s10)
33 entry:
34   %conv = fptosi float %a to i32
35   ret i32 %conv
38 ; Function Attrs: norecurse nounwind readnone
39 define i64 @f2l(float %a) {
40 ; CHECK-LABEL: f2l:
41 ; CHECK:       # %bb.0: # %entry
42 ; CHECK-NEXT:    cvt.d.s %s0, %s0
43 ; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
44 ; CHECK-NEXT:    b.l.t (, %s10)
45 entry:
46   %conv = fptosi float %a to i64
47   ret i64 %conv
50 ; Function Attrs: norecurse nounwind readnone
51 define zeroext i8 @f2uc(float %a) {
52 ; CHECK-LABEL: f2uc:
53 ; CHECK:       # %bb.0: # %entry
54 ; CHECK-NEXT:    cvt.w.s.sx.rz %s0, %s0
55 ; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)1
56 ; CHECK-NEXT:    b.l.t (, %s10)
57 entry:
58   %conv = fptoui float %a to i8
59   ret i8 %conv
62 ; Function Attrs: norecurse nounwind readnone
63 define zeroext i16 @f2us(float %a) {
64 ; CHECK-LABEL: f2us:
65 ; CHECK:       # %bb.0: # %entry
66 ; CHECK-NEXT:    cvt.w.s.sx.rz %s0, %s0
67 ; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)1
68 ; CHECK-NEXT:    b.l.t (, %s10)
69 entry:
70   %conv = fptoui float %a to i16
71   ret i16 %conv
74 ; Function Attrs: norecurse nounwind readnone
75 define i32 @f2ui(float %a) {
76 ; CHECK-LABEL: f2ui:
77 ; CHECK:       # %bb.0: # %entry
78 ; CHECK-NEXT:    cvt.d.s %s0, %s0
79 ; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
80 ; CHECK-NEXT:    b.l.t (, %s10)
81 entry:
82   %conv = fptoui float %a to i32
83   ret i32 %conv
86 ; Function Attrs: norecurse nounwind readnone
87 define i64 @f2ul(float %a) {
88 ; CHECK-LABEL: f2ul:
89 ; CHECK:       # %bb.0: # %entry
90 ; CHECK-NEXT:    lea.sl %s1, 1593835520
91 ; CHECK-NEXT:    fcmp.s %s2, %s0, %s1
92 ; CHECK-NEXT:    fsub.s %s1, %s0, %s1
93 ; CHECK-NEXT:    cvt.d.s %s1, %s1
94 ; CHECK-NEXT:    cvt.l.d.rz %s1, %s1
95 ; CHECK-NEXT:    xor %s1, %s1, (1)1
96 ; CHECK-NEXT:    cvt.d.s %s0, %s0
97 ; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
98 ; CHECK-NEXT:    cmov.s.lt %s1, %s0, %s2
99 ; CHECK-NEXT:    or %s0, 0, %s1
100 ; CHECK-NEXT:    b.l.t (, %s10)
101 entry:
102   %conv = fptoui float %a to i64
103   ret i64 %conv
106 ; Function Attrs: norecurse nounwind readnone
107 define signext i8 @d2c(double %a) {
108 ; CHECK-LABEL: d2c:
109 ; CHECK:       # %bb.0: # %entry
110 ; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
111 ; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
112 ; CHECK-NEXT:    b.l.t (, %s10)
113 entry:
114   %conv = fptosi double %a to i8
115   ret i8 %conv
118 ; Function Attrs: norecurse nounwind readnone
119 define signext i16 @d2s(double %a) {
120 ; CHECK-LABEL: d2s:
121 ; CHECK:       # %bb.0: # %entry
122 ; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
123 ; CHECK-NEXT:    adds.w.sx %s0, %s0, (0)1
124 ; CHECK-NEXT:    b.l.t (, %s10)
125 entry:
126   %conv = fptosi double %a to i16
127   ret i16 %conv
130 ; Function Attrs: norecurse nounwind readnone
131 define i32 @d2i(double %a) {
132 ; CHECK-LABEL: d2i:
133 ; CHECK:       # %bb.0: # %entry
134 ; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
135 ; CHECK-NEXT:    b.l.t (, %s10)
136 entry:
137   %conv = fptosi double %a to i32
138   ret i32 %conv
141 ; Function Attrs: norecurse nounwind readnone
142 define i64 @d2l(double %a) {
143 ; CHECK-LABEL: d2l:
144 ; CHECK:       # %bb.0: # %entry
145 ; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
146 ; CHECK-NEXT:    b.l.t (, %s10)
147 entry:
148   %conv = fptosi double %a to i64
149   ret i64 %conv
152 ; Function Attrs: norecurse nounwind readnone
153 define zeroext i8 @d2uc(double %a) {
154 ; CHECK-LABEL: d2uc:
155 ; CHECK:       # %bb.0: # %entry
156 ; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
157 ; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)1
158 ; CHECK-NEXT:    b.l.t (, %s10)
159 entry:
160   %conv = fptoui double %a to i8
161   ret i8 %conv
164 ; Function Attrs: norecurse nounwind readnone
165 define zeroext i16 @d2us(double %a) {
166 ; CHECK-LABEL: d2us:
167 ; CHECK:       # %bb.0: # %entry
168 ; CHECK-NEXT:    cvt.w.d.sx.rz %s0, %s0
169 ; CHECK-NEXT:    adds.w.zx %s0, %s0, (0)1
170 ; CHECK-NEXT:    b.l.t (, %s10)
171 entry:
172   %conv = fptoui double %a to i16
173   ret i16 %conv
176 ; Function Attrs: norecurse nounwind readnone
177 define i32 @d2ui(double %a) {
178 ; CHECK-LABEL: d2ui:
179 ; CHECK:       # %bb.0: # %entry
180 ; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
181 ; CHECK-NEXT:    b.l.t (, %s10)
182 entry:
183   %conv = fptoui double %a to i32
184   ret i32 %conv
187 ; Function Attrs: norecurse nounwind readnone
188 define i64 @d2ul(double %a) {
189 ; CHECK-LABEL: d2ul:
190 ; CHECK:       # %bb.0: # %entry
191 ; CHECK-NEXT:    lea.sl %s1, 1138753536
192 ; CHECK-NEXT:    fcmp.d %s2, %s0, %s1
193 ; CHECK-NEXT:    fsub.d %s1, %s0, %s1
194 ; CHECK-NEXT:    cvt.l.d.rz %s1, %s1
195 ; CHECK-NEXT:    xor %s1, %s1, (1)1
196 ; CHECK-NEXT:    cvt.l.d.rz %s0, %s0
197 ; CHECK-NEXT:    cmov.d.lt %s1, %s0, %s2
198 ; CHECK-NEXT:    or %s0, 0, %s1
199 ; CHECK-NEXT:    b.l.t (, %s10)
200 entry:
201   %conv = fptoui double %a to i64
202   ret i64 %conv