summaryrefslogtreecommitdiff
path: root/sim/testsuite/sim/sh/bset.s
blob: 13ae246e39c0ebdab4ff76cbd85ea5989750bfb0 (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
# sh testcase for bset
# 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

bset_b_imm_disp12_reg:
	set_grs_a5a5
	mov.l	x, r1

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

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

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

	bra	.L2
	nop

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

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

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

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

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

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

	assertreg _x, r1

bset_imm_reg:
	set_greg 0, r1
	bset	#0, r1
	assertreg 0x1, r1
	bset	#1, r1
	assertreg 0x3, r1
	bset	#2, r1
	assertreg 0x7, r1
	bset	#3, r1
	assertreg 0xf, r1

	bset	#4, r1
	assertreg 0x1f, r1
	bset	#5, r1
	assertreg 0x3f, r1
	bset	#6, r1
	assertreg 0x7f, r1
	bset	#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