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