do_vldm_vstm_check: don't use caller saved FP ('s') registers to hold

data that we expect to stay alive over calls to printf.  Fixes erratic
failures of this test.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15931
This commit is contained in:
Julian Seward 2016-08-06 12:32:37 +00:00
parent c6e56acc75
commit bafba31e41

View File

@ -848,55 +848,55 @@ static void do_vldm_vstm_check(void)
printf("do_vldm_vstm_check:\n");
__asm__ volatile(
"mov r1, %0\n\t"
"vldmia r1!, {s0, s1, s2, s3}\n\t"
"vldmia r1!, {s16, s17, s18, s19}\n\t"
"mov r0, %1\n\t"
"sub r1, r1, %0\n\t"
"mov r3, r1\n\t"
"bl printf\n\t"
"mov r0, %1\n\t"
"vmov r1, s2\n\t"
"vmov r1, s18\n\t"
"mov r3, r1\n\t"
"bl printf\n\t"
"mov r0, %1\n\t"
"vmov r1, s3\n\t"
"vmov r1, s19\n\t"
"mov r3, r1\n\t"
"bl printf\n\t"
"mov r0, %1\n\t"
"vmov r1, s0\n\t"
"vmov r1, s16\n\t"
"mov r3, r1\n\t"
"bl printf\n\t"
/* --- */
"add r1, %0, #32\n\t"
"vldmdb r1!, {s5, s6}\n\t"
"vldmdb r1!, {s25, s26}\n\t"
"mov r0, %1\n\t"
"sub r1, r1, %0\n\t"
"mov r3, r1\n\t"
"bl printf\n\t"
"mov r0, %1\n\t"
"vmov r1, s5\n\t"
"vmov r1, s25\n\t"
"mov r3, r1\n\t"
"bl printf\n\t"
"mov r0, %1\n\t"
"vmov r1, s6\n\t"
"vmov r1, s26\n\t"
"mov r3, r1\n\t"
"bl printf\n\t"
/* --- */
"add r1, %0, #4\n\t"
"vldmia r1, {s0, s1, s2, s3}\n\t"
"vldmia r1, {s20, s21, s22, s23}\n\t"
"mov r0, %1\n\t"
"sub r1, r1, %0\n\t"
"mov r3, r1\n\t"
"bl printf\n\t"
"mov r0, %1\n\t"
"vmov r1, s2\n\t"
"vmov r1, s22\n\t"
"mov r3, r1\n\t"
"bl printf\n\t"
"mov r0, %1\n\t"
"vmov r1, s3\n\t"
"vmov r1, s23\n\t"
"mov r3, r1\n\t"
"bl printf\n\t"
"mov r0, %1\n\t"
"vmov r1, s0\n\t"
"vmov r1, s20\n\t"
"mov r3, r1\n\t"
"bl printf\n\t"
/* --- */
@ -970,15 +970,15 @@ static void do_vldm_vstm_check(void)
"bl printf\n\t"
/* --- */
"mov r0, #0x55\n\t"
"vmov s0, r0\n\t"
"vmov s20, r0\n\t"
"mov r0, #0x56\n\t"
"vmov s1, r0\n\t"
"vmov s21, r0\n\t"
"mov r0, #0x57\n\t"
"vmov s2, r0\n\t"
"vmov s22, r0\n\t"
"mov r0, #0x58\n\t"
"vmov s3, r0\n\t"
"vmov s23, r0\n\t"
"add r1, %0, #0\n\t"
"vstmia r1!, {s0, s1, s2, s3}\n\t"
"vstmia r1!, {s20, s21, s22, s23}\n\t"
"mov r0, %1\n\t"
"sub r1, r1, %0\n\t"
"mov r3, r1\n\t"
@ -1044,7 +1044,8 @@ static void do_vldm_vstm_check(void)
:
: "r" (data), "r" (format), "r"(&res)
: "r0", "r1", "r2", "r3", "r5", "r12", "r14", "memory",
"s0", "s1", "s2", "s3", "s5", "s6", "s16", "s17",
"s0", "s1", "s2", "s3", "s5", "s6", "s16", "s17", "s18", "s19",
"s20", "s21", "s22", "s23", "s25", "s26",
"d10", "d30", "d31"
);
printf("data:\n");