diff options
Diffstat (limited to 'sim/testsuite/bfin/a26.s')
-rw-r--r-- | sim/testsuite/bfin/a26.s | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/sim/testsuite/bfin/a26.s b/sim/testsuite/bfin/a26.s new file mode 100644 index 0000000..2e9a0b5 --- /dev/null +++ b/sim/testsuite/bfin/a26.s @@ -0,0 +1,72 @@ +// Test ALU SEARCH instruction +# mach: bfin + +.include "testutils.inc" + start + + + init_r_regs 0; + ASTAT = R0; + + R0 = 4; + R1 = 5; + A1 = A0 = 0; + + R2.L = 0x0001; + R2.H = 0xffff; + + loadsym P0, foo; + + ( R1 , R0 ) = SEARCH R2 (GT); + + // R0 should be the pointer + R7 = P0; + CC = R0 == R7; + if !CC JUMP _fail; + + _DBG R1; // does not change + DBGA ( R1.H , 0 ); DBGA ( R1.L , 0x5 ); + + _DBG A0; // changes + R0 = A0.w; + DBGA ( R0.H , 0 ); DBGA ( R0.L , 0x1 ); + + _DBG A1; // does not change + R0 = A1.w; + DBGA ( R0.H , 0 ); DBGA ( R0.L , 0 ); + + R0 = 4; + R1 = 5; + A1 = A0 = 0; + + R2.L = 0x0000; + R2.H = 0xffff; + + loadsym p0, foo; + + ( R1 , R0 ) = SEARCH R2 (LT); + + _DBG R0; // no change + DBGA ( R0.H , 0 ); DBGA ( R0.L , 4 ); + + _DBG R1; // change + R7 = P0; + CC = R1 == R7; + if !CC JUMP _fail; + + _DBG A0; + R0 = A0.w; + DBGA ( R0.H , 0 ); DBGA ( R0.L , 0 ); + + _DBG A1; + R0 = A1.w; + DBGA ( R0.H , 0xffff ); DBGA ( R0.L , 0xffff ); + + pass + +_fail: + fail; + + .data +foo: + .space (0x100) |