aboutsummaryrefslogtreecommitdiff
path: root/sim/testsuite/bfin/a26.s
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/bfin/a26.s')
-rw-r--r--sim/testsuite/bfin/a26.s72
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)