mirror of
https://github.com/ioacademy-jikim/debugging
synced 2025-06-10 01:16:12 +00:00
453 lines
16 KiB
C
453 lines
16 KiB
C
|
|
#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;
|
|
}
|