1# Verify registers saturate and ASTAT bits are updated correctly
2# with the RND12 subtract insn
3# mach: bfin
4#include "test.h"
5.include "testutils.inc"
6
7	start
8
9	dmm32 ASTAT, (0x24a00410 | _VS | _AV1S | _AV0 | _AC0 | _AC0_COPY | _AN);
10	imm32 R5, 0x0fb35119;
11	imm32 R6, 0xffffffff;
12	imm32 R7, 0x80000000;
13	R6.H = R5 - R7 (RND12);
14	checkreg R6, 0x7fffffff;
15	checkreg ASTAT, (0x24a00410 | _VS | _V | _AV1S | _AV0 | _AC0 | _V_COPY | _AC0_COPY);
16
17	dmm32 ASTAT, (0x08c08000 | _VS | _AV0S | _AC0 | _AQ | _CC | _AC0_COPY);
18	imm32 R3, 0x80003f8f;
19	imm32 R5, 0x6267c92c;
20	imm32 R6, 0x80000000;
21	R5.L = R3 - R6 (RND12);
22	checkreg R5, 0x62670004;
23	checkreg ASTAT, (0x08c08000 | _VS | _AV0S | _AC0 | _AQ | _CC | _AC0_COPY);
24
25	dmm32 ASTAT, (0x04200c10 | _VS | _V | _AV1S | _AV0S | _AC1 | _AC0 | _AQ | _V_COPY);
26	imm32 R1, 0x7fff0000;
27	imm32 R5, 0x80000000;
28	R1.L = R5 - R5 (RND12);
29	checkreg ASTAT, (0x04200c10 | _VS | _AV1S | _AV0S | _AC1 | _AC0 | _AQ | _AZ);
30	checkreg R1, 0x7fff0000;
31	checkreg R5, 0x80000000;
32
33	dmm32 ASTAT, (0x40600e90 | _VS | _AV1S | _AV0S | _AQ | _CC);
34	imm32 R1, 0x80000000;
35	imm32 R5, 0x00008000;
36	imm32 R6, 0x00000000;
37	R5.L = R6 - R1 (RND12);
38	checkreg R5, 0x00007fff;
39	checkreg ASTAT, (0x40600e90 | _VS | _V | _AV1S | _AV0S | _AQ | _CC | _V_COPY);
40
41	dmm32 ASTAT, (0x68300880 | _VS | _AV1S | _AV0S | _AC1 | _AC0 | _AQ | _AC0_COPY | _AZ);
42	imm32 R1, 0xf8ed0000;
43	imm32 R6, 0x80000000;
44	R1.H = R1 - R6 (RND12);
45	checkreg R1, 0x7fff0000;
46	checkreg ASTAT, (0x68300880 | _VS | _V | _AV1S | _AV0S | _AC1 | _AC0 | _AQ | _V_COPY | _AC0_COPY);
47
48	dmm32 ASTAT, (0x70d0c410 | _VS | _AV0S | _AQ);
49	imm32 R0, 0x80000000;
50	imm32 R1, 0x71455f95;
51	imm32 R4, 0xd4871012;
52	R4.H = R1 - R0 (RND12);
53	checkreg R4, 0x7fff1012;
54	checkreg ASTAT, (0x70d0c410 | _VS | _V | _AV0S | _AQ | _V_COPY);
55
56	dmm32 ASTAT, (0x34500e00 | _VS | _AV0S | _AC1 | _CC | _AZ);
57	imm32 R2, 0x00000000;
58	imm32 R5, 0x00000000;
59	imm32 R6, 0x80000000;
60	R2.L = R5 - R6 (RND12);
61	checkreg R2, 0x00007fff;
62	checkreg ASTAT, (0x34500e00 | _VS | _V | _AV0S | _AC1 | _CC | _V_COPY);
63
64	pass
65