# mach: bfin .include "testutils.inc" start I0 = 0 (X); I1 = 0 (X); A0 = A1 = 0; init_r_regs 0; ASTAT = R0; // This section of code will test the SAA instructions and sum of accumulators; loadsym I0, tstvecI; R0 = [ I0 ++ ]; R2 = [ I0 ++ ]; // +++++++++++++++ TG11.001 +++++++++++++ // // // // HH HL LH LL // // Input: r0 ==> 15 15 15 15 // // r1 ==> 0 0 0 0 // // // // Output:r2 ==> 0 0 0 30 // // r3 ==> 0 0 0 30 // // ++++++++++++++++++++++++++++++++++++++++++ // SAA ( R1:0 , R3:2 ); R6 = A1.L + A1.H, R7 = A0.L + A0.H; DBGA ( R6.L , 0x001e ); DBGA ( R6.H , 0x0000 ); DBGA ( R7.L , 0x001e ); DBGA ( R7.H , 0x0000 ); A1 = A0 = 0; // +++++++++++++++ TG11.002 +++++++++++++ // // // // HH HL LH LL // // Input: r0 ==> 15 15 15 15 // // r1 ==> 0 0 0 0 // // // // Output:r2 ==> 0 0 0 30 // // r3 ==> 0 0 0 30 // // ++++++++++++++++++++++++++++++++++++++++++ // SAA ( R1:0 , R3:2 ); R6 = A1.L + A1.H, R7 = A0.L + A0.H; DBGA ( R6.L , 0x001e ); DBGA ( R6.H , 0x0000 ); DBGA ( R7.L , 0x001e ); DBGA ( R7.H , 0x0000 ); A1 = A0 = 0; // +++++++++++++++ TG11.003 +++++++++++++ // // // // HH HL LH LL // // Input: r0 ==> 240 240 240 240 // // r1 ==> 0 0 0 0 // // // // Output:r2 ==> 0 480 // // r3 ==> 0 480 // // ++++++++++++++++++++++++++++++++++++++++++ // R0 = [ I0 ++ ]; R2 = [ I0 ++ ]; SAA ( R3:2 , R1:0 ); R6 = A1.L + A1.H, R7 = A0.L + A0.H; DBGA ( R6.L , 0x01e0 ); DBGA ( R6.H , 0x0000 ); DBGA ( R7.L , 0x01e0 ); DBGA ( R7.H , 0x0000 ); A1 = A0 = 0; // +++++++++++++++ TG11.004 +++++++++++++ // // // // HH HL LH LL // // Input: r0 ==> 240 240 240 240 // // r1 ==> 0 0 0 0 // // // // Output:r2 ==> 0 480 // // r3 ==> 0 480 // // ++++++++++++++++++++++++++++++++++++++++++ // SAA ( R1:0 , R3:2 ); R6 = A1.L + A1.H, R7 = A0.L + A0.H; DBGA ( R6.L , 0x01e0 ); DBGA ( R6.H , 0x0000 ); DBGA ( R7.L , 0x01e0 ); DBGA ( R7.H , 0x0000 ); A1 = A0 = 0; // +++++++++++++++ TG11.005 +++++++++++++ // // // // HH HL LH LL // // Input: r0 ==> 0 0 0 0 // // r1 ==> 0 0 0 0 // // // // Output:r2 ==> 0 0 // // r3 ==> 0 0 // // ++++++++++++++++++++++++++++++++++++++++++ // R0 = [ I0 ++ ]; R2 = [ I0 ++ ]; SAA ( R1:0 , R3:2 ); R6 = A1.L + A1.H, R7 = A0.L + A0.H; DBGA ( R6.L , 0x0000 ); DBGA ( R6.H , 0x0000 ); DBGA ( R7.L , 0x0000 ); DBGA ( R7.H , 0x0000 ); // +++++++++++++++ TG11.006 +++++++++++++ // // // // HH HL LH LL // // Input: r0 ==> 255 255 255 255 // // r1 ==> 255 255 255 255 // // // // Output:r2 ==> 0 0 // // r3 ==> 0 0 // // ++++++++++++++++++++++++++++++++++++++++++ // SAA ( R3:2 , R1:0 ); R6 = A1.L + A1.H, R7 = A0.L + A0.H; DBGA ( R6.L , 0x0000 ); DBGA ( R6.H , 0x0000 ); DBGA ( R7.L , 0x0000 ); DBGA ( R7.H , 0x0000 ); A1 = A0 = 0; // +++++++++++++++ TG12.001 +++++++++++++ // // // // HH HL LH LL // // Input: r0 ==> 255 255 255 255 // // r1 ==> 255 255 255 255 // // // // Output:r2 ==> 0 0 // // r3 ==> 0 0 // // ++++++++++++++++++++++++++++++++++++++++++ // loadsym I0, tstvecK; B0 = I0; L0.L = 4; loadsym I1, tstvecJ; B1 = I1; L1.L = 4; P0 = 64 (X); R0 = [ I0 ++ ]; R2 = [ I1 ++ ]; LSETUP ( l$1 , l$1 ) LC0 = P0; l$1: SAA ( R1:0 , R3:2 ) || R0 = [ I0 ++ ] || R1 = [ I1 ++ ]; R2 = A1.L + A1.H, R3 = A0.L + A0.H; R7 = R2 + R3 (NS); DBGA ( R7.L , 0xff00 ); DBGA ( R7.H , 0x0000 ); R5.L = 0xfffa; A1 = R5; R5.H = 0xfff0; A0 = R5; loadsym I0, tstvecI; R0 = [ I0 ++ ]; R2 = [ I0 ++ ]; SAA ( R1:0 , R3:2 ); R6 = A1.L + A1.H, R7 = A0.L + A0.H; DBGA ( R6.L , 0x000e ); DBGA ( R6.H , 0x0000 ); DBGA ( R7.L , 0xfffe ); DBGA ( R7.H , 0xffff ); pass .data tstvecI: .dw 0x0000 .dw 0x0000 .dw 0x0f0f .dw 0x0f0f .dw 0x0000 .dw 0x0000 .dw 0xf0f0 .dw 0xf0f0 .dw 0x0000 .dw 0x0000 .dw 0x0000 .dw 0x0000 .dw 0xffff .dw 0xffff .dw 0xffff .dw 0xffff .data tstvecJ: .dw 0xffff .dw 0xffff .dw 0xffff .dw 0xffff .dw 0xffff .dw 0xffff .dw 0xffff .dw 0xffff .data tstvecK: .dw 0x0000 .dw 0x0000 .dw 0x0000 .dw 0x0000 .dw 0x0000 .dw 0x0000 .dw 0x0000 .dw 0x0000