1 1.1 christos // Immediate dual 16b SHIFT test program. 2 1.1 christos // Test r4 = ASHIFT/ASHIFT (r2 by 10); 3 1.1 christos // Test r4 = ASHIFT/ASHIFT (r2 by 10) S; 4 1.1 christos // Test r4 = LSHIFT/LSHIFT (r2 by 10); 5 1.1 christos # mach: bfin 6 1.1 christos 7 1.1 christos .include "testutils.inc" 8 1.1 christos start 9 1.1 christos 10 1.1 christos 11 1.1 christos // arithmetic 12 1.1 christos // left by largest positive magnitude of 15 (0xf) 13 1.1 christos // 8001 -> 8000 14 1.1 christos R7 = 0; 15 1.1 christos ASTAT = R7; 16 1.1 christos R0.L = 0x8001; 17 1.1 christos R0.H = 0x0100; 18 1.1 christos R6 = R0 << 15 (V); 19 1.1 christos DBGA ( R6.L , 0x8000 ); 20 1.1 christos DBGA ( R6.H , 0x0000 ); 21 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 ); 22 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 23 1.1 christos CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 24 1.1 christos CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 ); 25 1.1 christos CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 26 1.1 christos 27 1.1 christos // arithmetic 28 1.1 christos // left by largest positive magnitude of 15 (0xf) with saturation 29 1.1 christos R7 = 0; 30 1.1 christos ASTAT = R7; 31 1.1 christos R0.L = 0x8001; 32 1.1 christos R0.H = 0x0100; 33 1.1 christos R6 = R0 << 15 (V , S); 34 1.1 christos DBGA ( R6.L , 0x8000 ); 35 1.1 christos DBGA ( R6.H , 0x7fff ); 36 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 37 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 38 1.1 christos CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 39 1.1 christos CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 ); 40 1.1 christos CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 41 1.1 christos 42 1.1 christos // arithmetic 43 1.1 christos // left by 1 44 1.1 christos R7 = 0; 45 1.1 christos ASTAT = R7; 46 1.1 christos R0.L = 0x8001; 47 1.1 christos R0.H = 0x0100; 48 1.1 christos R6 = R0 << 1 (V); 49 1.1 christos DBGA ( R6.L , 0x0002 ); 50 1.1 christos DBGA ( R6.H , 0x0200 ); 51 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 52 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 53 1.1 christos CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 54 1.1 christos CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 ); 55 1.1 christos CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 56 1.1 christos 57 1.1 christos // arithmetic 58 1.1 christos // left by 1 saturating 59 1.1 christos R7 = 0; 60 1.1 christos ASTAT = R7; 61 1.1 christos R0.L = 0x8001; 62 1.1 christos R0.H = 0x0100; 63 1.1 christos R6 = R0 << 1 (V , S); 64 1.1 christos DBGA ( R6.L , 0x8000 ); 65 1.1 christos DBGA ( R6.H , 0x0200 ); 66 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 67 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 68 1.1 christos CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 69 1.1 christos CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 ); 70 1.1 christos CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 71 1.1 christos 72 1.1 christos // arithmetic 73 1.1 christos // left by 15 saturating 74 1.1 christos R7 = 0; 75 1.1 christos ASTAT = R7; 76 1.1 christos R0.L = 0xfff0; 77 1.1 christos R0.H = 0x0000; 78 1.1 christos R6 = R0 << 15 (V , S); 79 1.1 christos DBGA ( R6.L , 0x8000 ); 80 1.1 christos DBGA ( R6.H , 0x0000 ); 81 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 ); 82 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 83 1.1 christos CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 84 1.1 christos CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 ); 85 1.1 christos CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 86 1.1 christos 87 1.1 christos // arithmetic 88 1.1 christos // right by 15 89 1.1 christos R7 = 0; 90 1.1 christos ASTAT = R7; 91 1.1 christos R0.L = 0x8000; 92 1.1 christos R0.H = 0x0100; 93 1.1 christos R6 = R0 >>> 15 (V); 94 1.1 christos DBGA ( R6.L , 0xffff ); 95 1.1 christos DBGA ( R6.H , 0x0000 ); 96 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 ); 97 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 98 1.1 christos CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 99 1.1 christos CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 ); 100 1.1 christos CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 101 1.1 christos 102 1.1 christos // arithmetic 103 1.1 christos // right by 15 (sat has no effect) 104 1.1 christos R7 = 0; 105 1.1 christos ASTAT = R7; 106 1.1 christos R0.L = 0x8000; 107 1.1 christos R0.H = 0x0100; 108 1.1 christos R6 = R0 >>> 15 (V); 109 1.1 christos DBGA ( R6.L , 0xffff ); 110 1.1 christos DBGA ( R6.H , 0x0000 ); 111 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 ); 112 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 113 1.1 christos CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 114 1.1 christos CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 ); 115 1.1 christos CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 116 1.1 christos 117 1.1 christos // logic 118 1.1 christos // right by 15 119 1.1 christos R7 = 0; 120 1.1 christos ASTAT = R7; 121 1.1 christos R0.L = 0x8000; 122 1.1 christos R0.H = 0x0100; 123 1.1 christos R6 = R0 >> 15 (V); 124 1.1 christos DBGA ( R6.L , 0x0001 ); 125 1.1 christos DBGA ( R6.H , 0x0000 ); 126 1.1 christos CC = AZ; R7 = CC; DBGA ( R7.L , 0x1 ); 127 1.1 christos CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 128 1.1 christos CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 129 1.1 christos CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 ); 130 1.1 christos CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 131 1.1 christos 132 1.1 christos pass 133