diff options
Diffstat (limited to 'input/matrix-vector.asm')
-rw-r--r-- | input/matrix-vector.asm | 122 |
1 files changed, 61 insertions, 61 deletions
diff --git a/input/matrix-vector.asm b/input/matrix-vector.asm index 7b91a6a..8c0b372 100644 --- a/input/matrix-vector.asm +++ b/input/matrix-vector.asm @@ -8,91 +8,91 @@ ;;; does not use designated vector instructions .data - m1 9 4 3 1 4 2 9 4 7 6 6 6 - m2 1 0 4 2 2 8 3 1 9 4 8 3 5 6 2 - n 3 ; # of columns of m1, rows of m2 - m 4 ; # of rows of m1 - p 5 ; # of columns of m2 - r 0 ; a matrix of size n,p + m1 9 4 3 1 4 2 9 4 7 6 6 6 + m2 1 0 4 2 2 8 3 1 9 4 8 3 5 6 2 + n 3 ; # of columns of m1, rows of m2 + m 4 ; # of rows of m1 + p 5 ; # of columns of m2 + r 0 ; a matrix of size n,p .text - addi $5 $2 0x0 ; establish frame pointer - jmp MAIN + addi $5 $2 0x0 ; establish frame pointer + jmp MAIN MAIN: - push $5 ; function preamble - addi $5 $2 0x0 - subi $2 $2 0x0 + push $5 ; function preamble + addi $5 $2 0x0 + subi $2 $2 0x0 ;;; ;;; setup vector stuff, rotate num, column stride - load $4 n($0) - addi $14 $4 0x0 - load $6 p($0) - load $7 m($0) - addi $15 $0 0x1 - addi $8 $0 0x0 - jrl STRCOND + load $4 n($0) + addi $14 $4 0x0 + load $6 p($0) + load $7 m($0) + addi $15 $0 0x1 + addi $8 $0 0x0 + jrl STRCOND STR: - addv $17 $17 $16 ; set column stride - addi $8 $8 0x1 + addv $17 $17 $16 ; set column stride + addi $8 $8 0x1 STRCOND: - cmp $6 $8 - bgt STR + cmp $6 $8 + bgt STR ;;; end vector setup ;;; - addi $8 $0 0x0 ; tracks M - jrl MCOND + addi $8 $0 0x0 ; tracks M + jrl MCOND MITER: - load $4 n($0) ; set vector length to n - addi $9 $0 0x0 ; tracks P - jrl PCOND + load $4 n($0) ; set vector length to n + addi $9 $0 0x0 ; tracks P + jrl PCOND PITER: - mul $10 $4 $8 ; index m1 - addi $10 $10 m1 + mul $10 $4 $8 ; index m1 + addi $10 $10 m1 - addi $11 $9 m2 ; index m2 + addi $11 $9 m2 ; index m2 - srdl $18 $10 $16 ; load row - srdl $19 $11 $17 ; load column + srdl $18 $10 $16 ; load row + srdl $19 $11 $17 ; load column - mulv $18 $18 $19 ; mul elements + mulv $18 $18 $19 ; mul elements - addi $13 $0 0x1 ; tracks iterations - jrl ROTCOND + addi $13 $0 0x1 ; tracks iterations + jrl ROTCOND ROT: - rotv $18 $18 $15 - addi $13 $13 0x1 + rotv $18 $18 $15 + addi $13 $13 0x1 ROTCOND: - addi $4 $0 0x1 - addv $20 $20 $18 - addi $4 $14 0x0 - cmp $4 $13 - bgt ROT + addi $4 $0 0x1 + addv $20 $20 $18 + addi $4 $14 0x0 + cmp $4 $13 + bgt ROT - mul $13 $6 $8 ; store the result - add $13 $13 $9 - addi $13 $13 r - srds $20 $13 $16 + mul $13 $6 $8 ; store the result + add $13 $13 $9 + addi $13 $13 r + srds $20 $13 $16 - addi $4 $0 0x0 ; clear the accumulator - addv $20 $20 $20 - addi $4 $14 0x0 + addi $4 $0 0x0 ; clear the accumulator + addv $20 $20 $20 + addi $4 $14 0x0 - addi $9 $9 0x1 ; increment columns in m2 + addi $9 $9 0x1 ; increment columns in m2 PCOND: - cmp $6 $9 - bgt PITER + cmp $6 $9 + bgt PITER - addi $8 $8 0x1 ; increment rows in m1 + addi $8 $8 0x1 ; increment rows in m1 MCOND: - cmp $7 $8 - bgt MITER - nop - nop - nop - nop - nop - nop + cmp $7 $8 + bgt MITER + nop + nop + nop + nop + nop + nop |