From: Julian Seward Date: Sat, 9 Jan 2010 11:44:21 +0000 (+0000) Subject: Add tests for PLD (cache-prefetch-hint) instructions. X-Git-Tag: svn/VALGRIND_3_6_0~400 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d86efc229cb81139f309aacd3dbe90ad889c3d86;p=thirdparty%2Fvalgrind.git Add tests for PLD (cache-prefetch-hint) instructions. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11024 --- diff --git a/none/tests/arm/v6int.c b/none/tests/arm/v6int.c index 5059f5d73e..7b1cd67662 100644 --- a/none/tests/arm/v6int.c +++ b/none/tests/arm/v6int.c @@ -781,5 +781,32 @@ int main(int argc, char **argv) TESTINST3("uxtah r0, r1, r2, ROR #0", 0x31415927, 0x27182899, r0, r1, r2, 0); + printf("------------ PLD/PLDW (begin) ------------\n"); + /* These don't have any effect on the architected state, so, + uh, there's no result values to check. Just _do_ some of + them and check Valgrind's instruction decoder eats them up + without complaining. */ + { int alocal; + printf("pld reg +/- imm12 cases\n"); + __asm__ __volatile__( "pld [%0, #128]" : :/*in*/"r"(&alocal) ); + __asm__ __volatile__( "pld [%0, #-128]" : :/*in*/"r"(&alocal) ); + __asm__ __volatile__( "pld [r15, #-128]" : :/*in*/"r"(&alocal) ); + + // apparently pldw is v7 only + //__asm__ __volatile__( "pldw [%0, #128]" : :/*in*/"r"(&alocal) ); + //__asm__ __volatile__( "pldw [%0, #-128]" : :/*in*/"r"(&alocal) ); + //__asm__ __volatile__( "pldw [r15, #128]" : :/*in*/"r"(&alocal) ); + + printf("pld reg +/- shifted reg cases\n"); + __asm__ __volatile__( "pld [%0, %1]" : : /*in*/"r"(&alocal), "r"(0) ); + __asm__ __volatile__( "pld [%0, %1, LSL #1]" : : /*in*/"r"(&alocal), "r"(0) ); + __asm__ __volatile__( "pld [%0, %1, LSR #1]" : : /*in*/"r"(&alocal), "r"(0) ); + __asm__ __volatile__( "pld [%0, %1, ASR #1]" : : /*in*/"r"(&alocal), "r"(0) ); + __asm__ __volatile__( "pld [%0, %1, ROR #1]" : : /*in*/"r"(&alocal), "r"(0) ); + __asm__ __volatile__( "pld [%0, %1, RRX]" : : /*in*/"r"(&alocal), "r"(0) ); + } + printf("------------ PLD/PLDW (done) ------------\n"); + + return 0; } diff --git a/none/tests/arm/v6int.stdout.exp b/none/tests/arm/v6int.stdout.exp index bf0e9ccfa1..24d43f5424 100644 --- a/none/tests/arm/v6int.stdout.exp +++ b/none/tests/arm/v6int.stdout.exp @@ -715,3 +715,7 @@ uxtah r0, r1, r2, ROR #24 :: rd 0x3141f24e rm 0x31415927, rn 0x27182899, carryin uxtah r0, r1, r2, ROR #16 :: rd 0x3141803f rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 uxtah r0, r1, r2, ROR #8 :: rd 0x3141714f rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 uxtah r0, r1, r2, ROR #0 :: rd 0x314181c0 rm 0x31415927, rn 0x27182899, carryin 0, cpsr 0x00000000 +------------ PLD/PLDW (begin) ------------ +pld reg +/- imm12 cases +pld reg +/- shifted reg cases +------------ PLD/PLDW (done) ------------