OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [sim/] [testsuite/] [sim/] [fr30/] [st.cgs] - Rev 816

Go to most recent revision | Compare with Previous | Blame | View Log

# 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

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.