1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
3 ; Function Attrs: norecurse nounwind readnone
4 define signext i8 @f2c(float %a) {
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)
11 %conv = fptosi float %a to i8
15 ; Function Attrs: norecurse nounwind readnone
16 define signext i16 @f2s(float %a) {
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)
23 %conv = fptosi float %a to i16
27 ; Function Attrs: norecurse nounwind readnone
28 define i32 @f2i(float %a) {
30 ; CHECK: # %bb.0: # %entry
31 ; CHECK-NEXT: cvt.w.s.sx.rz %s0, %s0
32 ; CHECK-NEXT: b.l.t (, %s10)
34 %conv = fptosi float %a to i32
38 ; Function Attrs: norecurse nounwind readnone
39 define i64 @f2l(float %a) {
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)
46 %conv = fptosi float %a to i64
50 ; Function Attrs: norecurse nounwind readnone
51 define zeroext i8 @f2uc(float %a) {
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)
58 %conv = fptoui float %a to i8
62 ; Function Attrs: norecurse nounwind readnone
63 define zeroext i16 @f2us(float %a) {
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)
70 %conv = fptoui float %a to i16
74 ; Function Attrs: norecurse nounwind readnone
75 define i32 @f2ui(float %a) {
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)
82 %conv = fptoui float %a to i32
86 ; Function Attrs: norecurse nounwind readnone
87 define i64 @f2ul(float %a) {
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)
102 %conv = fptoui float %a to i64
106 ; Function Attrs: norecurse nounwind readnone
107 define signext i8 @d2c(double %a) {
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)
114 %conv = fptosi double %a to i8
118 ; Function Attrs: norecurse nounwind readnone
119 define signext i16 @d2s(double %a) {
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)
126 %conv = fptosi double %a to i16
130 ; Function Attrs: norecurse nounwind readnone
131 define i32 @d2i(double %a) {
133 ; CHECK: # %bb.0: # %entry
134 ; CHECK-NEXT: cvt.w.d.sx.rz %s0, %s0
135 ; CHECK-NEXT: b.l.t (, %s10)
137 %conv = fptosi double %a to i32
141 ; Function Attrs: norecurse nounwind readnone
142 define i64 @d2l(double %a) {
144 ; CHECK: # %bb.0: # %entry
145 ; CHECK-NEXT: cvt.l.d.rz %s0, %s0
146 ; CHECK-NEXT: b.l.t (, %s10)
148 %conv = fptosi double %a to i64
152 ; Function Attrs: norecurse nounwind readnone
153 define zeroext i8 @d2uc(double %a) {
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)
160 %conv = fptoui double %a to i8
164 ; Function Attrs: norecurse nounwind readnone
165 define zeroext i16 @d2us(double %a) {
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)
172 %conv = fptoui double %a to i16
176 ; Function Attrs: norecurse nounwind readnone
177 define i32 @d2ui(double %a) {
179 ; CHECK: # %bb.0: # %entry
180 ; CHECK-NEXT: cvt.l.d.rz %s0, %s0
181 ; CHECK-NEXT: b.l.t (, %s10)
183 %conv = fptoui double %a to i32
187 ; Function Attrs: norecurse nounwind readnone
188 define i64 @d2ul(double %a) {
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)
201 %conv = fptoui double %a to i64