[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / VE / Scalar / int_to_fp.ll
blob5d70e039cdf9c0a0b34f8778c81fa9e181740666
1 ; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s
3 ; Function Attrs: norecurse nounwind readnone
4 define float @c2f(i8 signext %a) {
5 ; CHECK-LABEL: c2f:
6 ; CHECK:       # %bb.0: # %entry
7 ; CHECK-NEXT:    cvt.s.w %s0, %s0
8 ; CHECK-NEXT:    b.l.t (, %s10)
9 entry:
10   %conv = sitofp i8 %a to float
11   ret float %conv
14 ; Function Attrs: norecurse nounwind readnone
15 define float @s2f(i16 signext %a) {
16 ; CHECK-LABEL: s2f:
17 ; CHECK:       # %bb.0: # %entry
18 ; CHECK-NEXT:    cvt.s.w %s0, %s0
19 ; CHECK-NEXT:    b.l.t (, %s10)
20 entry:
21   %conv = sitofp i16 %a to float
22   ret float %conv
25 ; Function Attrs: norecurse nounwind readnone
26 define float @i2f(i32 %a) {
27 ; CHECK-LABEL: i2f:
28 ; CHECK:       # %bb.0: # %entry
29 ; CHECK-NEXT:    cvt.s.w %s0, %s0
30 ; CHECK-NEXT:    b.l.t (, %s10)
31 entry:
32   %conv = sitofp i32 %a to float
33   ret float %conv
36 ; Function Attrs: norecurse nounwind readnone
37 define float @l2f(i64 %a) {
38 ; CHECK-LABEL: l2f:
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)
43 entry:
44   %conv = sitofp i64 %a to float
45   ret float %conv
48 ; Function Attrs: norecurse nounwind readnone
49 define float @uc2f(i8 zeroext %a) {
50 ; CHECK-LABEL: uc2f:
51 ; CHECK:       # %bb.0: # %entry
52 ; CHECK-NEXT:    cvt.s.w %s0, %s0
53 ; CHECK-NEXT:    b.l.t (, %s10)
54 entry:
55   %conv = uitofp i8 %a to float
56   ret float %conv
59 ; Function Attrs: norecurse nounwind readnone
60 define float @us2f(i16 zeroext %a) {
61 ; CHECK-LABEL: us2f:
62 ; CHECK:       # %bb.0: # %entry
63 ; CHECK-NEXT:    cvt.s.w %s0, %s0
64 ; CHECK-NEXT:    b.l.t (, %s10)
65 entry:
66   %conv = uitofp i16 %a to float
67   ret float %conv
70 ; Function Attrs: norecurse nounwind readnone
71 define float @ui2f(i32 %a) {
72 ; CHECK-LABEL: ui2f:
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)
78 entry:
79   %conv = uitofp i32 %a to float
80   ret float %conv
83 ; Function Attrs: norecurse nounwind readnone
84 define float @ul2f(i64 %a) {
85 ; CHECK-LABEL: ul2f:
86 ; CHECK:       # %bb.0: # %entry
87 ; CHECK-NEXT:    cmps.l %s2, %s0, (0)1
88 ; CHECK-NEXT:    cvt.d.l %s1, %s0
89 ; CHECK-NEXT:    cvt.s.d %s1, %s1
90 ; CHECK-NEXT:    srl %s3, %s0, 1
91 ; CHECK-NEXT:    and %s0, 1, %s0
92 ; CHECK-NEXT:    or %s0, %s0, %s3
93 ; CHECK-NEXT:    cvt.d.l %s0, %s0
94 ; CHECK-NEXT:    cvt.s.d %s0, %s0
95 ; CHECK-NEXT:    fadd.s %s0, %s0, %s0
96 ; CHECK-NEXT:    cmov.l.lt %s1, %s0, %s2
97 ; CHECK-NEXT:    or %s0, 0, %s1
98 ; CHECK-NEXT:    b.l.t (, %s10)
99 entry:
100   %conv = uitofp i64 %a to float
101   ret float %conv
104 ; Function Attrs: norecurse nounwind readnone
105 define double @c2d(i8 signext %a) {
106 ; CHECK-LABEL: c2d:
107 ; CHECK:       # %bb.0: # %entry
108 ; CHECK-NEXT:    cvt.d.w %s0, %s0
109 ; CHECK-NEXT:    b.l.t (, %s10)
110 entry:
111   %conv = sitofp i8 %a to double
112   ret double %conv
115 ; Function Attrs: norecurse nounwind readnone
116 define double @s2d(i16 signext %a) {
117 ; CHECK-LABEL: s2d:
118 ; CHECK:       # %bb.0: # %entry
119 ; CHECK-NEXT:    cvt.d.w %s0, %s0
120 ; CHECK-NEXT:    b.l.t (, %s10)
121 entry:
122   %conv = sitofp i16 %a to double
123   ret double %conv
126 ; Function Attrs: norecurse nounwind readnone
127 define double @i2d(i32 %a) {
128 ; CHECK-LABEL: i2d:
129 ; CHECK:       # %bb.0: # %entry
130 ; CHECK-NEXT:    cvt.d.w %s0, %s0
131 ; CHECK-NEXT:    b.l.t (, %s10)
132 entry:
133   %conv = sitofp i32 %a to double
134   ret double %conv
137 ; Function Attrs: norecurse nounwind readnone
138 define double @l2d(i64 %a) {
139 ; CHECK-LABEL: l2d:
140 ; CHECK:       # %bb.0: # %entry
141 ; CHECK-NEXT:    cvt.d.l %s0, %s0
142 ; CHECK-NEXT:    b.l.t (, %s10)
143 entry:
144   %conv = sitofp i64 %a to double
145   ret double %conv
148 ; Function Attrs: norecurse nounwind readnone
149 define double @uc2d(i8 zeroext %a) {
150 ; CHECK-LABEL: uc2d:
151 ; CHECK:       # %bb.0: # %entry
152 ; CHECK-NEXT:    cvt.d.w %s0, %s0
153 ; CHECK-NEXT:    b.l.t (, %s10)
154 entry:
155   %conv = uitofp i8 %a to double
156   ret double %conv
159 ; Function Attrs: norecurse nounwind readnone
160 define double @us2d(i16 zeroext %a) {
161 ; CHECK-LABEL: us2d:
162 ; CHECK:       # %bb.0: # %entry
163 ; CHECK-NEXT:    cvt.d.w %s0, %s0
164 ; CHECK-NEXT:    b.l.t (, %s10)
165 entry:
166   %conv = uitofp i16 %a to double
167   ret double %conv
170 ; Function Attrs: norecurse nounwind readnone
171 define double @ui2d(i32 %a) {
172 ; CHECK-LABEL: ui2d:
173 ; CHECK:       # %bb.0: # %entry
174 ; CHECK-NEXT:    and %s0, %s0, (32)0
175 ; CHECK-NEXT:    cvt.d.l %s0, %s0
176 ; CHECK-NEXT:    b.l.t (, %s10)
177 entry:
178   %conv = uitofp i32 %a to double
179   ret double %conv
182 ; Function Attrs: norecurse nounwind readnone
183 define double @ul2d(i64 %a) {
184 ; CHECK-LABEL: ul2d:
185 ; CHECK:       # %bb.0: # %entry
186 ; CHECK-NEXT:    srl %s1, %s0, 32
187 ; CHECK-NEXT:    lea.sl %s2, 1160773632
188 ; CHECK-NEXT:    or %s1, %s1, %s2
189 ; CHECK-NEXT:    lea %s2, 1048576
190 ; CHECK-NEXT:    lea.sl %s2, -986710016(, %s2)
191 ; CHECK-NEXT:    fadd.d %s1, %s1, %s2
192 ; CHECK-NEXT:    and %s0, %s0, (32)0
193 ; CHECK-NEXT:    lea.sl %s2, 1127219200
194 ; CHECK-NEXT:    or %s0, %s0, %s2
195 ; CHECK-NEXT:    fadd.d %s0, %s0, %s1
196 ; CHECK-NEXT:    b.l.t (, %s10)
197 entry:
198   %conv = uitofp i64 %a to double
199   ret double %conv