1// Test extraction from accumulators: 2// SIGNED FRACTIONAL and SIGNED INT mode into register PAIR with SCALE 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 9// load r0=0x0ffffff0 10// load r1=0x7ffffff0 11// load r2=0x0fffffff 12// load r3=0x80100000 13// load r4=0x000000ff 14 loadsym P0, data0; 15 R0 = [ P0 ++ ]; 16 R1 = [ P0 ++ ]; 17 R2 = [ P0 ++ ]; 18 R3 = [ P0 ++ ]; 19 R4 = [ P0 ++ ]; 20 21// extract 22// 0x000ffffff0 -> 0x1ffffffe0 23 A1 = A0 = 0; 24 A1.w = R0; 25 A0.w = R0; 26 R7 = A1, R6 = A0 (S2RND); 27 DBGA ( R7.L , 0xffe0 ); 28 DBGA ( R7.H , 0x1fff ); 29 DBGA ( R6.L , 0xffe0 ); 30 DBGA ( R6.H , 0x1fff ); 31 32// extract (saturate) 33// 0x007ffffff0 -> 0x7ffffffff 34 A1 = A0 = 0; 35 A1.w = R1; 36 A0.w = R1; 37 R7 = A1, R6 = A0 (S2RND); 38 DBGA ( R7.L , 0xffff ); 39 DBGA ( R7.H , 0x7fff ); 40 DBGA ( R6.L , 0xffff ); 41 DBGA ( R6.H , 0x7fff ); 42 43// extract (saturate negative) 44// 0xff0ffffff0 -> 0x80000000 45 A1 = A0 = 0; 46 A1.w = R0; 47 A0.w = R0; 48 A1.x = R4.L; 49 A0.x = R4.L; 50 R7 = A1, R6 = A0 (S2RND); 51 DBGA ( R7.L , 0x0000 ); 52 DBGA ( R7.H , 0x8000 ); 53 DBGA ( R6.L , 0x0000 ); 54 DBGA ( R6.H , 0x8000 ); 55 56// extract int 57// 0x000ffffff0 -> 0x1ffffffe0 58 A1 = A0 = 0; 59 A1.w = R0; 60 A0.w = R0; 61 R7 = A1, R6 = A0 (ISS2); 62 DBGA ( R7.L , 0xffe0 ); 63 DBGA ( R7.H , 0x1fff ); 64 DBGA ( R6.L , 0xffe0 ); 65 DBGA ( R6.H , 0x1fff ); 66 67 pass 68 69 .data 70data0: 71 .dw 0xfff0 72 .dw 0x0fff 73 .dw 0xfff0 74 .dw 0x7fff 75 .dw 0xffff 76 .dw 0x0fff 77 .dw 0x0000 78 .dw 0x8010 79 .dw 0x00ff 80 .dw 0x0000 81