Followup to r13958: add reg-trash lists to inline assembly in
TESTINSTPCMISALIGNED TESTINSTPCMISALIGNED_DWORDOUT
TESTINSTPCMISALIGNED_2OUT and nice up the the indentation a bit.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13960 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/none/tests/arm/v6intThumb.c b/none/tests/arm/v6intThumb.c
index 811bbb3..94336e6 100644
--- a/none/tests/arm/v6intThumb.c
+++ b/none/tests/arm/v6intThumb.c
@@ -224,29 +224,30 @@
unsigned int out; \
unsigned int cpsr; \
__asm__ volatile(\
- ".align 4;" \
- "msr cpsr_f, %2;" \
- "mov " #RD ", #0;" \
- ".align 2;" \
- ".thumb;" \
- ".syntax unified;" \
- "nop;" \
- instruction ";" \
- "b .Lend" #label ";" \
- ".align 4;" \
- #label ": " \
- ".word 0x8191881b;" \
- ".word 0x18fe9c93;" \
- ".word 0x00000000;" \
- ".word 0x00000000;" \
- ".Lend" #label ":" \
- "mov %0, " #RD ";" \
- "mrs %1,cpsr;" \
- : "=&r" (out), "=&r" (cpsr) \
- : "r" (gen_cvin(cvin)) \
- ); \
- printf("%s :: rd 0x%08x, cpsr 0x%08x %c%c%c%c\n", \
- instruction, out, \
+ ".align 4;" \
+ "msr cpsr_f, %2;" \
+ "mov " #RD ", #0;" \
+ ".align 2;" \
+ ".thumb;" \
+ ".syntax unified;" \
+ "nop;" \
+ instruction ";" \
+ "b .Lend" #label ";" \
+ ".align 4;" \
+ #label ": " \
+ ".word 0x8191881b;" \
+ ".word 0x18fe9c93;" \
+ ".word 0x00000000;" \
+ ".word 0x00000000;" \
+ ".Lend" #label ":" \
+ "mov %0, " #RD ";" \
+ "mrs %1, cpsr;" \
+ : "=&r" (out), "=&r" (cpsr) \
+ : "r" (gen_cvin(cvin)) \
+ : #RD, "cc", "memory" \
+ ); \
+ printf("%s :: rd 0x%08x, cpsr 0x%08x %c%c%c%c\n", \
+ instruction, out, \
cpsr & 0xffff0000, \
((1<<31) & cpsr) ? 'N' : ' ', \
((1<<30) & cpsr) ? 'Z' : ' ', \
@@ -256,34 +257,35 @@
}
// this one uses d0, s0 and s2 (hardcoded)
-#define TESTINSTPCMISALIGNED_DWORDOUT(instruction, label, cvin) \
+#define TESTINSTPCMISALIGNED_DWORDOUT(instruction, label, cvin, extratrash) \
{ \
unsigned int out; \
unsigned int out2; \
unsigned int cpsr; \
__asm__ volatile(\
- ".align 4;" \
- "msr cpsr_f, %3;" \
- ".align 2;" \
- ".thumb;" \
- ".syntax unified;" \
- "nop;" \
- instruction ";" \
- "b .Lend" #label ";" \
- ".align 4;" \
- #label ": " \
- ".word 0x8191881b;" \
- ".word 0x18fe9c93;" \
- ".word 0x00000000;" \
- ".word 0x00000000;" \
- ".Lend" #label ":" \
- "vmov %0, s0;" \
- "vmov %1, s1;" \
- "mrs %2,cpsr;" \
- : "=&r" (out), "=&r" (out2), "=&r" (cpsr) \
- : "r" (gen_cvin(cvin)) \
- ); \
- printf("%s :: s0 0x%08x s1 0x%08x, cpsr 0x%08x %c%c%c%c\n", \
+ ".align 4;" \
+ "msr cpsr_f, %3;" \
+ ".align 2;" \
+ ".thumb;" \
+ ".syntax unified;" \
+ "nop;" \
+ instruction ";" \
+ "b .Lend" #label ";" \
+ ".align 4;" \
+ #label ": " \
+ ".word 0x8191881b;" \
+ ".word 0x18fe9c93;" \
+ ".word 0x00000000;" \
+ ".word 0x00000000;" \
+ ".Lend" #label ":" \
+ "vmov %0, s0;" \
+ "vmov %1, s1;" \
+ "mrs %2, cpsr;" \
+ : "=&r" (out), "=&r" (out2), "=&r" (cpsr) \
+ : "r" (gen_cvin(cvin)) \
+ : "cc", "memory", "s0", "s1", extratrash \
+ ); \
+ printf("%s :: s0 0x%08x s1 0x%08x, cpsr 0x%08x %c%c%c%c\n", \
instruction, out, out2, \
cpsr & 0xffff0000, \
((1<<31) & cpsr) ? 'N' : ' ', \
@@ -299,30 +301,31 @@
unsigned int out2; \
unsigned int cpsr; \
__asm__ volatile(\
- ".align 4;" \
- "msr cpsr_f, %3;" \
- "mov " #RD ", #0;" \
- "mov " #RD2 ", #0;" \
- ".align 2;" \
- ".thumb;" \
- ".syntax unified;" \
- "nop;" \
- instruction ";" \
- "b .Lend" #label ";" \
- ".align 4;" \
- #label ": " \
- ".word 0x8191881b;" \
- ".word 0x18fe9c93;" \
- ".word 0x00000000;" \
- ".word 0x00000000;" \
- ".Lend" #label ":" \
- "mov %0, " #RD ";" \
- "mov %1, " #RD2 ";" \
- "mrs %2,cpsr;" \
- : "=&r" (out), "=&r" (out2), "=&r" (cpsr) \
- : "r" (gen_cvin(cvin)) \
- ); \
- printf("%s :: rd 0x%08x rd2 0x%08x, cpsr 0x%08x %c%c%c%c\n", \
+ ".align 4;" \
+ "msr cpsr_f, %3;" \
+ "mov " #RD ", #0;" \
+ "mov " #RD2 ", #0;" \
+ ".align 2;" \
+ ".thumb;" \
+ ".syntax unified;" \
+ "nop;" \
+ instruction ";" \
+ "b .Lend" #label ";" \
+ ".align 4;" \
+ #label ": " \
+ ".word 0x8191881b;" \
+ ".word 0x18fe9c93;" \
+ ".word 0x00000000;" \
+ ".word 0x00000000;" \
+ ".Lend" #label ":" \
+ "mov %0, " #RD ";" \
+ "mov %1, " #RD2 ";" \
+ "mrs %2, cpsr;" \
+ : "=&r" (out), "=&r" (out2), "=&r" (cpsr) \
+ : "r" (gen_cvin(cvin)) \
+ : #RD, #RD2, "cc", "memory" \
+ ); \
+ printf("%s :: rd 0x%08x rd2 0x%08x, cpsr 0x%08x %c%c%c%c\n", \
instruction, out, out2, \
cpsr & 0xffff0000, \
((1<<31) & cpsr) ? 'N' : ' ', \
@@ -642,7 +645,7 @@
r1, label_magic_ldrsh, cv);
// omitting PLD/PLI
TESTINSTPCMISALIGNED_DWORDOUT("vldr d0, label_magic_vldr",
- label_magic_vldr, cv);
+ label_magic_vldr, cv, "d0");
TESTCARRYEND