1//Original:/testcases/core/c_logi2op_arith_shft/c_logi2op_arith_shft.dsp 2// Spec Reference: Logi2op >>>= 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 9 10 11 12// Arithmetic >>>= : negative data 13// bit 0-7 14imm32 r0, 0x81111111; 15imm32 r1, 0x81111111; 16imm32 r2, 0x81111111; 17imm32 r3, 0x81111111; 18imm32 r4, 0x81111111; 19imm32 r5, 0x81111111; 20imm32 r6, 0x81111111; 21imm32 r7, 0x81111111; 22R0 >>>= 0; /* r0 = 0x81111111 */ 23R1 >>>= 1; /* r1 = 0xC0888888 */ 24R2 >>>= 2; /* r2 = 0xE0444444 */ 25R3 >>>= 3; /* r3 = 0xF0222222 */ 26R4 >>>= 4; /* r4 = 0xF8111111 */ 27R5 >>>= 5; /* r5 = 0xFC088888 */ 28R6 >>>= 6; /* r6 = 0xFE044444 */ 29R7 >>>= 7; /* r7 = 0xFF022222 */ 30CHECKREG r0, 0x81111111; 31CHECKREG r1, 0xC0888888; 32CHECKREG r2, 0xE0444444; 33CHECKREG r3, 0xF0222222; 34CHECKREG r4, 0xF8111111; 35CHECKREG r5, 0xFC088888; 36CHECKREG r6, 0xFE044444; 37CHECKREG r7, 0xFF022222; 38 39// bit 8-15 40imm32 r0, 0x82222222; 41imm32 r1, 0x82222222; 42imm32 r2, 0x82222222; 43imm32 r3, 0x82222222; 44imm32 r4, 0x82222222; 45imm32 r5, 0x82222222; 46imm32 r6, 0x82222222; 47imm32 r7, 0x82222222; 48R0 >>>= 8; /* r0 = 0xFF822222 */ 49R1 >>>= 9; /* r1 = 0xFFC11111 */ 50R2 >>>= 10; /* r2 = 0xFFE08888 */ 51R3 >>>= 11; /* r3 = 0xFFF04444 */ 52R4 >>>= 12; /* r4 = 0xFFF82222 */ 53R5 >>>= 13; /* r5 = 0xFFFC1111 */ 54R6 >>>= 14; /* r6 = 0xFFFE0888 */ 55R7 >>>= 15; /* r7 = 0xFFFF0444 */ 56CHECKREG r0, 0xFF822222; 57CHECKREG r1, 0xFFC11111; 58CHECKREG r2, 0xFFE08888; 59CHECKREG r3, 0xFFF04444; 60CHECKREG r4, 0xFFF82222; 61CHECKREG r5, 0xFFFC1111; 62CHECKREG r6, 0xFFFE0888; 63CHECKREG r7, 0xFFFF0444; 64 65// bit 16-23 66imm32 r0, 0x83333333; 67imm32 r1, 0x83333333; 68imm32 r2, 0x83333333; 69imm32 r3, 0x83333333; 70imm32 r4, 0x83333333; 71imm32 r5, 0x83333333; 72imm32 r6, 0x83333333; 73imm32 r7, 0x83333333; 74R0 >>>= 16; /* r0 = 0xFFFF8333 */ 75R1 >>>= 17; /* r1 = 0xFFFFC199 */ 76R2 >>>= 18; /* r2 = 0xFFFFE0CC */ 77R3 >>>= 19; /* r3 = 0xFFFFF066 */ 78R4 >>>= 20; /* r4 = 0xFFFFF833 */ 79R5 >>>= 21; /* r5 = 0xFFFFFC19 */ 80R6 >>>= 22; /* r6 = 0xFFFFFE0C */ 81R7 >>>= 23; /* r7 = 0xFFFFFF06 */ 82CHECKREG r0, 0xFFFF8333; 83CHECKREG r1, 0xFFFFC199; 84CHECKREG r2, 0xFFFFE0CC; 85CHECKREG r3, 0xFFFFF066; 86CHECKREG r4, 0xFFFFF833; 87CHECKREG r5, 0xFFFFFC19; 88CHECKREG r6, 0xFFFFFE0C; 89CHECKREG r7, 0xFFFFFF06; 90 91// bit 24-31 92imm32 r0, 0x84444444; 93imm32 r1, 0x84444444; 94imm32 r2, 0x84444444; 95imm32 r3, 0x84444444; 96imm32 r4, 0x84444444; 97imm32 r5, 0x84444444; 98imm32 r6, 0x84444444; 99imm32 r7, 0x84444444; 100R0 >>>= 24; /* r0 = 0xFFFFFF84 */ 101R1 >>>= 25; /* r1 = 0xFFFFFFC2 */ 102R2 >>>= 26; /* r2 = 0xFFFFFFE1 */ 103R3 >>>= 27; /* r3 = 0xFFFFFFF0 */ 104R4 >>>= 28; /* r4 = 0xFFFFFFF8 */ 105R5 >>>= 29; /* r5 = 0xFFFFFFFC */ 106R6 >>>= 30; /* r6 = 0xFFFFFFFE */ 107R7 >>>= 31; /* r7 = 0xFFFFFFFF */ 108CHECKREG r0, 0xFFFFFF84; 109CHECKREG r1, 0xFFFFFFC2; 110CHECKREG r2, 0xFFFFFFE1; 111CHECKREG r3, 0xFFFFFFF0; 112CHECKREG r4, 0xFFFFFFF8; 113CHECKREG r5, 0xFFFFFFFC; 114CHECKREG r6, 0xFFFFFFFE; 115CHECKREG r7, 0xFFFFFFFF; 116 117// Arithmetic >>>= : positive data 118// bit 0-7 119imm32 r0, 0x41111111; 120imm32 r1, 0x41111111; 121imm32 r2, 0x41111111; 122imm32 r3, 0x41111111; 123imm32 r4, 0x41111111; 124imm32 r5, 0x41111111; 125imm32 r6, 0x41111111; 126imm32 r7, 0x41111111; 127R0 >>>= 0; /* r0 = 0x41111111 */ 128R1 >>>= 1; /* r1 = 0x20888888 */ 129R2 >>>= 2; /* r2 = 0x10444444 */ 130R3 >>>= 3; /* r3 = 0x08222222 */ 131R4 >>>= 4; /* r4 = 0x04111111 */ 132R5 >>>= 5; /* r5 = 0x02088888 */ 133R6 >>>= 6; /* r6 = 0x01044444 */ 134R7 >>>= 7; /* r7 = 0x00822222 */ 135CHECKREG r0, 0x41111111; 136CHECKREG r1, 0x20888888; 137CHECKREG r2, 0x10444444; 138CHECKREG r3, 0x08222222; 139CHECKREG r4, 0x04111111; 140CHECKREG r5, 0x02088888; 141CHECKREG r6, 0x01044444; 142CHECKREG r7, 0x00822222; 143 144// bit 8-15 145imm32 r0, 0x42222222; 146imm32 r1, 0x42222222; 147imm32 r2, 0x42222222; 148imm32 r3, 0x42222222; 149imm32 r4, 0x42222222; 150imm32 r5, 0x42222222; 151imm32 r6, 0x42222222; 152imm32 r7, 0x42222222; 153R0 >>>= 8; /* r0 = 0x00422222 */ 154R1 >>>= 9; /* r1 = 0x00211111 */ 155R2 >>>= 10; /* r2 = 0x00108888 */ 156R3 >>>= 11; /* r3 = 0x00084444 */ 157R4 >>>= 12; /* r4 = 0x00042222 */ 158R5 >>>= 13; /* r5 = 0x00021111 */ 159R6 >>>= 14; /* r6 = 0x00010888 */ 160R7 >>>= 15; /* r7 = 0x00008444 */ 161CHECKREG r0, 0x00422222; 162CHECKREG r1, 0x00211111; 163CHECKREG r2, 0x00108888; 164CHECKREG r3, 0x00084444; 165CHECKREG r4, 0x00042222; 166CHECKREG r5, 0x00021111; 167CHECKREG r6, 0x00010888; 168CHECKREG r7, 0x00008444; 169 170// bit 16-23 171imm32 r0, 0x43333333; 172imm32 r1, 0x43333333; 173imm32 r2, 0x43333333; 174imm32 r3, 0x43333333; 175imm32 r4, 0x43333333; 176imm32 r5, 0x43333333; 177imm32 r6, 0x43333333; 178imm32 r7, 0x43333333; 179R0 >>>= 16; /* r0 = 0x00004333 */ 180R1 >>>= 17; /* r1 = 0x00002199 */ 181R2 >>>= 18; /* r2 = 0x000010CC */ 182R3 >>>= 19; /* r3 = 0x00000866 */ 183R4 >>>= 20; /* r4 = 0x00000433 */ 184R5 >>>= 21; /* r5 = 0x00000219 */ 185R6 >>>= 22; /* r6 = 0x0000010C */ 186R7 >>>= 23; /* r7 = 0x00000086 */ 187CHECKREG r0, 0x00004333; 188CHECKREG r1, 0x00002199; 189CHECKREG r2, 0x000010CC; 190CHECKREG r3, 0x00000866; 191CHECKREG r4, 0x00000433; 192CHECKREG r5, 0x00000219; 193CHECKREG r6, 0x0000010C; 194CHECKREG r7, 0x00000086; 195 196// bit 24-31 197imm32 r0, 0x44444444; 198imm32 r1, 0x44444444; 199imm32 r2, 0x44444444; 200imm32 r3, 0x44444444; 201imm32 r4, 0x44444444; 202imm32 r5, 0x44444444; 203imm32 r6, 0x44444444; 204imm32 r7, 0x44444444; 205R0 >>>= 24; /* r0 = 0x00000044 */ 206R1 >>>= 25; /* r1 = 0x00000022 */ 207R2 >>>= 26; /* r2 = 0x00000011 */ 208R3 >>>= 27; /* r3 = 0x00000008 */ 209R4 >>>= 28; /* r4 = 0x00000004 */ 210R5 >>>= 29; /* r5 = 0x00000002 */ 211R6 >>>= 30; /* r6 = 0x00000001 */ 212R7 >>>= 31; /* r7 = 0x00000000 */ 213CHECKREG r0, 0x00000044; 214CHECKREG r1, 0x00000022; 215CHECKREG r2, 0x00000011; 216CHECKREG r3, 0x00000008; 217CHECKREG r4, 0x00000004; 218CHECKREG r5, 0x00000002; 219CHECKREG r6, 0x00000001; 220CHECKREG r7, 0x00000000; 221 222 223pass 224