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