blob: e458d14001b4413991e2acd53fc3b1fbb522ab95 [file] [log] [blame]
# 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