summaryrefslogtreecommitdiff
path: root/sim/testsuite/sim/m32r/testutils.inc
blob: 1d8822ae0984305f15430b564475d0353b027428 (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
# r0-r3 are used as tmps, consider them call clobbered by these macros.

	.macro start
	.data
failmsg:
	.ascii "fail\n"
passmsg:
	.ascii "pass\n"
	.text
	.global _start
_start:
	.endm

	.macro exit rc
	ldi8 r1, \rc
	ldi8 r0, #1
	trap #0
	.endm

	.macro pass
	ldi8 r3, 5
	ld24 r2, passmsg
	ldi8 r1, 1
	ldi8 r0, 5
	trap #0
	exit 0
	.endm

	.macro fail
	ldi8 r3, 5
	ld24 r2, failmsg
	ldi8 r1, 1
	ldi8 r0, 5
	trap #0
	exit 1
	.endm

	.macro mvi_h_gr reg, val
	.if (\val >= -128) && (\val <= 127)
	ldi8 \reg, \val
	.else
	seth \reg, high(\val)
	or3 \reg, \reg, low(\val)
	.endif
	.endm

	.macro mvaddr_h_gr reg, addr
	seth \reg, high(\addr)
	or3 \reg, \reg, low(\addr)
	.endm

# Other macros know this only clobbers r0.
	.macro test_h_gr reg, val
	mvaddr_h_gr r0, \val
	beq \reg, r0, test_gr\@
	fail
test_gr\@:
	.endm

	.macro mvi_h_condbit val
	ldi8 r0, 0
	ldi8 r1, 1
	.if \val
	cmp r0, r1
	.else
	cmp r1, r0
	.endif
	.endm

	.macro test_h_condbit val
	.if \val
	bc test_c1\@
	fail
test_c1\@:
	.else
	bnc test_c0\@
	fail
test_c0\@:
	.endif
	.endm

	.macro mvi_h_accum0 hi, lo
	mvi_h_gr r0, \hi
	mvtachi r0
	mvi_h_gr r0, \lo
	mvtaclo r0
	.endm

	.macro test_h_accum0 hi, lo
	mvfachi r1
	test_h_gr r1, \hi
	mvfaclo r1
	test_h_gr r1, \lo
	.endm