Selaa lähdekoodia

Add tests

master
peteraa 6 vuotta sitten
vanhempi
commit
49bfd372d0
4 muutettua tiedostoa jossa 2780 lisäystä ja 0 poistoa
  1. +53
    -0
      src/test/resources/tests/programs/source/convolution.c
  2. +200
    -0
      src/test/resources/tests/theory/branchProfiling.s
  3. +2510
    -0
      src/test/resources/tests/theory/convolution.s
  4. +17
    -0
      src/test/scala/Manifest.scala

+ 53
- 0
src/test/resources/tests/programs/source/convolution.c Näytä tiedosto

@@ -0,0 +1,53 @@
// C rmsbolt starter file

// Local Variables:
// rmsbolt-command: "/opt/riscv/bin/riscv32-unknown-elf-gcc -O0"
// rmsbolt-disassemble: nil
// End:


int lookup(int x, int y, int dim){
int t = 0;
int ii;
for(ii = 0; ii < y; ii++){
t += dim;
}
return t + x;
}

void convolutePixel(int x, int y, int* image, int* output, int* kernel){
int acc = 0;
acc += image[lookup( x - 1 , y - 1 , 32)] << kernel[0];
acc += image[lookup( x , y - 1 , 32)] << kernel[1];
acc += image[lookup( x + 1 , y - 1 , 32)] << kernel[2];

acc += image[lookup( x - 1 , y , 32)] << kernel[3];
acc += image[lookup( x , y , 32)] << kernel[4];
acc += image[lookup( x + 1 , y , 32)] << kernel[5];

acc += image[lookup( x - 1 , y + 1 , 32)] << kernel[6];
acc += image[lookup( x , y + 1 , 32)] << kernel[7];
acc += image[lookup( x + 1 , y + 1 , 32)] << kernel[8];

output[lookup(x, y, 30)] = acc;
}

int run() {

int* image = (int*)0;
int* output = (int*)(1024);
int* kernel = (int*)(1924);

int ii;
int kk;
for(ii = 1; ii < 31; ii++){
for(kk = 1; kk < 31; kk++){
convolutePixel(ii, kk, image, output, kernel);
}
}
return 0;
}

int main(){
run();
}

+ 200
- 0
src/test/resources/tests/theory/branchProfiling.s Näytä tiedosto

@@ -0,0 +1,200 @@
main:
addi sp,sp,-16
sw ra,12(sp)
call run
lw ra,12(sp)
addi sp,sp,16
jr ra
rem:
bge a0,a1,.L7
ret
.L7:
addi sp,sp,-16
sw ra,12(sp)
sub a0,a0,a1
call rem
lw ra,12(sp)
addi sp,sp,16
jr ra
f1:
addi sp,sp,-16
sw ra,12(sp)
sw s0,8(sp)
sw s1,4(sp)
sw s2,0(sp)
li s1,0
li s2,241
j .L9
.L11:
mv a0,s0
.L9:
addi s0,a0,-1
blez a0,.L8
beq s0,s2,.L8
li a1,10
mv a0,s0
call rem
bnez a0,.L11
add s1,s1,s0
j .L11
.L8:
mv a0,s1
lw ra,12(sp)
lw s0,8(sp)
lw s1,4(sp)
lw s2,0(sp)
addi sp,sp,16
jr ra
f2:
addi sp,sp,-32
sw ra,28(sp)
sw s0,24(sp)
sw s1,20(sp)
sw s2,16(sp)
sw s3,12(sp)
sw s4,8(sp)
mv s3,a0
li s2,0
li s0,0
li s4,3
.L15:
sub a0,s3,s0
call f1
mv s1,a0
add a0,s0,s3
call f1
add a0,s1,a0
add s2,s2,a0
addi s0,s0,1
bne s0,s4,.L15
mv a0,s2
lw ra,28(sp)
lw s0,24(sp)
lw s1,20(sp)
lw s2,16(sp)
lw s3,12(sp)
lw s4,8(sp)
addi sp,sp,32
jr ra
f3:
addi sp,sp,-16
sw ra,12(sp)
sw s0,8(sp)
sw s1,4(sp)
mv s0,a0
li a1,10
call rem
beqz a0,.L23
li a1,20
mv a0,s0
call rem
beqz a0,.L24
mv a0,s0
call f1
mv s1,a0
mv a0,s0
call f2
add a0,s1,a0
.L18:
lw ra,12(sp)
lw s0,8(sp)
lw s1,4(sp)
addi sp,sp,16
jr ra
.L23:
mv a0,s0
call f2
j .L18
.L24:
mv a0,s0
call f1
j .L18
getCall:
addi sp,sp,-16
sw ra,12(sp)
beqz a0,.L30
li a5,1
beq a0,a5,.L31
mv a0,a1
call f3
.L25:
lw ra,12(sp)
addi sp,sp,16
jr ra
.L30:
mv a0,a1
call f1
j .L25
.L31:
mv a0,a1
call f2
j .L25
run:
addi sp,sp,-48
sw ra,44(sp)
sw s0,40(sp)
sw s1,36(sp)
sw s2,32(sp)
sw s3,28(sp)
sw s4,24(sp)
sw s5,20(sp)
sw s6,16(sp)
sw s7,12(sp)
sw s8,8(sp)
li s1,0
li s0,0
li s3,0
li s7,56
li s6,2
li s5,3
li s4,24
.L35:
sub a5,s7,s1
lw s8,0(a5)
sgt a5,s0,s6
xori a5,a5,1
add s0,s0,a5
sub a5,s0,s5
snez a5,a5
sub a5,zero,a5
and s0,s0,a5
lw a1,0(s1)
mv a0,s0
call getCall
mv s2,a0
mv a1,s8
mv a0,s0
call getCall
sub a0,s2,a0
add s3,s3,a0
addi s1,s1,4
bne s1,s4,.L35
mv a0,s3
lw ra,44(sp)
lw s0,40(sp)
lw s1,36(sp)
lw s2,32(sp)
lw s3,28(sp)
lw s4,24(sp)
lw s5,20(sp)
lw s6,16(sp)
lw s7,12(sp)
lw s8,8(sp)
addi sp,sp,48
jr ra
#memset 0x0, 0x4
#memset 0x4, 0x7
#memset 0x8, 0x3
#memset 0xc, 0x8
#memset 0x10, 0x4
#memset 0x14, 0x22
#memset 0x18, 0x19
#memset 0x1c, 0x8
#memset 0x20, 0x11
#memset 0x24, 0x10
#memset 0x28, 0x9
#memset 0x2c, 0x8
#memset 0x30, 0x7
#memset 0x34, 0x6
#memset 0x38, 0x5
#memset 0x3c, 0x10

+ 2510
- 0
src/test/resources/tests/theory/convolution.s
File diff suppressed because it is too large
Näytä tiedosto


+ 17
- 0
src/test/scala/Manifest.scala Näytä tiedosto

@@ -48,6 +48,23 @@ object Manifest {
}



class ProfileBranching extends FlatSpec with Matchers {
it should "profile some branches" in {
TestRunner.profileBranching(
Manifest.singleTestOptions.copy(testName = "branchProfiling.s")
) should be(true)
}
}

class ProfileCache extends FlatSpec with Matchers {
it should "profile a cache" in {
TestRunner.profileCache(
Manifest.singleTestOptions.copy(testName = "convolution.s")
) should be(true)
}
}

class SingleTest extends FlatSpec with Matchers {
it should "just werk" in {
TestRunner.run(Manifest.singleTestOptions) should be(true)


Loading…
Peruuta
Tallenna