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