1# Blackfin testcase for playing with BYTEUNPACK
2# mach: bfin
3
4	.include "testutils.inc"
5
6	start
7
8	.macro _bu_pre_test i0:req, src0:req, src1:req
9	dmm32 I0, \i0
10	imm32 R0, \src0
11	imm32 R1, \src1
12	.endm
13	.macro _bu_chk_test dst0:req, dst1:req
14	imm32 R2, \dst0
15	imm32 R3, \dst1
16	CC = R5 == R2;
17	IF !CC jump 1f;
18	CC = R6 == R3;
19	IF !CC jump 1f;
20	.endm
21	.macro bu_test i0:req, dst0:req, dst1:req, src0:req, src1:req
22	_bu_pre_test \i0, \src0, \src1
23	(R6, R5) = BYTEUNPACK R1:0;
24	_bu_chk_test \dst0, \dst1
25	.endm
26	.macro bu_r_test i0:req, dst0:req, dst1:req, src0:req, src1:req
27	_bu_pre_test \i0, \src0, \src1
28	(R6, R5) = BYTEUNPACK R1:0 (R);
29	_bu_chk_test \dst0, \dst1
30	.endm
31
32	# Taken from PRM
33	bu_test 0, 0x00BA00DD, 0x00BE00EF, 0xBEEFBADD, 0xFEEDFACE
34	bu_test 1, 0x00EF00BA, 0x00CE00BE, 0xBEEFBADD, 0xFEEDFACE
35	bu_test 2, 0x00BE00EF, 0x00FA00CE, 0xBEEFBADD, 0xFEEDFACE
36	bu_test 3, 0x00CE00BE, 0x00ED00FA, 0xBEEFBADD, 0xFEEDFACE
37
38	# Taken from PRM
39	bu_r_test 0, 0x00FA00CE, 0x00FE00ED, 0xBEEFBADD, 0xFEEDFACE
40	bu_r_test 1, 0x00ED00FA, 0x00DD00FE, 0xBEEFBADD, 0xFEEDFACE
41	bu_r_test 2, 0x00FE00ED, 0x00BA00DD, 0xBEEFBADD, 0xFEEDFACE
42	bu_r_test 3, 0x00DD00FE, 0x00EF00BA, 0xBEEFBADD, 0xFEEDFACE
43
44	pass
451:	fail
46