1// Test extraction from accumulators: 2// SIGNED FRACTIONAL and SIGNED INT mode into register PAIR 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 9// load r0=0x7ffffff0 10// load r1=0xfffffff0 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// 0x007ffffff0 -> 0x7fffffff0 23 A1 = A0 = 0; 24 A1.w = R0; 25 A0.w = R0; 26 R7 = A1, R6 = A0; 27 DBGA ( R7.L , 0xfff0 ); 28 DBGA ( R7.H , 0x7fff ); 29 DBGA ( R6.L , 0xfff0 ); 30 DBGA ( R6.H , 0x7fff ); 31 32// extract with saturate 33// 0x00fffffff0 -> 0x7ffffffff 34 A1 = A0 = 0; 35 A1.w = R1; 36 A0.w = R1; 37 R7 = A1, R6 = A0; 38 DBGA ( R7.L , 0xffff ); 39 DBGA ( R7.H , 0x7fff ); 40 DBGA ( R6.L , 0xffff ); 41 DBGA ( R6.H , 0x7fff ); 42 43// extract with saturate negative 44// 0xff0ffffff0 -> 0x80000000 45 A1 = A0 = 0; 46 A1.w = R2; 47 A0.w = R2; 48 A1.x = R4.L; 49 A0.x = R4.L; 50 R7 = A1, R6 = A0; 51 DBGA ( R7.L , 0x0000 ); 52 DBGA ( R7.H , 0x8000 ); 53 DBGA ( R6.L , 0x0000 ); 54 DBGA ( R6.H , 0x8000 ); 55 56// extract integer (same as fract) 57// 0x007ffffff0 -> 0x7fffffff0 58 A1 = A0 = 0; 59 A1.w = R0; 60 A0.w = R0; 61 R7 = A1, R6 = A0 (IS); 62 DBGA ( R7.L , 0xfff0 ); 63 DBGA ( R7.H , 0x7fff ); 64 DBGA ( R6.L , 0xfff0 ); 65 DBGA ( R6.H , 0x7fff ); 66 67// extract with saturate negative 68// 0xff0ffffff0 -> 0x80000000 69 A1 = A0 = 0; 70 A1.w = R2; 71 A0.w = R2; 72 A1.x = R4.L; 73 A0.x = R4.L; 74 R7 = A1, R6 = A0 (IS); 75 DBGA ( R7.L , 0x0000 ); 76 DBGA ( R7.H , 0x8000 ); 77 DBGA ( R6.L , 0x0000 ); 78 DBGA ( R6.H , 0x8000 ); 79 80 pass 81 82 .data 83data0: 84 .dw 0xfff0 85 .dw 0x7fff 86 .dw 0xfff0 87 .dw 0xffff 88 .dw 0xffff 89 .dw 0x0fff 90 .dw 0x0000 91 .dw 0x8010 92 .dw 0x00ff 93 .dw 0x0000 94