summaryrefslogtreecommitdiff
path: root/sim/testsuite/sim/sh/mov.s
blob: 37fef514401e125f5c1378268cdf87a2a4d908a8 (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
# sh testcase for all mov.[bwl] instructions
# mach: sh
# as(sh):	-defsym sim_cpu=0

	.include "testutils.inc"

	.align 2
_lsrc:	.long	0x55555555
_wsrc:	.long	0x55550000
_bsrc:	.long	0x55000000

	.align 2
_ldst:	.long	0
_wdst:	.long	0
_bdst:	.long	0


	start

movb_disp12_reg:	# Test 8-bit @(disp12,gr) -> gr
	set_grs_a5a5
	mov.l	bsrc, r1
	add	#-111, r1
	add	#-111, r1
	add	#-111, r1
	add	#-111, r1
	mov.b	@(444,r1), r2

	assertreg _bsrc-444, r1
	assertreg 0x55, r2

movb_reg_disp12:	# Test 8-bit gr -> @(disp12,gr)
	set_grs_a5a5
	mov.l	bdst, r1
	add	#-111, r1
	add	#-111, r1
	add	#-111, r1
	add	#-111, r1
	mov.b	r2, @(444,r1)

	assertreg _bdst-444, r1
	assertmem _bdst, 0xa5000000

movw_disp12_reg:	# Test 16-bit @(disp12,gr) -> gr
	set_grs_a5a5
	mov.l	wsrc, r1
	add	#-111, r1
	add	#-111, r1
	add	#-111, r1
	add	#-111, r1
	mov.w	@(444,r1), r2

	assertreg _wsrc-444, r1
	assertreg 0x5555, r2

movw_reg_disp12:	# Test 16-bit gr -> @(disp12,gr)
	set_grs_a5a5
	mov.l	wdst, r1
	add	#-111, r1
	add	#-111, r1
	add	#-111, r1
	add	#-111, r1
	mov.w	r2, @(444,r1)

	assertreg _wdst-444, r1
	assertmem _wdst, 0xa5a50000

movl_disp12_reg:	# Test 32-bit @(disp12,gr) -> gr
	set_grs_a5a5
	mov.l	lsrc, r1
	add	#-111, r1
	add	#-111, r1
	add	#-111, r1
	add	#-111, r1
	mov.l	@(444,r1), r2

	assertreg _lsrc-444, r1
	assertreg 0x55555555, r2

movl_reg_disp12:	# Test 32-bit gr -> @(disp12,gr)
	set_grs_a5a5
	mov.l	ldst, r1
	add	#-111, r1
	add	#-111, r1
	add	#-111, r1
	add	#-111, r1
	mov.l	r2, @(444,r1)

	assertreg _ldst-444, r1
	assertmem _ldst, 0xa5a5a5a5

	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

lsrc:	.long _lsrc
wsrc:	.long _wsrc
bsrc:	.long _bsrc

ldst:	.long _ldst
wdst:	.long _wdst
bdst:	.long _bdst