Updated dot product sample application.

This commit is contained in:
cdkersey
2013-10-07 18:00:05 -04:00
parent 021f08e180
commit 4cea354db8
3 changed files with 55 additions and 13 deletions

View File

@@ -43,7 +43,7 @@ simple.4b.bin : boot.4b.HOF lib.4b.HOF simple.4b.HOF
sieve.4b.bin : boot.4b.HOF lib.4b.HOF sieve.4b.HOF
$(HARPLD) --arch $(4BARCH) -o $@ $^
dotprod.4b.bin : boot.4b.HOF lib.4b.HOF sieve.4b.HOF
dotprod.4b.bin : boot.4b.HOF lib.4b.HOF dotprod.4b.HOF
$(HARPLD) --arch $(4BARCH) -o $@ $^
%.4b.bin : %.4b.HOF

View File

@@ -14,34 +14,36 @@
.global
entry: ldi %r0, array_a;
ldi %r1, array_b;
ldi %r2, #1;
ldi %r2, #10;
jali %r5, dotprod
ori %r7, %r0, #0;
jali %r5, printhex;
jali %r5, printfloat;
trap;
/* Return in r0 dot product of vectors of real values pointed to by r0 and r1,
length in r2 */
dotprod: ldi %r3, #0;
st %r5, %r3, retaddr;
dploop: ld %r4, %r0, #0;
ld %r6, %r1, #0;
subi %r2, %r2, #1;
addi %r0, %r0, __WORD;
addi %r1, %r1, __WORD;
rtop @p0, %r2;
fadd %r4, %r4, %r6;
fmul %r4, %r4, %r6;
fadd %r3, %r3, %r4;
@p0 ? jmpi dploop;
ori %r0, %r3, #0;
ldi %r3, retaddr;
ld %r5, %r3, #0;
jmpr %r5;
.align 4096
.perm rw
array_a: .word 1.0 2.0 3.0 0.5 1.0 1.5 0.33 0.67 1.0 1.33
array_b: .word 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
.global
array: .space 0x1000 /* SIZE words of space. */
array_b: .word 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1f
retaddr: .word 0

View File

@@ -19,14 +19,48 @@ printhex_l1: subi %r8, %r8, #4;
isneg @p0, %r10;
notp @p1, @p0;
@p0 ? addi %r9, %r9, #0x30
@p1 ? addi %r9, %r10, #0x61
@p1 ? addi %r9, %r10, #0x60
rtop @p0, %r8;
st %r9, %r11, #0;
@p0 ? jmpi printhex_l1;
ldi %r9, #0x0a;
st %r9, %r11, #0;
jmpr %r5;
.global
printdec: ldi %r8, #1;
printfloat: ori %r10, %r5, #0;
ori %r11, %r7, #0;
ftoi %r7, %r7;
jali %r5, printdecint; /* Print whole part */
ldi %r8, #1;
shli %r8, %r8, (__WORD*8 -1 );
/* Print dot */
ldi %r7, #0x2e;
st %r7, %r8, #0;
ldi %r7, #10;
itof %r7, %r7;
ldi %r12, #3
pfloop: /* Print next decimal place */
subi %r12, %r12, #1;
rtop @p0, %r12;
fmul %r11, %r11, %r7;
ftoi %r9, %r11;
modi %r9, %r9, #10;
addi %r9, %r9, #0x30;
st %r9, %r8, #0;
@p0 ? jmpi pfloop;
ldi %r9, #0x0a;
st %r9, %r8, #0;
jmpr %r10;
printdecint: ldi %r8, #1;
shli %r8, %r8, (__WORD*8 - 1);
and %r6, %r8, %r7;
rtop @p0, %r6;
@@ -46,10 +80,16 @@ printdec_l2: subi %r9, %r9, __WORD;
st %r6, %r8, #0;
rtop @p0, %r9;
@p0 ? jmpi printdec_l2;
ldi %r6, #0x0a;
st %r6, %r8, #0;
jmpr %r5
.global
printdec: ori %r10, %r5, #0;
jali %r5, printdecint;
ldi %r6, #0x0a;
st %r6, %r8, #0;
jmpr %r10;
.global
puts: ldi %r8, #1;
shli %r8, %r8, (__WORD*8 - 1);