diff --git a/cs672/ILP-1.s b/cs672/ILP-1.s new file mode 100644 index 0000000..e40e6c7 --- /dev/null +++ b/cs672/ILP-1.s @@ -0,0 +1,16 @@ + lw r2, 4(r1) ; load item1 + lw r3, 8(r1) ; load item2 + lw r4, 16(r1) ; load item3 + add r6, r2, r3 ; item1 + item2 + lw r5, 20(r1) ; load item4 + sw 0(r1), r6 ; sum1 = item1 + item2 + add r7, r4, r5 ; item3 + item4 + sw 12(r1), r7 ; sum2 = item3 + item4 + + add r8, r6, r7 ; sum1 + sum2 + sw 24(r1), r8 ; total = sum1 + sum2 + + nop + nop + nop + nop diff --git a/cs672/ILP-11.s b/cs672/ILP-11.s new file mode 100644 index 0000000..cff3530 --- /dev/null +++ b/cs672/ILP-11.s @@ -0,0 +1,17 @@ + ld f0, 32(r1) ; get value from M into f0 + ld f4, 24(r1) ; get value from M into f4 + ld f6, 16(r1) ; get value from M into f6 + ld f8, 8(r1) ; get value from M into f8 + addd f0, f0, f2 ; add to scalar in f2, result into f0 + addd f4, f4, f2 ; add to scalar in f2, result into f4 + addd f6, f6, f2 ; add to scalar in f2, result into f6 + addd f8, f8, f2 ; add to scalar in f2, result into f8 + sd 32(r1), f0 ; store result back into M + sd 24(r1), f4 ; store result back into M + sd 16(r1), f6 ; store result back into M + sd 8(r1), f8 ; store result back into M + nop + nop + nop + nop + trap #0 diff --git a/cs672/ILP-6.s b/cs672/ILP-6.s new file mode 100644 index 0000000..74a803b --- /dev/null +++ b/cs672/ILP-6.s @@ -0,0 +1,12 @@ + addi r1, r0, #32 ; initialize loop counter +Loop: + ld f0, 0(r1) ; get value from M into f0 + subi r1, r1, #8 ; decrement array pointer + addd f4, f0, f2 ; add to scalar in f2, result into f4 + bnez r1, Loop ; branch if not done + sd 8(r1), f4 ; store result back into M + nop + nop + nop + nop + trap #0 diff --git a/cs672/ILP-9.s b/cs672/ILP-9.s new file mode 100644 index 0000000..ce49b3e --- /dev/null +++ b/cs672/ILP-9.s @@ -0,0 +1,22 @@ + addi r1, r0, #32 ; initialize loop counter + ld f0, 0(r1) ; get value from M into f0 + addd f4, f0, f2 ; add to scalar in f2, result into f4 + sd 0(r1), f4 ; store result back into M + subi r1, r1, #8 ; decrement array pointer + ld f0, 0(r1) ; get value from M into f0 + addd f4, f0, f2 ; add to scalar in f2, result into f4 + sd 0(r1), f4 ; store result back into M + subi r1, r1, #8 ; decrement array pointer + ld f0, 0(r1) ; get value from M into f0 + addd f4, f0, f2 ; add to scalar in f2, result into f4 + sd 0(r1), f4 ; store result back into M + subi r1, r1, #8 ; decrement array pointer + ld f0, 0(r1) ; get value from M into f0 + addd f4, f0, f2 ; add to scalar in f2, result into f4 + sd 0(r1), f4 ; store result back into M + subi r1, r1, #8 ; decrement array pointer + nop + nop + nop + nop + trap #0 diff --git a/cs672/ilp.odt b/cs672/ilp.odt new file mode 100644 index 0000000..b17b223 Binary files /dev/null and b/cs672/ilp.odt differ diff --git a/cs672/lab2-13.s b/cs672/lab2-13.s new file mode 100644 index 0000000..c5037a7 --- /dev/null +++ b/cs672/lab2-13.s @@ -0,0 +1,17 @@ + add r4, r0, r0 ; clear R4 = 0 + add r5, r0, r0 ; clear R5 = 0 + + addi r1, r0, 5 ; set R1 (loop counter) = 5 + +LOOP: subi r1, r1, 1 ; decrement R1 + addi r4, r4, 2 ; R4 = R4 + 2 + bnez r1, LOOP ; if (r1 != 0), goto LOOP + addi r5, r5, 10 ; R5 = R5 + 10 + + add r6, r4, r5 ; R6 = R4 + R5 + + nop + nop + nop + nop + trap #0