]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add tests for PLD (cache-prefetch-hint) instructions.
authorJulian Seward <jseward@acm.org>
Sat, 9 Jan 2010 11:44:21 +0000 (11:44 +0000)
committerJulian Seward <jseward@acm.org>
Sat, 9 Jan 2010 11:44:21 +0000 (11:44 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11024

none/tests/arm/v6int.c
none/tests/arm/v6int.stdout.exp

index 5059f5d73ed20e341f9ad3d39e4fac72f4e14e91..7b1cd676621fccbc0833ba8716007a600a091903 100644 (file)
@@ -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;
 }
index bf0e9ccfa1e965615716ba5b26fb6dc89c6e80b8..24d43f5424062f5260756c58492e28d0b2cc798b 100644 (file)
@@ -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) ------------