summaryrefslogtreecommitdiff
path: root/sim/testsuite/sim/bfin/ashift_flags.s
blob: 87f00be7a840cc24cb3506a5e2589d8994aa2bcf (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
# mach: bfin

.include "testutils.inc"
        start

// load r1=0x7fffffff
// load r2=0x80000000
// load r3=0x000000ff
// load r4=0x00000000
	loadsym p0, data0;
	R0 = [ P0 ++ ];
	R1 = [ P0 ++ ];
	R2 = [ P0 ++ ];
	R3 = [ P0 ++ ];
	R4 = [ P0 ++ ];

	_dbg r0;
	_dbg r1;
	_dbg r2;
	_dbg r3;
	_dbg r4;

	R7 = 0;
	ASTAT = R7;
	r5 = r1 << 0x4 (s);
	_DBG ASTAT;
	r7=astat;
	dbga (r5.h, 0x7fff);
	dbga (r5.l, 0xffff);
	dbga (r7.h, 0x0300);	// V=1, VS=1
	dbga (r7.l, 0x8);

	R7 = 0;
	ASTAT = R7;
	r5.h = r1.h << 0x4 (s);
	_DBG ASTAT;
	r7=astat;
	dbga (r5.h, 0x7fff);
	dbga (r7.h, 0x0300);	// V=1, VS=1
	dbga (r7.l, 0x8);

	A0 = 0;
	A0.w = r1;
	A0.x = r0.l;
	r6 = 0x3;
	_dbg r6;
	_dbg A0;
	R7 = 0;
	ASTAT = R7;
	A0 = ASHIFT A0 BY R6.L;
	_DBG ASTAT;
	_DBG A0;
	r7 = astat;
	dbga (r7.h, 0x0);	// AV0=0, AV0S=0
	dbga (r7.l, 0x2);	// AN = 1

	A1 = 0;
	A1 = r1;
	A1.x = r0.l;
	r6 = 0x3;
	_dbg A1;
	R7 = 0;
	ASTAT = R7;
	A1 = ASHIFT A1 BY R6.L;
	_DBG ASTAT;
	_DBG A1;
	r7 = astat;
	dbga (r7.h, 0x0);	// AV1=0, AV1S=0
	dbga (r7.l, 0x2);	// AN = 1

	pass

	.data 0x1000;
data0:
	.dw 0x1111
	.dw 0x1111
	.dw 0xffff
	.dw 0x7fff
	.dw 0x0000
	.dw 0x8000
	.dw 0x00ff
	.dw 0x0000
	.dw 0x0000
	.dw 0x0000