| # fr30 testcase for |
| # mach(): fr30 |
| # st $Ri,@$Rj |
| |
| .include "testutils.inc" |
| |
| START |
| |
| .text |
| .global st |
| st: |
| mvr_h_gr sp,r9 ; Save stack pointer |
| ; Test st $Ri,@Rj |
| mvi_h_gr 0xdeadbeef,r8 |
| set_cc 0x0f ; Condition codes should not change |
| st r8,@sp |
| test_cc 1 1 1 1 |
| test_h_mem 0xdeadbeef,sp |
| test_h_gr 0xdeadbeef,r8 |
| |
| ; Test st $Ri,@(R13,Rj) |
| mvi_h_gr 0xbeefdead,r8 |
| mvr_h_gr sp,r1 |
| inci_h_gr -8,sp |
| mvr_h_gr sp,r2 |
| inci_h_gr 4,sp |
| |
| mvi_h_gr 4,r13 |
| set_cc 0x0e ; Condition codes should not change |
| st r8,@(r13,sp) |
| test_cc 1 1 1 0 |
| test_h_mem 0xbeefdead,r1 |
| test_h_gr 0xbeefdead,r8 |
| |
| mvi_h_gr 0,r13 |
| set_cc 0x0d ; Condition codes should not change |
| st r8,@(r13,sp) |
| test_cc 1 1 0 1 |
| test_h_mem 0xbeefdead,sp |
| test_h_gr 0xbeefdead,r8 |
| |
| mvi_h_gr -4,r13 |
| set_cc 0x0c ; Condition codes should not change |
| st r8,@(r13,sp) |
| test_cc 1 1 0 0 |
| test_h_mem 0xbeefdead,r2 |
| test_h_gr 0xbeefdead,r8 |
| |
| ; Test st $Ri,@(R14,$disp10) |
| mvi_h_gr 0xdeadbeef,r8 |
| mvr_h_gr r9,sp ; Restore stack pointer |
| mvr_h_gr sp,r14 |
| inci_h_gr -508,r14 |
| mvr_h_gr r14,r2 |
| inci_h_gr -512,r14 |
| mvr_h_gr r14,r3 |
| inci_h_gr 512,r14 |
| |
| set_cc 0x0b ; Condition codes should not change |
| st r8,@(r14,508) |
| test_cc 1 0 1 1 |
| test_h_mem 0xdeadbeef,r1 |
| test_h_gr 0xdeadbeef,r8 |
| |
| set_cc 0x0a ; Condition codes should not change |
| st r8,@(r14,0) |
| test_cc 1 0 1 0 |
| test_h_mem 0xdeadbeef,r2 |
| test_h_gr 0xdeadbeef,r8 |
| |
| set_cc 0x09 ; Condition codes should not change |
| st r8,@(r14,-512) |
| test_cc 1 0 0 1 |
| test_h_mem 0xdeadbeef,r3 |
| test_h_gr 0xdeadbeef,r8 |
| |
| ; Test st $Ri,@(R15,$udisp6) |
| mvi_h_gr 0xbeefdead,r8 |
| mvr_h_gr r9,sp ; Restore stack pointer |
| inci_h_gr -60,sp |
| |
| set_cc 0x08 ; Condition codes should not change |
| st r8,@(r15,60) |
| test_cc 1 0 0 0 |
| test_h_mem 0xbeefdead,r9 |
| test_h_gr 0xbeefdead,r8 |
| |
| set_cc 0x07 ; Condition codes should not change |
| st r8,@(r15,0) |
| test_cc 0 1 1 1 |
| test_h_mem 0xbeefdead,r9 |
| test_h_gr 0xbeefdead,r8 |
| |
| ; Test st $Ri,@-R15 |
| mvr_h_gr r9,sp ; Restore stack pointer |
| mvr_h_gr r9,r10 |
| |
| set_cc 0x06 ; Condition codes should not change |
| st r15,@-r15 |
| test_cc 0 1 1 0 |
| testr_h_mem r9,sp ; original value stored |
| inci_h_gr -4,r10 |
| testr_h_gr r10,sp ; was decremented |
| |
| mvi_h_gr 0xdeadbeef,r8 |
| set_cc 0x05 ; Condition codes should not change |
| st r8,@-r15 |
| test_cc 0 1 0 1 |
| test_h_mem 0xdeadbeef,sp |
| test_h_gr 0xdeadbeef,r8 |
| inci_h_gr -4,r10 |
| testr_h_gr r10,sp ; was decremented |
| |
| ; Test st $Rs,@-R15 |
| mvr_h_gr r9,sp ; Restore stack pointer |
| mvr_h_gr r9,r10 |
| mvi_h_dr 0xbeefdead,tbr |
| mvi_h_dr 0xdeadbeef,rp |
| mvi_h_dr 0x0000dead,mdh |
| mvi_h_dr 0xbeef0000,mdl |
| |
| set_cc 0x04 ; Condition codes should not change |
| st tbr,@-r15 |
| test_cc 0 1 0 0 |
| test_h_mem 0xbeefdead,sp |
| inci_h_gr -4,r10 |
| testr_h_gr r10,sp ; was decremented |
| |
| set_cc 0x03 ; Condition codes should not change |
| st rp,@-r15 |
| test_cc 0 0 1 1 |
| test_h_mem 0xdeadbeef,sp |
| inci_h_gr -4,r10 |
| testr_h_gr r10,sp ; was decremented |
| |
| set_cc 0x02 ; Condition codes should not change |
| st mdh,@-r15 |
| test_cc 0 0 1 0 |
| test_h_mem 0x0000dead,sp |
| inci_h_gr -4,r10 |
| testr_h_gr r10,sp ; was decremented |
| |
| set_cc 0x01 ; Condition codes should not change |
| st mdl,@-r15 |
| test_cc 0 0 0 1 |
| test_h_mem 0xbeef0000,sp |
| inci_h_gr -4,r10 |
| testr_h_gr r10,sp ; was decremented |
| |
| mvr_h_gr sp,usp |
| set_s_user |
| set_cc 0x00 ; Condition codes should not change |
| st ssp,@-r15 |
| test_cc 0 0 0 0 |
| testr_h_mem r10,sp |
| inci_h_gr -4,r10 |
| testr_h_gr r10,sp ; was decremented |
| |
| set_cc 0x00 ; Condition codes should not change |
| st usp,@-r15 |
| test_cc 0 0 0 0 |
| testr_h_mem r10,sp ; original value stored |
| inci_h_gr -4,r10 |
| testr_h_gr r10,sp ; was decremented |
| |
| mvr_h_gr sp,ssp |
| set_s_system |
| set_cc 0x00 ; Condition codes should not change |
| st usp,@-r15 |
| test_cc 0 0 0 0 |
| testr_h_mem r10,sp |
| inci_h_gr -4,r10 |
| testr_h_gr r10,sp ; was decremented |
| |
| set_cc 0x00 ; Condition codes should not change |
| st ssp,@-r15 |
| test_cc 0 0 0 0 |
| testr_h_mem r10,sp ; original value stored |
| inci_h_gr -4,r10 |
| testr_h_gr r10,sp ; was decremented |
| |
| ; Test st $PS,@-R15 |
| mvr_h_gr r9,sp ; Restore stack pointer |
| mvr_h_gr r9,r10 |
| |
| set_cc 0x0f ; Condition codes affect result |
| set_dbits 3 ; Division bits affect result |
| st ps,@-r15 |
| test_cc 1 1 1 1 |
| test_h_mem 0x0000060f,sp |
| inci_h_gr -4,r10 |
| testr_h_gr r10,sp ; was decremented |
| |
| pass |