| # mach: bfin |
| |
| .include "testutils.inc" |
| start |
| |
| // create two short vectors v_a, v_b |
| // where each element of v_a is the index |
| // where each element of v_b is 128-index |
| R2 = 0; |
| loadsym P0, v_a; |
| loadsym P1, v_b; |
| P2 = 0; |
| R3 = 128 (X); |
| R0 = 0; |
| R1 = 128 (X); |
| L$1: |
| W [ P0 ++ ] = R0; |
| W [ P1 ++ ] = R1; |
| R0 += 1; |
| R1 += -1; |
| CC = R0 < R3; |
| IF CC JUMP L$1 (BP); |
| |
| loadsym P0, v_a; |
| loadsym P1, v_b; |
| |
| CALL vecadd; |
| |
| loadsym P0, v_c; |
| R2 = 0; |
| R3 = 128 (X); |
| L$3: |
| R0 = W [ P0 ++ ] (X); |
| DBGA ( R0.L , 128 ); |
| R2 += 1; |
| CC = R2 < R3; |
| IF CC JUMP L$3; |
| _DBG R6; |
| pass |
| |
| vecadd: |
| |
| loadsym I0, v_a; |
| loadsym I1, v_b; |
| loadsym I2, v_c; |
| |
| P5 = 128 (X); |
| LSETUP ( L$2 , L$2end ) LC0 = P5 >> 1; |
| R0 = [ I0 ++ ]; |
| R1 = [ I1 ++ ]; |
| L$2: |
| R2 = R0 +|+ R1 || R0 = [ I0 ++ ] || R1 = [ I1 ++ ]; |
| L$2end: |
| [ I2 ++ ] = R2; |
| |
| |
| RTS; |
| |
| .data |
| v_a: |
| .space (512); |
| v_b: |
| .space (512); |
| v_c: |
| .space (512); |