|
From: <sv...@va...> - 2013-04-11 10:58:25
|
sewardj 2013-04-11 11:58:18 +0100 (Thu, 11 Apr 2013)
New Revision: 13364
Log:
Add test cases for (T1) LDRT reg+#imm8. See #315689.
Added files:
trunk/none/tests/arm/ldrt.c
trunk/none/tests/arm/ldrt.stderr.exp
trunk/none/tests/arm/ldrt.stdout.exp
trunk/none/tests/arm/ldrt.vgtest
Modified files:
trunk/none/tests/arm/Makefile.am
Added: trunk/none/tests/arm/ldrt.stdout.exp (+1 -0)
===================================================================
--- trunk/none/tests/arm/ldrt.stdout.exp 2013-04-05 14:19:12 +01:00 (rev 13363)
+++ trunk/none/tests/arm/ldrt.stdout.exp 2013-04-11 11:58:18 +01:00 (rev 13364)
@@ -0,0 +1 @@
+result is 0x87868584 (should be 0x87868584)
Added: trunk/none/tests/arm/ldrt.stderr.exp (+0 -0)
===================================================================
Modified: trunk/none/tests/arm/Makefile.am (+4 -0)
===================================================================
--- trunk/none/tests/arm/Makefile.am 2013-04-05 14:19:12 +01:00 (rev 13363)
+++ trunk/none/tests/arm/Makefile.am 2013-04-11 11:58:18 +01:00 (rev 13364)
@@ -4,6 +4,7 @@
dist_noinst_SCRIPTS = filter_stderr
EXTRA_DIST = \
+ ldrt.stdout.exp ldrt.stderr.exp ldrt.vgtest \
neon128.stdout.exp neon128.stderr.exp neon128.vgtest \
neon64.stdout.exp neon64.stderr.exp neon64.vgtest \
v6intARM.stdout.exp v6intARM.stderr.exp v6intARM.vgtest \
@@ -15,6 +16,7 @@
check_PROGRAMS = \
allexec \
+ ldrt \
neon128 \
neon64 \
v6intARM \
@@ -53,3 +55,5 @@
neon64_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 \
-mfpu=neon \
-mthumb
+
+ldrt_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 -mthumb
Added: trunk/none/tests/arm/ldrt.c (+29 -0)
===================================================================
--- trunk/none/tests/arm/ldrt.c 2013-04-05 14:19:12 +01:00 (rev 13363)
+++ trunk/none/tests/arm/ldrt.c 2013-04-11 11:58:18 +01:00 (rev 13364)
@@ -0,0 +1,29 @@
+
+// This should be compiled as Thumb code, since currently V only
+// handles the T1 encoding of ldrt.
+
+#include <stdio.h>
+#include <malloc.h>
+
+typedef unsigned int UInt;
+
+__attribute__((noinline)) UInt do_ldrt_imm_132 ( unsigned char* p )
+{
+ UInt res;
+ __asm__ __volatile__(
+ "mov r5, %1 ; ldrt r6, [r5, #132] ; mov %0, r6"
+ : "=r"(res) : "r"(p) : "r5", "r6"
+ );
+ return res;
+}
+
+int main ( void )
+{
+ UInt i;
+ unsigned char* b = malloc(256);
+ for (i = 0; i < 256; i++) b[i] = (unsigned char)i;
+ UInt r = do_ldrt_imm_132(b);
+ free(b);
+ printf("result is 0x%08x (should be 0x%08x)\n", r, 0x87868584);
+ return 0;
+}
Added: trunk/none/tests/arm/ldrt.vgtest (+2 -0)
===================================================================
--- trunk/none/tests/arm/ldrt.vgtest 2013-04-05 14:19:12 +01:00 (rev 13363)
+++ trunk/none/tests/arm/ldrt.vgtest 2013-04-11 11:58:18 +01:00 (rev 13364)
@@ -0,0 +1,2 @@
+prog: ldrt
+vgopts: -q
|