| |
| #include <stdio.h> |
| #include <assert.h> |
| |
| typedef signed long long int Long; |
| typedef unsigned long long int ULong; |
| |
| typedef signed int Int; |
| typedef unsigned int UInt; |
| |
| typedef union { double d64; float f32[2]; unsigned long long int i64; } U; |
| |
| //////////////////// D from X //////////////////// |
| |
| __attribute__((noinline)) double do_scvtf_d_x_imm1 ( Long x ) |
| { |
| U block[2]; block[0].i64 = x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; scvtf d18,x13,#1; str d18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return block[1].d64; |
| } |
| __attribute__((noinline)) double do_scvtf_d_x_imm32 ( Long x ) |
| { |
| U block[2]; block[0].i64 = x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; scvtf d18,x13,#32; str d18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return block[1].d64; |
| } |
| __attribute__((noinline)) double do_scvtf_d_x_imm64 ( Long x ) |
| { |
| U block[2]; block[0].i64 = x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; scvtf d18,x13,#64; str d18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return block[1].d64; |
| } |
| |
| __attribute__((noinline)) double do_ucvtf_d_x_imm1 ( Long x ) |
| { |
| U block[2]; block[0].i64 = x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; ucvtf d18,x13,#1; str d18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return block[1].d64; |
| } |
| __attribute__((noinline)) double do_ucvtf_d_x_imm32 ( Long x ) |
| { |
| U block[2]; block[0].i64 = x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; ucvtf d18,x13,#32; str d18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return block[1].d64; |
| } |
| __attribute__((noinline)) double do_ucvtf_d_x_imm64 ( Long x ) |
| { |
| U block[2]; block[0].i64 = x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; ucvtf d18,x13,#64; str d18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return block[1].d64; |
| } |
| |
| |
| //////////////////// D from W //////////////////// |
| |
| __attribute__((noinline)) double do_scvtf_d_w_imm1 ( Int x ) |
| { |
| U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; scvtf d18,w13,#1; str d18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return block[1].d64; |
| } |
| __attribute__((noinline)) double do_scvtf_d_w_imm16 ( Int x ) |
| { |
| U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; scvtf d18,w13,#16; str d18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return block[1].d64; |
| } |
| __attribute__((noinline)) double do_scvtf_d_w_imm32 ( Int x ) |
| { |
| U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; scvtf d18,w13,#32; str d18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return block[1].d64; |
| } |
| |
| __attribute__((noinline)) double do_ucvtf_d_w_imm1 ( Int x ) |
| { |
| U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; ucvtf d18,w13,#1; str d18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return block[1].d64; |
| } |
| __attribute__((noinline)) double do_ucvtf_d_w_imm16 ( Int x ) |
| { |
| U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; ucvtf d18,w13,#16; str d18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return block[1].d64; |
| } |
| __attribute__((noinline)) double do_ucvtf_d_w_imm32 ( Int x ) |
| { |
| U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; ucvtf d18,w13,#32; str d18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return block[1].d64; |
| } |
| |
| |
| //////////////////// S from X //////////////////// |
| |
| __attribute__((noinline)) double do_scvtf_s_x_imm1 ( Long x ) |
| { |
| U block[2]; block[0].i64 = x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; scvtf s18,x13,#1; str s18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return (double)block[1].f32[0]; |
| } |
| __attribute__((noinline)) double do_scvtf_s_x_imm32 ( Long x ) |
| { |
| U block[2]; block[0].i64 = x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; scvtf s18,x13,#32; str s18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return (double)block[1].f32[0]; |
| } |
| __attribute__((noinline)) double do_scvtf_s_x_imm64 ( Long x ) |
| { |
| U block[2]; block[0].i64 = x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; scvtf s18,x13,#64; str s18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return (double)block[1].f32[0]; |
| } |
| |
| __attribute__((noinline)) double do_ucvtf_s_x_imm1 ( Long x ) |
| { |
| U block[2]; block[0].i64 = x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; ucvtf s18,x13,#1; str s18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return (double)block[1].f32[0]; |
| } |
| __attribute__((noinline)) double do_ucvtf_s_x_imm32 ( Long x ) |
| { |
| U block[2]; block[0].i64 = x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; ucvtf s18,x13,#32; str s18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return (double)block[1].f32[0]; |
| } |
| __attribute__((noinline)) double do_ucvtf_s_x_imm64 ( Long x ) |
| { |
| U block[2]; block[0].i64 = x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; ucvtf s18,x13,#64; str s18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return (double)block[1].f32[0]; |
| } |
| |
| |
| //////////////////// S from W //////////////////// |
| |
| __attribute__((noinline)) double do_scvtf_s_w_imm1 ( Int x ) |
| { |
| U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; scvtf s18,w13,#1; str s18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return (double)block[1].f32[0]; |
| } |
| __attribute__((noinline)) double do_scvtf_s_w_imm16 ( Int x ) |
| { |
| U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; scvtf s18,w13,#16; str s18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return (double)block[1].f32[0]; |
| } |
| __attribute__((noinline)) double do_scvtf_s_w_imm32 ( Int x ) |
| { |
| U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; scvtf s18,w13,#32; str s18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return (double)block[1].f32[0]; |
| } |
| |
| __attribute__((noinline)) double do_ucvtf_s_w_imm1 ( Int x ) |
| { |
| U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; ucvtf s18,w13,#1; str s18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return (double)block[1].f32[0]; |
| } |
| __attribute__((noinline)) double do_ucvtf_s_w_imm16 ( Int x ) |
| { |
| U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; ucvtf s18,w13,#16; str s18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return (double)block[1].f32[0]; |
| } |
| __attribute__((noinline)) double do_ucvtf_s_w_imm32 ( Int x ) |
| { |
| U block[2]; block[0].i64 = (Long)x; block[1].i64 = 0; |
| __asm__ __volatile__( |
| "ldr x13,[%0,#0]; ucvtf s18,w13,#32; str s18, [%0,#8]" |
| ::"r"(&block[0]) : "memory", "x13","q18"); |
| return (double)block[1].f32[0]; |
| } |
| |
| |
| |
| |
| |
| int main ( void ) |
| { |
| assert(sizeof(U) == 8); |
| |
| //////////////////// D from X //////////////////// |
| #if 1 |
| printf("\nscvtf_d_x_imm1\n"); |
| printf("%18.12e\n", do_scvtf_d_x_imm1(0xFFFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_scvtf_d_x_imm1(0)); |
| printf("%18.12e\n", do_scvtf_d_x_imm1(0x7FFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_scvtf_d_x_imm1(1234)); |
| printf("%18.12e\n", do_scvtf_d_x_imm1(-1234)); |
| printf("%18.12e\n", do_scvtf_d_x_imm1(0x8000000000000000UL)); |
| |
| printf("\nscvtf_d_x_imm32\n"); |
| printf("%18.12e\n", do_scvtf_d_x_imm32(0xFFFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_scvtf_d_x_imm32(0)); |
| printf("%18.12e\n", do_scvtf_d_x_imm32(0x7FFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_scvtf_d_x_imm32(1234)); |
| printf("%18.12e\n", do_scvtf_d_x_imm32(-1234)); |
| printf("%18.12e\n", do_scvtf_d_x_imm32(0x8000000000000000UL)); |
| |
| printf("\nscvtf_d_x_imm64\n"); |
| printf("%18.12e\n", do_scvtf_d_x_imm64(0xFFFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_scvtf_d_x_imm64(0)); |
| printf("%18.12e\n", do_scvtf_d_x_imm64(0x7FFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_scvtf_d_x_imm64(1234)); |
| printf("%18.12e\n", do_scvtf_d_x_imm64(-1234)); |
| printf("%18.12e\n", do_scvtf_d_x_imm64(0x8000000000000000UL)); |
| |
| printf("\nucvtf_d_x_imm1\n"); |
| printf("%18.12e\n", do_ucvtf_d_x_imm1(0xFFFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm1(0)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm1(0x7FFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm1(1234)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm1(-1234)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm1(0x8000000000000000UL)); |
| |
| printf("\nucvtf_d_x_imm32\n"); |
| printf("%18.12e\n", do_ucvtf_d_x_imm32(0xFFFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm32(0)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm32(0x7FFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm32(1234)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm32(-1234)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm32(0x8000000000000000UL)); |
| |
| printf("\nucvtf_d_x_imm64\n"); |
| printf("%18.12e\n", do_ucvtf_d_x_imm64(0xFFFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm64(0)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm64(0x7FFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm64(1234)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm64(-1234)); |
| printf("%18.12e\n", do_ucvtf_d_x_imm64(0x8000000000000000UL)); |
| |
| //////////////////// D from W //////////////////// |
| |
| printf("\nscvtf_d_w_imm1\n"); |
| printf("%18.12e\n", do_scvtf_d_w_imm1(0xFFFFFFFF)); |
| printf("%18.12e\n", do_scvtf_d_w_imm1(0)); |
| printf("%18.12e\n", do_scvtf_d_w_imm1(0x7FFFFFFF)); |
| printf("%18.12e\n", do_scvtf_d_w_imm1(1234)); |
| printf("%18.12e\n", do_scvtf_d_w_imm1(-1234)); |
| printf("%18.12e\n", do_scvtf_d_w_imm1(0x80000000)); |
| |
| printf("\nscvtf_d_w_imm16\n"); |
| printf("%18.12e\n", do_scvtf_d_w_imm16(0xFFFFFFFF)); |
| printf("%18.12e\n", do_scvtf_d_w_imm16(0)); |
| printf("%18.12e\n", do_scvtf_d_w_imm16(0x7FFFFFFF)); |
| printf("%18.12e\n", do_scvtf_d_w_imm16(1234)); |
| printf("%18.12e\n", do_scvtf_d_w_imm16(-1234)); |
| printf("%18.12e\n", do_scvtf_d_w_imm16(0x80000000)); |
| |
| printf("\nscvtf_d_w_imm32\n"); |
| printf("%18.12e\n", do_scvtf_d_w_imm32(0xFFFFFFFF)); |
| printf("%18.12e\n", do_scvtf_d_w_imm32(0)); |
| printf("%18.12e\n", do_scvtf_d_w_imm32(0x7FFFFFFF)); |
| printf("%18.12e\n", do_scvtf_d_w_imm32(1234)); |
| printf("%18.12e\n", do_scvtf_d_w_imm32(-1234)); |
| printf("%18.12e\n", do_scvtf_d_w_imm32(0x80000000)); |
| |
| printf("\nucvtf_d_w_imm1\n"); |
| printf("%18.12e\n", do_ucvtf_d_w_imm1(0xFFFFFFFF)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm1(0)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm1(0x7FFFFFFF)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm1(1234)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm1(-1234)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm1(0x80000000)); |
| |
| printf("\nucvtf_d_w_imm16\n"); |
| printf("%18.12e\n", do_ucvtf_d_w_imm16(0xFFFFFFFF)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm16(0)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm16(0x7FFFFFFF)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm16(1234)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm16(-1234)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm16(0x80000000)); |
| |
| printf("\nucvtf_d_w_imm32\n"); |
| printf("%18.12e\n", do_ucvtf_d_w_imm32(0xFFFFFFFF)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm32(0)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm32(0x7FFFFFFF)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm32(1234)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm32(-1234)); |
| printf("%18.12e\n", do_ucvtf_d_w_imm32(0x80000000)); |
| |
| //////////////////// S from X //////////////////// |
| |
| printf("\nscvtf_s_x_imm1\n"); |
| printf("%18.12e\n", do_scvtf_s_x_imm1(0xFFFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_scvtf_s_x_imm1(0)); |
| printf("%18.12e\n", do_scvtf_s_x_imm1(0x7FFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_scvtf_s_x_imm1(1234)); |
| printf("%18.12e\n", do_scvtf_s_x_imm1(-1234)); |
| printf("%18.12e\n", do_scvtf_s_x_imm1(0x8000000000000000UL)); |
| |
| printf("\nscvtf_s_x_imm32\n"); |
| printf("%18.12e\n", do_scvtf_s_x_imm32(0xFFFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_scvtf_s_x_imm32(0)); |
| printf("%18.12e\n", do_scvtf_s_x_imm32(0x7FFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_scvtf_s_x_imm32(1234)); |
| printf("%18.12e\n", do_scvtf_s_x_imm32(-1234)); |
| printf("%18.12e\n", do_scvtf_s_x_imm32(0x8000000000000000UL)); |
| |
| printf("\nscvtf_s_x_imm64\n"); |
| printf("%18.12e\n", do_scvtf_s_x_imm64(0xFFFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_scvtf_s_x_imm64(0)); |
| printf("%18.12e\n", do_scvtf_s_x_imm64(0x7FFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_scvtf_s_x_imm64(1234)); |
| printf("%18.12e\n", do_scvtf_s_x_imm64(-1234)); |
| printf("%18.12e\n", do_scvtf_s_x_imm64(0x8000000000000000UL)); |
| |
| printf("\nucvtf_s_x_imm1\n"); |
| printf("%18.12e\n", do_ucvtf_s_x_imm1(0xFFFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm1(0)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm1(0x7FFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm1(1234)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm1(-1234)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm1(0x8000000000000000UL)); |
| |
| printf("\nucvtf_s_x_imm32\n"); |
| printf("%18.12e\n", do_ucvtf_s_x_imm32(0xFFFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm32(0)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm32(0x7FFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm32(1234)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm32(-1234)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm32(0x8000000000000000UL)); |
| |
| printf("\nucvtf_s_x_imm64\n"); |
| printf("%18.12e\n", do_ucvtf_s_x_imm64(0xFFFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm64(0)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm64(0x7FFFFFFFFFFFFFFFUL)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm64(1234)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm64(-1234)); |
| printf("%18.12e\n", do_ucvtf_s_x_imm64(0x8000000000000000UL)); |
| |
| //////////////////// S from W //////////////////// |
| |
| printf("\nscvtf_s_w_imm1\n"); |
| printf("%18.12e\n", do_scvtf_s_w_imm1(0xFFFFFFFF)); |
| printf("%18.12e\n", do_scvtf_s_w_imm1(0)); |
| printf("%18.12e\n", do_scvtf_s_w_imm1(0x7FFFFFFF)); |
| printf("%18.12e\n", do_scvtf_s_w_imm1(1234)); |
| printf("%18.12e\n", do_scvtf_s_w_imm1(-1234)); |
| printf("%18.12e\n", do_scvtf_s_w_imm1(0x80000000)); |
| |
| printf("\nscvtf_s_w_imm16\n"); |
| printf("%18.12e\n", do_scvtf_s_w_imm16(0xFFFFFFFF)); |
| printf("%18.12e\n", do_scvtf_s_w_imm16(0)); |
| printf("%18.12e\n", do_scvtf_s_w_imm16(0x7FFFFFFF)); |
| printf("%18.12e\n", do_scvtf_s_w_imm16(1234)); |
| printf("%18.12e\n", do_scvtf_s_w_imm16(-1234)); |
| printf("%18.12e\n", do_scvtf_s_w_imm16(0x80000000)); |
| |
| printf("\nscvtf_s_w_imm32\n"); |
| printf("%18.12e\n", do_scvtf_s_w_imm32(0xFFFFFFFF)); |
| printf("%18.12e\n", do_scvtf_s_w_imm32(0)); |
| printf("%18.12e\n", do_scvtf_s_w_imm32(0x7FFFFFFF)); |
| printf("%18.12e\n", do_scvtf_s_w_imm32(1234)); |
| printf("%18.12e\n", do_scvtf_s_w_imm32(-1234)); |
| printf("%18.12e\n", do_scvtf_s_w_imm32(0x80000000)); |
| |
| printf("\nucvtf_s_w_imm1\n"); |
| printf("%18.12e\n", do_ucvtf_s_w_imm1(0xFFFFFFFF)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm1(0)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm1(0x7FFFFFFF)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm1(1234)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm1(-1234)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm1(0x80000000)); |
| |
| printf("\nucvtf_s_w_imm16\n"); |
| printf("%18.12e\n", do_ucvtf_s_w_imm16(0xFFFFFFFF)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm16(0)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm16(0x7FFFFFFF)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm16(1234)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm16(-1234)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm16(0x80000000)); |
| |
| printf("\nucvtf_s_w_imm32\n"); |
| printf("%18.12e\n", do_ucvtf_s_w_imm32(0xFFFFFFFF)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm32(0)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm32(0x7FFFFFFF)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm32(1234)); |
| printf("%18.12e\n", do_ucvtf_s_w_imm32(-1234)); |
| #endif |
| printf("%18.12e\n", do_ucvtf_s_w_imm32(0x80000000)); |
| |
| |
| |
| |
| #if 0 |
| int i; |
| double d = -4.90; |
| for (i = 0; i < 100; i++) { |
| printf("frintx_d(%f) = %f\n", d, do_frintx_d(d)); |
| d += 0.1 * (1.0 - 1.0 / 30.0); |
| } |
| |
| float f = -4.90; |
| for (i = 0; i < 100; i++) { |
| printf("frintx_s(%f) = %f\n", f, do_frintx_s(f)); |
| f += 0.1 * (1.0 - 1.0 / 30.0); |
| } |
| #endif |
| |
| return 0; |
| } |