summaryrefslogtreecommitdiff
path: root/sim/testsuite/sim/sh/bst.s
blob: e8b6d656ec30d7b90b6f5fb4c595e1e7a4f2dc70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# sh testcase for bst
# mach:	 all
# as(sh):	-defsym sim_cpu=0
# as(shdsp):	-defsym sim_cpu=1 -dsp 

	.include "testutils.inc"

	.align 2
_x:	.long	0
_y:	.long	0x55555555

	start

bst_b_imm_disp12_reg:
	set_grs_a5a5
	# Make sure T is true to start.
	sett

	mov.l	x, r1

	bst.b	#0, @(3, r1)
	assertmem _x, 0x1
	bst.b	#1, @(3, r1)
	assertmem _x, 0x3
	bst.b	#2, @(3, r1)
	assertmem _x, 0x7
	bst.b	#3, @(3, r1)
	assertmem _x, 0xf

	bst.b	#4, @(3, r1)
	assertmem _x, 0x1f
	bst.b	#5, @(3, r1)
	assertmem _x, 0x3f
	bst.b	#6, @(3, r1)
	assertmem _x, 0x7f
	bst.b	#7, @(3, r1)
	assertmem _x, 0xff

	bst.b	#0, @(2, r1)
	assertmem _x, 0x1ff
	bst.b	#1, @(2, r1)
	assertmem _x, 0x3ff
	bst.b	#2, @(2, r1)
	assertmem _x, 0x7ff
	bst.b	#3, @(2, r1)
	assertmem _x, 0xfff

	bra	.L2
	nop

	.align 2
x:	.long	_x
y:	.long	_y

.L2:
	bst.b	#4, @(2, r1)
	assertmem _x, 0x1fff
	bst.b	#5, @(2, r1)
	assertmem _x, 0x3fff
	bst.b	#6, @(2, r1)
	assertmem _x, 0x7fff
	bst.b	#7, @(2, r1)
	assertmem _x, 0xffff

	bst.b	#0, @(1, r1)
	assertmem _x, 0x1ffff
	bst.b	#1, @(1, r1)
	assertmem _x, 0x3ffff
	bst.b	#2, @(1, r1)
	assertmem _x, 0x7ffff
	bst.b	#3, @(1, r1)
	assertmem _x, 0xfffff

	bst.b	#4, @(1, r1)
	assertmem _x, 0x1fffff
	bst.b	#5, @(1, r1)
	assertmem _x, 0x3fffff
	bst.b	#6, @(1, r1)
	assertmem _x, 0x7fffff
	bst.b	#7, @(1, r1)
	assertmem _x, 0xffffff

	bst.b	#0, @(0, r1)
	assertmem _x, 0x1ffffff
	bst.b	#1, @(0, r1)
	assertmem _x, 0x3ffffff
	bst.b	#2, @(0, r1)
	assertmem _x, 0x7ffffff
	bst.b	#3, @(0, r1)
	assertmem _x, 0xfffffff

	bst.b	#4, @(0, r1)
	assertmem _x, 0x1fffffff
	bst.b	#5, @(0, r1)
	assertmem _x, 0x3fffffff
	bst.b	#6, @(0, r1)
	assertmem _x, 0x7fffffff
	bst.b	#7, @(0, r1)
	assertmem _x, 0xffffffff

	assertreg _x, r1

bst_imm_reg:
	set_greg 0, r1
	bst	#0, r1
	assertreg 0x1, r1
	bst	#1, r1
	assertreg 0x3, r1
	bst	#2, r1
	assertreg 0x7, r1
	bst	#3, r1
	assertreg 0xf, r1

	bst	#4, r1
	assertreg 0x1f, r1
	bst	#5, r1
	assertreg 0x3f, r1
	bst	#6, r1
	assertreg 0x7f, r1
	bst	#7, r1
	assertreg 0xff, r1

	test_gr_a5a5 r0
	test_gr_a5a5 r2
	test_gr_a5a5 r3
	test_gr_a5a5 r4
	test_gr_a5a5 r5
	test_gr_a5a5 r6
	test_gr_a5a5 r7
	test_gr_a5a5 r8
	test_gr_a5a5 r9
	test_gr_a5a5 r10
	test_gr_a5a5 r11
	test_gr_a5a5 r12
	test_gr_a5a5 r13
	test_gr_a5a5 r14

	pass

	exit 0