1 # Blackfin testcase for insns that implicitly have DISALGNEXCPT behavior
2 # when used in parallel insns
6 .include "testutils.inc"
12 # Set up I0/I1/I2/I3 to be unaligned by 0/1/2/3 bytes
33 #define EXP_VAL 0x12345678
34 #define EXP(r, n) CHECKREG (r, EXP_VAL); r = 0; I##n = B##n
43 R7 = BYTEPACK (R0, R1) || R4 = [I##n]; EXP (R4, n); \
44 R6 = BYTEPACK (R0, R1) || R5 = [I##n ++ M##n]; EXP (R5, n); \
45 R5 = BYTEPACK (R0, R1) || R6 = [I##n++]; EXP (R6, n); \
46 R4 = BYTEPACK (R0, R1) || R7 = [I##n--]; EXP (R7, n);
52 #define BYTEUNPACK(n) \
53 (R7, R5) = BYTEUNPACK R1:0 || R4 = [I##n]; EXP (R4, n); \
54 (R6, R7) = BYTEUNPACK R3:2 || R5 = [I##n ++ M##n]; EXP (R5, n); \
55 (R5, R4) = BYTEUNPACK R1:0 || R6 = [I##n++]; EXP (R6, n); \
56 (R4, R6) = BYTEUNPACK R3:2 || R7 = [I##n--]; EXP (R7, n);
63 SAA (R1:0, R3:2) || R4 = [I##n]; EXP (R4, n); \
64 SAA (R1:0, R3:2) || R5 = [I##n ++ M##n]; EXP (R5, n); \
65 SAA (R1:0, R3:2) || R6 = [I##n++]; EXP (R6, n); \
66 SAA (R1:0, R3:2) || R7 = [I##n--]; EXP (R7, n);
73 R7 = BYTEOP1P (R1:0, R3:2) || R4 = [I##n]; EXP (R4, n); \
74 R6 = BYTEOP1P (R1:0, R3:2) || R5 = [I##n ++ M##n]; EXP (R5, n); \
75 R5 = BYTEOP1P (R1:0, R3:2) || R6 = [I##n++]; EXP (R6, n); \
76 R4 = BYTEOP1P (R1:0, R3:2) || R7 = [I##n--]; EXP (R7, n);
83 R7 = BYTEOP2P (R1:0, R3:2) (TL) || R4 = [I##n]; EXP (R4, n); \
84 R6 = BYTEOP2P (R1:0, R3:2) (TH) || R5 = [I##n ++ M##n]; EXP (R5, n); \
85 R5 = BYTEOP2P (R1:0, R3:2) (RNDL) || R6 = [I##n++]; EXP (R6, n); \
86 R4 = BYTEOP2P (R1:0, R3:2) (RNDH) || R7 = [I##n--]; EXP (R7, n);
93 R7 = BYTEOP3P (R1:0, R3:2) (LO) || R4 = [I##n]; EXP (R4, n); \
94 R6 = BYTEOP3P (R1:0, R3:2) (HI) || R5 = [I##n ++ M##n]; EXP (R5, n); \
95 R5 = BYTEOP3P (R1:0, R3:2) (LO) || R6 = [I##n++]; EXP (R6, n); \
96 R4 = BYTEOP3P (R1:0, R3:2) (HI) || R7 = [I##n--]; EXP (R7, n);
102 #define BYTEOP16P(n) \
103 (R7, R6) = BYTEOP16P (R1:0, R3:2) || R4 = [I##n]; EXP (R4, n); \
104 (R6, R4) = BYTEOP16P (R1:0, R3:2) || R5 = [I##n ++ M##n]; EXP (R5, n); \
105 (R5, R7) = BYTEOP16P (R1:0, R3:2) || R6 = [I##n++]; EXP (R6, n); \
106 (R4, R6) = BYTEOP16P (R1:0, R3:2) || R7 = [I##n--]; EXP (R7, n);
112 #define BYTEOP16M(n) \
113 (R7, R5) = BYTEOP16M (R1:0, R3:2) || R4 = [I##n]; EXP (R4, n); \
114 (R6, R7) = BYTEOP16M (R1:0, R3:2) || R5 = [I##n ++ M##n]; EXP (R5, n); \
115 (R5, R4) = BYTEOP16M (R1:0, R3:2) || R6 = [I##n++]; EXP (R6, n); \
116 (R4, R5) = BYTEOP16M (R1:0, R3:2) || R7 = [I##n--]; EXP (R7, n);