1// ALU test program. 2// Test instructions reg = (A0+=A1) 3 4#include "test.h" 5.include "testutils.inc" 6 start 7 8 R0 = 0; 9 ASTAT = R0; 10 11 loadsym P0, data0; 12 13 R0 = [ P0 ++ ]; 14 R1 = [ P0 ++ ]; 15 R2 = [ P0 ++ ]; 16 R3 = [ P0 ++ ]; 17 R4 = [ P0 ++ ]; 18 19// add accums and transfer result 20 A1 = A0 = 0; 21 A1.w = R0; 22 A0.w = R0; 23 R6 = ( A0 += A1 ); 24 CHECKREG R6, 0x22222222; 25 R6 = A0.w; 26 CHECKREG R6, 0x22222222; 27 R7 = A0.x; 28 CHECKREG R7, 0; 29 R6 = A1.w; 30 CHECKREG R6, 0x11111111; 31 R7 = A1.x; 32 CHECKREG R7, 0; 33 34// add accums and transfer result (saturate positive) 35 R7 = 0; 36 ASTAT = R7; 37 A1 = A0 = 0; 38 A1.w = R1; 39 A0.w = R1; 40 R6 = ( A0 += A1 ); 41 CHECKREG R6, 0x7fffffff; 42 R6 = A0.w; 43 CHECKREG R6, 0xfffffffe; 44 R7 = A0.x; 45 CHECKREG R7, 0; 46 R6 = A1.w; 47 CHECKREG R6, 0x7fffffff; 48 _DBG ASTAT; 49 R7 = A1.x; 50 _DBG ASTAT; 51 CHECKREG R7, 0; 52 R7 = ASTAT; 53 CHECKREG R7, (_VS|_V|_V_COPY); 54 55// add accums and transfer result (saturate negative) 56 R7 = 0; 57 ASTAT = R7; 58 A1 = A0 = 0; 59 A1.w = R2; 60 A0.w = R2; 61 A1.x = R3.L; 62 A0.x = R3.L; 63 R6 = ( A0 += A1 ); 64 CHECKREG R6, 0x80000000; 65 R6 = A0.w; 66 CHECKREG R6, 0x00000000; 67 R7 = A0.x; 68 CHECKREG R6, 0; 69 R6 = A1.w; 70 CHECKREG R6, 0x80000000; 71 R7 = A1.x; 72 CHECKREG R7, 0xffffffff; 73 R7 = ASTAT; 74 _DBG ASTAT; 75 CHECKREG R7, (_VS|_V|_V_COPY|_AC0|_AC0_COPY|_AN); 76 77 pass 78 79 .data 80data0: 81 .dw 0x1111 82 .dw 0x1111 83 .dw 0xffff 84 .dw 0x7fff 85 .dw 0x0000 86 .dw 0x8000 87 .dw 0x00ff 88 .dw 0x0000 89 .dw 0x0000 90 .dw 0x0000 91