Working matrix multiplication example.

This commit is contained in:
chad
2013-10-08 02:20:56 -04:00
parent bd451a36af
commit bbb8d97479

View File

@@ -32,23 +32,37 @@ ploop: ld %r7, %r1, #0;
/* Write the matrix product of square matrix at (%r0) and (%r1) to (%r2). The
size of these matrices is 2^Nx2^N, where N = %r3 */
matmul: ldi %r4, #1;
shl %r4, %r4, %r2;
ldi %r10, (`__WORD); /* ` is the log base 2 operator */
shl %r4, %r4, %r3;
add %r10, %r10, %r3;
ldi %r14, #1;
shl %r14, %r14, %r10;
ldi %r9, #0; /* result row: %r9 */
rloop:
rloop: ldi %r6, #0; /* result col: %r6 */
cloop: shli %r16, %r6, (`__WORD);
shl %r15, %r9, %r10;
ldi %r6, #0; /* result col: %r6 */
cloop:
add %r11, %r15, %r0;
add %r12, %r16, %r1;
ldi %r13, #0;
ldi %r8, #0; /* dot prod position: %r8 */
iloop: /* TODO : dot product */
ldi %r8, #0 /* dot prod position: %r8 */
iloop: ld %r7, %r11, #0;
ld %r17, %r12, #0;
fmul %r7, %r7, %r17
fadd %r13, %r13, %r7;
addi %r8, %r8, #1;
addi %r11, %r11, __WORD;
add %r12, %r12, %r14;
sub %r7, %r8, %r4;
rtop @p0, %r7;
@p0 ? jmpi iloop;
/* TODO : store result of dot product */
add %r15, %r15, %r16;
add %r15, %r15, %r2;
st %r13, %r15, #0;
addi %r6, %r6, #1;
sub %r7, %r6, %r4;
@@ -74,13 +88,13 @@ matrix_a: .word 1f 2f 3f 4f 5f 6f 7f 8f
.word 8f 9f 10f 11f 12f 13f 14f 15f
matrix_b: .word 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7
.word 1.0 1.1 1.2 1.3 1.4 1.5 1.7 1.7
.word 2.0 2.1 2.2 2.3 2.4 2.5 2.7 2.7
.word 3.0 3.1 3.2 3.3 3.4 3.5 3.7 3.7
.word 4.0 4.1 4.2 4.3 4.4 4.5 4.7 4.7
.word 5.0 5.1 5.2 5.3 5.4 5.5 5.7 5.7
.word 6.0 6.1 6.2 6.3 6.4 6.5 6.7 6.7
.word 7.0 7.1 7.2 7.3 7.4 7.5 7.7 7.7
.word 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7
.word 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7
.word 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7
.word 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7
.word 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7
.word 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7
.word 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7
matrix_r: .space 64