| # fr30 testcase for |
| # mach(): fr30 |
| # stb $Ri,@$Rj |
| |
| .include "testutils.inc" |
| |
| START |
| |
| .text |
| .global stb |
| stb: |
| mvr_h_gr sp,r9 ; Save stack pointer |
| ; Test stb $Ri,@Rj |
| mvi_h_mem 0xdeadbeef,sp |
| mvi_h_gr 0xaaaaaafe,r8 |
| set_cc 0x0f ; Condition codes should not change |
| stb r8,@sp |
| test_cc 1 1 1 1 |
| test_h_mem 0xfeadbeef,sp |
| test_h_gr 0xaaaaaafe,r8 |
| |
| ; Test stb $Ri,@(R13,Rj) |
| mvi_h_mem 0xbeefdead,sp |
| mvi_h_gr 0xaaaaaade,r8 |
| mvr_h_gr sp,r1 |
| inci_h_gr -8,sp |
| mvr_h_gr sp,r2 |
| mvi_h_mem 0xbeefdead,sp |
| inci_h_gr 4,sp |
| mvi_h_mem 0xbeefdead,sp |
| |
| mvi_h_gr 4,r13 |
| set_cc 0x0e ; Condition codes should not change |
| stb r8,@(r13,sp) |
| test_cc 1 1 1 0 |
| test_h_mem 0xdeefdead,r1 |
| test_h_gr 0xaaaaaade,r8 |
| |
| mvi_h_gr 0,r13 |
| set_cc 0x0d ; Condition codes should not change |
| stb r8,@(r13,sp) |
| test_cc 1 1 0 1 |
| test_h_mem 0xdeefdead,sp |
| test_h_gr 0xaaaaaade,r8 |
| |
| mvi_h_gr -4,r13 |
| set_cc 0x0c ; Condition codes should not change |
| stb r8,@(r13,sp) |
| test_cc 1 1 0 0 |
| test_h_mem 0xdeefdead,r2 |
| test_h_gr 0xaaaaaade,r8 |
| |
| ; Test stb $Ri,@(R14,$disp8 |
| mvr_h_gr r9,sp ; Restore stack pointer |
| mvi_h_gr 0xaaaaaafe,r8 |
| mvi_h_mem 0xdeadbeef,sp |
| mvr_h_gr sp,r14 |
| inci_h_gr -128,r14 ; must be aligned |
| mvi_h_mem 0xdeadbeef,r14 |
| mvr_h_gr r14,r2 |
| inci_h_gr -128,r14 ; must be aligned |
| mvi_h_mem 0xdeadbeef,r14 |
| mvr_h_gr r14,r3 |
| inci_h_gr 129,r14 |
| |
| set_cc 0x0b ; Condition codes should not change |
| stb r8,@(r14,127) |
| test_cc 1 0 1 1 |
| test_h_mem 0xfeadbeef,r1 |
| test_h_gr 0xaaaaaafe,r8 |
| |
| set_cc 0x0a ; Condition codes should not change |
| stb r8,@(r14,0) |
| test_cc 1 0 1 0 |
| test_h_mem 0xdefebeef,r2 |
| test_h_gr 0xaaaaaafe,r8 |
| |
| set_cc 0x09 ; Condition codes should not change |
| stb r8,@(r14,-128) |
| test_cc 1 0 0 1 |
| test_h_mem 0xdefebeef,r3 |
| test_h_gr 0xaaaaaafe,r8 |
| |
| pass |