| // 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) |