• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 #include <stdio.h>
3 #include <assert.h>
4 
5 typedef    signed long long int  Long;
6 typedef  unsigned long long int  ULong;
7 
8 typedef    signed int  Int;
9 typedef  unsigned int  UInt;
10 
11 typedef  union { double d64; float f32[2]; unsigned long long int i64; }  U;
12 
13 //////////////////// D from X ////////////////////
14 
do_scvtf_d_x_imm1(Long x)15 __attribute__((noinline)) double do_scvtf_d_x_imm1 ( Long x )
16 {
17    U block[2]; block[0].i64 = x; block[1].i64 = 0;
18    __asm__ __volatile__(
19       "ldr x13,[%0,#0];  scvtf d18,x13,#1;  str d18, [%0,#8]"
20       ::"r"(&block[0]) : "memory", "x13","q18");
21    return block[1].d64;
22 }
do_scvtf_d_x_imm32(Long x)23 __attribute__((noinline)) double do_scvtf_d_x_imm32 ( Long x )
24 {
25    U block[2]; block[0].i64 = x; block[1].i64 = 0;
26    __asm__ __volatile__(
27       "ldr x13,[%0,#0];  scvtf d18,x13,#32;  str d18, [%0,#8]"
28       ::"r"(&block[0]) : "memory", "x13","q18");
29    return block[1].d64;
30 }
do_scvtf_d_x_imm64(Long x)31 __attribute__((noinline)) double do_scvtf_d_x_imm64 ( Long x )
32 {
33    U block[2]; block[0].i64 = x; block[1].i64 = 0;
34    __asm__ __volatile__(
35       "ldr x13,[%0,#0];  scvtf d18,x13,#64;  str d18, [%0,#8]"
36       ::"r"(&block[0]) : "memory", "x13","q18");
37    return block[1].d64;
38 }
39 
do_ucvtf_d_x_imm1(Long x)40 __attribute__((noinline)) double do_ucvtf_d_x_imm1 ( Long x )
41 {
42    U block[2]; block[0].i64 = x; block[1].i64 = 0;
43    __asm__ __volatile__(
44       "ldr x13,[%0,#0];  ucvtf d18,x13,#1;  str d18, [%0,#8]"
45       ::"r"(&block[0]) : "memory", "x13","q18");
46    return block[1].d64;
47 }
do_ucvtf_d_x_imm32(Long x)48 __attribute__((noinline)) double do_ucvtf_d_x_imm32 ( Long x )
49 {
50    U block[2]; block[0].i64 = x; block[1].i64 = 0;
51    __asm__ __volatile__(
52       "ldr x13,[%0,#0];  ucvtf d18,x13,#32;  str d18, [%0,#8]"
53       ::"r"(&block[0]) : "memory", "x13","q18");
54    return block[1].d64;
55 }
do_ucvtf_d_x_imm64(Long x)56 __attribute__((noinline)) double do_ucvtf_d_x_imm64 ( Long x )
57 {
58    U block[2]; block[0].i64 = x; block[1].i64 = 0;
59    __asm__ __volatile__(
60       "ldr x13,[%0,#0];  ucvtf d18,x13,#64;  str d18, [%0,#8]"
61       ::"r"(&block[0]) : "memory", "x13","q18");
62    return block[1].d64;
63 }
64 
65 
66 //////////////////// D from W ////////////////////
67 
do_scvtf_d_w_imm1(Int x)68 __attribute__((noinline)) double do_scvtf_d_w_imm1 ( Int x )
69 {
70    U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0;
71    __asm__ __volatile__(
72       "ldr x13,[%0,#0];  scvtf d18,w13,#1;  str d18, [%0,#8]"
73       ::"r"(&block[0]) : "memory", "x13","q18");
74    return block[1].d64;
75 }
do_scvtf_d_w_imm16(Int x)76 __attribute__((noinline)) double do_scvtf_d_w_imm16 ( Int x )
77 {
78    U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0;
79    __asm__ __volatile__(
80       "ldr x13,[%0,#0];  scvtf d18,w13,#16;  str d18, [%0,#8]"
81       ::"r"(&block[0]) : "memory", "x13","q18");
82    return block[1].d64;
83 }
do_scvtf_d_w_imm32(Int x)84 __attribute__((noinline)) double do_scvtf_d_w_imm32 ( Int x )
85 {
86    U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0;
87    __asm__ __volatile__(
88       "ldr x13,[%0,#0];  scvtf d18,w13,#32;  str d18, [%0,#8]"
89       ::"r"(&block[0]) : "memory", "x13","q18");
90    return block[1].d64;
91 }
92 
do_ucvtf_d_w_imm1(Int x)93 __attribute__((noinline)) double do_ucvtf_d_w_imm1 ( Int x )
94 {
95    U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0;
96    __asm__ __volatile__(
97       "ldr x13,[%0,#0];  ucvtf d18,w13,#1;  str d18, [%0,#8]"
98       ::"r"(&block[0]) : "memory", "x13","q18");
99    return block[1].d64;
100 }
do_ucvtf_d_w_imm16(Int x)101 __attribute__((noinline)) double do_ucvtf_d_w_imm16 ( Int x )
102 {
103    U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0;
104    __asm__ __volatile__(
105       "ldr x13,[%0,#0];  ucvtf d18,w13,#16;  str d18, [%0,#8]"
106       ::"r"(&block[0]) : "memory", "x13","q18");
107    return block[1].d64;
108 }
do_ucvtf_d_w_imm32(Int x)109 __attribute__((noinline)) double do_ucvtf_d_w_imm32 ( Int x )
110 {
111    U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0;
112    __asm__ __volatile__(
113       "ldr x13,[%0,#0];  ucvtf d18,w13,#32;  str d18, [%0,#8]"
114       ::"r"(&block[0]) : "memory", "x13","q18");
115    return block[1].d64;
116 }
117 
118 
119 //////////////////// S from X ////////////////////
120 
do_scvtf_s_x_imm1(Long x)121 __attribute__((noinline)) double do_scvtf_s_x_imm1 ( Long x )
122 {
123    U block[2]; block[0].i64 = x; block[1].i64 = 0;
124    __asm__ __volatile__(
125       "ldr x13,[%0,#0];  scvtf s18,x13,#1;  str s18, [%0,#8]"
126       ::"r"(&block[0]) : "memory", "x13","q18");
127    return (double)block[1].f32[0];
128 }
do_scvtf_s_x_imm32(Long x)129 __attribute__((noinline)) double do_scvtf_s_x_imm32 ( Long x )
130 {
131    U block[2]; block[0].i64 = x; block[1].i64 = 0;
132    __asm__ __volatile__(
133       "ldr x13,[%0,#0];  scvtf s18,x13,#32;  str s18, [%0,#8]"
134       ::"r"(&block[0]) : "memory", "x13","q18");
135    return (double)block[1].f32[0];
136 }
do_scvtf_s_x_imm64(Long x)137 __attribute__((noinline)) double do_scvtf_s_x_imm64 ( Long x )
138 {
139    U block[2]; block[0].i64 = x; block[1].i64 = 0;
140    __asm__ __volatile__(
141       "ldr x13,[%0,#0];  scvtf s18,x13,#64;  str s18, [%0,#8]"
142       ::"r"(&block[0]) : "memory", "x13","q18");
143    return (double)block[1].f32[0];
144 }
145 
do_ucvtf_s_x_imm1(Long x)146 __attribute__((noinline)) double do_ucvtf_s_x_imm1 ( Long x )
147 {
148    U block[2]; block[0].i64 = x; block[1].i64 = 0;
149    __asm__ __volatile__(
150       "ldr x13,[%0,#0];  ucvtf s18,x13,#1;  str s18, [%0,#8]"
151       ::"r"(&block[0]) : "memory", "x13","q18");
152    return (double)block[1].f32[0];
153 }
do_ucvtf_s_x_imm32(Long x)154 __attribute__((noinline)) double do_ucvtf_s_x_imm32 ( Long x )
155 {
156    U block[2]; block[0].i64 = x; block[1].i64 = 0;
157    __asm__ __volatile__(
158       "ldr x13,[%0,#0];  ucvtf s18,x13,#32;  str s18, [%0,#8]"
159       ::"r"(&block[0]) : "memory", "x13","q18");
160    return (double)block[1].f32[0];
161 }
do_ucvtf_s_x_imm64(Long x)162 __attribute__((noinline)) double do_ucvtf_s_x_imm64 ( Long x )
163 {
164    U block[2]; block[0].i64 = x; block[1].i64 = 0;
165    __asm__ __volatile__(
166       "ldr x13,[%0,#0];  ucvtf s18,x13,#64;  str s18, [%0,#8]"
167       ::"r"(&block[0]) : "memory", "x13","q18");
168    return (double)block[1].f32[0];
169 }
170 
171 
172 //////////////////// S from W ////////////////////
173 
do_scvtf_s_w_imm1(Int x)174 __attribute__((noinline)) double do_scvtf_s_w_imm1 ( Int x )
175 {
176    U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0;
177    __asm__ __volatile__(
178       "ldr x13,[%0,#0];  scvtf s18,w13,#1;  str s18, [%0,#8]"
179       ::"r"(&block[0]) : "memory", "x13","q18");
180    return (double)block[1].f32[0];
181 }
do_scvtf_s_w_imm16(Int x)182 __attribute__((noinline)) double do_scvtf_s_w_imm16 ( Int x )
183 {
184    U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0;
185    __asm__ __volatile__(
186       "ldr x13,[%0,#0];  scvtf s18,w13,#16;  str s18, [%0,#8]"
187       ::"r"(&block[0]) : "memory", "x13","q18");
188    return (double)block[1].f32[0];
189 }
do_scvtf_s_w_imm32(Int x)190 __attribute__((noinline)) double do_scvtf_s_w_imm32 ( Int x )
191 {
192    U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0;
193    __asm__ __volatile__(
194       "ldr x13,[%0,#0];  scvtf s18,w13,#32;  str s18, [%0,#8]"
195       ::"r"(&block[0]) : "memory", "x13","q18");
196    return (double)block[1].f32[0];
197 }
198 
do_ucvtf_s_w_imm1(Int x)199 __attribute__((noinline)) double do_ucvtf_s_w_imm1 ( Int x )
200 {
201    U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0;
202    __asm__ __volatile__(
203       "ldr x13,[%0,#0];  ucvtf s18,w13,#1;  str s18, [%0,#8]"
204       ::"r"(&block[0]) : "memory", "x13","q18");
205    return (double)block[1].f32[0];
206 }
do_ucvtf_s_w_imm16(Int x)207 __attribute__((noinline)) double do_ucvtf_s_w_imm16 ( Int x )
208 {
209    U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0;
210    __asm__ __volatile__(
211       "ldr x13,[%0,#0];  ucvtf s18,w13,#16;  str s18, [%0,#8]"
212       ::"r"(&block[0]) : "memory", "x13","q18");
213    return (double)block[1].f32[0];
214 }
do_ucvtf_s_w_imm32(Int x)215 __attribute__((noinline)) double do_ucvtf_s_w_imm32 ( Int x )
216 {
217    U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0;
218    __asm__ __volatile__(
219       "ldr x13,[%0,#0];  ucvtf s18,w13,#32;  str s18, [%0,#8]"
220       ::"r"(&block[0]) : "memory", "x13","q18");
221    return (double)block[1].f32[0];
222 }
223 
224 
225 
226 
227 
main(void)228 int main ( void )
229 {
230   assert(sizeof(U) == 8);
231 
232   //////////////////// D from X ////////////////////
233 #if 1
234   printf("\nscvtf_d_x_imm1\n");
235   printf("%18.12e\n", do_scvtf_d_x_imm1(0xFFFFFFFFFFFFFFFFUL));
236   printf("%18.12e\n", do_scvtf_d_x_imm1(0));
237   printf("%18.12e\n", do_scvtf_d_x_imm1(0x7FFFFFFFFFFFFFFFUL));
238   printf("%18.12e\n", do_scvtf_d_x_imm1(1234));
239   printf("%18.12e\n", do_scvtf_d_x_imm1(-1234));
240   printf("%18.12e\n", do_scvtf_d_x_imm1(0x8000000000000000UL));
241 
242   printf("\nscvtf_d_x_imm32\n");
243   printf("%18.12e\n", do_scvtf_d_x_imm32(0xFFFFFFFFFFFFFFFFUL));
244   printf("%18.12e\n", do_scvtf_d_x_imm32(0));
245   printf("%18.12e\n", do_scvtf_d_x_imm32(0x7FFFFFFFFFFFFFFFUL));
246   printf("%18.12e\n", do_scvtf_d_x_imm32(1234));
247   printf("%18.12e\n", do_scvtf_d_x_imm32(-1234));
248   printf("%18.12e\n", do_scvtf_d_x_imm32(0x8000000000000000UL));
249 
250   printf("\nscvtf_d_x_imm64\n");
251   printf("%18.12e\n", do_scvtf_d_x_imm64(0xFFFFFFFFFFFFFFFFUL));
252   printf("%18.12e\n", do_scvtf_d_x_imm64(0));
253   printf("%18.12e\n", do_scvtf_d_x_imm64(0x7FFFFFFFFFFFFFFFUL));
254   printf("%18.12e\n", do_scvtf_d_x_imm64(1234));
255   printf("%18.12e\n", do_scvtf_d_x_imm64(-1234));
256   printf("%18.12e\n", do_scvtf_d_x_imm64(0x8000000000000000UL));
257 
258   printf("\nucvtf_d_x_imm1\n");
259   printf("%18.12e\n", do_ucvtf_d_x_imm1(0xFFFFFFFFFFFFFFFFUL));
260   printf("%18.12e\n", do_ucvtf_d_x_imm1(0));
261   printf("%18.12e\n", do_ucvtf_d_x_imm1(0x7FFFFFFFFFFFFFFFUL));
262   printf("%18.12e\n", do_ucvtf_d_x_imm1(1234));
263   printf("%18.12e\n", do_ucvtf_d_x_imm1(-1234));
264   printf("%18.12e\n", do_ucvtf_d_x_imm1(0x8000000000000000UL));
265 
266   printf("\nucvtf_d_x_imm32\n");
267   printf("%18.12e\n", do_ucvtf_d_x_imm32(0xFFFFFFFFFFFFFFFFUL));
268   printf("%18.12e\n", do_ucvtf_d_x_imm32(0));
269   printf("%18.12e\n", do_ucvtf_d_x_imm32(0x7FFFFFFFFFFFFFFFUL));
270   printf("%18.12e\n", do_ucvtf_d_x_imm32(1234));
271   printf("%18.12e\n", do_ucvtf_d_x_imm32(-1234));
272   printf("%18.12e\n", do_ucvtf_d_x_imm32(0x8000000000000000UL));
273 
274   printf("\nucvtf_d_x_imm64\n");
275   printf("%18.12e\n", do_ucvtf_d_x_imm64(0xFFFFFFFFFFFFFFFFUL));
276   printf("%18.12e\n", do_ucvtf_d_x_imm64(0));
277   printf("%18.12e\n", do_ucvtf_d_x_imm64(0x7FFFFFFFFFFFFFFFUL));
278   printf("%18.12e\n", do_ucvtf_d_x_imm64(1234));
279   printf("%18.12e\n", do_ucvtf_d_x_imm64(-1234));
280   printf("%18.12e\n", do_ucvtf_d_x_imm64(0x8000000000000000UL));
281 
282   //////////////////// D from W ////////////////////
283 
284   printf("\nscvtf_d_w_imm1\n");
285   printf("%18.12e\n", do_scvtf_d_w_imm1(0xFFFFFFFF));
286   printf("%18.12e\n", do_scvtf_d_w_imm1(0));
287   printf("%18.12e\n", do_scvtf_d_w_imm1(0x7FFFFFFF));
288   printf("%18.12e\n", do_scvtf_d_w_imm1(1234));
289   printf("%18.12e\n", do_scvtf_d_w_imm1(-1234));
290   printf("%18.12e\n", do_scvtf_d_w_imm1(0x80000000));
291 
292   printf("\nscvtf_d_w_imm16\n");
293   printf("%18.12e\n", do_scvtf_d_w_imm16(0xFFFFFFFF));
294   printf("%18.12e\n", do_scvtf_d_w_imm16(0));
295   printf("%18.12e\n", do_scvtf_d_w_imm16(0x7FFFFFFF));
296   printf("%18.12e\n", do_scvtf_d_w_imm16(1234));
297   printf("%18.12e\n", do_scvtf_d_w_imm16(-1234));
298   printf("%18.12e\n", do_scvtf_d_w_imm16(0x80000000));
299 
300   printf("\nscvtf_d_w_imm32\n");
301   printf("%18.12e\n", do_scvtf_d_w_imm32(0xFFFFFFFF));
302   printf("%18.12e\n", do_scvtf_d_w_imm32(0));
303   printf("%18.12e\n", do_scvtf_d_w_imm32(0x7FFFFFFF));
304   printf("%18.12e\n", do_scvtf_d_w_imm32(1234));
305   printf("%18.12e\n", do_scvtf_d_w_imm32(-1234));
306   printf("%18.12e\n", do_scvtf_d_w_imm32(0x80000000));
307 
308   printf("\nucvtf_d_w_imm1\n");
309   printf("%18.12e\n", do_ucvtf_d_w_imm1(0xFFFFFFFF));
310   printf("%18.12e\n", do_ucvtf_d_w_imm1(0));
311   printf("%18.12e\n", do_ucvtf_d_w_imm1(0x7FFFFFFF));
312   printf("%18.12e\n", do_ucvtf_d_w_imm1(1234));
313   printf("%18.12e\n", do_ucvtf_d_w_imm1(-1234));
314   printf("%18.12e\n", do_ucvtf_d_w_imm1(0x80000000));
315 
316   printf("\nucvtf_d_w_imm16\n");
317   printf("%18.12e\n", do_ucvtf_d_w_imm16(0xFFFFFFFF));
318   printf("%18.12e\n", do_ucvtf_d_w_imm16(0));
319   printf("%18.12e\n", do_ucvtf_d_w_imm16(0x7FFFFFFF));
320   printf("%18.12e\n", do_ucvtf_d_w_imm16(1234));
321   printf("%18.12e\n", do_ucvtf_d_w_imm16(-1234));
322   printf("%18.12e\n", do_ucvtf_d_w_imm16(0x80000000));
323 
324   printf("\nucvtf_d_w_imm32\n");
325   printf("%18.12e\n", do_ucvtf_d_w_imm32(0xFFFFFFFF));
326   printf("%18.12e\n", do_ucvtf_d_w_imm32(0));
327   printf("%18.12e\n", do_ucvtf_d_w_imm32(0x7FFFFFFF));
328   printf("%18.12e\n", do_ucvtf_d_w_imm32(1234));
329   printf("%18.12e\n", do_ucvtf_d_w_imm32(-1234));
330   printf("%18.12e\n", do_ucvtf_d_w_imm32(0x80000000));
331 
332   //////////////////// S from X ////////////////////
333 
334   printf("\nscvtf_s_x_imm1\n");
335   printf("%18.12e\n", do_scvtf_s_x_imm1(0xFFFFFFFFFFFFFFFFUL));
336   printf("%18.12e\n", do_scvtf_s_x_imm1(0));
337   printf("%18.12e\n", do_scvtf_s_x_imm1(0x7FFFFFFFFFFFFFFFUL));
338   printf("%18.12e\n", do_scvtf_s_x_imm1(1234));
339   printf("%18.12e\n", do_scvtf_s_x_imm1(-1234));
340   printf("%18.12e\n", do_scvtf_s_x_imm1(0x8000000000000000UL));
341 
342   printf("\nscvtf_s_x_imm32\n");
343   printf("%18.12e\n", do_scvtf_s_x_imm32(0xFFFFFFFFFFFFFFFFUL));
344   printf("%18.12e\n", do_scvtf_s_x_imm32(0));
345   printf("%18.12e\n", do_scvtf_s_x_imm32(0x7FFFFFFFFFFFFFFFUL));
346   printf("%18.12e\n", do_scvtf_s_x_imm32(1234));
347   printf("%18.12e\n", do_scvtf_s_x_imm32(-1234));
348   printf("%18.12e\n", do_scvtf_s_x_imm32(0x8000000000000000UL));
349 
350   printf("\nscvtf_s_x_imm64\n");
351   printf("%18.12e\n", do_scvtf_s_x_imm64(0xFFFFFFFFFFFFFFFFUL));
352   printf("%18.12e\n", do_scvtf_s_x_imm64(0));
353   printf("%18.12e\n", do_scvtf_s_x_imm64(0x7FFFFFFFFFFFFFFFUL));
354   printf("%18.12e\n", do_scvtf_s_x_imm64(1234));
355   printf("%18.12e\n", do_scvtf_s_x_imm64(-1234));
356   printf("%18.12e\n", do_scvtf_s_x_imm64(0x8000000000000000UL));
357 
358   printf("\nucvtf_s_x_imm1\n");
359   printf("%18.12e\n", do_ucvtf_s_x_imm1(0xFFFFFFFFFFFFFFFFUL));
360   printf("%18.12e\n", do_ucvtf_s_x_imm1(0));
361   printf("%18.12e\n", do_ucvtf_s_x_imm1(0x7FFFFFFFFFFFFFFFUL));
362   printf("%18.12e\n", do_ucvtf_s_x_imm1(1234));
363   printf("%18.12e\n", do_ucvtf_s_x_imm1(-1234));
364   printf("%18.12e\n", do_ucvtf_s_x_imm1(0x8000000000000000UL));
365 
366   printf("\nucvtf_s_x_imm32\n");
367   printf("%18.12e\n", do_ucvtf_s_x_imm32(0xFFFFFFFFFFFFFFFFUL));
368   printf("%18.12e\n", do_ucvtf_s_x_imm32(0));
369   printf("%18.12e\n", do_ucvtf_s_x_imm32(0x7FFFFFFFFFFFFFFFUL));
370   printf("%18.12e\n", do_ucvtf_s_x_imm32(1234));
371   printf("%18.12e\n", do_ucvtf_s_x_imm32(-1234));
372   printf("%18.12e\n", do_ucvtf_s_x_imm32(0x8000000000000000UL));
373 
374   printf("\nucvtf_s_x_imm64\n");
375   printf("%18.12e\n", do_ucvtf_s_x_imm64(0xFFFFFFFFFFFFFFFFUL));
376   printf("%18.12e\n", do_ucvtf_s_x_imm64(0));
377   printf("%18.12e\n", do_ucvtf_s_x_imm64(0x7FFFFFFFFFFFFFFFUL));
378   printf("%18.12e\n", do_ucvtf_s_x_imm64(1234));
379   printf("%18.12e\n", do_ucvtf_s_x_imm64(-1234));
380   printf("%18.12e\n", do_ucvtf_s_x_imm64(0x8000000000000000UL));
381 
382   //////////////////// S from W ////////////////////
383 
384   printf("\nscvtf_s_w_imm1\n");
385   printf("%18.12e\n", do_scvtf_s_w_imm1(0xFFFFFFFF));
386   printf("%18.12e\n", do_scvtf_s_w_imm1(0));
387   printf("%18.12e\n", do_scvtf_s_w_imm1(0x7FFFFFFF));
388   printf("%18.12e\n", do_scvtf_s_w_imm1(1234));
389   printf("%18.12e\n", do_scvtf_s_w_imm1(-1234));
390   printf("%18.12e\n", do_scvtf_s_w_imm1(0x80000000));
391 
392   printf("\nscvtf_s_w_imm16\n");
393   printf("%18.12e\n", do_scvtf_s_w_imm16(0xFFFFFFFF));
394   printf("%18.12e\n", do_scvtf_s_w_imm16(0));
395   printf("%18.12e\n", do_scvtf_s_w_imm16(0x7FFFFFFF));
396   printf("%18.12e\n", do_scvtf_s_w_imm16(1234));
397   printf("%18.12e\n", do_scvtf_s_w_imm16(-1234));
398   printf("%18.12e\n", do_scvtf_s_w_imm16(0x80000000));
399 
400   printf("\nscvtf_s_w_imm32\n");
401   printf("%18.12e\n", do_scvtf_s_w_imm32(0xFFFFFFFF));
402   printf("%18.12e\n", do_scvtf_s_w_imm32(0));
403   printf("%18.12e\n", do_scvtf_s_w_imm32(0x7FFFFFFF));
404   printf("%18.12e\n", do_scvtf_s_w_imm32(1234));
405   printf("%18.12e\n", do_scvtf_s_w_imm32(-1234));
406   printf("%18.12e\n", do_scvtf_s_w_imm32(0x80000000));
407 
408   printf("\nucvtf_s_w_imm1\n");
409   printf("%18.12e\n", do_ucvtf_s_w_imm1(0xFFFFFFFF));
410   printf("%18.12e\n", do_ucvtf_s_w_imm1(0));
411   printf("%18.12e\n", do_ucvtf_s_w_imm1(0x7FFFFFFF));
412   printf("%18.12e\n", do_ucvtf_s_w_imm1(1234));
413   printf("%18.12e\n", do_ucvtf_s_w_imm1(-1234));
414   printf("%18.12e\n", do_ucvtf_s_w_imm1(0x80000000));
415 
416   printf("\nucvtf_s_w_imm16\n");
417   printf("%18.12e\n", do_ucvtf_s_w_imm16(0xFFFFFFFF));
418   printf("%18.12e\n", do_ucvtf_s_w_imm16(0));
419   printf("%18.12e\n", do_ucvtf_s_w_imm16(0x7FFFFFFF));
420   printf("%18.12e\n", do_ucvtf_s_w_imm16(1234));
421   printf("%18.12e\n", do_ucvtf_s_w_imm16(-1234));
422   printf("%18.12e\n", do_ucvtf_s_w_imm16(0x80000000));
423 
424   printf("\nucvtf_s_w_imm32\n");
425   printf("%18.12e\n", do_ucvtf_s_w_imm32(0xFFFFFFFF));
426   printf("%18.12e\n", do_ucvtf_s_w_imm32(0));
427   printf("%18.12e\n", do_ucvtf_s_w_imm32(0x7FFFFFFF));
428   printf("%18.12e\n", do_ucvtf_s_w_imm32(1234));
429   printf("%18.12e\n", do_ucvtf_s_w_imm32(-1234));
430 #endif
431   printf("%18.12e\n", do_ucvtf_s_w_imm32(0x80000000));
432 
433 
434 
435 
436 #if 0
437 int i;
438 double d = -4.90;
439 for (i = 0; i < 100; i++) {
440    printf("frintx_d(%f) = %f\n", d, do_frintx_d(d));
441    d += 0.1 * (1.0 - 1.0 / 30.0);
442 }
443 
444 float f = -4.90;
445 for (i = 0; i < 100; i++) {
446    printf("frintx_s(%f) = %f\n", f, do_frintx_s(f));
447    f += 0.1 * (1.0 - 1.0 / 30.0);
448 }
449 #endif
450 
451   return 0;
452 }
453