1// SHIFT test program. 2// Test A0 = ASHIFT (A0 by r3); 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8// load r0=0x0000001f 9// load r1=0x00000020 10// load r2=0x00000000 11// load r3=0x00000000 12// load r4=0x00000001 13// load r5=0x00000080 14 loadsym P0, data0; 15 P1 = P0; 16 R0 = [ P0 ++ ]; 17 R1 = [ P0 ++ ]; 18 R2 = [ P0 ++ ]; 19 R3 = [ P0 ++ ]; 20 R4 = [ P0 ++ ]; 21 R5 = [ P0 ++ ]; 22 23// left by largest positive magnitude of 31 (0x1f) 24// A0: 80 0000 0001 -> 80 0000 0000 25 R7 = 0; 26 ASTAT = R7; 27 A0.w = R4; 28 A0.x = R5.L; 29 A0 = ASHIFT A0 BY R0.L; 30 R6 = A0.w; 31 R7.L = A0.x; 32 DBGA ( R6.L , 0x0000 ); 33 DBGA ( R6.H , 0x8000 ); 34 DBGA ( R7.L , 0x0000 ); 35 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 36 CC = AN; R7 = CC; DBGA ( R7.L , 0x0 ); 37 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 38 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 ); 39 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 40 41// left by largest positive magnitude + 1 = 32 (0x20), which is -32 42// A0: 80 0000 0001 -> 43 R7 = 0; 44 ASTAT = R7; 45 A0.w = R4; 46 A0.x = R5.L; 47 A0 = ASHIFT A0 BY R1.L; 48 R6 = A0.w; 49 R7.L = A0.x; 50 DBGA ( R6.L , 0xff80 ); 51 DBGA ( R6.H , 0xffff ); 52 DBGA ( R7.L , 0xffff ); 53 CC = AZ; R7 = CC; DBGA ( R7.L , 0x0 ); 54 CC = AN; R7 = CC; DBGA ( R7.L , 0x1 ); 55 CC = AC0; R7 = CC; DBGA ( R7.L , 0x0 ); 56 CC = AV0; R7 = CC; DBGA ( R7.L , 0x0 ); 57 CC = AV1; R7 = CC; DBGA ( R7.L , 0x0 ); 58 59// by -1 60// A0: 80 0000 0001 -> c0 0000 0000 61 A0.w = R4; 62 A0.x = R5.L; 63 64 R3.L = 0x00ff; 65 66 A0 = ASHIFT A0 BY R3.L; 67 R6 = A0.w; 68 R7.L = A0.x; 69 DBGA ( R6.L , 0x0000 ); 70 DBGA ( R6.H , 0x0000 ); 71 DBGA ( R7.L , 0xffc0 ); 72 73 pass 74 75 .data 76data0: 77 .dw 0x001f 78 .dw 0x0000 79 .dw 0x0020 80 .dw 0x0000 81 .dw 0x0059 82 .dw 0x0000 83 .dw 0x005a 84 .dw 0x0000 85 .dw 0x0001 86 .dw 0x0000 87 .dw 0x0080 88 .dw 0x0000 89