1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
3 ; Function Attrs: norecurse nounwind readnone
4 define float @c2f(i8 signext %a) {
6 ; CHECK: # %bb.0: # %entry
7 ; CHECK-NEXT: cvt.s.w %s0, %s0
8 ; CHECK-NEXT: b.l.t (, %s10)
10 %conv = sitofp i8 %a to float
14 ; Function Attrs: norecurse nounwind readnone
15 define float @s2f(i16 signext %a) {
17 ; CHECK: # %bb.0: # %entry
18 ; CHECK-NEXT: cvt.s.w %s0, %s0
19 ; CHECK-NEXT: b.l.t (, %s10)
21 %conv = sitofp i16 %a to float
25 ; Function Attrs: norecurse nounwind readnone
26 define float @i2f(i32 %a) {
28 ; CHECK: # %bb.0: # %entry
29 ; CHECK-NEXT: cvt.s.w %s0, %s0
30 ; CHECK-NEXT: b.l.t (, %s10)
32 %conv = sitofp i32 %a to float
36 ; Function Attrs: norecurse nounwind readnone
37 define float @l2f(i64 %a) {
39 ; CHECK: # %bb.0: # %entry
40 ; CHECK-NEXT: cvt.d.l %s0, %s0
41 ; CHECK-NEXT: cvt.s.d %s0, %s0
42 ; CHECK-NEXT: b.l.t (, %s10)
44 %conv = sitofp i64 %a to float
48 ; Function Attrs: norecurse nounwind readnone
49 define float @uc2f(i8 zeroext %a) {
51 ; CHECK: # %bb.0: # %entry
52 ; CHECK-NEXT: cvt.s.w %s0, %s0
53 ; CHECK-NEXT: b.l.t (, %s10)
55 %conv = uitofp i8 %a to float
59 ; Function Attrs: norecurse nounwind readnone
60 define float @us2f(i16 zeroext %a) {
62 ; CHECK: # %bb.0: # %entry
63 ; CHECK-NEXT: cvt.s.w %s0, %s0
64 ; CHECK-NEXT: b.l.t (, %s10)
66 %conv = uitofp i16 %a to float
70 ; Function Attrs: norecurse nounwind readnone
71 define float @ui2f(i32 %a) {
73 ; CHECK: # %bb.0: # %entry
74 ; CHECK-NEXT: and %s0, %s0, (32)0
75 ; CHECK-NEXT: cvt.d.l %s0, %s0
76 ; CHECK-NEXT: cvt.s.d %s0, %s0
77 ; CHECK-NEXT: b.l.t (, %s10)
79 %conv = uitofp i32 %a to float
83 ; Function Attrs: norecurse nounwind readnone
84 define float @ul2f(i64 %a) {
86 ; CHECK: # %bb.0: # %entry
87 ; CHECK-NEXT: cvt.d.l %s1, %s0
88 ; CHECK-NEXT: cvt.s.d %s1, %s1
89 ; CHECK-NEXT: srl %s2, %s0, 1
90 ; CHECK-NEXT: and %s3, 1, %s0
91 ; CHECK-NEXT: or %s2, %s3, %s2
92 ; CHECK-NEXT: cvt.d.l %s2, %s2
93 ; CHECK-NEXT: cvt.s.d %s2, %s2
94 ; CHECK-NEXT: fadd.s %s2, %s2, %s2
95 ; CHECK-NEXT: cmov.l.lt %s1, %s2, %s0
96 ; CHECK-NEXT: or %s0, 0, %s1
97 ; CHECK-NEXT: b.l.t (, %s10)
99 %conv = uitofp i64 %a to float
103 ; Function Attrs: norecurse nounwind readnone
104 define double @c2d(i8 signext %a) {
106 ; CHECK: # %bb.0: # %entry
107 ; CHECK-NEXT: cvt.d.w %s0, %s0
108 ; CHECK-NEXT: b.l.t (, %s10)
110 %conv = sitofp i8 %a to double
114 ; Function Attrs: norecurse nounwind readnone
115 define double @s2d(i16 signext %a) {
117 ; CHECK: # %bb.0: # %entry
118 ; CHECK-NEXT: cvt.d.w %s0, %s0
119 ; CHECK-NEXT: b.l.t (, %s10)
121 %conv = sitofp i16 %a to double
125 ; Function Attrs: norecurse nounwind readnone
126 define double @i2d(i32 %a) {
128 ; CHECK: # %bb.0: # %entry
129 ; CHECK-NEXT: cvt.d.w %s0, %s0
130 ; CHECK-NEXT: b.l.t (, %s10)
132 %conv = sitofp i32 %a to double
136 ; Function Attrs: norecurse nounwind readnone
137 define double @l2d(i64 %a) {
139 ; CHECK: # %bb.0: # %entry
140 ; CHECK-NEXT: cvt.d.l %s0, %s0
141 ; CHECK-NEXT: b.l.t (, %s10)
143 %conv = sitofp i64 %a to double
147 ; Function Attrs: norecurse nounwind readnone
148 define double @uc2d(i8 zeroext %a) {
150 ; CHECK: # %bb.0: # %entry
151 ; CHECK-NEXT: cvt.d.w %s0, %s0
152 ; CHECK-NEXT: b.l.t (, %s10)
154 %conv = uitofp i8 %a to double
158 ; Function Attrs: norecurse nounwind readnone
159 define double @us2d(i16 zeroext %a) {
161 ; CHECK: # %bb.0: # %entry
162 ; CHECK-NEXT: cvt.d.w %s0, %s0
163 ; CHECK-NEXT: b.l.t (, %s10)
165 %conv = uitofp i16 %a to double
169 ; Function Attrs: norecurse nounwind readnone
170 define double @ui2d(i32 %a) {
172 ; CHECK: # %bb.0: # %entry
173 ; CHECK-NEXT: and %s0, %s0, (32)0
174 ; CHECK-NEXT: cvt.d.l %s0, %s0
175 ; CHECK-NEXT: b.l.t (, %s10)
177 %conv = uitofp i32 %a to double
181 ; Function Attrs: norecurse nounwind readnone
182 define double @ul2d(i64 %a) {
184 ; CHECK: # %bb.0: # %entry
185 ; CHECK-NEXT: srl %s1, %s0, 32
186 ; CHECK-NEXT: lea.sl %s2, 1160773632
187 ; CHECK-NEXT: or %s1, %s1, %s2
188 ; CHECK-NEXT: lea %s2, 1048576
189 ; CHECK-NEXT: lea.sl %s2, -986710016(, %s2)
190 ; CHECK-NEXT: fadd.d %s1, %s1, %s2
191 ; CHECK-NEXT: and %s0, %s0, (32)0
192 ; CHECK-NEXT: lea.sl %s2, 1127219200
193 ; CHECK-NEXT: or %s0, %s0, %s2
194 ; CHECK-NEXT: fadd.d %s0, %s0, %s1
195 ; CHECK-NEXT: b.l.t (, %s10)
197 %conv = uitofp i64 %a to double