Home | History | Annotate | Download | only in arm64
      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 
     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 }
     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 }
     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 
     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 }
     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 }
     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 
     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 }
     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 }
     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 
     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 }
    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 }
    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 
    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 }
    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 }
    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 
    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 }
    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 }
    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 
    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 }
    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 }
    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 
    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 }
    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 }
    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 
    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