Revision dd43edf4
b/tests/cris/.gdbinit | ||
---|---|---|
1 |
b main |
|
2 |
b _fail |
|
3 |
b exit |
|
4 |
display /i $pc |
|
5 |
display /x $srp |
|
6 |
display /x $r0 |
|
7 |
display /x $r1 |
|
8 |
display /x $r2 |
|
9 |
display /x $r3 |
|
10 |
display /x $r4 |
|
11 |
display /t $ccs |
|
12 |
|
b/tests/cris/Makefile | ||
---|---|---|
1 |
-include ../../config-host.mak |
|
2 |
|
|
3 |
CROSS=crisv32-axis-linux-gnu- |
|
4 |
SIM=../../cris-linux-user/qemu-cris -L ./ |
|
5 |
SIMG=cris-axis-linux-gnu-run --sysroot=./ |
|
6 |
|
|
7 |
CC = $(CROSS)gcc |
|
8 |
#AS = $(CROSS)as |
|
9 |
AS = $(CC) -x assembler-with-cpp |
|
10 |
SIZE = $(CROSS)size |
|
11 |
LD = $(CC) |
|
12 |
OBJCOPY = $(CROSS)objcopy |
|
13 |
|
|
14 |
# we rely on GCC inline:ing the stuff we tell it to in many places here. |
|
15 |
CFLAGS = -Winline -Wall -g -O2 -static |
|
16 |
NOSTDFLAGS = -nostartfiles -nostdlib |
|
17 |
ASFLAGS += -g -Wa,-I,$(SRC_PATH)/tests/cris/ |
|
18 |
LDLIBS = |
|
19 |
NOSTDLIBS = -lgcc |
|
20 |
|
|
21 |
CRT = crt.o |
|
22 |
SYS = sys.o |
|
23 |
TESTCASES += check_abs.tst |
|
24 |
TESTCASES += check_addc.tst |
|
25 |
TESTCASES += check_addcm.tst |
|
26 |
TESTCASES += check_addo.tst |
|
27 |
TESTCASES += check_addoq.tst |
|
28 |
TESTCASES += check_addi.tst |
|
29 |
TESTCASES += check_addiv32.tst |
|
30 |
TESTCASES += check_addm.tst |
|
31 |
TESTCASES += check_addr.tst |
|
32 |
TESTCASES += check_addq.tst |
|
33 |
TESTCASES += check_addxc.tst |
|
34 |
TESTCASES += check_addxm.tst |
|
35 |
TESTCASES += check_addxr.tst |
|
36 |
TESTCASES += check_andc.tst |
|
37 |
TESTCASES += check_andm.tst |
|
38 |
TESTCASES += check_andr.tst |
|
39 |
TESTCASES += check_andq.tst |
|
40 |
TESTCASES += check_asr.tst |
|
41 |
TESTCASES += check_ba.tst |
|
42 |
TESTCASES += check_bas.tst |
|
43 |
TESTCASES += check_bcc.tst |
|
44 |
TESTCASES += check_bound.tst |
|
45 |
TESTCASES += check_boundc.tst |
|
46 |
TESTCASES += check_boundr.tst |
|
47 |
TESTCASES += check_btst.tst |
|
48 |
TESTCASES += check_clearfv32.tst |
|
49 |
TESTCASES += check_cmpc.tst |
|
50 |
TESTCASES += check_cmpr.tst |
|
51 |
TESTCASES += check_cmpq.tst |
|
52 |
TESTCASES += check_cmpm.tst |
|
53 |
TESTCASES += check_cmpxc.tst |
|
54 |
TESTCASES += check_cmpxm.tst |
|
55 |
TESTCASES += check_cmp-2.tst |
|
56 |
TESTCASES += check_clrjmp1.tst |
|
57 |
TESTCASES += check_dstep.tst |
|
58 |
TESTCASES += check_int64.tst |
|
59 |
# check_jsr is broken. |
|
60 |
#TESTCASES += check_jsr.tst |
|
61 |
TESTCASES += check_mcp.tst |
|
62 |
TESTCASES += check_movei.tst |
|
63 |
TESTCASES += check_mover.tst |
|
64 |
TESTCASES += check_moverm.tst |
|
65 |
TESTCASES += check_moveq.tst |
|
66 |
TESTCASES += check_movemr.tst |
|
67 |
TESTCASES += check_movemrv32.tst |
|
68 |
TESTCASES += check_movecr.tst |
|
69 |
TESTCASES += check_movmp.tst |
|
70 |
TESTCASES += check_movpr.tst |
|
71 |
TESTCASES += check_movprv32.tst |
|
72 |
TESTCASES += check_movdelsr1.tst |
|
73 |
TESTCASES += check_movpmv32.tst |
|
74 |
TESTCASES += check_movsr.tst |
|
75 |
TESTCASES += check_movsm.tst |
|
76 |
TESTCASES += check_movscr.tst |
|
77 |
TESTCASES += check_movur.tst |
|
78 |
TESTCASES += check_movum.tst |
|
79 |
TESTCASES += check_movucr.tst |
|
80 |
TESTCASES += check_mulx.tst |
|
81 |
TESTCASES += check_mulv32.tst |
|
82 |
TESTCASES += check_neg.tst |
|
83 |
TESTCASES += check_not.tst |
|
84 |
TESTCASES += check_lz.tst |
|
85 |
TESTCASES += check_lapc.tst |
|
86 |
TESTCASES += check_lsl.tst |
|
87 |
TESTCASES += check_lsr.tst |
|
88 |
TESTCASES += check_orc.tst |
|
89 |
TESTCASES += check_orm.tst |
|
90 |
TESTCASES += check_orr.tst |
|
91 |
TESTCASES += check_orq.tst |
|
92 |
TESTCASES += check_ret.tst |
|
93 |
TESTCASES += check_swap.tst |
|
94 |
TESTCASES += check_scc.tst |
|
95 |
TESTCASES += check_subc.tst |
|
96 |
TESTCASES += check_subq.tst |
|
97 |
TESTCASES += check_subr.tst |
|
98 |
TESTCASES += check_subm.tst |
|
99 |
TESTCASES += check_glibc_kernelversion.tst |
|
100 |
TESTCASES += check_xarith.tst |
|
101 |
|
|
102 |
TESTCASES += check_hello.ctst |
|
103 |
TESTCASES += check_stat1.ctst |
|
104 |
TESTCASES += check_stat2.ctst |
|
105 |
TESTCASES += check_stat3.ctst |
|
106 |
TESTCASES += check_stat4.ctst |
|
107 |
TESTCASES += check_openpf1.ctst |
|
108 |
TESTCASES += check_openpf2.ctst |
|
109 |
TESTCASES += check_openpf3.ctst |
|
110 |
TESTCASES += check_openpf4.ctst |
|
111 |
TESTCASES += check_openpf5.ctst |
|
112 |
TESTCASES += check_mapbrk.ctst |
|
113 |
TESTCASES += check_mmap1.ctst |
|
114 |
TESTCASES += check_mmap2.ctst |
|
115 |
TESTCASES += check_mmap3.ctst |
|
116 |
TESTCASES += check_time1.ctst |
|
117 |
TESTCASES += check_time2.ctst |
|
118 |
|
|
119 |
|
|
120 |
TESTCASES += check_gcctorture_pr28634-1.ctst |
|
121 |
#TESTCASES += check_gcctorture_pr28634.ctst |
|
122 |
|
|
123 |
all: build |
|
124 |
|
|
125 |
%.o: $(SRC_PATH)/tests/cris/%.c |
|
126 |
$(CC) $(CFLAGS) -c $< -o $@ |
|
127 |
|
|
128 |
%.o: $(SRC_PATH)/tests/cris/%.s |
|
129 |
$(AS) $(ASFLAGS) -c $< -o $@ |
|
130 |
|
|
131 |
%.tst: %.o |
|
132 |
$(CC) $(CFLAGS) $(NOSTDFLAGS) $(LDLIBS) $(NOSTDLIBS) $(CRT) $< $(SYS) -o $@ |
|
133 |
|
|
134 |
%.ctst: %.o |
|
135 |
$(CC) $(CFLAGS) $(LDLIBS) $< -o $@ |
|
136 |
|
|
137 |
build: $(CRT) $(SYS) $(TESTCASES) |
|
138 |
|
|
139 |
check: $(CRT) $(SYS) $(TESTCASES) |
|
140 |
@echo -e "\nQEMU simulator." |
|
141 |
@for case in $(TESTCASES); do \ |
|
142 |
echo -n "$$case "; \ |
|
143 |
$(SIM) $$case; \ |
|
144 |
done |
|
145 |
check-g: $(CRT) $(SYS) $(TESTCASES) |
|
146 |
@echo -e "\nGDB simulator." |
|
147 |
@for case in $(TESTCASES); do \ |
|
148 |
echo -n "$$case "; \ |
|
149 |
$(SIMG) $$case; \ |
|
150 |
done |
|
151 |
|
|
152 |
clean: |
|
153 |
$(RM) -fr $(TESTCASES) $(CRT) $(SYS) |
b/tests/cris/README | ||
---|---|---|
1 |
Test-suite for the cris port. Heavily based on the test-suite for the CRIS port of sim by Hans-Peter Nilsson. |
|
2 |
|
b/tests/cris/check_abs.c | ||
---|---|---|
1 |
#include <stdio.h> |
|
2 |
#include <stdlib.h> |
|
3 |
#include <stdint.h> |
|
4 |
#include "sys.h" |
|
5 |
#include "crisutils.h" |
|
6 |
|
|
7 |
extern inline int cris_abs(int n) { |
|
8 |
int r; |
|
9 |
asm ("abs\t%1, %0\n" : "=r" (r) : "r" (n)); |
|
10 |
return r; |
|
11 |
} |
|
12 |
|
|
13 |
extern inline void |
|
14 |
verify_abs(int val, int res, |
|
15 |
const int n, const int z, const int v, const int c) |
|
16 |
{ |
|
17 |
int r; |
|
18 |
|
|
19 |
cris_tst_cc_init(); |
|
20 |
r = cris_abs(val); |
|
21 |
cris_tst_cc(n, z, v, c); |
|
22 |
if (r != res) |
|
23 |
err(); |
|
24 |
} |
|
25 |
|
|
26 |
int main(void) |
|
27 |
{ |
|
28 |
verify_abs(-1, 1, 0, 0, 0, 0); |
|
29 |
verify_abs(0x80000000, 0x80000000, 1, 0, 0, 0); |
|
30 |
verify_abs(0x7fffffff, 0x7fffffff, 0, 0, 0, 0); |
|
31 |
verify_abs(42, 42, 0, 0, 0, 0); |
|
32 |
verify_abs(1, 1, 0, 0, 0, 0); |
|
33 |
verify_abs(0xffff, 0xffff, 0, 0, 0, 0); |
|
34 |
verify_abs(0xffff, 0xffff, 0, 0, 0, 0); |
|
35 |
verify_abs(-31, 0x1f, 0, 0, 0, 0); |
|
36 |
verify_abs(0, 0, 0, 1, 0, 0); |
|
37 |
pass(); |
|
38 |
return 0; |
|
39 |
} |
b/tests/cris/check_addc.c | ||
---|---|---|
1 |
#include <stdio.h> |
|
2 |
#include <stdlib.h> |
|
3 |
#include <stdint.h> |
|
4 |
#include "sys.h" |
|
5 |
#include "crisutils.h" |
|
6 |
|
|
7 |
extern inline int cris_addc(int a, const int b) { |
|
8 |
asm ("addc\t%1, %0\n" : "+r" (a) : "r" (b)); |
|
9 |
return a; |
|
10 |
} |
|
11 |
|
|
12 |
#define verify_addc(a, b, res, n, z, v, c) \ |
|
13 |
{ \ |
|
14 |
int r; \ |
|
15 |
r = cris_addc((a), (b)); \ |
|
16 |
cris_tst_cc((n), (z), (v), (c)); \ |
|
17 |
if (r != (res)) \ |
|
18 |
err(); \ |
|
19 |
} |
|
20 |
|
|
21 |
int main(void) |
|
22 |
{ |
|
23 |
cris_tst_cc_init(); |
|
24 |
asm volatile ("clearf cz"); |
|
25 |
verify_addc(0, 0, 0, 0, 0, 0, 0); |
|
26 |
|
|
27 |
cris_tst_cc_init(); |
|
28 |
asm volatile ("setf z"); |
|
29 |
verify_addc(0, 0, 0, 0, 1, 0, 0); |
|
30 |
|
|
31 |
cris_tst_cc_init(); |
|
32 |
asm volatile ("setf cz"); |
|
33 |
verify_addc(0, 0, 1, 0, 0, 0, 0); |
|
34 |
cris_tst_cc_init(); |
|
35 |
asm volatile ("clearf c"); |
|
36 |
verify_addc(-1, 2, 1, 0, 0, 0, 1); |
|
37 |
|
|
38 |
cris_tst_cc_init(); |
|
39 |
asm volatile ("clearf nzv"); |
|
40 |
asm volatile ("setf c"); |
|
41 |
verify_addc(-1, 2, 2, 0, 0, 0, 1); |
|
42 |
|
|
43 |
cris_tst_cc_init(); |
|
44 |
asm volatile ("setf c"); |
|
45 |
verify_addc(0xffff, 0xffff, 0x1ffff, 0, 0, 0, 0); |
|
46 |
|
|
47 |
cris_tst_cc_init(); |
|
48 |
asm volatile ("clearf nzvc"); |
|
49 |
verify_addc(-1, -1, 0xfffffffe, 1, 0, 0, 1); |
|
50 |
|
|
51 |
cris_tst_cc_init(); |
|
52 |
asm volatile ("setf c"); |
|
53 |
verify_addc(0x78134452, 0x5432f789, 0xcc463bdc, 1, 0, 1, 0); |
|
54 |
|
|
55 |
pass(); |
|
56 |
return 0; |
|
57 |
} |
b/tests/cris/check_addcm.c | ||
---|---|---|
1 |
#include <stdio.h> |
|
2 |
#include <stdlib.h> |
|
3 |
#include <stdint.h> |
|
4 |
#include "sys.h" |
|
5 |
#include "crisutils.h" |
|
6 |
|
|
7 |
/* need to avoid acr as source here. */ |
|
8 |
extern inline int cris_addc_m(int a, const int *b) { |
|
9 |
asm volatile ("addc [%1], %0\n" : "+r" (a) : "r" (b)); |
|
10 |
return a; |
|
11 |
} |
|
12 |
|
|
13 |
/* 'b' is a crisv32 constrain to avoid postinc with $acr. */ |
|
14 |
extern inline int cris_addc_pi_m(int a, int **b) { |
|
15 |
asm volatile ("addc [%1+], %0\n" : "+r" (a), "+b" (*b)); |
|
16 |
return a; |
|
17 |
} |
|
18 |
|
|
19 |
#define verify_addc_m(a, b, res, n, z, v, c) \ |
|
20 |
{ \ |
|
21 |
int r; \ |
|
22 |
r = cris_addc_m((a), (b)); \ |
|
23 |
cris_tst_cc((n), (z), (v), (c)); \ |
|
24 |
if (r != (res)) \ |
|
25 |
err(); \ |
|
26 |
} |
|
27 |
|
|
28 |
#define verify_addc_pi_m(a, b, res, n, z, v, c) \ |
|
29 |
{ \ |
|
30 |
int r; \ |
|
31 |
r = cris_addc_pi_m((a), (b)); \ |
|
32 |
cris_tst_cc((n), (z), (v), (c)); \ |
|
33 |
if (r != (res)) \ |
|
34 |
err(); \ |
|
35 |
} |
|
36 |
|
|
37 |
int x[] = { 0, 0, 2, -1, 0xffff, -1, 0x5432f789}; |
|
38 |
|
|
39 |
int main(void) |
|
40 |
{ |
|
41 |
int *p = (void *)&x[0]; |
|
42 |
#if 1 |
|
43 |
cris_tst_cc_init(); |
|
44 |
asm volatile ("clearf cz"); |
|
45 |
verify_addc_m(0, p, 0, 0, 0, 0, 0); |
|
46 |
|
|
47 |
cris_tst_cc_init(); |
|
48 |
asm volatile ("setf z"); |
|
49 |
verify_addc_m(0, p, 0, 0, 1, 0, 0); |
|
50 |
|
|
51 |
cris_tst_cc_init(); |
|
52 |
asm volatile ("setf c"); |
|
53 |
verify_addc_m(0, p, 1, 0, 0, 0, 0); |
|
54 |
|
|
55 |
cris_tst_cc_init(); |
|
56 |
asm volatile ("clearf c"); |
|
57 |
verify_addc_pi_m(0, &p, 0, 0, 1, 0, 0); |
|
58 |
|
|
59 |
p = &x[1]; |
|
60 |
cris_tst_cc_init(); |
|
61 |
asm volatile ("setf c"); |
|
62 |
verify_addc_pi_m(0, &p, 1, 0, 0, 0, 0); |
|
63 |
|
|
64 |
if (p != &x[2]) |
|
65 |
err(); |
|
66 |
|
|
67 |
cris_tst_cc_init(); |
|
68 |
asm volatile ("clearf c"); |
|
69 |
verify_addc_pi_m(-1, &p, 1, 0, 0, 0, 1); |
|
70 |
|
|
71 |
if (p != &x[3]) |
|
72 |
err(); |
|
73 |
#endif |
|
74 |
p = &x[3]; |
|
75 |
/* TODO: investigate why this one fails. */ |
|
76 |
cris_tst_cc_init(); |
|
77 |
asm volatile ("setf c"); |
|
78 |
verify_addc_m(2, p, 2, 0, 0, 0, 1); |
|
79 |
p += 4; |
|
80 |
|
|
81 |
pass(); |
|
82 |
return 0; |
|
83 |
} |
b/tests/cris/check_addi.s | ||
---|---|---|
1 |
# mach: crisv0 crisv3 crisv8 crisv10 crisv32 |
|
2 |
# output: 0\n1\n2\n4\nbe02460f\n69d035a6\nc16c14d4\n |
|
3 |
|
|
4 |
.include "testutils.inc" |
|
5 |
start |
|
6 |
moveq 0,r3 |
|
7 |
moveq 0,r4 |
|
8 |
clearf zcvn |
|
9 |
addi r4.b,r3 |
|
10 |
test_cc 0 0 0 0 |
|
11 |
checkr3 0 |
|
12 |
|
|
13 |
moveq 0,r3 |
|
14 |
moveq 1,r4 |
|
15 |
setf zcvn |
|
16 |
addi r4.b,r3 |
|
17 |
test_cc 1 1 1 1 |
|
18 |
checkr3 1 |
|
19 |
|
|
20 |
moveq 0,r3 |
|
21 |
moveq 1,r4 |
|
22 |
setf cv |
|
23 |
clearf zn |
|
24 |
addi r4.w,r3 |
|
25 |
test_cc 0 0 1 1 |
|
26 |
checkr3 2 |
|
27 |
|
|
28 |
moveq 0,r3 |
|
29 |
moveq 1,r4 |
|
30 |
clearf cv |
|
31 |
setf zn |
|
32 |
addi r4.d,r3 |
|
33 |
test_cc 1 1 0 0 |
|
34 |
checkr3 4 |
|
35 |
|
|
36 |
move.d 0x12345678,r3 |
|
37 |
move.d 0xabcdef97,r4 |
|
38 |
clearf cn |
|
39 |
setf zv |
|
40 |
addi r4.b,r3 |
|
41 |
test_cc 0 1 1 0 |
|
42 |
checkr3 be02460f |
|
43 |
|
|
44 |
move.d 0x12345678,r3 |
|
45 |
move.d 0xabcdef97,r4 |
|
46 |
setf cn |
|
47 |
clearf zv |
|
48 |
addi r4.w,r3 |
|
49 |
test_cc 1 0 0 1 |
|
50 |
checkr3 69d035a6 |
|
51 |
|
|
52 |
move.d 0x12345678,r3 |
|
53 |
move.d 0xabcdef97,r4 |
|
54 |
addi r4.d,r3 |
|
55 |
checkr3 c16c14d4 |
|
56 |
|
|
57 |
quit |
b/tests/cris/check_addiv32.s | ||
---|---|---|
1 |
# mach: crisv32 |
|
2 |
# output: 4455aa77\n4455aa77\nee19ccff\nff22\n4455aa77\nff224455\n55aa77ff\n |
|
3 |
|
|
4 |
.include "testutils.inc" |
|
5 |
.data |
|
6 |
x: |
|
7 |
.dword 0x55aa77ff |
|
8 |
.dword 0xccff2244 |
|
9 |
.dword 0x88ccee19 |
|
10 |
|
|
11 |
start |
|
12 |
setf cv |
|
13 |
moveq -1,r0 |
|
14 |
move.d x-32768,r5 |
|
15 |
move.d 32769,r6 |
|
16 |
addi r6.b,r5,acr |
|
17 |
test_cc 0 0 1 1 |
|
18 |
move.d [acr],r3 |
|
19 |
checkr3 4455aa77 |
|
20 |
|
|
21 |
addu.w 32771,r5 |
|
22 |
setf znvc |
|
23 |
moveq -1,r8 |
|
24 |
addi r8.w,r5,acr |
|
25 |
test_cc 1 1 1 1 |
|
26 |
move.d [acr],r3 |
|
27 |
checkr3 4455aa77 |
|
28 |
|
|
29 |
moveq 5,r10 |
|
30 |
clearf znvc |
|
31 |
addi r10.b,acr,acr |
|
32 |
test_cc 0 0 0 0 |
|
33 |
move.d [acr],r3 |
|
34 |
checkr3 ee19ccff |
|
35 |
|
|
36 |
subq 1,r5 |
|
37 |
move.d r5,r8 |
|
38 |
subq 1,r8 |
|
39 |
moveq 1,r9 |
|
40 |
addi r9.d,r8,acr |
|
41 |
test_cc 0 0 0 0 |
|
42 |
movu.w [acr],r3 |
|
43 |
checkr3 ff22 |
|
44 |
|
|
45 |
moveq -2,r11 |
|
46 |
addi r11.w,acr,acr |
|
47 |
move.d [acr],r3 |
|
48 |
checkr3 4455aa77 |
|
49 |
|
|
50 |
moveq 5,r9 |
|
51 |
addi r9.d,acr,acr |
|
52 |
subq 18,acr |
|
53 |
move.d [acr],r3 |
|
54 |
checkr3 ff224455 |
|
55 |
|
|
56 |
move.d -76789888/4,r12 |
|
57 |
addi r12.d,r5,acr |
|
58 |
add.d 76789886,acr |
|
59 |
move.d [acr],r3 |
|
60 |
checkr3 55aa77ff |
|
61 |
|
|
62 |
quit |
b/tests/cris/check_addm.s | ||
---|---|---|
1 |
# mach: crisv0 crisv3 crisv8 crisv10 crisv32 |
|
2 |
# output: 1\n1\n1fffe\nfffffffe\ncc463bdb\nffff0001\n1\nfffe\nfedafffe\n78133bdb\nffffff01\n1\nfe\nfeda49fe\n781344db\n781344d0\n |
|
3 |
|
|
4 |
.include "testutils.inc" |
|
5 |
.data |
|
6 |
x: |
|
7 |
.dword 2,-1,0xffff,-1,0x5432f789 |
|
8 |
.word 2,-1,0xffff,0xf789 |
|
9 |
.byte 2,0xff,0x89 |
|
10 |
.byte 0x7e |
|
11 |
|
|
12 |
start |
|
13 |
moveq -1,r3 |
|
14 |
move.d x,r5 |
|
15 |
add.d [r5+],r3 |
|
16 |
test_cc 0 0 0 1 |
|
17 |
checkr3 1 |
|
18 |
|
|
19 |
moveq 2,r3 |
|
20 |
add.d [r5],r3 |
|
21 |
test_cc 0 0 0 1 |
|
22 |
addq 4,r5 |
|
23 |
checkr3 1 |
|
24 |
|
|
25 |
move.d 0xffff,r3 |
|
26 |
add.d [r5+],r3 |
|
27 |
test_cc 0 0 0 0 |
|
28 |
checkr3 1fffe |
|
29 |
|
|
30 |
moveq -1,r3 |
|
31 |
add.d [r5+],r3 |
|
32 |
test_cc 1 0 0 1 |
|
33 |
checkr3 fffffffe |
|
34 |
|
|
35 |
move.d 0x78134452,r3 |
|
36 |
add.d [r5+],r3 |
|
37 |
test_cc 1 0 1 0 |
|
38 |
checkr3 cc463bdb |
|
39 |
|
|
40 |
moveq -1,r3 |
|
41 |
add.w [r5+],r3 |
|
42 |
test_cc 0 0 0 1 |
|
43 |
checkr3 ffff0001 |
|
44 |
|
|
45 |
moveq 2,r3 |
|
46 |
add.w [r5+],r3 |
|
47 |
test_cc 0 0 0 1 |
|
48 |
checkr3 1 |
|
49 |
|
|
50 |
move.d 0xffff,r3 |
|
51 |
add.w [r5],r3 |
|
52 |
test_cc 1 0 0 1 |
|
53 |
checkr3 fffe |
|
54 |
|
|
55 |
move.d 0xfedaffff,r3 |
|
56 |
add.w [r5+],r3 |
|
57 |
test_cc 1 0 0 1 |
|
58 |
checkr3 fedafffe |
|
59 |
|
|
60 |
move.d 0x78134452,r3 |
|
61 |
add.w [r5+],r3 |
|
62 |
test_cc 0 0 0 1 |
|
63 |
checkr3 78133bdb |
|
64 |
|
|
65 |
moveq -1,r3 |
|
66 |
add.b [r5],r3 |
|
67 |
test_cc 0 0 0 1 |
|
68 |
addq 1,r5 |
|
69 |
checkr3 ffffff01 |
|
70 |
|
|
71 |
moveq 2,r3 |
|
72 |
add.b [r5],r3 |
|
73 |
test_cc 0 0 0 1 |
|
74 |
checkr3 1 |
|
75 |
|
|
76 |
move.d 0xff,r3 |
|
77 |
add.b [r5],r3 |
|
78 |
test_cc 1 0 0 1 |
|
79 |
checkr3 fe |
|
80 |
|
|
81 |
move.d 0xfeda49ff,r3 |
|
82 |
add.b [r5+],r3 |
|
83 |
test_cc 1 0 0 1 |
|
84 |
checkr3 feda49fe |
|
85 |
|
|
86 |
move.d 0x78134452,r3 |
|
87 |
add.b [r5+],r3 |
|
88 |
test_cc 1 0 0 0 |
|
89 |
checkr3 781344db |
|
90 |
|
|
91 |
move.d 0x78134452,r3 |
|
92 |
add.b [r5],r3 |
|
93 |
test_cc 1 0 1 0 |
|
94 |
checkr3 781344d0 |
|
95 |
|
|
96 |
quit |
b/tests/cris/check_addo.c | ||
---|---|---|
1 |
#include <stdio.h> |
|
2 |
#include <stdlib.h> |
|
3 |
#include <stdint.h> |
|
4 |
#include "sys.h" |
|
5 |
#include "crisutils.h" |
|
6 |
|
|
7 |
/* this would be better to do in asm, it's an orgy in GCC inline asm now. */ |
|
8 |
|
|
9 |
#define cris_addo_b(o, v) \ |
|
10 |
asm volatile ("addo.b\t[%0], %1, $acr\n" : : "r" (o), "r" (v) : "acr"); |
|
11 |
#define cris_addo_w(o, v) \ |
|
12 |
asm volatile ("addo.w\t[%0], %1, $acr\n" : : "r" (o), "r" (v) : "acr"); |
|
13 |
#define cris_addo_d(o, v) \ |
|
14 |
asm volatile ("addo.d\t[%0], %1, $acr\n" : : "r" (o), "r" (v) : "acr"); |
|
15 |
#define cris_addo_pi_b(o, v) \ |
|
16 |
asm volatile ("addo.b\t[%0+], %1, $acr\n" \ |
|
17 |
: "+b" (o): "r" (v) : "acr"); |
|
18 |
#define cris_addo_pi_w(o, v) \ |
|
19 |
asm volatile ("addo.w\t[%0+], %1, $acr\n" \ |
|
20 |
: "+b" (o): "r" (v) : "acr"); |
|
21 |
#define cris_addo_pi_d(o, v) \ |
|
22 |
asm volatile ("addo.d\t[%0+], %1, $acr\n" \ |
|
23 |
: "+b" (o): "r" (v) : "acr"); |
|
24 |
|
|
25 |
struct { |
|
26 |
uint32_t v1; |
|
27 |
uint16_t v2; |
|
28 |
uint32_t v3; |
|
29 |
uint8_t v4; |
|
30 |
uint8_t v5; |
|
31 |
uint16_t v6; |
|
32 |
uint32_t v7; |
|
33 |
} y = { |
|
34 |
32769, |
|
35 |
-1, |
|
36 |
5, |
|
37 |
3, -4, |
|
38 |
2, |
|
39 |
-76789887 |
|
40 |
}; |
|
41 |
|
|
42 |
static int x[3] = {0x55aa77ff, 0xccff2244, 0x88ccee19}; |
|
43 |
|
|
44 |
int main(void) |
|
45 |
{ |
|
46 |
int *r; |
|
47 |
unsigned char *t, *p; |
|
48 |
|
|
49 |
/* Note, this test-case will trig an unaligned access, partly |
|
50 |
to x[0] and to [x1]. */ |
|
51 |
t = (unsigned char *)x; |
|
52 |
t -= 32768; |
|
53 |
p = (unsigned char *) &y.v1; |
|
54 |
mb(); /* dont reorder anything beyond here. */ |
|
55 |
cris_tst_cc_init(); |
|
56 |
asm volatile ("setf\tzvnc\n"); |
|
57 |
cris_addo_pi_d(p, t); |
|
58 |
cris_tst_cc(1, 1, 1, 1); |
|
59 |
asm volatile ("move.d\t$acr, %0\n" : "=r" (r)); |
|
60 |
if (*r != 0x4455aa77) |
|
61 |
err(); |
|
62 |
|
|
63 |
|
|
64 |
t += 32770; |
|
65 |
mb(); /* dont reorder anything beyond here. */ |
|
66 |
cris_tst_cc_init(); |
|
67 |
asm volatile ("setf\tzvnc\n"); |
|
68 |
cris_addo_pi_w(p, t); |
|
69 |
cris_tst_cc(1, 1, 1, 1); |
|
70 |
asm volatile ("move.d\t$acr, %0\n" : "=r" (r)); |
|
71 |
if (*r != 0x4455aa77) |
|
72 |
err(); |
|
73 |
|
|
74 |
mb(); /* dont reorder anything beyond here. */ |
|
75 |
cris_tst_cc_init(); |
|
76 |
asm volatile ("setf\tzvnc\n"); |
|
77 |
cris_addo_d(p, r); |
|
78 |
cris_tst_cc(1, 1, 1, 1); |
|
79 |
p += 4; |
|
80 |
asm volatile ("move.d\t$acr, %0\n" : "=r" (r)); |
|
81 |
if (*r != 0xee19ccff) |
|
82 |
err(); |
|
83 |
|
|
84 |
mb(); /* dont reorder anything beyond here. */ |
|
85 |
cris_tst_cc_init(); |
|
86 |
asm volatile ("setf\tzvnc\n"); |
|
87 |
cris_addo_pi_b(p, t); |
|
88 |
cris_tst_cc(1, 1, 1, 1); |
|
89 |
asm volatile ("move.d\t$acr, %0\n" : "=r" (r)); |
|
90 |
if (*(uint16_t*)r != 0xff22) |
|
91 |
err(); |
|
92 |
|
|
93 |
mb(); /* dont reorder anything beyond here. */ |
|
94 |
cris_tst_cc_init(); |
|
95 |
asm volatile ("setf\tzvnc\n"); |
|
96 |
cris_addo_b(p, r); |
|
97 |
cris_tst_cc(1, 1, 1, 1); |
|
98 |
p += 1; |
|
99 |
asm volatile ("move.d\t$acr, %0\n" : "=r" (r)); |
|
100 |
if (*r != 0x4455aa77) |
|
101 |
err(); |
|
102 |
|
|
103 |
mb(); /* dont reorder anything beyond here. */ |
|
104 |
cris_tst_cc_init(); |
|
105 |
asm volatile ("setf\tzvnc\n"); |
|
106 |
cris_addo_w(p, r); |
|
107 |
cris_tst_cc(1, 1, 1, 1); |
|
108 |
p += 2; |
|
109 |
asm volatile ("move.d\t$acr, %0\n" : "=r" (r)); |
|
110 |
if (*r != 0xff224455) |
|
111 |
err(); |
|
112 |
|
|
113 |
mb(); /* dont reorder anything beyond here. */ |
|
114 |
cris_tst_cc_init(); |
|
115 |
asm volatile ("setf\tzvnc\n"); |
|
116 |
cris_addo_pi_d(p, t); |
|
117 |
cris_tst_cc(1, 1, 1, 1); |
|
118 |
asm volatile ("move.d\t$acr, %0\n" : "=r" (r)); |
|
119 |
r = (void*)(((char *)r) + 76789885); |
|
120 |
if (*r != 0x55aa77ff) |
|
121 |
err(); |
|
122 |
|
|
123 |
pass(); |
|
124 |
return 0; |
|
125 |
} |
b/tests/cris/check_addoq.c | ||
---|---|---|
1 |
#include <stdio.h> |
|
2 |
#include <stdlib.h> |
|
3 |
#include <stdint.h> |
|
4 |
#include "sys.h" |
|
5 |
#include "crisutils.h" |
|
6 |
|
|
7 |
/* this would be better to do in asm, it's an orgy in GCC inline asm now. */ |
|
8 |
|
|
9 |
/* ACR will be clobbered. */ |
|
10 |
#define cris_addoq(o, v) \ |
|
11 |
asm volatile ("addoq\t%1, %0, $acr\n" : : "r" (v), "i" (o) : "acr"); |
|
12 |
|
|
13 |
|
|
14 |
int main(void) |
|
15 |
{ |
|
16 |
int x[3] = {0x55aa77ff, 0xccff2244, 0x88ccee19}; |
|
17 |
int *p, *t = x + 1; |
|
18 |
|
|
19 |
cris_tst_cc_init(); |
|
20 |
asm volatile ("setf\tzvnc\n"); |
|
21 |
cris_addoq(0, t); |
|
22 |
cris_tst_cc(1, 1, 1, 1); |
|
23 |
asm volatile ("move.d\t$acr, %0\n" : "=r" (p)); |
|
24 |
if (*p != 0xccff2244) |
|
25 |
err(); |
|
26 |
|
|
27 |
cris_tst_cc_init(); |
|
28 |
asm volatile ("setf\tzvnc\n"); |
|
29 |
cris_addoq(4, t); |
|
30 |
cris_tst_cc(1, 1, 1, 1); |
|
31 |
asm volatile ("move.d\t$acr, %0\n" : "=r" (p)); |
|
32 |
if (*p != 0x88ccee19) |
|
33 |
err(); |
|
34 |
|
|
35 |
cris_tst_cc_init(); |
|
36 |
asm volatile ("clearf\tzvnc\n"); |
|
37 |
cris_addoq(-8, t + 1); |
|
38 |
cris_tst_cc(0, 0, 0, 0); |
|
39 |
asm volatile ("move.d\t$acr, %0\n" : "=r" (p)); |
|
40 |
if (*p != 0x55aa77ff) |
|
41 |
err(); |
|
42 |
pass(); |
|
43 |
return 0; |
|
44 |
} |
b/tests/cris/check_addq.s | ||
---|---|---|
1 |
# mach: crisv3 crisv8 crisv10 crisv32 |
|
2 |
# output: ffffffff\n0\n1\n100\n10000\n47\n67\na6\n80000001\n |
|
3 |
|
|
4 |
.include "testutils.inc" |
|
5 |
start |
|
6 |
moveq -2,r3 |
|
7 |
addq 1,r3 |
|
8 |
test_cc 1 0 0 0 |
|
9 |
checkr3 ffffffff |
|
10 |
|
|
11 |
addq 1,r3 |
|
12 |
test_cc 0 1 0 1 |
|
13 |
checkr3 0 |
|
14 |
|
|
15 |
addq 1,r3 |
|
16 |
test_cc 0 0 0 0 |
|
17 |
checkr3 1 |
|
18 |
|
|
19 |
move.d 0xff,r3 |
|
20 |
addq 1,r3 |
|
21 |
test_cc 0 0 0 0 |
|
22 |
checkr3 100 |
|
23 |
|
|
24 |
move.d 0xffff,r3 |
|
25 |
addq 1,r3 |
|
26 |
test_cc 0 0 0 0 |
|
27 |
checkr3 10000 |
|
28 |
|
|
29 |
move.d 0x42,r3 |
|
30 |
addq 5,r3 |
|
31 |
test_cc 0 0 0 0 |
|
32 |
checkr3 47 |
|
33 |
|
|
34 |
addq 32,r3 |
|
35 |
test_cc 0 0 0 0 |
|
36 |
checkr3 67 |
|
37 |
|
|
38 |
addq 63,r3 |
|
39 |
test_cc 0 0 0 0 |
|
40 |
checkr3 a6 |
|
41 |
|
|
42 |
move.d 0x7ffffffe,r3 |
|
43 |
addq 3,r3 |
|
44 |
test_cc 1 0 1 0 |
|
45 |
checkr3 80000001 |
|
46 |
|
|
47 |
quit |
b/tests/cris/check_addr.s | ||
---|---|---|
1 |
# mach: crisv0 crisv3 crisv8 crisv10 crisv32 |
|
2 |
# output: 1\n1\n1fffe\nfffffffe\ncc463bdb\nffff0001\n1\nfffe\nfedafffe\n78133bdb\nffffff01\n1\nfe\nfeda49fe\n781344db\n |
|
3 |
|
|
4 |
.include "testutils.inc" |
|
5 |
start |
|
6 |
moveq -1,r3 |
|
7 |
moveq 2,r4 |
|
8 |
add.d r4,r3 |
|
9 |
test_cc 0 0 0 1 |
|
10 |
checkr3 1 |
|
11 |
|
|
12 |
moveq 2,r3 |
|
13 |
moveq -1,r4 |
|
14 |
add.d r4,r3 |
|
15 |
test_cc 0 0 0 1 |
|
16 |
checkr3 1 |
|
17 |
|
|
18 |
move.d 0xffff,r4 |
|
19 |
move.d r4,r3 |
|
20 |
add.d r4,r3 |
|
21 |
test_cc 0 0 0 0 |
|
22 |
checkr3 1fffe |
|
23 |
|
|
24 |
moveq -1,r4 |
|
25 |
move.d r4,r3 |
|
26 |
add.d r4,r3 |
|
27 |
test_cc 1 0 0 1 |
|
28 |
checkr3 fffffffe |
|
29 |
|
|
30 |
move.d 0x5432f789,r4 |
|
31 |
move.d 0x78134452,r3 |
|
32 |
add.d r4,r3 |
|
33 |
test_cc 1 0 1 0 |
|
34 |
checkr3 cc463bdb |
|
35 |
|
|
36 |
moveq -1,r3 |
|
37 |
moveq 2,r4 |
|
38 |
add.w r4,r3 |
|
39 |
test_cc 0 0 0 1 |
|
40 |
checkr3 ffff0001 |
|
41 |
|
|
42 |
moveq 2,r3 |
|
43 |
moveq -1,r4 |
|
44 |
add.w r4,r3 |
|
45 |
test_cc 0 0 0 1 |
|
46 |
checkr3 1 |
|
47 |
|
|
48 |
move.d 0xffff,r4 |
|
49 |
move.d r4,r3 |
|
50 |
add.w r4,r3 |
|
51 |
test_cc 1 0 0 1 |
|
52 |
checkr3 fffe |
|
53 |
|
|
54 |
move.d 0xfedaffff,r4 |
|
55 |
move.d r4,r3 |
|
56 |
add.w r4,r3 |
|
57 |
test_cc 1 0 0 1 |
|
58 |
checkr3 fedafffe |
|
59 |
|
|
60 |
move.d 0x5432f789,r4 |
|
61 |
move.d 0x78134452,r3 |
|
62 |
add.w r4,r3 |
|
63 |
test_cc 0 0 0 1 |
|
64 |
checkr3 78133bdb |
|
65 |
|
|
66 |
moveq -1,r3 |
|
67 |
moveq 2,r4 |
|
68 |
add.b r4,r3 |
|
69 |
test_cc 0 0 0 1 |
|
70 |
checkr3 ffffff01 |
|
71 |
|
|
72 |
moveq 2,r3 |
|
73 |
moveq -1,r4 |
|
74 |
add.b r4,r3 |
|
75 |
test_cc 0 0 0 1 |
|
76 |
checkr3 1 |
|
77 |
|
|
78 |
move.d 0xff,r4 |
|
79 |
move.d r4,r3 |
|
80 |
add.b r4,r3 |
|
81 |
test_cc 1 0 0 1 |
|
82 |
checkr3 fe |
|
83 |
|
|
84 |
move.d 0xfeda49ff,r4 |
|
85 |
move.d r4,r3 |
|
86 |
add.b r4,r3 |
|
87 |
test_cc 1 0 0 1 |
|
88 |
checkr3 feda49fe |
|
89 |
|
|
90 |
move.d 0x5432f789,r4 |
|
91 |
move.d 0x78134452,r3 |
|
92 |
add.b r4,r3 |
|
93 |
test_cc 1 0 0 0 |
|
94 |
checkr3 781344db |
|
95 |
|
|
96 |
quit |
b/tests/cris/check_addxc.s | ||
---|---|---|
1 |
# mach: crisv0 crisv3 crisv8 crisv10 crisv32 |
|
2 |
# output: 1\n1\n101\n10001\n100fe\n1fffe\nfffe\nfffe\nfffffffe\nfe\nfffffffe\n781344db\n781343db\n78143bdb\n78133bdb\n800000ed\n0\n |
|
3 |
|
|
4 |
.include "testutils.inc" |
|
5 |
start |
|
6 |
moveq 2,r3 |
|
7 |
adds.b 0xff,r3 |
|
8 |
test_cc 0 0 0 1 |
|
9 |
checkr3 1 |
|
10 |
|
|
11 |
moveq 2,r3 |
|
12 |
adds.w 0xffff,r3 |
|
13 |
test_cc 0 0 0 1 |
|
14 |
checkr3 1 |
|
15 |
|
|
16 |
moveq 2,r3 |
|
17 |
addu.b 0xff,r3 |
|
18 |
checkr3 101 |
|
19 |
|
|
20 |
moveq 2,r3 |
|
21 |
move.d 0xffffffff,r4 |
|
22 |
addu.w -1,r3 |
|
23 |
test_cc 0 0 0 0 |
|
24 |
checkr3 10001 |
|
25 |
|
|
26 |
move.d 0xffff,r3 |
|
27 |
addu.b -1,r3 |
|
28 |
test_cc 0 0 0 0 |
|
29 |
checkr3 100fe |
|
30 |
|
|
31 |
move.d 0xffff,r3 |
|
32 |
addu.w -1,r3 |
|
33 |
test_cc 0 0 0 0 |
|
34 |
checkr3 1fffe |
|
35 |
|
|
36 |
move.d 0xffff,r3 |
|
37 |
adds.b 0xff,r3 |
|
38 |
test_cc 0 0 0 1 |
|
39 |
checkr3 fffe |
|
40 |
|
|
41 |
move.d 0xffff,r3 |
|
42 |
adds.w 0xffff,r3 |
|
43 |
test_cc 0 0 0 1 |
|
44 |
checkr3 fffe |
|
45 |
|
|
46 |
moveq -1,r3 |
|
47 |
adds.b 0xff,r3 |
|
48 |
test_cc 1 0 0 1 |
|
49 |
checkr3 fffffffe |
|
50 |
|
|
51 |
moveq -1,r3 |
|
52 |
adds.w 0xff,r3 |
|
53 |
test_cc 0 0 0 1 |
|
54 |
checkr3 fe |
|
55 |
|
|
56 |
moveq -1,r3 |
|
57 |
adds.w 0xffff,r3 |
|
58 |
test_cc 1 0 0 1 |
|
59 |
checkr3 fffffffe |
|
60 |
|
|
61 |
move.d 0x78134452,r3 |
|
62 |
addu.b 0x89,r3 |
|
63 |
test_cc 0 0 0 0 |
|
64 |
checkr3 781344db |
|
65 |
|
|
66 |
move.d 0x78134452,r3 |
|
67 |
adds.b 0x89,r3 |
|
68 |
test_cc 0 0 0 1 |
|
69 |
checkr3 781343db |
|
70 |
|
|
71 |
move.d 0x78134452,r3 |
|
72 |
addu.w 0xf789,r3 |
|
73 |
test_cc 0 0 0 0 |
|
74 |
checkr3 78143bdb |
|
75 |
|
|
76 |
move.d 0x78134452,r3 |
|
77 |
adds.w 0xf789,r3 |
|
78 |
test_cc 0 0 0 1 |
|
79 |
checkr3 78133bdb |
|
80 |
|
|
81 |
move.d 0x7fffffee,r3 |
|
82 |
addu.b 0xff,r3 |
|
83 |
test_cc 1 0 1 0 |
|
84 |
checkr3 800000ed |
|
85 |
|
|
86 |
move.d 0x1,r3 |
|
87 |
adds.w 0xffff,r3 |
|
88 |
test_cc 0 1 0 1 |
|
89 |
checkr3 0 |
|
90 |
|
|
91 |
quit |
b/tests/cris/check_addxm.s | ||
---|---|---|
1 |
# mach: crisv0 crisv3 crisv8 crisv10 crisv32 |
|
2 |
# output: 1\n1\n101\n10001\n100fe\n1fffe\nfffe\nfffe\nfffffffe\nfe\nfffffffe\n781344db\n781343db\n78143bdb\n78133bdb\n800000ed\n0\n |
|
3 |
|
|
4 |
.include "testutils.inc" |
|
5 |
.data |
|
6 |
x: |
|
7 |
.byte 0xff |
|
8 |
.word 0xffff |
|
9 |
.word 0xff |
|
10 |
.word 0xffff |
|
11 |
.byte 0x89 |
|
12 |
.word 0xf789 |
|
13 |
.byte 0xff |
|
14 |
.word 0xffff |
|
15 |
|
|
16 |
start |
|
17 |
moveq 2,r3 |
|
18 |
move.d x,r5 |
|
19 |
adds.b [r5+],r3 |
|
20 |
test_cc 0 0 0 1 |
|
21 |
checkr3 1 |
|
22 |
|
|
23 |
moveq 2,r3 |
|
24 |
adds.w [r5+],r3 |
|
25 |
test_cc 0 0 0 1 |
|
26 |
checkr3 1 |
|
27 |
|
|
28 |
moveq 2,r3 |
|
29 |
subq 3,r5 |
|
30 |
addu.b [r5+],r3 |
|
31 |
test_cc 0 0 0 0 |
|
32 |
checkr3 101 |
|
33 |
|
|
34 |
moveq 2,r3 |
|
35 |
addu.w [r5+],r3 |
|
36 |
subq 3,r5 |
|
37 |
test_cc 0 0 0 0 |
|
38 |
checkr3 10001 |
|
39 |
|
|
40 |
move.d 0xffff,r3 |
|
41 |
addu.b [r5],r3 |
|
42 |
test_cc 0 0 0 0 |
|
43 |
checkr3 100fe |
|
44 |
|
|
45 |
move.d 0xffff,r3 |
|
46 |
addu.w [r5],r3 |
|
47 |
test_cc 0 0 0 0 |
|
48 |
checkr3 1fffe |
|
49 |
|
|
50 |
move.d 0xffff,r3 |
|
51 |
adds.b [r5],r3 |
|
52 |
test_cc 0 0 0 1 |
|
53 |
checkr3 fffe |
|
54 |
|
|
55 |
move.d 0xffff,r3 |
|
56 |
adds.w [r5],r3 |
|
57 |
test_cc 0 0 0 1 |
|
58 |
checkr3 fffe |
|
59 |
|
|
60 |
moveq -1,r3 |
|
61 |
adds.b [r5],r3 |
|
62 |
test_cc 1 0 0 1 |
|
63 |
addq 3,r5 |
|
64 |
checkr3 fffffffe |
|
65 |
|
|
66 |
moveq -1,r3 |
|
67 |
adds.w [r5+],r3 |
|
68 |
test_cc 0 0 0 1 |
|
69 |
checkr3 fe |
|
70 |
|
|
71 |
moveq -1,r3 |
|
72 |
adds.w [r5+],r3 |
|
73 |
test_cc 1 0 0 1 |
|
74 |
checkr3 fffffffe |
|
75 |
|
|
76 |
move.d 0x78134452,r3 |
|
77 |
addu.b [r5],r3 |
|
78 |
test_cc 0 0 0 0 |
|
79 |
checkr3 781344db |
|
80 |
|
|
81 |
move.d 0x78134452,r3 |
|
82 |
adds.b [r5+],r3 |
|
83 |
test_cc 0 0 0 1 |
|
84 |
checkr3 781343db |
|
85 |
|
|
86 |
move.d 0x78134452,r3 |
|
87 |
addu.w [r5],r3 |
|
88 |
test_cc 0 0 0 0 |
|
89 |
checkr3 78143bdb |
|
90 |
|
|
91 |
move.d 0x78134452,r3 |
|
92 |
adds.w [r5+],r3 |
|
93 |
test_cc 0 0 0 1 |
|
94 |
checkr3 78133bdb |
|
95 |
|
|
96 |
move.d 0x7fffffee,r3 |
|
97 |
addu.b [r5+],r3 |
|
98 |
test_cc 1 0 1 0 |
|
99 |
checkr3 800000ed |
|
100 |
|
|
101 |
move.d 0x1,r3 |
|
102 |
adds.w [r5+],r3 |
|
103 |
test_cc 0 1 0 1 |
|
104 |
checkr3 0 |
|
105 |
|
|
106 |
quit |
b/tests/cris/check_addxr.s | ||
---|---|---|
1 |
# mach: crisv0 crisv3 crisv8 crisv10 crisv32 |
|
2 |
# output: 1\n1\n1fffe\nfffffffe\ncc463bdb\nffff0001\n1\nfffe\nfedafffe\n78133bdb\nffffff01\n1\nfe\nfeda49fe\n781344db\n |
|
3 |
|
|
4 |
.include "testutils.inc" |
|
5 |
start |
|
6 |
moveq -1,r3 |
|
7 |
moveq 2,r4 |
|
8 |
add.d r4,r3 |
|
9 |
test_cc 0 0 0 1 |
|
10 |
checkr3 1 |
|
11 |
|
|
12 |
moveq 2,r3 |
|
13 |
moveq -1,r4 |
|
14 |
add.d r4,r3 |
|
15 |
test_cc 0 0 0 1 |
|
16 |
checkr3 1 |
|
17 |
|
|
18 |
move.d 0xffff,r4 |
|
19 |
move.d r4,r3 |
|
20 |
add.d r4,r3 |
|
21 |
test_cc 0 0 0 0 |
|
22 |
checkr3 1fffe |
|
23 |
|
|
24 |
moveq -1,r4 |
|
25 |
move.d r4,r3 |
|
26 |
add.d r4,r3 |
|
27 |
test_cc 1 0 0 1 |
|
28 |
checkr3 fffffffe |
|
29 |
|
|
30 |
move.d 0x5432f789,r4 |
|
31 |
move.d 0x78134452,r3 |
|
32 |
add.d r4,r3 |
|
33 |
test_cc 1 0 1 0 |
|
34 |
checkr3 cc463bdb |
|
35 |
|
|
36 |
moveq -1,r3 |
|
37 |
moveq 2,r4 |
|
38 |
add.w r4,r3 |
|
39 |
test_cc 0 0 0 1 |
|
40 |
checkr3 ffff0001 |
|
41 |
|
|
42 |
moveq 2,r3 |
|
43 |
moveq -1,r4 |
|
44 |
add.w r4,r3 |
|
45 |
test_cc 0 0 0 1 |
|
46 |
checkr3 1 |
|
47 |
|
|
48 |
move.d 0xffff,r4 |
|
49 |
move.d r4,r3 |
|
50 |
add.w r4,r3 |
|
51 |
test_cc 1 0 0 1 |
|
52 |
checkr3 fffe |
|
53 |
|
|
54 |
move.d 0xfedaffff,r4 |
|
55 |
move.d r4,r3 |
|
56 |
add.w r4,r3 |
|
57 |
test_cc 1 0 0 1 |
|
58 |
checkr3 fedafffe |
|
59 |
|
|
60 |
move.d 0x5432f789,r4 |
|
61 |
move.d 0x78134452,r3 |
|
62 |
add.w r4,r3 |
|
63 |
test_cc 0 0 0 1 |
|
64 |
checkr3 78133bdb |
|
65 |
|
|
66 |
moveq -1,r3 |
|
67 |
moveq 2,r4 |
|
68 |
add.b r4,r3 |
|
69 |
test_cc 0 0 0 1 |
|
70 |
checkr3 ffffff01 |
|
71 |
|
|
72 |
moveq 2,r3 |
|
73 |
moveq -1,r4 |
|
74 |
add.b r4,r3 |
|
75 |
test_cc 0 0 0 1 |
|
76 |
checkr3 1 |
|
77 |
|
|
78 |
move.d 0xff,r4 |
|
79 |
move.d r4,r3 |
|
80 |
add.b r4,r3 |
|
81 |
test_cc 1 0 0 1 |
|
82 |
checkr3 fe |
|
83 |
|
|
84 |
move.d 0xfeda49ff,r4 |
|
85 |
move.d r4,r3 |
|
86 |
add.b r4,r3 |
|
87 |
test_cc 1 0 0 1 |
|
88 |
checkr3 feda49fe |
|
89 |
|
|
90 |
move.d 0x5432f789,r4 |
|
91 |
move.d 0x78134452,r3 |
|
92 |
add.b r4,r3 |
|
93 |
test_cc 1 0 0 0 |
|
94 |
checkr3 781344db |
|
95 |
|
|
96 |
quit |
b/tests/cris/check_andc.s | ||
---|---|---|
1 |
# mach: crisv0 crisv3 crisv8 crisv10 crisv32 |
|
2 |
# output: 2\n2\nffff\nffffffff\n50124400\nffff0002\n2\nfffff\nfedaff0f\n78134400\nffffff02\n2\nf02\n78134401\n78134400\n |
|
3 |
|
|
4 |
.include "testutils.inc" |
|
5 |
start |
|
6 |
moveq -1,r3 |
|
7 |
and.d 2,r3 |
|
8 |
test_move_cc 0 0 0 0 |
|
9 |
checkr3 2 |
|
10 |
|
|
11 |
moveq 2,r3 |
|
12 |
and.d -1,r3 |
|
13 |
test_move_cc 0 0 0 0 |
|
14 |
checkr3 2 |
|
15 |
|
|
16 |
move.d 0xffff,r3 |
|
17 |
and.d 0xffff,r3 |
|
18 |
test_move_cc 0 0 0 0 |
|
19 |
checkr3 ffff |
|
20 |
|
|
21 |
moveq -1,r3 |
|
22 |
and.d -1,r3 |
|
23 |
test_move_cc 1 0 0 0 |
|
24 |
checkr3 ffffffff |
|
25 |
|
|
26 |
move.d 0x78134452,r3 |
|
27 |
and.d 0x5432f789,r3 |
|
28 |
test_move_cc 0 0 0 0 |
|
29 |
checkr3 50124400 |
|
30 |
|
|
31 |
moveq -1,r3 |
|
32 |
and.w 2,r3 |
|
33 |
test_move_cc 0 0 0 0 |
|
34 |
checkr3 ffff0002 |
|
35 |
|
|
36 |
moveq 2,r3 |
|
37 |
and.w -1,r3 |
|
38 |
test_move_cc 0 0 0 0 |
|
39 |
checkr3 2 |
|
40 |
|
|
41 |
move.d 0xfffff,r3 |
|
42 |
and.w 0xffff,r3 |
|
43 |
test_move_cc 1 0 0 0 |
|
44 |
checkr3 fffff |
|
45 |
|
|
46 |
move.d 0xfedaffaf,r3 |
|
47 |
and.w 0xff5f,r3 |
|
48 |
test_move_cc 1 0 0 0 |
|
49 |
checkr3 fedaff0f |
|
50 |
|
|
51 |
move.d 0x78134452,r3 |
|
52 |
and.w 0xf789,r3 |
|
53 |
test_move_cc 0 0 0 0 |
|
54 |
checkr3 78134400 |
|
55 |
|
|
56 |
moveq -1,r3 |
|
57 |
and.b 2,r3 |
|
58 |
test_move_cc 0 0 0 0 |
|
59 |
checkr3 ffffff02 |
|
60 |
|
|
61 |
moveq 2,r3 |
|
62 |
and.b -1,r3 |
|
63 |
test_move_cc 0 0 0 0 |
|
64 |
checkr3 2 |
|
65 |
|
|
66 |
move.d 0xfa7,r3 |
|
67 |
and.b 0x5a,r3 |
|
68 |
test_move_cc 0 0 0 0 |
|
69 |
checkr3 f02 |
|
70 |
|
|
71 |
move.d 0x78134453,r3 |
|
72 |
and.b 0x89,r3 |
|
73 |
test_move_cc 0 0 0 0 |
|
74 |
checkr3 78134401 |
|
75 |
|
|
76 |
and.b 0,r3 |
|
77 |
test_move_cc 0 1 0 0 |
|
78 |
checkr3 78134400 |
|
79 |
|
|
80 |
quit |
b/tests/cris/check_andm.s | ||
---|---|---|
1 |
# mach: crisv0 crisv3 crisv8 crisv10 crisv32 |
|
2 |
# output: 2\n2\nffff\nffffffff\n50124400\nffff0002\n2\nfffff\nfedaff0f\n78134400\nffffff02\n2\nf02\n78134401\n78134400\n |
|
3 |
|
|
4 |
.include "testutils.inc" |
|
5 |
.data |
|
6 |
x: |
|
7 |
.dword 2,-1,0xffff,-1,0x5432f789 |
|
8 |
.word 2,-1,0xffff,0xff5f,0xf789 |
|
9 |
.byte 2,-1,0x5a,0x89,0 |
|
10 |
|
|
11 |
start |
|
12 |
moveq -1,r3 |
|
13 |
move.d x,r5 |
|
14 |
and.d [r5+],r3 |
|
15 |
test_move_cc 0 0 0 0 |
|
16 |
checkr3 2 |
|
17 |
|
|
18 |
moveq 2,r3 |
|
19 |
and.d [r5],r3 |
|
20 |
test_move_cc 0 0 0 0 |
|
21 |
addq 4,r5 |
|
22 |
checkr3 2 |
|
23 |
|
|
24 |
move.d 0xffff,r3 |
|
25 |
and.d [r5+],r3 |
|
26 |
test_move_cc 0 0 0 0 |
|
27 |
checkr3 ffff |
|
28 |
|
|
29 |
moveq -1,r3 |
|
30 |
and.d [r5+],r3 |
|
31 |
test_move_cc 1 0 0 0 |
|
32 |
checkr3 ffffffff |
|
33 |
|
|
34 |
move.d 0x78134452,r3 |
|
35 |
and.d [r5+],r3 |
|
36 |
test_move_cc 0 0 0 0 |
|
37 |
checkr3 50124400 |
|
38 |
|
|
39 |
moveq -1,r3 |
|
40 |
and.w [r5+],r3 |
|
41 |
test_move_cc 0 0 0 0 |
|
42 |
checkr3 ffff0002 |
|
43 |
|
|
44 |
moveq 2,r3 |
|
45 |
and.w [r5+],r3 |
|
46 |
test_move_cc 0 0 0 0 |
|
47 |
checkr3 2 |
|
48 |
|
|
49 |
move.d 0xfffff,r3 |
|
50 |
and.w [r5],r3 |
|
51 |
test_move_cc 1 0 0 0 |
|
52 |
addq 2,r5 |
|
53 |
checkr3 fffff |
|
54 |
|
|
55 |
move.d 0xfedaffaf,r3 |
|
56 |
and.w [r5+],r3 |
|
57 |
test_move_cc 1 0 0 0 |
|
58 |
checkr3 fedaff0f |
|
59 |
|
|
60 |
move.d 0x78134452,r3 |
|
61 |
and.w [r5+],r3 |
|
62 |
test_move_cc 0 0 0 0 |
|
63 |
checkr3 78134400 |
|
64 |
|
|
65 |
moveq -1,r3 |
|
66 |
and.b [r5],r3 |
|
67 |
test_move_cc 0 0 0 0 |
|
68 |
addq 1,r5 |
|
69 |
checkr3 ffffff02 |
|
70 |
|
|
71 |
moveq 2,r3 |
|
72 |
and.b [r5+],r3 |
|
73 |
test_move_cc 0 0 0 0 |
|
74 |
checkr3 2 |
|
75 |
|
|
76 |
move.d 0xfa7,r3 |
|
77 |
and.b [r5+],r3 |
|
78 |
test_move_cc 0 0 0 0 |
|
79 |
checkr3 f02 |
|
80 |
|
|
81 |
move.d 0x78134453,r3 |
|
82 |
and.b [r5+],r3 |
|
83 |
test_move_cc 0 0 0 0 |
|
84 |
checkr3 78134401 |
|
85 |
|
|
86 |
and.b [r5],r3 |
|
87 |
test_move_cc 0 1 0 0 |
|
88 |
checkr3 78134400 |
|
89 |
|
|
90 |
quit |
b/tests/cris/check_andq.s | ||
---|---|---|
1 |
# mach: crisv0 crisv3 crisv8 crisv10 crisv32 |
|
2 |
# output: 2\n2\nffff\nffffffff\n1f\nffffffe0\n78134452\n0\n |
|
3 |
|
|
4 |
.include "testutils.inc" |
|
5 |
start |
|
6 |
moveq -1,r3 |
|
7 |
andq 2,r3 |
|
8 |
test_move_cc 0 0 0 0 |
|
9 |
checkr3 2 |
|
10 |
|
|
11 |
moveq 2,r3 |
|
12 |
andq -1,r3 |
|
13 |
test_move_cc 0 0 0 0 |
|
14 |
checkr3 2 |
|
15 |
|
|
16 |
move.d 0xffff,r3 |
|
17 |
andq -1,r3 |
|
18 |
test_move_cc 0 0 0 0 |
|
19 |
checkr3 ffff |
|
20 |
|
|
21 |
moveq -1,r3 |
|
22 |
andq -1,r3 |
|
23 |
test_move_cc 1 0 0 0 |
|
24 |
checkr3 ffffffff |
|
25 |
|
|
26 |
moveq -1,r3 |
|
27 |
andq 31,r3 |
|
28 |
test_move_cc 0 0 0 0 |
|
29 |
checkr3 1f |
|
30 |
|
|
31 |
moveq -1,r3 |
|
32 |
andq -32,r3 |
|
33 |
test_move_cc 1 0 0 0 |
|
34 |
checkr3 ffffffe0 |
|
35 |
|
|
36 |
move.d 0x78134457,r3 |
|
37 |
andq -14,r3 |
|
38 |
test_move_cc 0 0 0 0 |
|
39 |
checkr3 78134452 |
|
40 |
|
|
41 |
moveq 0,r3 |
|
42 |
andq -14,r3 |
Also available in: Unified diff