1/* ALU test program. 2 * Test instructions 3 * r3= + (r0,r0); 4 * r3= + (r0,r0) s; 5 * r3= - (r0,r0); 6 * r3= - (r0,r0) s; 7 */ 8# mach: bfin 9 10.include "testutils.inc" 11 start 12 13 14// overflow positive 15 R0.L = 0xffff; 16 R0.H = 0x7fff; 17 R7 = 0; 18 ASTAT = R7; 19 R3 = R0 + R0 (NS); 20 DBGA ( R3.L , 0xfffe ); 21 DBGA ( R3.H , 0xffff ); 22 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 23 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 24 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 25 CC = VS; R7 = CC; DBGA ( R7.L , 0x1 ); 26 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 27 28// overflow negative 29 R0.L = 0x0000; 30 R0.H = 0x8000; 31 R7 = 0; 32 ASTAT = R7; 33 R3 = R0 + R0 (NS); 34 DBGA ( R3.L , 0x0000 ); 35 DBGA ( R3.H , 0x0000 ); 36 CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 ); 37 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 38 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 39 CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 ); 40 41// zero 42 R0.L = 0xffff; 43 R0.H = 0xffff; 44 R1.L = 0x0001; 45 R1.H = 0x0000; 46 R7 = 0; 47 ASTAT = R7; 48 R3 = R1 + R0 (NS); 49 DBGA ( R3.L , 0x0000 ); 50 DBGA ( R3.H , 0x0000 ); 51 CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 ); 52 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 53 CC = V; R7 = CC; DBGA ( R7.L , 0x0 ); 54 CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 ); 55 56// saturate positive 57 R0.L = 0; 58 R0.H = 0x7fff; 59 R7 = 0; 60 ASTAT = R7; 61 R3 = R0 + R0 (S); 62 DBGA ( R3.L , 0xffff ); 63 DBGA ( R3.H , 0x7fff ); 64 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 65 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 66 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 67 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 68 69// saturate negative 70 R0.L = 0; 71 R0.H = 0x8000; 72 R7 = 0; 73 ASTAT = R7; 74 R3 = R0 + R0 (S); 75 DBGA ( R3.L , 0x0000 ); 76 DBGA ( R3.H , 0x8000 ); 77 78 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 79 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 80 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 81 CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 ); 82 83// saturate positive with subtraction 84 R0.L = 0xffff; 85 R0.H = 0xffff; 86 R1.L = 0xffff; 87 R1.H = 0x7fff; 88 R7 = 0; 89 ASTAT = R7; 90 R3 = R1 - R0 (S); 91 DBGA ( R3.L , 0xffff ); 92 DBGA ( R3.H , 0x7fff ); 93 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 94 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 95 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 96 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 97 98// saturate negative with subtraction 99 R0.L = 0x1; 100 R0.H = 0x0; 101 R1.L = 0x0000; 102 R1.H = 0x8000; 103 R7 = 0; 104 ASTAT = R7; 105 R3 = R1 - R0 (S); 106 DBGA ( R3.L , 0x0000 ); 107 DBGA ( R3.H , 0x8000 ); 108 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 109 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 110 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 111 CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 ); 112 113 pass 114