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