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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gdb-7.1/] [sim/] [testsuite/] [sim/] [h8300/] [shal.s] - Blame information for rev 856

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

Line No. Rev Author Line
1 227 jeremybenn
# Hitachi H8 testcase 'shal'
2
# mach(): all
3
# as(h8300):    --defsym sim_cpu=0
4
# as(h8300h):   --defsym sim_cpu=1
5
# as(h8300s):   --defsym sim_cpu=2
6
# as(h8sx):     --defsym sim_cpu=3
7
# ld(h8300h):   -m h8300helf
8
# ld(h8300s):   -m h8300self
9
# ld(h8sx):     -m h8300sxelf
10
 
11
        .include "testutils.inc"
12
 
13
        start
14
 
15
        .data
16
byte_dest:      .byte   0xa5
17
        .align 2
18
word_dest:      .word   0xa5a5
19
        .align 4
20
long_dest:      .long   0xa5a5a5a5
21
 
22
        .text
23
 
24
shal_b_reg8_1:
25
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
26
        set_ccr_zero
27
 
28
        shal.b  r0l             ; shift left arithmetic by one
29
;;;     .word   0x1088
30
 
31
        test_carry_set          ; H=0 N=0 Z=0 V=0 C=1
32
        test_zero_clear
33
;       test_ovf_clear          ; FIXME
34
        test_neg_clear
35
        test_h_gr16 0xa54a r0   ; 1010 0101 -> 0100 1010
36
.if (sim_cpu)
37
        test_h_gr32 0xa5a5a54a er0
38
.endif
39
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
40
        test_gr_a5a5 2
41
        test_gr_a5a5 3
42
        test_gr_a5a5 4
43
        test_gr_a5a5 5
44
        test_gr_a5a5 6
45
        test_gr_a5a5 7
46
 
47
shal_b_reg8_2:
48
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
49
        set_ccr_zero
50
 
51
        shal.b  #2, r0l         ; shift left arithmetic by two
52
;;;     .word   0x10c8
53
 
54
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
55
        test_zero_clear
56
;       test_ovf_clear          ; FIXME
57
        test_neg_set
58
 
59
        test_h_gr16 0xa594 r0   ; 1010 0101 -> 1001 0100
60
.if (sim_cpu)
61
        test_h_gr32 0xa5a5a594 er0
62
.endif
63
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
64
        test_gr_a5a5 2
65
        test_gr_a5a5 3
66
        test_gr_a5a5 4
67
        test_gr_a5a5 5
68
        test_gr_a5a5 6
69
        test_gr_a5a5 7
70
 
71
.if (sim_cpu)                   ; Not available in h8300 mode
72
shal_w_reg16_1:
73
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
74
        set_ccr_zero
75
 
76
        shal.w  r0              ; shift left arithmetic by one
77
;;;     .word   0x1090
78
 
79
        test_carry_set          ; H=0 N=0 Z=0 V=0 C=1
80
        test_zero_clear
81
;       test_ovf_clear          ; FIXME
82
        test_neg_clear
83
        test_h_gr16 0x4b4a r0   ; 1010 0101 1010 0101 -> 0100 1011 0100 1010
84
        test_h_gr32 0xa5a54b4a er0
85
 
86
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
87
        test_gr_a5a5 2
88
        test_gr_a5a5 3
89
        test_gr_a5a5 4
90
        test_gr_a5a5 5
91
        test_gr_a5a5 6
92
        test_gr_a5a5 7
93
 
94
shal_w_reg16_2:
95
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
96
        set_ccr_zero
97
 
98
        shal.w  #2, r0          ; shift left arithmetic by two
99
;;;     .word   0x10d0
100
 
101
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
102
        test_zero_clear
103
;       test_ovf_clear          ; FIXME
104
        test_neg_set
105
        test_h_gr16 0x9694 r0   ; 1010 0101 1010 0101 -> 1001 0110 1001 0100
106
        test_h_gr32 0xa5a59694 er0
107
 
108
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
109
        test_gr_a5a5 2
110
        test_gr_a5a5 3
111
        test_gr_a5a5 4
112
        test_gr_a5a5 5
113
        test_gr_a5a5 6
114
        test_gr_a5a5 7
115
 
116
shal_l_reg32_1:
117
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
118
        set_ccr_zero
119
 
120
        shal.l  er0             ; shift left arithmetic by one
121
;;;     .word   10b0
122
 
123
        test_carry_set          ; H=0 N=0 Z=0 V=0 C=1
124
        test_zero_clear
125
;       test_ovf_clear          ; FIXME
126
        test_neg_clear
127
        ; 1010 0101 1010 0101 1010 0101 1010 0101 
128
        ; -> 0100 1011 0100 1011 0100 1011 0100 1010
129
        test_h_gr32 0x4b4b4b4a er0
130
 
131
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
132
        test_gr_a5a5 2
133
        test_gr_a5a5 3
134
        test_gr_a5a5 4
135
        test_gr_a5a5 5
136
        test_gr_a5a5 6
137
        test_gr_a5a5 7
138
 
139
shal_l_reg32_2:
140
        set_grs_a5a5            ; Fill all general regs with a fixed pattern
141
        set_ccr_zero
142
 
143
        shal.l  #2, er0         ; shift left arithmetic by two
144
;;;     .word   0x10f0
145
 
146
        test_carry_clear        ; H=0 N=1 Z=0 V=0 C=0
147
        test_zero_clear
148
;       test_ovf_clear          ; FIXME
149
        test_neg_set
150
        ; 1010 0101 1010 0101 1010 0101 1010 0101
151
        ; -> 1001 0110 1001 0110 1001 0110 1001 0100
152
        test_h_gr32 0x96969694 er0
153
 
154
        test_gr_a5a5 1          ; Make sure other general regs not disturbed
155
        test_gr_a5a5 2
156
        test_gr_a5a5 3
157
        test_gr_a5a5 4
158
        test_gr_a5a5 5
159
        test_gr_a5a5 6
160
        test_gr_a5a5 7
161
 
162
.endif
163
 
164
        pass
165
 
166
        exit 0
167
 

powered by: WebSVN 2.1.0

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