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