1# Blackfin testcase for BYTEOP3P
2# mach: bfin
3
4	.include "testutils.inc"
5
6	start
7
8	.macro check_it res:req
9	imm32 R7, \res
10	CC = R6 == R7;
11	IF !CC JUMP 1f;
12	.endm
13	.macro test_byteop3p i0:req, i1:req, resL:req, resH:req, resLR:req, resHR:req
14	dmm32 I0, \i0
15	dmm32 I1, \i1
16
17	R6 = BYTEOP3P (R1:0, R3:2) (LO);
18	check_it \resL
19	R6 = BYTEOP3P (R1:0, R3:2) (HI);
20	check_it \resH
21	R6 = BYTEOP3P (R1:0, R3:2) (LO, R);
22	check_it \resLR
23	R6 = BYTEOP3P (R1:0, R3:2) (HI, R);
24	check_it \resHR
25
26	jump 2f;
271:	fail
282:
29	.endm
30
31	imm32 R0, 0x01020304
32	imm32 R1, 0x10203040
33	imm32 R2, 0x0a0b0c0d
34	imm32 R3, 0xa0b0c0d0
35
36	test_byteop3p 0, 0, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
37	test_byteop3p 0, 1, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
38	test_byteop3p 0, 2, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
39	test_byteop3p 0, 3, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
40	test_byteop3p 1, 0, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
41	test_byteop3p 1, 1, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
42	test_byteop3p 1, 2, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
43	test_byteop3p 1, 3, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
44	test_byteop3p 2, 0, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
45	test_byteop3p 2, 1, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
46	test_byteop3p 2, 2, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
47	test_byteop3p 2, 3, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
48	test_byteop3p 3, 0, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
49	test_byteop3p 3, 1, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
50	test_byteop3p 3, 2, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
51	test_byteop3p 3, 3, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
52
53	imm32 R0, ~0x01020304
54	imm32 R1, ~0x10203040
55	imm32 R2, ~0x0a0b0c0d
56	imm32 R3, ~0xa0b0c0d0
57
58	test_byteop3p 0, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000
59	test_byteop3p 0, 1, 0x00000000, 0x00000000, 0x00000000, 0x00000000
60	test_byteop3p 0, 2, 0x00000000, 0x00000000, 0x00000000, 0x00000000
61	test_byteop3p 0, 3, 0x00000000, 0x00000000, 0x00000000, 0x00000000
62	test_byteop3p 1, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000
63	test_byteop3p 1, 1, 0x00000000, 0x00000000, 0x00000000, 0x00000000
64	test_byteop3p 1, 2, 0x00000000, 0x00000000, 0x00000000, 0x00000000
65	test_byteop3p 1, 3, 0x00000000, 0x00000000, 0x00000000, 0x00000000
66	test_byteop3p 2, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000
67	test_byteop3p 2, 1, 0x00000000, 0x00000000, 0x00000000, 0x00000000
68	test_byteop3p 2, 2, 0x00000000, 0x00000000, 0x00000000, 0x00000000
69	test_byteop3p 2, 3, 0x00000000, 0x00000000, 0x00000000, 0x00000000
70	test_byteop3p 3, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000
71	test_byteop3p 3, 1, 0x00000000, 0x00000000, 0x00000000, 0x00000000
72	test_byteop3p 3, 2, 0x00000000, 0x00000000, 0x00000000, 0x00000000
73	test_byteop3p 3, 3, 0x00000000, 0x00000000, 0x00000000, 0x00000000
74
75	imm32 R0, 0x00010002
76	imm32 R1, 0x00030004
77	imm32 R2, 0x10203040
78	imm32 R3, 0x50607080
79
80	test_byteop3p 0, 0, 0x00110032, 0x21004200, 0x00530074, 0x63008400
81	test_byteop3p 0, 1, 0x00810022, 0x11003200, 0x00430064, 0x53007400
82	test_byteop3p 0, 2, 0x00710012, 0x81002200, 0x00330054, 0x43006400
83	test_byteop3p 0, 3, 0x00610082, 0x71001200, 0x00230044, 0x33005400
84	test_byteop3p 1, 0, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
85	test_byteop3p 1, 1, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
86	test_byteop3p 1, 2, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
87	test_byteop3p 1, 3, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
88	test_byteop3p 2, 0, 0x00140031, 0x24004100, 0x00520073, 0x62008300
89	test_byteop3p 2, 1, 0x00840021, 0x14003100, 0x00420063, 0x52007300
90	test_byteop3p 2, 2, 0x00740011, 0x84002100, 0x00320053, 0x42006300
91	test_byteop3p 2, 3, 0x00640081, 0x74001100, 0x00220043, 0x32005300
92	test_byteop3p 3, 0, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
93	test_byteop3p 3, 1, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
94	test_byteop3p 3, 2, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
95	test_byteop3p 3, 3, 0x00ff00ff, 0xff00ff00, 0x00ff00ff, 0xff00ff00
96
97	imm32 R0, 0x00100200
98	imm32 R1, 0x30000040
99	imm32 R2, 0x1a2b3c4d
100	imm32 R3, 0x5e6f7a8b
101
102	test_byteop3p 0, 0, 0x002a00ff, 0x3b00ff00, 0x00ff00ba, 0xff00cb00
103	test_byteop3p 0, 1, 0x009b00ff, 0x2a00ff00, 0x00ff00af, 0xff00ba00
104	test_byteop3p 0, 2, 0x008a00ff, 0x9b00ff00, 0x00ff009e, 0xff00af00
105	test_byteop3p 0, 3, 0x007f00ff, 0x8a00ff00, 0x00ff008d, 0xff009e00
106	test_byteop3p 1, 0, 0x00ff00ff, 0xff00ff00, 0x008e007a, 0x9f008b00
107	test_byteop3p 1, 1, 0x00ff00ff, 0xff00ff00, 0x007d006f, 0x8e007a00
108	test_byteop3p 1, 2, 0x00ff00ff, 0xff00ff00, 0x006c005e, 0x7d006f00
109	test_byteop3p 1, 3, 0x00ff00ff, 0xff00ff00, 0x005b004d, 0x6c005e00
110	test_byteop3p 2, 0, 0x005a004c, 0x6b005d00, 0x00ff00ff, 0xff00ff00
111	test_byteop3p 2, 1, 0x00cb003b, 0x5a004c00, 0x00ff00ff, 0xff00ff00
112	test_byteop3p 2, 2, 0x00ba002a, 0xcb003b00, 0x00ff00ff, 0xff00ff00
113	test_byteop3p 2, 3, 0x00af009b, 0xba002a00, 0x00ff00ff, 0xff00ff00
114	test_byteop3p 3, 0, 0x001a00ff, 0x2b00ff00, 0x00ff00aa, 0xff00bb00
115	test_byteop3p 3, 1, 0x008b00ff, 0x1a00ff00, 0x00ff009f, 0xff00aa00
116	test_byteop3p 3, 2, 0x007a00ff, 0x8b00ff00, 0x00ff008e, 0xff009f00
117	test_byteop3p 3, 3, 0x006f00ff, 0x7a00ff00, 0x00ff007d, 0xff008e00
118
119	pass
120