|
From: <sv...@va...> - 2014-11-20 10:11:09
|
Author: sewardj
Date: Thu Nov 20 10:11:00 2014
New Revision: 14738
Log:
Add test cases for {S,U}CVTF fixedpt-to-fp.
Added:
trunk/none/tests/arm64/cvtf_imm.c
trunk/none/tests/arm64/cvtf_imm.stderr.exp
trunk/none/tests/arm64/cvtf_imm.stdout.exp
trunk/none/tests/arm64/cvtf_imm.vgtest
Modified:
trunk/none/tests/arm64/Makefile.am
Modified: trunk/none/tests/arm64/Makefile.am
==============================================================================
--- trunk/none/tests/arm64/Makefile.am (original)
+++ trunk/none/tests/arm64/Makefile.am Thu Nov 20 10:11:00 2014
@@ -4,12 +4,14 @@
dist_noinst_SCRIPTS = filter_stderr
EXTRA_DIST = \
+ cvtf_imm.stdout.exp cvtf_imm.stderr.exp cvtf_imm.vgtest \
fp_and_simd.stdout.exp fp_and_simd.stderr.exp fp_and_simd.vgtest \
integer.stdout.exp integer.stderr.exp integer.vgtest \
memory.stdout.exp memory.stderr.exp memory.vgtest
check_PROGRAMS = \
allexec \
+ cvtf_imm \
fp_and_simd \
integer \
memory
Added: trunk/none/tests/arm64/cvtf_imm.c
==============================================================================
--- trunk/none/tests/arm64/cvtf_imm.c (added)
+++ trunk/none/tests/arm64/cvtf_imm.c Thu Nov 20 10:11:00 2014
@@ -0,0 +1,452 @@
+
+#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;
+}
Added: trunk/none/tests/arm64/cvtf_imm.stderr.exp
==============================================================================
(empty)
Added: trunk/none/tests/arm64/cvtf_imm.stdout.exp
==============================================================================
--- trunk/none/tests/arm64/cvtf_imm.stdout.exp (added)
+++ trunk/none/tests/arm64/cvtf_imm.stdout.exp Thu Nov 20 10:11:00 2014
@@ -0,0 +1,192 @@
+
+scvtf_d_x_imm1
+-5.000000000000e-01
+0.000000000000e+00
+4.611686018427e+18
+6.170000000000e+02
+-6.170000000000e+02
+-4.611686018427e+18
+
+scvtf_d_x_imm32
+-2.328306436539e-10
+0.000000000000e+00
+2.147483648000e+09
+2.873130142689e-07
+-2.873130142689e-07
+-2.147483648000e+09
+
+scvtf_d_x_imm64
+-5.421010862428e-20
+0.000000000000e+00
+5.000000000000e-01
+6.689527404236e-17
+-6.689527404236e-17
+-5.000000000000e-01
+
+ucvtf_d_x_imm1
+9.223372036855e+18
+0.000000000000e+00
+4.611686018427e+18
+6.170000000000e+02
+9.223372036855e+18
+4.611686018427e+18
+
+ucvtf_d_x_imm32
+4.294967296000e+09
+0.000000000000e+00
+2.147483648000e+09
+2.873130142689e-07
+4.294967296000e+09
+2.147483648000e+09
+
+ucvtf_d_x_imm64
+1.000000000000e+00
+0.000000000000e+00
+5.000000000000e-01
+6.689527404236e-17
+1.000000000000e+00
+5.000000000000e-01
+
+scvtf_d_w_imm1
+-5.000000000000e-01
+0.000000000000e+00
+1.073741823500e+09
+6.170000000000e+02
+-6.170000000000e+02
+-1.073741824000e+09
+
+scvtf_d_w_imm16
+-1.525878906250e-05
+0.000000000000e+00
+3.276799998474e+04
+1.882934570312e-02
+-1.882934570312e-02
+-3.276800000000e+04
+
+scvtf_d_w_imm32
+-2.328306436539e-10
+0.000000000000e+00
+4.999999997672e-01
+2.873130142689e-07
+-2.873130142689e-07
+-5.000000000000e-01
+
+ucvtf_d_w_imm1
+2.147483647500e+09
+0.000000000000e+00
+1.073741823500e+09
+6.170000000000e+02
+2.147483031000e+09
+1.073741824000e+09
+
+ucvtf_d_w_imm16
+6.553599998474e+04
+0.000000000000e+00
+3.276799998474e+04
+1.882934570312e-02
+6.553598117065e+04
+3.276800000000e+04
+
+ucvtf_d_w_imm32
+9.999999997672e-01
+0.000000000000e+00
+4.999999997672e-01
+2.873130142689e-07
+9.999997126870e-01
+5.000000000000e-01
+
+scvtf_s_x_imm1
+-5.000000000000e-01
+0.000000000000e+00
+4.611686018427e+18
+6.170000000000e+02
+-6.170000000000e+02
+-4.611686018427e+18
+
+scvtf_s_x_imm32
+-2.328306436539e-10
+0.000000000000e+00
+2.147483648000e+09
+2.873130142689e-07
+-2.873130142689e-07
+-2.147483648000e+09
+
+scvtf_s_x_imm64
+-5.421010862428e-20
+0.000000000000e+00
+5.000000000000e-01
+6.689527404236e-17
+-6.689527404236e-17
+-5.000000000000e-01
+
+ucvtf_s_x_imm1
+9.223372036855e+18
+0.000000000000e+00
+4.611686018427e+18
+6.170000000000e+02
+9.223372036855e+18
+4.611686018427e+18
+
+ucvtf_s_x_imm32
+4.294967296000e+09
+0.000000000000e+00
+2.147483648000e+09
+2.873130142689e-07
+4.294967296000e+09
+2.147483648000e+09
+
+ucvtf_s_x_imm64
+1.000000000000e+00
+0.000000000000e+00
+5.000000000000e-01
+6.689527404236e-17
+1.000000000000e+00
+5.000000000000e-01
+
+scvtf_s_w_imm1
+-5.000000000000e-01
+0.000000000000e+00
+1.073741824000e+09
+6.170000000000e+02
+-6.170000000000e+02
+-1.073741824000e+09
+
+scvtf_s_w_imm16
+-1.525878906250e-05
+0.000000000000e+00
+3.276800000000e+04
+1.882934570312e-02
+-1.882934570312e-02
+-3.276800000000e+04
+
+scvtf_s_w_imm32
+-2.328306436539e-10
+0.000000000000e+00
+5.000000000000e-01
+2.873130142689e-07
+-2.873130142689e-07
+-5.000000000000e-01
+
+ucvtf_s_w_imm1
+2.147483648000e+09
+0.000000000000e+00
+1.073741824000e+09
+6.170000000000e+02
+2.147483008000e+09
+1.073741824000e+09
+
+ucvtf_s_w_imm16
+6.553600000000e+04
+0.000000000000e+00
+3.276800000000e+04
+1.882934570312e-02
+6.553598046875e+04
+3.276800000000e+04
+
+ucvtf_s_w_imm32
+1.000000000000e+00
+0.000000000000e+00
+5.000000000000e-01
+2.873130142689e-07
+9.999997019768e-01
+5.000000000000e-01
Added: trunk/none/tests/arm64/cvtf_imm.vgtest
==============================================================================
--- trunk/none/tests/arm64/cvtf_imm.vgtest (added)
+++ trunk/none/tests/arm64/cvtf_imm.vgtest Thu Nov 20 10:11:00 2014
@@ -0,0 +1,2 @@
+prog: cvtf_imm
+vgopts: -q
|