1 # Blackfin testcase for CC/A0/A1 compares
5 .include "testutils.inc"
9 /* Clear ASTAT before test */
10 #define CHECK_ASTAT(op, exp) ASTAT = R2; CC = A0 op A1; check_astat exp
11 .macro check_astat exp:req
18 .macro _acc_test exp_eq:req, exp_le:req, exp_lt:req
19 CHECK_ASTAT(==, \exp_eq)
20 CHECK_ASTAT(<=, \exp_le)
21 CHECK_ASTAT(<, \exp_lt)
28 .macro acc_test acc0:req, acc1:req, eq:req, le:req, lt:req
31 _acc_test \eq, \le, \lt
34 .macro acc_ex_test a0x:req, a0w:req, a1x:req, a1w:req, eq:req, le:req, lt:req
43 _acc_test \eq, \le, \lt
46 # Keep R2 with a value of 0
49 #define _EQ _AC0|_CC|_AC0_COPY|_AZ, _AC0|_CC|_AC0_COPY|_AZ, _AC0| _AC0_COPY|_AZ
50 #define _POS_GT _AN, _CC| _AN, _CC| _AN
51 #define _POS_LT _AC0| _AC0_COPY , _AC0| _AC0_COPY , _AC0| _AC0_COPY
52 #define _NEG_GT _AC0| _AC0_COPY|_AN, _AC0|_CC|_AC0_COPY|_AN, _AC0|_CC|_AC0_COPY|_AN
53 #define _NEG_LT 0, 0, 0
55 # Simple tests around zero
57 acc_test 0, 1, _POS_GT
58 acc_test 0, 10000, _POS_GT
59 acc_test 1, 0, _POS_LT
60 acc_test 10000, 0, _POS_LT
61 acc_test 0, -1, _NEG_LT
62 acc_test 0, -10000, _NEG_LT
63 acc_test -1, 0, _NEG_GT
64 acc_test -10000, 0, _NEG_GT
66 # Simple positive-only tests
68 acc_test 10000, 10000, _EQ
69 acc_test 1, 2, _POS_GT
70 acc_test 1, 20000, _POS_GT
71 acc_test 2, 1, _POS_LT
72 acc_test 20000, 1, _POS_LT
74 # Simple negative-only tests
76 acc_test -10000, -10000, _EQ
77 acc_test -1, -2, _POS_LT
78 acc_test -1, -20000, _POS_LT
79 acc_test -2, -1, _POS_GT
80 acc_test -20000, -1, _POS_GT
82 # Simple postitive/negative tests
83 acc_test 1, -1, _NEG_LT
84 acc_test -1, 1, _NEG_GT
85 acc_test 1, -10000, _NEG_LT
86 acc_test -10000, 1, _NEG_GT
87 acc_test -1, 10000, _NEG_GT
88 acc_test 10000, -1, _NEG_LT
89 acc_test -10000, 10000, _NEG_GT
90 acc_test 10000, -10000, _NEG_LT
93 #define MAX_POS 0x7f, 0xffffffff
94 #define MAX_NEG 0x80, 0x00000000
95 acc_ex_test 0, 0, MAX_POS, _POS_GT
96 acc_ex_test MAX_POS, 0, 0, _POS_LT
97 acc_ex_test 0, 1, MAX_POS, _POS_GT
98 acc_ex_test MAX_POS, 0, 1, _POS_LT
99 acc_ex_test -1, -1, MAX_POS, _NEG_GT
100 acc_ex_test MAX_POS, -1, -1, _NEG_LT
101 acc_ex_test MAX_POS, MAX_POS, _EQ
102 acc_ex_test 0, 0, MAX_POS, _POS_GT
103 acc_ex_test MAX_POS, 0, 0, _POS_LT
104 acc_ex_test 0, 1, MAX_POS, _POS_GT
105 acc_ex_test MAX_POS, 0, 1, _POS_LT
106 acc_ex_test -1, -1, MAX_POS, _NEG_GT
107 acc_ex_test MAX_POS, -1, -1, _NEG_LT
109 acc_ex_test 0, 0, MAX_NEG, _NEG_LT
110 acc_ex_test MAX_NEG, 0, 0, _NEG_GT
111 acc_ex_test 0, 1, MAX_NEG, _NEG_LT
112 acc_ex_test MAX_NEG, 0, 1, _NEG_GT
113 acc_ex_test -1, -1, MAX_NEG, _POS_LT
114 acc_ex_test MAX_NEG, -1, -1, _POS_GT
115 acc_ex_test MAX_NEG, MAX_NEG, _EQ
116 acc_ex_test 0, 0, MAX_NEG, _NEG_LT
117 acc_ex_test MAX_NEG, 0, 0, _NEG_GT
118 acc_ex_test 0, 1, MAX_NEG, _NEG_LT
119 acc_ex_test MAX_NEG, 0, 1, _NEG_GT
120 acc_ex_test -1, -1, MAX_NEG, _POS_LT
121 acc_ex_test MAX_NEG, -1, -1, _POS_GT
123 acc_ex_test MAX_POS, MAX_NEG, _NEG_LT
124 acc_ex_test MAX_NEG, MAX_POS, _NEG_GT