1// ALU test program. 2// Test instructions 3// r7 = +/+ (r0,r1); 4// r7 = +/+ (r0,r1) s; 5// r7 = +/+ (r0,r1) sx; 6# mach: bfin 7 8.include "testutils.inc" 9 start 10 11 12// one result overflows positive 13 R0.L = 0x0001; 14 R0.H = 0x0010; 15 R1.L = 0x7fff; 16 R1.H = 0x0010; 17 R7 = 0; 18 ASTAT = R7; 19 R7 = R0 +|+ R1; 20 DBGA ( R7.L , 0x8000 ); 21 DBGA ( R7.H , 0x0020 ); 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 = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 26 27// one result overflows negative 28 R0.L = 0xffff; 29 R0.H = 0x0010; 30 R1.L = 0x8000; 31 R1.H = 0x0010; 32 R7 = 0; 33 ASTAT = R7; 34 R7 = R0 +|+ R1; 35 DBGA ( R7.L , 0x7fff ); 36 DBGA ( R7.H , 0x0020 ); 37 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 38 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 39 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 40 CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 ); 41 42// one result zero 43 R0.L = 0x0001; 44 R0.H = 0xffff; 45 R1.L = 0x0001; 46 R1.H = 0x0001; 47 R7 = 0; 48 ASTAT = R7; 49 R7 = R0 +|+ R1; 50 DBGA ( R7.L , 0x0002 ); 51 DBGA ( R7.H , 0x0000 ); 52 CC = AZ; R5 = CC; DBGA ( R5.L , 0x1 ); 53 CC = AN; R5 = CC; DBGA ( R5.L , 0x0 ); 54 CC = V; R5 = CC; DBGA ( R5.L , 0x0 ); 55 CC = AC0; R5 = CC; DBGA ( R5.L , 0x0 ); 56 57// one result saturates positive 58 R0.L = 0x0001; 59 R0.H = 0x0010; 60 R1.L = 0x7fff; 61 R1.H = 0x0010; 62 R7 = 0; 63 ASTAT = R7; 64 R7 = R0 +|+ R1 (S); 65 DBGA ( R7.L , 0x7fff ); 66 DBGA ( R7.H , 0x0020 ); 67 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 68 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 69 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 70 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 71 72// one result saturates negative 73 R0.L = 0xffff; 74 R0.H = 0x0010; 75 R1.L = 0x8000; 76 R1.H = 0x0010; 77 R7 = 0; 78 ASTAT = R7; 79 R7 = R0 +|+ R1 (S); 80 DBGA ( R7.L , 0x8000 ); 81 DBGA ( R7.H , 0x0020 ); 82 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 83 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 84 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 85 CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 ); 86 87// two results saturates negative 88 R0.L = 0xffff; 89 R0.H = 0xfff0; 90 R1.L = 0x8000; 91 R1.H = 0x8000; 92 R7 = 0; 93 ASTAT = R7; 94 R7 = R0 +|+ R1 (S); 95 DBGA ( R7.L , 0x8000 ); 96 DBGA ( R7.H , 0x8000 ); 97 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 98 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 99 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 100 CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 ); 101 102// one result overflows positive and cross 103 R0.L = 0x0001; 104 R0.H = 0x0010; 105 R1.L = 0x7fff; 106 R1.H = 0x0010; 107 R7 = 0; 108 ASTAT = R7; 109 R7 = R0 +|+ R1 (CO); 110 DBGA ( R7.L , 0x0020 ); 111 DBGA ( R7.H , 0x8000 ); 112 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 113 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 114 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 115 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 116 117// one result saturates negative and cross 118 R0.L = 0xffff; 119 R0.H = 0x0010; 120 R1.L = 0x8000; 121 R1.H = 0x0010; 122 R7 = 0; 123 ASTAT = R7; 124 R7 = R0 +|+ R1 (SCO); 125 DBGA ( R7.L , 0x0020 ); 126 DBGA ( R7.H , 0x8000 ); 127 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 128 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 129 CC = V; R7 = CC; DBGA ( R7.L , 0x1 ); 130 CC = AC0; R7 = CC; DBGA ( R7.L , 0x1 ); 131 132 pass 133