diff --git a/driver/tests/tex_demo/demo b/driver/tests/tex_demo/demo index 83d9b666..db297d4e 100755 Binary files a/driver/tests/tex_demo/demo and b/driver/tests/tex_demo/demo differ diff --git a/driver/tests/tex_demo/kernel.bin b/driver/tests/tex_demo/kernel.bin index 9b74addb..61f6bc26 100755 Binary files a/driver/tests/tex_demo/kernel.bin and b/driver/tests/tex_demo/kernel.bin differ diff --git a/driver/tests/tex_demo/kernel.c b/driver/tests/tex_demo/kernel.c index 8f0d58db..1c83fcdc 100644 --- a/driver/tests/tex_demo/kernel.c +++ b/driver/tests/tex_demo/kernel.c @@ -52,8 +52,8 @@ int main() { targ.karg = *arg; targ.tile_width = arg->dst_width; targ.tile_height = (arg->dst_height + arg->num_tasks - 1) / arg->num_tasks; - targ.deltaX = 1.0f / (((float)arg->src_width) / arg->dst_width); - targ.deltaY = 1.0f / (((float)arg->src_height) / arg->dst_height); + targ.deltaX = 1.0f / arg->dst_width; + targ.deltaY = 1.0f / arg->dst_height; vx_spawn_tasks(arg->num_tasks, kernel_body, &targ); } \ No newline at end of file diff --git a/driver/tests/tex_demo/kernel.dump b/driver/tests/tex_demo/kernel.dump index 65788c09..99a7fd04 100644 --- a/driver/tests/tex_demo/kernel.dump +++ b/driver/tests/tex_demo/kernel.dump @@ -6,25 +6,25 @@ Disassembly of section .init: 80000000 <_start>: 80000000: 00000597 auipc a1,0x0 -80000004: 24458593 addi a1,a1,580 # 80000244 +80000004: 22c58593 addi a1,a1,556 # 8000022c 80000008: fc102573 csrr a0,0xfc1 8000000c: 00b5106b 0xb5106b -80000010: 234000ef jal ra,80000244 +80000010: 21c000ef jal ra,8000022c 80000014: 00100513 li a0,1 80000018: 0005006b 0x5006b 8000001c: 00002517 auipc a0,0x2 -80000020: dd050513 addi a0,a0,-560 # 80001dec +80000020: db850513 addi a0,a0,-584 # 80001dd4 80000024: 00002617 auipc a2,0x2 -80000028: e4860613 addi a2,a2,-440 # 80001e6c <__BSS_END__> +80000028: e3060613 addi a2,a2,-464 # 80001e54 <__BSS_END__> 8000002c: 40a60633 sub a2,a2,a0 80000030: 00000593 li a1,0 -80000034: 5e0000ef jal ra,80000614 +80000034: 5c8000ef jal ra,800005fc 80000038: 00000517 auipc a0,0x0 -8000003c: 4e450513 addi a0,a0,1252 # 8000051c <__libc_fini_array> -80000040: 494000ef jal ra,800004d4 -80000044: 534000ef jal ra,80000578 <__libc_init_array> +8000003c: 4cc50513 addi a0,a0,1228 # 80000504 <__libc_fini_array> +80000040: 47c000ef jal ra,800004bc +80000044: 51c000ef jal ra,80000560 <__libc_init_array> 80000048: 008000ef jal ra,80000050
-8000004c: 49c0006f j 800004e8 +8000004c: 4840006f j 800004d0 Disassembly of section .text: @@ -41,13 +41,13 @@ Disassembly of section .text: 80000074: 01f00493 li s1,31 80000078: 00151513 slli a0,a0,0x1 8000007c: fff50513 addi a0,a0,-1 -80000080: 408000ef jal ra,80000488 <__clzsi2> +80000080: 3f0000ef jal ra,80000470 <__clzsi2> 80000084: 40a48533 sub a0,s1,a0 80000088: fd551073 csrw 0xfd5,a0 8000008c: 00842503 lw a0,8(s0) 80000090: 00151513 slli a0,a0,0x1 80000094: fff50513 addi a0,a0,-1 -80000098: 3f0000ef jal ra,80000488 <__clzsi2> +80000098: 3d8000ef jal ra,80000470 <__clzsi2> 8000009c: 40a484b3 sub s1,s1,a0 800000a0: fd649073 csrw 0xfd6,s1 800000a4: fd105073 csrwi 0xfd1,0 @@ -56,580 +56,580 @@ Disassembly of section .text: 800000b0: 01442503 lw a0,20(s0) 800000b4: 01842583 lw a1,24(s0) 800000b8: 01c42603 lw a2,28(s0) -800000bc: 02042683 lw a3,32(s0) -800000c0: 02442703 lw a4,36(s0) -800000c4: 02842783 lw a5,40(s0) -800000c8: 00042e83 lw t4,0(s0) -800000cc: 00442e03 lw t3,4(s0) -800000d0: 00842303 lw t1,8(s0) -800000d4: 00c42883 lw a7,12(s0) -800000d8: 01042803 lw a6,16(s0) +800000bc: 02442703 lw a4,36(s0) +800000c0: 02842783 lw a5,40(s0) +800000c4: 00042e83 lw t4,0(s0) +800000c8: 00442e03 lw t3,4(s0) +800000cc: 00842303 lw t1,8(s0) +800000d0: 00c42883 lw a7,12(s0) +800000d4: 01042803 lw a6,16(s0) +800000d8: 02042683 lw a3,32(s0) 800000dc: 00b12e23 sw a1,28(sp) 800000e0: 02c12023 sw a2,32(sp) -800000e4: 02d12223 sw a3,36(sp) -800000e8: 02e12423 sw a4,40(sp) -800000ec: 01d12223 sw t4,4(sp) -800000f0: 01c12423 sw t3,8(sp) -800000f4: 00612623 sw t1,12(sp) -800000f8: 01112823 sw a7,16(sp) -800000fc: 01012a23 sw a6,20(sp) -80000100: 00a12c23 sw a0,24(sp) +800000e4: 02e12423 sw a4,40(sp) +800000e8: 01d12223 sw t4,4(sp) +800000ec: 01c12423 sw t3,8(sp) +800000f0: 00612623 sw t1,12(sp) +800000f4: 01112823 sw a7,16(sp) +800000f8: 01012a23 sw a6,20(sp) +800000fc: 00a12c23 sw a0,24(sp) +80000100: 02d12223 sw a3,36(sp) 80000104: 02f12623 sw a5,44(sp) 80000108: 01842783 lw a5,24(s0) 8000010c: 80002737 lui a4,0x80002 -80000110: de472687 flw fa3,-540(a4) # 80001de4 <__stack_top+0x81001de4> +80000110: dcc72707 flw fa4,-564(a4) # 80001dcc <__stack_top+0x81001dcc> 80000114: 02f12823 sw a5,48(sp) -80000118: 01c42703 lw a4,28(s0) -8000011c: 00042503 lw a0,0(s0) -80000120: d017f5d3 fcvt.s.wu fa1,a5 -80000124: d0177653 fcvt.s.wu fa2,a4 -80000128: 00a706b3 add a3,a4,a0 -8000012c: fff68693 addi a3,a3,-1 -80000130: 02a6d6b3 divu a3,a3,a0 -80000134: 800005b7 lui a1,0x80000 -80000138: 00410613 addi a2,sp,4 -8000013c: 19c58593 addi a1,a1,412 # 8000019c <__stack_top+0x8100019c> -80000140: 02d12a23 sw a3,52(sp) -80000144: 00442783 lw a5,4(s0) -80000148: 00842703 lw a4,8(s0) -8000014c: d017f7d3 fcvt.s.wu fa5,a5 -80000150: d0177753 fcvt.s.wu fa4,a4 -80000154: 18b7f7d3 fdiv.s fa5,fa5,fa1 -80000158: 18c77753 fdiv.s fa4,fa4,fa2 -8000015c: 18f6f7d3 fdiv.s fa5,fa3,fa5 -80000160: 18e6f753 fdiv.s fa4,fa3,fa4 -80000164: 02f12c27 fsw fa5,56(sp) -80000168: 02e12e27 fsw fa4,60(sp) -8000016c: 1d4000ef jal ra,80000340 -80000170: 04c12083 lw ra,76(sp) -80000174: 04812403 lw s0,72(sp) -80000178: 04412483 lw s1,68(sp) -8000017c: 05010113 addi sp,sp,80 +80000118: 00042503 lw a0,0(s0) +8000011c: 01c42703 lw a4,28(s0) +80000120: d017f7d3 fcvt.s.wu fa5,a5 +80000124: 800005b7 lui a1,0x80000 +80000128: 00a707b3 add a5,a4,a0 +8000012c: fff78793 addi a5,a5,-1 +80000130: 02a7d7b3 divu a5,a5,a0 +80000134: d01776d3 fcvt.s.wu fa3,a4 +80000138: 18f777d3 fdiv.s fa5,fa4,fa5 +8000013c: 00410613 addi a2,sp,4 +80000140: 18458593 addi a1,a1,388 # 80000184 <__stack_top+0x81000184> +80000144: 18d77753 fdiv.s fa4,fa4,fa3 +80000148: 02f12c27 fsw fa5,56(sp) +8000014c: 02f12a23 sw a5,52(sp) +80000150: 02e12e27 fsw fa4,60(sp) +80000154: 1d4000ef jal ra,80000328 +80000158: 04c12083 lw ra,76(sp) +8000015c: 04812403 lw s0,72(sp) +80000160: 04412483 lw s1,68(sp) +80000164: 05010113 addi sp,sp,80 +80000168: 00008067 ret + +8000016c : +8000016c: 00000793 li a5,0 +80000170: 00078863 beqz a5,80000180 +80000174: 80000537 lui a0,0x80000 +80000178: 50450513 addi a0,a0,1284 # 80000504 <__stack_top+0x81000504> +8000017c: 3400006f j 800004bc 80000180: 00008067 ret -80000184 : -80000184: 00000793 li a5,0 -80000188: 00078863 beqz a5,80000198 -8000018c: 80000537 lui a0,0x80000 -80000190: 51c50513 addi a0,a0,1308 # 8000051c <__stack_top+0x8100051c> -80000194: 3400006f j 800004d4 -80000198: 00008067 ret +80000184 : +80000184: 0305a703 lw a4,48(a1) +80000188: 0245a683 lw a3,36(a1) +8000018c: 0285a603 lw a2,40(a1) +80000190: 02e507b3 mul a5,a0,a4 +80000194: 0345a687 flw fa3,52(a1) +80000198: 0385a507 flw fa0,56(a1) +8000019c: f00007d3 fmv.w.x fa5,zero +800001a0: 10f6f7d3 fmul.s fa5,fa3,fa5 +800001a4: 02f68833 mul a6,a3,a5 +800001a8: d017f5d3 fcvt.s.wu fa1,a5 +800001ac: 10a5f5d3 fmul.s fa1,fa1,fa0 +800001b0: 00c80833 add a6,a6,a2 +800001b4: 06070663 beqz a4,80000220 +800001b8: 800027b7 lui a5,0x80002 +800001bc: dc87a007 flw ft0,-568(a5) # 80001dc8 <__stack_top+0x81001dc8> +800001c0: 02c5a783 lw a5,44(a1) +800001c4: 00000893 li a7,0 +800001c8: 20000653 fmv.s fa2,ft0 +800001cc: 00000513 li a0,0 +800001d0: 04078063 beqz a5,80000210 +800001d4: 1005f753 fmul.s fa4,fa1,ft0 +800001d8: 00080693 mv a3,a6 +800001dc: 00000713 li a4,0 +800001e0: c0071653 fcvt.w.s a2,fa4,rtz +800001e4: 10c7f753 fmul.s fa4,fa5,fa2 +800001e8: c00717d3 fcvt.w.s a5,fa4,rtz +800001ec: 50c7d7eb 0x50c7d7eb +800001f0: 00f6a023 sw a5,0(a3) +800001f4: 02c5a783 lw a5,44(a1) +800001f8: 00170713 addi a4,a4,1 +800001fc: 00d7f7d3 fadd.s fa5,fa5,fa3 +80000200: 00468693 addi a3,a3,4 +80000204: fef760e3 bltu a4,a5,800001e4 +80000208: 0245a683 lw a3,36(a1) +8000020c: 0305a703 lw a4,48(a1) +80000210: 00188893 addi a7,a7,1 +80000214: 00a5f5d3 fadd.s fa1,fa1,fa0 +80000218: 00d80833 add a6,a6,a3 +8000021c: fae8eae3 bltu a7,a4,800001d0 +80000220: 00008067 ret -8000019c : -8000019c: 0305a703 lw a4,48(a1) -800001a0: 0245a683 lw a3,36(a1) -800001a4: 0285a603 lw a2,40(a1) -800001a8: 02e507b3 mul a5,a0,a4 -800001ac: 0345a687 flw fa3,52(a1) -800001b0: 0385a507 flw fa0,56(a1) -800001b4: f00007d3 fmv.w.x fa5,zero -800001b8: 10f6f7d3 fmul.s fa5,fa3,fa5 -800001bc: 02f68833 mul a6,a3,a5 -800001c0: d017f5d3 fcvt.s.wu fa1,a5 -800001c4: 10a5f5d3 fmul.s fa1,fa1,fa0 -800001c8: 00c80833 add a6,a6,a2 -800001cc: 06070663 beqz a4,80000238 -800001d0: 800027b7 lui a5,0x80002 -800001d4: de07a007 flw ft0,-544(a5) # 80001de0 <__stack_top+0x81001de0> -800001d8: 02c5a783 lw a5,44(a1) -800001dc: 00000893 li a7,0 -800001e0: 20000653 fmv.s fa2,ft0 -800001e4: 00000513 li a0,0 -800001e8: 04078063 beqz a5,80000228 -800001ec: 1005f753 fmul.s fa4,fa1,ft0 -800001f0: 00080693 mv a3,a6 -800001f4: 00000713 li a4,0 -800001f8: c0071653 fcvt.w.s a2,fa4,rtz -800001fc: 10c7f753 fmul.s fa4,fa5,fa2 -80000200: c00717d3 fcvt.w.s a5,fa4,rtz -80000204: 50c7d7eb 0x50c7d7eb -80000208: 00f6a023 sw a5,0(a3) -8000020c: 02c5a783 lw a5,44(a1) -80000210: 00170713 addi a4,a4,1 -80000214: 00d7f7d3 fadd.s fa5,fa5,fa3 -80000218: 00468693 addi a3,a3,4 -8000021c: fef760e3 bltu a4,a5,800001fc -80000220: 0245a683 lw a3,36(a1) -80000224: 0305a703 lw a4,48(a1) -80000228: 00188893 addi a7,a7,1 -8000022c: 00a5f5d3 fadd.s fa1,fa1,fa0 -80000230: 00d80833 add a6,a6,a3 -80000234: fae8eae3 bltu a7,a4,800001e8 -80000238: 00008067 ret +80000224 <_exit>: +80000224: 00000513 li a0,0 +80000228: 0005006b 0x5006b -8000023c <_exit>: -8000023c: 00000513 li a0,0 -80000240: 0005006b 0x5006b +8000022c : +8000022c: fc002573 csrr a0,0xfc0 +80000230: 0005006b 0x5006b +80000234: 00002197 auipc gp,0x2 +80000238: f6c18193 addi gp,gp,-148 # 800021a0 <__global_pointer> +8000023c: 7f000117 auipc sp,0x7f000 +80000240: dc410113 addi sp,sp,-572 # ff000000 <__stack_top> +80000244: 40000593 li a1,1024 +80000248: cc102673 csrr a2,0xcc1 +8000024c: 02c585b3 mul a1,a1,a2 +80000250: 40b10133 sub sp,sp,a1 +80000254: cc3026f3 csrr a3,0xcc3 +80000258: 00068663 beqz a3,80000264 +8000025c: 00000513 li a0,0 +80000260: 0005006b 0x5006b -80000244 : -80000244: fc002573 csrr a0,0xfc0 -80000248: 0005006b 0x5006b -8000024c: 00002197 auipc gp,0x2 -80000250: f6c18193 addi gp,gp,-148 # 800021b8 <__global_pointer> -80000254: 7f000117 auipc sp,0x7f000 -80000258: dac10113 addi sp,sp,-596 # ff000000 <__stack_top> -8000025c: 40000593 li a1,1024 -80000260: cc102673 csrr a2,0xcc1 -80000264: 02c585b3 mul a1,a1,a2 -80000268: 40b10133 sub sp,sp,a1 -8000026c: cc3026f3 csrr a3,0xcc3 -80000270: 00068663 beqz a3,8000027c -80000274: 00000513 li a0,0 -80000278: 0005006b 0x5006b +80000264 : +80000264: 00008067 ret -8000027c : -8000027c: 00008067 ret +80000268 : +80000268: fe010113 addi sp,sp,-32 +8000026c: 00112e23 sw ra,28(sp) +80000270: 00812c23 sw s0,24(sp) +80000274: 00912a23 sw s1,20(sp) +80000278: 01212823 sw s2,16(sp) +8000027c: 01312623 sw s3,12(sp) +80000280: fc0027f3 csrr a5,0xfc0 +80000284: 0007806b 0x7806b +80000288: cc5026f3 csrr a3,0xcc5 +8000028c: cc3029f3 csrr s3,0xcc3 +80000290: cc002773 csrr a4,0xcc0 +80000294: fc002673 csrr a2,0xfc0 +80000298: 800027b7 lui a5,0x80002 +8000029c: 00269693 slli a3,a3,0x2 +800002a0: dd478793 addi a5,a5,-556 # 80001dd4 <__stack_top+0x81001dd4> +800002a4: 00d787b3 add a5,a5,a3 +800002a8: 0007a483 lw s1,0(a5) +800002ac: 0104a403 lw s0,16(s1) +800002b0: 00c4a683 lw a3,12(s1) +800002b4: 0089a933 slt s2,s3,s0 +800002b8: 00040793 mv a5,s0 +800002bc: 00d90933 add s2,s2,a3 +800002c0: 03368433 mul s0,a3,s3 +800002c4: 00f9d463 bge s3,a5,800002cc +800002c8: 00098793 mv a5,s3 +800002cc: 00f40433 add s0,s0,a5 +800002d0: 0084a683 lw a3,8(s1) +800002d4: 02c40433 mul s0,s0,a2 +800002d8: 02e907b3 mul a5,s2,a4 +800002dc: 00d40433 add s0,s0,a3 +800002e0: 00f40433 add s0,s0,a5 +800002e4: 00890933 add s2,s2,s0 +800002e8: 01245e63 bge s0,s2,80000304 +800002ec: 0004a783 lw a5,0(s1) +800002f0: 0044a583 lw a1,4(s1) +800002f4: 00040513 mv a0,s0 +800002f8: 00140413 addi s0,s0,1 +800002fc: 000780e7 jalr a5 +80000300: fe8916e3 bne s2,s0,800002ec +80000304: 0019b993 seqz s3,s3 +80000308: 0009806b 0x9806b +8000030c: 01c12083 lw ra,28(sp) +80000310: 01812403 lw s0,24(sp) +80000314: 01412483 lw s1,20(sp) +80000318: 01012903 lw s2,16(sp) +8000031c: 00c12983 lw s3,12(sp) +80000320: 02010113 addi sp,sp,32 +80000324: 00008067 ret -80000280 : -80000280: fe010113 addi sp,sp,-32 -80000284: 00112e23 sw ra,28(sp) -80000288: 00812c23 sw s0,24(sp) -8000028c: 00912a23 sw s1,20(sp) -80000290: 01212823 sw s2,16(sp) -80000294: 01312623 sw s3,12(sp) -80000298: fc0027f3 csrr a5,0xfc0 -8000029c: 0007806b 0x7806b -800002a0: cc5026f3 csrr a3,0xcc5 -800002a4: cc3029f3 csrr s3,0xcc3 -800002a8: cc002773 csrr a4,0xcc0 -800002ac: fc002673 csrr a2,0xfc0 -800002b0: 800027b7 lui a5,0x80002 -800002b4: 00269693 slli a3,a3,0x2 -800002b8: dec78793 addi a5,a5,-532 # 80001dec <__stack_top+0x81001dec> -800002bc: 00d787b3 add a5,a5,a3 -800002c0: 0007a483 lw s1,0(a5) -800002c4: 0104a403 lw s0,16(s1) -800002c8: 00c4a683 lw a3,12(s1) -800002cc: 0089a933 slt s2,s3,s0 -800002d0: 00040793 mv a5,s0 -800002d4: 00d90933 add s2,s2,a3 -800002d8: 03368433 mul s0,a3,s3 -800002dc: 00f9d463 bge s3,a5,800002e4 -800002e0: 00098793 mv a5,s3 -800002e4: 00f40433 add s0,s0,a5 -800002e8: 0084a683 lw a3,8(s1) -800002ec: 02c40433 mul s0,s0,a2 -800002f0: 02e907b3 mul a5,s2,a4 -800002f4: 00d40433 add s0,s0,a3 -800002f8: 00f40433 add s0,s0,a5 -800002fc: 00890933 add s2,s2,s0 -80000300: 01245e63 bge s0,s2,8000031c -80000304: 0004a783 lw a5,0(s1) -80000308: 0044a583 lw a1,4(s1) -8000030c: 00040513 mv a0,s0 -80000310: 00140413 addi s0,s0,1 -80000314: 000780e7 jalr a5 -80000318: fe8916e3 bne s2,s0,80000304 -8000031c: 0019b993 seqz s3,s3 -80000320: 0009806b 0x9806b -80000324: 01c12083 lw ra,28(sp) -80000328: 01812403 lw s0,24(sp) -8000032c: 01412483 lw s1,20(sp) -80000330: 01012903 lw s2,16(sp) -80000334: 00c12983 lw s3,12(sp) -80000338: 02010113 addi sp,sp,32 -8000033c: 00008067 ret +80000328 : +80000328: fc010113 addi sp,sp,-64 +8000032c: 02112e23 sw ra,60(sp) +80000330: 02812c23 sw s0,56(sp) +80000334: 02912a23 sw s1,52(sp) +80000338: 03212823 sw s2,48(sp) +8000033c: 03312623 sw s3,44(sp) +80000340: fc2026f3 csrr a3,0xfc2 +80000344: fc102873 csrr a6,0xfc1 +80000348: fc002473 csrr s0,0xfc0 +8000034c: cc5027f3 csrr a5,0xcc5 +80000350: 01f00713 li a4,31 +80000354: 0cf74463 blt a4,a5,8000041c +80000358: 030408b3 mul a7,s0,a6 +8000035c: 00100713 li a4,1 +80000360: 00a8d463 bge a7,a0,80000368 +80000364: 03154733 div a4,a0,a7 +80000368: 0ce6c863 blt a3,a4,80000438 +8000036c: 0ae7d863 bge a5,a4,8000041c +80000370: fff68693 addi a3,a3,-1 +80000374: 02e54333 div t1,a0,a4 +80000378: 00030893 mv a7,t1 +8000037c: 00f69663 bne a3,a5,80000388 +80000380: 02e56533 rem a0,a0,a4 +80000384: 006508b3 add a7,a0,t1 +80000388: 0288c4b3 div s1,a7,s0 +8000038c: 0288e933 rem s2,a7,s0 +80000390: 0b04ca63 blt s1,a6,80000444 +80000394: 00100693 li a3,1 +80000398: 0304c733 div a4,s1,a6 +8000039c: 00070663 beqz a4,800003a8 +800003a0: 00070693 mv a3,a4 +800003a4: 0304e733 rem a4,s1,a6 +800003a8: 800029b7 lui s3,0x80002 +800003ac: dd498993 addi s3,s3,-556 # 80001dd4 <__stack_top+0x81001dd4> +800003b0: 00e12e23 sw a4,28(sp) +800003b4: 00c10713 addi a4,sp,12 +800003b8: 00b12623 sw a1,12(sp) +800003bc: 00c12823 sw a2,16(sp) +800003c0: 00d12c23 sw a3,24(sp) +800003c4: 02f30333 mul t1,t1,a5 +800003c8: 00279793 slli a5,a5,0x2 +800003cc: 00f987b3 add a5,s3,a5 +800003d0: 00e7a023 sw a4,0(a5) +800003d4: 00612a23 sw t1,20(sp) +800003d8: 06904c63 bgtz s1,80000450 +800003dc: 04090063 beqz s2,8000041c +800003e0: 02848433 mul s0,s1,s0 +800003e4: 00812a23 sw s0,20(sp) +800003e8: 0009006b 0x9006b +800003ec: cc5027f3 csrr a5,0xcc5 +800003f0: cc202573 csrr a0,0xcc2 +800003f4: 00279793 slli a5,a5,0x2 +800003f8: 00f989b3 add s3,s3,a5 +800003fc: 0009a783 lw a5,0(s3) +80000400: 0087a683 lw a3,8(a5) +80000404: 0007a703 lw a4,0(a5) +80000408: 0047a583 lw a1,4(a5) +8000040c: 00d50533 add a0,a0,a3 +80000410: 000700e7 jalr a4 +80000414: 00100793 li a5,1 +80000418: 0007806b 0x7806b +8000041c: 03c12083 lw ra,60(sp) +80000420: 03812403 lw s0,56(sp) +80000424: 03412483 lw s1,52(sp) +80000428: 03012903 lw s2,48(sp) +8000042c: 02c12983 lw s3,44(sp) +80000430: 04010113 addi sp,sp,64 +80000434: 00008067 ret +80000438: 00068713 mv a4,a3 +8000043c: f2e7cae3 blt a5,a4,80000370 +80000440: fddff06f j 8000041c +80000444: 00000713 li a4,0 +80000448: 00100693 li a3,1 +8000044c: f5dff06f j 800003a8 +80000450: 00048713 mv a4,s1 +80000454: 00985463 bge a6,s1,8000045c +80000458: 00080713 mv a4,a6 +8000045c: 800007b7 lui a5,0x80000 +80000460: 26878793 addi a5,a5,616 # 80000268 <__stack_top+0x81000268> +80000464: 00f7106b 0xf7106b +80000468: e01ff0ef jal ra,80000268 +8000046c: f71ff06f j 800003dc -80000340 : -80000340: fc010113 addi sp,sp,-64 -80000344: 02112e23 sw ra,60(sp) -80000348: 02812c23 sw s0,56(sp) -8000034c: 02912a23 sw s1,52(sp) -80000350: 03212823 sw s2,48(sp) -80000354: 03312623 sw s3,44(sp) -80000358: fc2026f3 csrr a3,0xfc2 -8000035c: fc102873 csrr a6,0xfc1 -80000360: fc002473 csrr s0,0xfc0 -80000364: cc5027f3 csrr a5,0xcc5 -80000368: 01f00713 li a4,31 -8000036c: 0cf74463 blt a4,a5,80000434 -80000370: 030408b3 mul a7,s0,a6 -80000374: 00100713 li a4,1 -80000378: 00a8d463 bge a7,a0,80000380 -8000037c: 03154733 div a4,a0,a7 -80000380: 0ce6c863 blt a3,a4,80000450 -80000384: 0ae7d863 bge a5,a4,80000434 -80000388: fff68693 addi a3,a3,-1 -8000038c: 02e54333 div t1,a0,a4 -80000390: 00030893 mv a7,t1 -80000394: 00f69663 bne a3,a5,800003a0 -80000398: 02e56533 rem a0,a0,a4 -8000039c: 006508b3 add a7,a0,t1 -800003a0: 0288c4b3 div s1,a7,s0 -800003a4: 0288e933 rem s2,a7,s0 -800003a8: 0b04ca63 blt s1,a6,8000045c -800003ac: 00100693 li a3,1 -800003b0: 0304c733 div a4,s1,a6 -800003b4: 00070663 beqz a4,800003c0 -800003b8: 00070693 mv a3,a4 -800003bc: 0304e733 rem a4,s1,a6 -800003c0: 800029b7 lui s3,0x80002 -800003c4: dec98993 addi s3,s3,-532 # 80001dec <__stack_top+0x81001dec> -800003c8: 00e12e23 sw a4,28(sp) -800003cc: 00c10713 addi a4,sp,12 -800003d0: 00b12623 sw a1,12(sp) -800003d4: 00c12823 sw a2,16(sp) -800003d8: 00d12c23 sw a3,24(sp) -800003dc: 02f30333 mul t1,t1,a5 -800003e0: 00279793 slli a5,a5,0x2 -800003e4: 00f987b3 add a5,s3,a5 -800003e8: 00e7a023 sw a4,0(a5) -800003ec: 00612a23 sw t1,20(sp) -800003f0: 06904c63 bgtz s1,80000468 -800003f4: 04090063 beqz s2,80000434 -800003f8: 02848433 mul s0,s1,s0 -800003fc: 00812a23 sw s0,20(sp) -80000400: 0009006b 0x9006b -80000404: cc5027f3 csrr a5,0xcc5 -80000408: cc202573 csrr a0,0xcc2 -8000040c: 00279793 slli a5,a5,0x2 -80000410: 00f989b3 add s3,s3,a5 -80000414: 0009a783 lw a5,0(s3) -80000418: 0087a683 lw a3,8(a5) -8000041c: 0007a703 lw a4,0(a5) -80000420: 0047a583 lw a1,4(a5) -80000424: 00d50533 add a0,a0,a3 -80000428: 000700e7 jalr a4 -8000042c: 00100793 li a5,1 -80000430: 0007806b 0x7806b -80000434: 03c12083 lw ra,60(sp) -80000438: 03812403 lw s0,56(sp) -8000043c: 03412483 lw s1,52(sp) -80000440: 03012903 lw s2,48(sp) -80000444: 02c12983 lw s3,44(sp) -80000448: 04010113 addi sp,sp,64 -8000044c: 00008067 ret -80000450: 00068713 mv a4,a3 -80000454: f2e7cae3 blt a5,a4,80000388 -80000458: fddff06f j 80000434 -8000045c: 00000713 li a4,0 -80000460: 00100693 li a3,1 -80000464: f5dff06f j 800003c0 -80000468: 00048713 mv a4,s1 -8000046c: 00985463 bge a6,s1,80000474 -80000470: 00080713 mv a4,a6 -80000474: 800007b7 lui a5,0x80000 -80000478: 28078793 addi a5,a5,640 # 80000280 <__stack_top+0x81000280> -8000047c: 00f7106b 0xf7106b -80000480: e01ff0ef jal ra,80000280 -80000484: f71ff06f j 800003f4 +80000470 <__clzsi2>: +80000470: 000107b7 lui a5,0x10 +80000474: 02f57a63 bgeu a0,a5,800004a8 <__clzsi2+0x38> +80000478: 0ff00793 li a5,255 +8000047c: 00a7b7b3 sltu a5,a5,a0 +80000480: 00379793 slli a5,a5,0x3 +80000484: 80001737 lui a4,0x80001 +80000488: 02000693 li a3,32 +8000048c: 40f686b3 sub a3,a3,a5 +80000490: 00f55533 srl a0,a0,a5 +80000494: 89870793 addi a5,a4,-1896 # 80000898 <__stack_top+0x81000898> +80000498: 00a78533 add a0,a5,a0 +8000049c: 00054503 lbu a0,0(a0) +800004a0: 40a68533 sub a0,a3,a0 +800004a4: 00008067 ret +800004a8: 01000737 lui a4,0x1000 +800004ac: 01000793 li a5,16 +800004b0: fce56ae3 bltu a0,a4,80000484 <__clzsi2+0x14> +800004b4: 01800793 li a5,24 +800004b8: fcdff06f j 80000484 <__clzsi2+0x14> -80000488 <__clzsi2>: -80000488: 000107b7 lui a5,0x10 -8000048c: 02f57a63 bgeu a0,a5,800004c0 <__clzsi2+0x38> -80000490: 0ff00793 li a5,255 -80000494: 00a7b7b3 sltu a5,a5,a0 -80000498: 00379793 slli a5,a5,0x3 -8000049c: 80001737 lui a4,0x80001 -800004a0: 02000693 li a3,32 -800004a4: 40f686b3 sub a3,a3,a5 -800004a8: 00f55533 srl a0,a0,a5 -800004ac: 8b070793 addi a5,a4,-1872 # 800008b0 <__stack_top+0x810008b0> -800004b0: 00a78533 add a0,a5,a0 -800004b4: 00054503 lbu a0,0(a0) -800004b8: 40a68533 sub a0,a3,a0 -800004bc: 00008067 ret -800004c0: 01000737 lui a4,0x1000 -800004c4: 01000793 li a5,16 -800004c8: fce56ae3 bltu a0,a4,8000049c <__clzsi2+0x14> -800004cc: 01800793 li a5,24 -800004d0: fcdff06f j 8000049c <__clzsi2+0x14> +800004bc : +800004bc: 00050593 mv a1,a0 +800004c0: 00000693 li a3,0 +800004c4: 00000613 li a2,0 +800004c8: 00000513 li a0,0 +800004cc: 20c0006f j 800006d8 <__register_exitproc> -800004d4 : -800004d4: 00050593 mv a1,a0 -800004d8: 00000693 li a3,0 -800004dc: 00000613 li a2,0 -800004e0: 00000513 li a0,0 -800004e4: 20c0006f j 800006f0 <__register_exitproc> +800004d0 : +800004d0: ff010113 addi sp,sp,-16 +800004d4: 00000593 li a1,0 +800004d8: 00812423 sw s0,8(sp) +800004dc: 00112623 sw ra,12(sp) +800004e0: 00050413 mv s0,a0 +800004e4: 290000ef jal ra,80000774 <__call_exitprocs> +800004e8: 800027b7 lui a5,0x80002 +800004ec: dd07a503 lw a0,-560(a5) # 80001dd0 <__stack_top+0x81001dd0> +800004f0: 03c52783 lw a5,60(a0) +800004f4: 00078463 beqz a5,800004fc +800004f8: 000780e7 jalr a5 +800004fc: 00040513 mv a0,s0 +80000500: d25ff0ef jal ra,80000224 <_exit> -800004e8 : -800004e8: ff010113 addi sp,sp,-16 -800004ec: 00000593 li a1,0 -800004f0: 00812423 sw s0,8(sp) -800004f4: 00112623 sw ra,12(sp) -800004f8: 00050413 mv s0,a0 -800004fc: 290000ef jal ra,8000078c <__call_exitprocs> -80000500: 800027b7 lui a5,0x80002 -80000504: de87a503 lw a0,-536(a5) # 80001de8 <__stack_top+0x81001de8> -80000508: 03c52783 lw a5,60(a0) -8000050c: 00078463 beqz a5,80000514 -80000510: 000780e7 jalr a5 -80000514: 00040513 mv a0,s0 -80000518: d25ff0ef jal ra,8000023c <_exit> +80000504 <__libc_fini_array>: +80000504: ff010113 addi sp,sp,-16 +80000508: 00812423 sw s0,8(sp) +8000050c: 800027b7 lui a5,0x80002 +80000510: 80002437 lui s0,0x80002 +80000514: 99c40413 addi s0,s0,-1636 # 8000199c <__stack_top+0x8100199c> +80000518: 99c78793 addi a5,a5,-1636 # 8000199c <__stack_top+0x8100199c> +8000051c: 408787b3 sub a5,a5,s0 +80000520: 00912223 sw s1,4(sp) +80000524: 00112623 sw ra,12(sp) +80000528: 4027d493 srai s1,a5,0x2 +8000052c: 02048063 beqz s1,8000054c <__libc_fini_array+0x48> +80000530: ffc78793 addi a5,a5,-4 +80000534: 00878433 add s0,a5,s0 +80000538: 00042783 lw a5,0(s0) +8000053c: fff48493 addi s1,s1,-1 +80000540: ffc40413 addi s0,s0,-4 +80000544: 000780e7 jalr a5 +80000548: fe0498e3 bnez s1,80000538 <__libc_fini_array+0x34> +8000054c: 00c12083 lw ra,12(sp) +80000550: 00812403 lw s0,8(sp) +80000554: 00412483 lw s1,4(sp) +80000558: 01010113 addi sp,sp,16 +8000055c: 00008067 ret -8000051c <__libc_fini_array>: -8000051c: ff010113 addi sp,sp,-16 -80000520: 00812423 sw s0,8(sp) -80000524: 800027b7 lui a5,0x80002 -80000528: 80002437 lui s0,0x80002 -8000052c: 9b440413 addi s0,s0,-1612 # 800019b4 <__stack_top+0x810019b4> -80000530: 9b478793 addi a5,a5,-1612 # 800019b4 <__stack_top+0x810019b4> -80000534: 408787b3 sub a5,a5,s0 -80000538: 00912223 sw s1,4(sp) -8000053c: 00112623 sw ra,12(sp) -80000540: 4027d493 srai s1,a5,0x2 -80000544: 02048063 beqz s1,80000564 <__libc_fini_array+0x48> -80000548: ffc78793 addi a5,a5,-4 -8000054c: 00878433 add s0,a5,s0 -80000550: 00042783 lw a5,0(s0) -80000554: fff48493 addi s1,s1,-1 -80000558: ffc40413 addi s0,s0,-4 -8000055c: 000780e7 jalr a5 -80000560: fe0498e3 bnez s1,80000550 <__libc_fini_array+0x34> -80000564: 00c12083 lw ra,12(sp) -80000568: 00812403 lw s0,8(sp) -8000056c: 00412483 lw s1,4(sp) -80000570: 01010113 addi sp,sp,16 -80000574: 00008067 ret +80000560 <__libc_init_array>: +80000560: ff010113 addi sp,sp,-16 +80000564: 00812423 sw s0,8(sp) +80000568: 01212023 sw s2,0(sp) +8000056c: 80002437 lui s0,0x80002 +80000570: 80002937 lui s2,0x80002 +80000574: 99840793 addi a5,s0,-1640 # 80001998 <__stack_top+0x81001998> +80000578: 99890913 addi s2,s2,-1640 # 80001998 <__stack_top+0x81001998> +8000057c: 40f90933 sub s2,s2,a5 +80000580: 00112623 sw ra,12(sp) +80000584: 00912223 sw s1,4(sp) +80000588: 40295913 srai s2,s2,0x2 +8000058c: 02090063 beqz s2,800005ac <__libc_init_array+0x4c> +80000590: 99840413 addi s0,s0,-1640 +80000594: 00000493 li s1,0 +80000598: 00042783 lw a5,0(s0) +8000059c: 00148493 addi s1,s1,1 +800005a0: 00440413 addi s0,s0,4 +800005a4: 000780e7 jalr a5 +800005a8: fe9918e3 bne s2,s1,80000598 <__libc_init_array+0x38> +800005ac: 80002437 lui s0,0x80002 +800005b0: 80002937 lui s2,0x80002 +800005b4: 99840793 addi a5,s0,-1640 # 80001998 <__stack_top+0x81001998> +800005b8: 99c90913 addi s2,s2,-1636 # 8000199c <__stack_top+0x8100199c> +800005bc: 40f90933 sub s2,s2,a5 +800005c0: 40295913 srai s2,s2,0x2 +800005c4: 02090063 beqz s2,800005e4 <__libc_init_array+0x84> +800005c8: 99840413 addi s0,s0,-1640 +800005cc: 00000493 li s1,0 +800005d0: 00042783 lw a5,0(s0) +800005d4: 00148493 addi s1,s1,1 +800005d8: 00440413 addi s0,s0,4 +800005dc: 000780e7 jalr a5 +800005e0: fe9918e3 bne s2,s1,800005d0 <__libc_init_array+0x70> +800005e4: 00c12083 lw ra,12(sp) +800005e8: 00812403 lw s0,8(sp) +800005ec: 00412483 lw s1,4(sp) +800005f0: 00012903 lw s2,0(sp) +800005f4: 01010113 addi sp,sp,16 +800005f8: 00008067 ret -80000578 <__libc_init_array>: -80000578: ff010113 addi sp,sp,-16 -8000057c: 00812423 sw s0,8(sp) -80000580: 01212023 sw s2,0(sp) -80000584: 80002437 lui s0,0x80002 -80000588: 80002937 lui s2,0x80002 -8000058c: 9b040793 addi a5,s0,-1616 # 800019b0 <__stack_top+0x810019b0> -80000590: 9b090913 addi s2,s2,-1616 # 800019b0 <__stack_top+0x810019b0> -80000594: 40f90933 sub s2,s2,a5 -80000598: 00112623 sw ra,12(sp) -8000059c: 00912223 sw s1,4(sp) -800005a0: 40295913 srai s2,s2,0x2 -800005a4: 02090063 beqz s2,800005c4 <__libc_init_array+0x4c> -800005a8: 9b040413 addi s0,s0,-1616 -800005ac: 00000493 li s1,0 -800005b0: 00042783 lw a5,0(s0) -800005b4: 00148493 addi s1,s1,1 -800005b8: 00440413 addi s0,s0,4 -800005bc: 000780e7 jalr a5 -800005c0: fe9918e3 bne s2,s1,800005b0 <__libc_init_array+0x38> -800005c4: 80002437 lui s0,0x80002 -800005c8: 80002937 lui s2,0x80002 -800005cc: 9b040793 addi a5,s0,-1616 # 800019b0 <__stack_top+0x810019b0> -800005d0: 9b490913 addi s2,s2,-1612 # 800019b4 <__stack_top+0x810019b4> -800005d4: 40f90933 sub s2,s2,a5 -800005d8: 40295913 srai s2,s2,0x2 -800005dc: 02090063 beqz s2,800005fc <__libc_init_array+0x84> -800005e0: 9b040413 addi s0,s0,-1616 -800005e4: 00000493 li s1,0 -800005e8: 00042783 lw a5,0(s0) -800005ec: 00148493 addi s1,s1,1 -800005f0: 00440413 addi s0,s0,4 -800005f4: 000780e7 jalr a5 -800005f8: fe9918e3 bne s2,s1,800005e8 <__libc_init_array+0x70> -800005fc: 00c12083 lw ra,12(sp) -80000600: 00812403 lw s0,8(sp) -80000604: 00412483 lw s1,4(sp) -80000608: 00012903 lw s2,0(sp) -8000060c: 01010113 addi sp,sp,16 -80000610: 00008067 ret +800005fc : +800005fc: 00f00313 li t1,15 +80000600: 00050713 mv a4,a0 +80000604: 02c37e63 bgeu t1,a2,80000640 +80000608: 00f77793 andi a5,a4,15 +8000060c: 0a079063 bnez a5,800006ac +80000610: 08059263 bnez a1,80000694 +80000614: ff067693 andi a3,a2,-16 +80000618: 00f67613 andi a2,a2,15 +8000061c: 00e686b3 add a3,a3,a4 +80000620: 00b72023 sw a1,0(a4) # 1000000 <__stack_size+0xfffc00> +80000624: 00b72223 sw a1,4(a4) +80000628: 00b72423 sw a1,8(a4) +8000062c: 00b72623 sw a1,12(a4) +80000630: 01070713 addi a4,a4,16 +80000634: fed766e3 bltu a4,a3,80000620 +80000638: 00061463 bnez a2,80000640 +8000063c: 00008067 ret +80000640: 40c306b3 sub a3,t1,a2 +80000644: 00269693 slli a3,a3,0x2 +80000648: 00000297 auipc t0,0x0 +8000064c: 005686b3 add a3,a3,t0 +80000650: 00c68067 jr 12(a3) +80000654: 00b70723 sb a1,14(a4) +80000658: 00b706a3 sb a1,13(a4) +8000065c: 00b70623 sb a1,12(a4) +80000660: 00b705a3 sb a1,11(a4) +80000664: 00b70523 sb a1,10(a4) +80000668: 00b704a3 sb a1,9(a4) +8000066c: 00b70423 sb a1,8(a4) +80000670: 00b703a3 sb a1,7(a4) +80000674: 00b70323 sb a1,6(a4) +80000678: 00b702a3 sb a1,5(a4) +8000067c: 00b70223 sb a1,4(a4) +80000680: 00b701a3 sb a1,3(a4) +80000684: 00b70123 sb a1,2(a4) +80000688: 00b700a3 sb a1,1(a4) +8000068c: 00b70023 sb a1,0(a4) +80000690: 00008067 ret +80000694: 0ff5f593 andi a1,a1,255 +80000698: 00859693 slli a3,a1,0x8 +8000069c: 00d5e5b3 or a1,a1,a3 +800006a0: 01059693 slli a3,a1,0x10 +800006a4: 00d5e5b3 or a1,a1,a3 +800006a8: f6dff06f j 80000614 +800006ac: 00279693 slli a3,a5,0x2 +800006b0: 00000297 auipc t0,0x0 +800006b4: 005686b3 add a3,a3,t0 +800006b8: 00008293 mv t0,ra +800006bc: fa0680e7 jalr -96(a3) +800006c0: 00028093 mv ra,t0 +800006c4: ff078793 addi a5,a5,-16 +800006c8: 40f70733 sub a4,a4,a5 +800006cc: 00f60633 add a2,a2,a5 +800006d0: f6c378e3 bgeu t1,a2,80000640 +800006d4: f3dff06f j 80000610 -80000614 : -80000614: 00f00313 li t1,15 -80000618: 00050713 mv a4,a0 -8000061c: 02c37e63 bgeu t1,a2,80000658 -80000620: 00f77793 andi a5,a4,15 -80000624: 0a079063 bnez a5,800006c4 -80000628: 08059263 bnez a1,800006ac -8000062c: ff067693 andi a3,a2,-16 -80000630: 00f67613 andi a2,a2,15 -80000634: 00e686b3 add a3,a3,a4 -80000638: 00b72023 sw a1,0(a4) # 1000000 <__stack_size+0xfffc00> -8000063c: 00b72223 sw a1,4(a4) -80000640: 00b72423 sw a1,8(a4) -80000644: 00b72623 sw a1,12(a4) -80000648: 01070713 addi a4,a4,16 -8000064c: fed766e3 bltu a4,a3,80000638 -80000650: 00061463 bnez a2,80000658 -80000654: 00008067 ret -80000658: 40c306b3 sub a3,t1,a2 -8000065c: 00269693 slli a3,a3,0x2 -80000660: 00000297 auipc t0,0x0 -80000664: 005686b3 add a3,a3,t0 -80000668: 00c68067 jr 12(a3) -8000066c: 00b70723 sb a1,14(a4) -80000670: 00b706a3 sb a1,13(a4) -80000674: 00b70623 sb a1,12(a4) -80000678: 00b705a3 sb a1,11(a4) -8000067c: 00b70523 sb a1,10(a4) -80000680: 00b704a3 sb a1,9(a4) -80000684: 00b70423 sb a1,8(a4) -80000688: 00b703a3 sb a1,7(a4) -8000068c: 00b70323 sb a1,6(a4) -80000690: 00b702a3 sb a1,5(a4) -80000694: 00b70223 sb a1,4(a4) -80000698: 00b701a3 sb a1,3(a4) -8000069c: 00b70123 sb a1,2(a4) -800006a0: 00b700a3 sb a1,1(a4) -800006a4: 00b70023 sb a1,0(a4) -800006a8: 00008067 ret -800006ac: 0ff5f593 andi a1,a1,255 -800006b0: 00859693 slli a3,a1,0x8 -800006b4: 00d5e5b3 or a1,a1,a3 -800006b8: 01059693 slli a3,a1,0x10 -800006bc: 00d5e5b3 or a1,a1,a3 -800006c0: f6dff06f j 8000062c -800006c4: 00279693 slli a3,a5,0x2 -800006c8: 00000297 auipc t0,0x0 -800006cc: 005686b3 add a3,a3,t0 -800006d0: 00008293 mv t0,ra -800006d4: fa0680e7 jalr -96(a3) -800006d8: 00028093 mv ra,t0 -800006dc: ff078793 addi a5,a5,-16 -800006e0: 40f70733 sub a4,a4,a5 -800006e4: 00f60633 add a2,a2,a5 -800006e8: f6c378e3 bgeu t1,a2,80000658 -800006ec: f3dff06f j 80000628 +800006d8 <__register_exitproc>: +800006d8: 800027b7 lui a5,0x80002 +800006dc: dd07a703 lw a4,-560(a5) # 80001dd0 <__stack_top+0x81001dd0> +800006e0: 14872783 lw a5,328(a4) +800006e4: 04078c63 beqz a5,8000073c <__register_exitproc+0x64> +800006e8: 0047a703 lw a4,4(a5) +800006ec: 01f00813 li a6,31 +800006f0: 06e84e63 blt a6,a4,8000076c <__register_exitproc+0x94> +800006f4: 00271813 slli a6,a4,0x2 +800006f8: 02050663 beqz a0,80000724 <__register_exitproc+0x4c> +800006fc: 01078333 add t1,a5,a6 +80000700: 08c32423 sw a2,136(t1) +80000704: 1887a883 lw a7,392(a5) +80000708: 00100613 li a2,1 +8000070c: 00e61633 sll a2,a2,a4 +80000710: 00c8e8b3 or a7,a7,a2 +80000714: 1917a423 sw a7,392(a5) +80000718: 10d32423 sw a3,264(t1) +8000071c: 00200693 li a3,2 +80000720: 02d50463 beq a0,a3,80000748 <__register_exitproc+0x70> +80000724: 00170713 addi a4,a4,1 +80000728: 00e7a223 sw a4,4(a5) +8000072c: 010787b3 add a5,a5,a6 +80000730: 00b7a423 sw a1,8(a5) +80000734: 00000513 li a0,0 +80000738: 00008067 ret +8000073c: 14c70793 addi a5,a4,332 +80000740: 14f72423 sw a5,328(a4) +80000744: fa5ff06f j 800006e8 <__register_exitproc+0x10> +80000748: 18c7a683 lw a3,396(a5) +8000074c: 00170713 addi a4,a4,1 +80000750: 00e7a223 sw a4,4(a5) +80000754: 00c6e633 or a2,a3,a2 +80000758: 18c7a623 sw a2,396(a5) +8000075c: 010787b3 add a5,a5,a6 +80000760: 00b7a423 sw a1,8(a5) +80000764: 00000513 li a0,0 +80000768: 00008067 ret +8000076c: fff00513 li a0,-1 +80000770: 00008067 ret -800006f0 <__register_exitproc>: -800006f0: 800027b7 lui a5,0x80002 -800006f4: de87a703 lw a4,-536(a5) # 80001de8 <__stack_top+0x81001de8> -800006f8: 14872783 lw a5,328(a4) -800006fc: 04078c63 beqz a5,80000754 <__register_exitproc+0x64> -80000700: 0047a703 lw a4,4(a5) -80000704: 01f00813 li a6,31 -80000708: 06e84e63 blt a6,a4,80000784 <__register_exitproc+0x94> -8000070c: 00271813 slli a6,a4,0x2 -80000710: 02050663 beqz a0,8000073c <__register_exitproc+0x4c> -80000714: 01078333 add t1,a5,a6 -80000718: 08c32423 sw a2,136(t1) -8000071c: 1887a883 lw a7,392(a5) -80000720: 00100613 li a2,1 -80000724: 00e61633 sll a2,a2,a4 -80000728: 00c8e8b3 or a7,a7,a2 -8000072c: 1917a423 sw a7,392(a5) -80000730: 10d32423 sw a3,264(t1) -80000734: 00200693 li a3,2 -80000738: 02d50463 beq a0,a3,80000760 <__register_exitproc+0x70> -8000073c: 00170713 addi a4,a4,1 -80000740: 00e7a223 sw a4,4(a5) -80000744: 010787b3 add a5,a5,a6 -80000748: 00b7a423 sw a1,8(a5) -8000074c: 00000513 li a0,0 -80000750: 00008067 ret -80000754: 14c70793 addi a5,a4,332 -80000758: 14f72423 sw a5,328(a4) -8000075c: fa5ff06f j 80000700 <__register_exitproc+0x10> -80000760: 18c7a683 lw a3,396(a5) -80000764: 00170713 addi a4,a4,1 -80000768: 00e7a223 sw a4,4(a5) -8000076c: 00c6e633 or a2,a3,a2 -80000770: 18c7a623 sw a2,396(a5) -80000774: 010787b3 add a5,a5,a6 -80000778: 00b7a423 sw a1,8(a5) -8000077c: 00000513 li a0,0 -80000780: 00008067 ret -80000784: fff00513 li a0,-1 -80000788: 00008067 ret - -8000078c <__call_exitprocs>: -8000078c: fd010113 addi sp,sp,-48 -80000790: 800027b7 lui a5,0x80002 -80000794: 01412c23 sw s4,24(sp) -80000798: de87aa03 lw s4,-536(a5) # 80001de8 <__stack_top+0x81001de8> -8000079c: 03212023 sw s2,32(sp) -800007a0: 02112623 sw ra,44(sp) -800007a4: 148a2903 lw s2,328(s4) -800007a8: 02812423 sw s0,40(sp) -800007ac: 02912223 sw s1,36(sp) -800007b0: 01312e23 sw s3,28(sp) -800007b4: 01512a23 sw s5,20(sp) -800007b8: 01612823 sw s6,16(sp) -800007bc: 01712623 sw s7,12(sp) -800007c0: 01812423 sw s8,8(sp) -800007c4: 04090063 beqz s2,80000804 <__call_exitprocs+0x78> -800007c8: 00050b13 mv s6,a0 -800007cc: 00058b93 mv s7,a1 -800007d0: 00100a93 li s5,1 -800007d4: fff00993 li s3,-1 -800007d8: 00492483 lw s1,4(s2) -800007dc: fff48413 addi s0,s1,-1 -800007e0: 02044263 bltz s0,80000804 <__call_exitprocs+0x78> -800007e4: 00249493 slli s1,s1,0x2 -800007e8: 009904b3 add s1,s2,s1 -800007ec: 040b8463 beqz s7,80000834 <__call_exitprocs+0xa8> -800007f0: 1044a783 lw a5,260(s1) -800007f4: 05778063 beq a5,s7,80000834 <__call_exitprocs+0xa8> -800007f8: fff40413 addi s0,s0,-1 -800007fc: ffc48493 addi s1,s1,-4 -80000800: ff3416e3 bne s0,s3,800007ec <__call_exitprocs+0x60> -80000804: 02c12083 lw ra,44(sp) -80000808: 02812403 lw s0,40(sp) -8000080c: 02412483 lw s1,36(sp) -80000810: 02012903 lw s2,32(sp) -80000814: 01c12983 lw s3,28(sp) -80000818: 01812a03 lw s4,24(sp) -8000081c: 01412a83 lw s5,20(sp) -80000820: 01012b03 lw s6,16(sp) -80000824: 00c12b83 lw s7,12(sp) -80000828: 00812c03 lw s8,8(sp) -8000082c: 03010113 addi sp,sp,48 -80000830: 00008067 ret -80000834: 00492783 lw a5,4(s2) -80000838: 0044a683 lw a3,4(s1) -8000083c: fff78793 addi a5,a5,-1 -80000840: 04878e63 beq a5,s0,8000089c <__call_exitprocs+0x110> -80000844: 0004a223 sw zero,4(s1) -80000848: fa0688e3 beqz a3,800007f8 <__call_exitprocs+0x6c> -8000084c: 18892783 lw a5,392(s2) -80000850: 008a9733 sll a4,s5,s0 -80000854: 00492c03 lw s8,4(s2) -80000858: 00f777b3 and a5,a4,a5 -8000085c: 02079263 bnez a5,80000880 <__call_exitprocs+0xf4> -80000860: 000680e7 jalr a3 -80000864: 00492703 lw a4,4(s2) -80000868: 148a2783 lw a5,328(s4) -8000086c: 01871463 bne a4,s8,80000874 <__call_exitprocs+0xe8> -80000870: f8f904e3 beq s2,a5,800007f8 <__call_exitprocs+0x6c> -80000874: f80788e3 beqz a5,80000804 <__call_exitprocs+0x78> -80000878: 00078913 mv s2,a5 -8000087c: f5dff06f j 800007d8 <__call_exitprocs+0x4c> -80000880: 18c92783 lw a5,396(s2) -80000884: 0844a583 lw a1,132(s1) -80000888: 00f77733 and a4,a4,a5 -8000088c: 00071c63 bnez a4,800008a4 <__call_exitprocs+0x118> -80000890: 000b0513 mv a0,s6 -80000894: 000680e7 jalr a3 -80000898: fcdff06f j 80000864 <__call_exitprocs+0xd8> -8000089c: 00892223 sw s0,4(s2) -800008a0: fa9ff06f j 80000848 <__call_exitprocs+0xbc> -800008a4: 00058513 mv a0,a1 -800008a8: 000680e7 jalr a3 -800008ac: fb9ff06f j 80000864 <__call_exitprocs+0xd8> +80000774 <__call_exitprocs>: +80000774: fd010113 addi sp,sp,-48 +80000778: 800027b7 lui a5,0x80002 +8000077c: 01412c23 sw s4,24(sp) +80000780: dd07aa03 lw s4,-560(a5) # 80001dd0 <__stack_top+0x81001dd0> +80000784: 03212023 sw s2,32(sp) +80000788: 02112623 sw ra,44(sp) +8000078c: 148a2903 lw s2,328(s4) +80000790: 02812423 sw s0,40(sp) +80000794: 02912223 sw s1,36(sp) +80000798: 01312e23 sw s3,28(sp) +8000079c: 01512a23 sw s5,20(sp) +800007a0: 01612823 sw s6,16(sp) +800007a4: 01712623 sw s7,12(sp) +800007a8: 01812423 sw s8,8(sp) +800007ac: 04090063 beqz s2,800007ec <__call_exitprocs+0x78> +800007b0: 00050b13 mv s6,a0 +800007b4: 00058b93 mv s7,a1 +800007b8: 00100a93 li s5,1 +800007bc: fff00993 li s3,-1 +800007c0: 00492483 lw s1,4(s2) +800007c4: fff48413 addi s0,s1,-1 +800007c8: 02044263 bltz s0,800007ec <__call_exitprocs+0x78> +800007cc: 00249493 slli s1,s1,0x2 +800007d0: 009904b3 add s1,s2,s1 +800007d4: 040b8463 beqz s7,8000081c <__call_exitprocs+0xa8> +800007d8: 1044a783 lw a5,260(s1) +800007dc: 05778063 beq a5,s7,8000081c <__call_exitprocs+0xa8> +800007e0: fff40413 addi s0,s0,-1 +800007e4: ffc48493 addi s1,s1,-4 +800007e8: ff3416e3 bne s0,s3,800007d4 <__call_exitprocs+0x60> +800007ec: 02c12083 lw ra,44(sp) +800007f0: 02812403 lw s0,40(sp) +800007f4: 02412483 lw s1,36(sp) +800007f8: 02012903 lw s2,32(sp) +800007fc: 01c12983 lw s3,28(sp) +80000800: 01812a03 lw s4,24(sp) +80000804: 01412a83 lw s5,20(sp) +80000808: 01012b03 lw s6,16(sp) +8000080c: 00c12b83 lw s7,12(sp) +80000810: 00812c03 lw s8,8(sp) +80000814: 03010113 addi sp,sp,48 +80000818: 00008067 ret +8000081c: 00492783 lw a5,4(s2) +80000820: 0044a683 lw a3,4(s1) +80000824: fff78793 addi a5,a5,-1 +80000828: 04878e63 beq a5,s0,80000884 <__call_exitprocs+0x110> +8000082c: 0004a223 sw zero,4(s1) +80000830: fa0688e3 beqz a3,800007e0 <__call_exitprocs+0x6c> +80000834: 18892783 lw a5,392(s2) +80000838: 008a9733 sll a4,s5,s0 +8000083c: 00492c03 lw s8,4(s2) +80000840: 00f777b3 and a5,a4,a5 +80000844: 02079263 bnez a5,80000868 <__call_exitprocs+0xf4> +80000848: 000680e7 jalr a3 +8000084c: 00492703 lw a4,4(s2) +80000850: 148a2783 lw a5,328(s4) +80000854: 01871463 bne a4,s8,8000085c <__call_exitprocs+0xe8> +80000858: f8f904e3 beq s2,a5,800007e0 <__call_exitprocs+0x6c> +8000085c: f80788e3 beqz a5,800007ec <__call_exitprocs+0x78> +80000860: 00078913 mv s2,a5 +80000864: f5dff06f j 800007c0 <__call_exitprocs+0x4c> +80000868: 18c92783 lw a5,396(s2) +8000086c: 0844a583 lw a1,132(s1) +80000870: 00f77733 and a4,a4,a5 +80000874: 00071c63 bnez a4,8000088c <__call_exitprocs+0x118> +80000878: 000b0513 mv a0,s6 +8000087c: 000680e7 jalr a3 +80000880: fcdff06f j 8000084c <__call_exitprocs+0xd8> +80000884: 00892223 sw s0,4(s2) +80000888: fa9ff06f j 80000830 <__call_exitprocs+0xbc> +8000088c: 00058513 mv a0,a1 +80000890: 000680e7 jalr a3 +80000894: fb9ff06f j 8000084c <__call_exitprocs+0xd8> Disassembly of section .rodata: -800008b0 <__clz_tab>: -800008b0: 0100 addi s0,sp,128 -800008b2: 0202 c.slli64 tp -800008b4: 03030303 lb t1,48(t1) -800008b8: 0404 addi s1,sp,512 -800008ba: 0404 addi s1,sp,512 -800008bc: 0404 addi s1,sp,512 -800008be: 0404 addi s1,sp,512 -800008c0: 0505 addi a0,a0,1 -800008c2: 0505 addi a0,a0,1 -800008c4: 0505 addi a0,a0,1 -800008c6: 0505 addi a0,a0,1 -800008c8: 0505 addi a0,a0,1 -800008ca: 0505 addi a0,a0,1 -800008cc: 0505 addi a0,a0,1 -800008ce: 0505 addi a0,a0,1 +80000898 <__clz_tab>: +80000898: 0100 addi s0,sp,128 +8000089a: 0202 c.slli64 tp +8000089c: 03030303 lb t1,48(t1) +800008a0: 0404 addi s1,sp,512 +800008a2: 0404 addi s1,sp,512 +800008a4: 0404 addi s1,sp,512 +800008a6: 0404 addi s1,sp,512 +800008a8: 0505 addi a0,a0,1 +800008aa: 0505 addi a0,a0,1 +800008ac: 0505 addi a0,a0,1 +800008ae: 0505 addi a0,a0,1 +800008b0: 0505 addi a0,a0,1 +800008b2: 0505 addi a0,a0,1 +800008b4: 0505 addi a0,a0,1 +800008b6: 0505 addi a0,a0,1 +800008b8: 0606 slli a2,a2,0x1 +800008ba: 0606 slli a2,a2,0x1 +800008bc: 0606 slli a2,a2,0x1 +800008be: 0606 slli a2,a2,0x1 +800008c0: 0606 slli a2,a2,0x1 +800008c2: 0606 slli a2,a2,0x1 +800008c4: 0606 slli a2,a2,0x1 +800008c6: 0606 slli a2,a2,0x1 +800008c8: 0606 slli a2,a2,0x1 +800008ca: 0606 slli a2,a2,0x1 +800008cc: 0606 slli a2,a2,0x1 +800008ce: 0606 slli a2,a2,0x1 800008d0: 0606 slli a2,a2,0x1 800008d2: 0606 slli a2,a2,0x1 800008d4: 0606 slli a2,a2,0x1 800008d6: 0606 slli a2,a2,0x1 -800008d8: 0606 slli a2,a2,0x1 -800008da: 0606 slli a2,a2,0x1 -800008dc: 0606 slli a2,a2,0x1 -800008de: 0606 slli a2,a2,0x1 -800008e0: 0606 slli a2,a2,0x1 -800008e2: 0606 slli a2,a2,0x1 -800008e4: 0606 slli a2,a2,0x1 -800008e6: 0606 slli a2,a2,0x1 -800008e8: 0606 slli a2,a2,0x1 -800008ea: 0606 slli a2,a2,0x1 -800008ec: 0606 slli a2,a2,0x1 -800008ee: 0606 slli a2,a2,0x1 +800008d8: 07070707 0x7070707 +800008dc: 07070707 0x7070707 +800008e0: 07070707 0x7070707 +800008e4: 07070707 0x7070707 +800008e8: 07070707 0x7070707 +800008ec: 07070707 0x7070707 800008f0: 07070707 0x7070707 800008f4: 07070707 0x7070707 800008f8: 07070707 0x7070707 @@ -640,12 +640,18 @@ Disassembly of section .rodata: 8000090c: 07070707 0x7070707 80000910: 07070707 0x7070707 80000914: 07070707 0x7070707 -80000918: 07070707 0x7070707 -8000091c: 07070707 0x7070707 -80000920: 07070707 0x7070707 -80000924: 07070707 0x7070707 -80000928: 07070707 0x7070707 -8000092c: 07070707 0x7070707 +80000918: 0808 addi a0,sp,16 +8000091a: 0808 addi a0,sp,16 +8000091c: 0808 addi a0,sp,16 +8000091e: 0808 addi a0,sp,16 +80000920: 0808 addi a0,sp,16 +80000922: 0808 addi a0,sp,16 +80000924: 0808 addi a0,sp,16 +80000926: 0808 addi a0,sp,16 +80000928: 0808 addi a0,sp,16 +8000092a: 0808 addi a0,sp,16 +8000092c: 0808 addi a0,sp,16 +8000092e: 0808 addi a0,sp,16 80000930: 0808 addi a0,sp,16 80000932: 0808 addi a0,sp,16 80000934: 0808 addi a0,sp,16 @@ -698,65 +704,53 @@ Disassembly of section .rodata: 80000992: 0808 addi a0,sp,16 80000994: 0808 addi a0,sp,16 80000996: 0808 addi a0,sp,16 -80000998: 0808 addi a0,sp,16 -8000099a: 0808 addi a0,sp,16 -8000099c: 0808 addi a0,sp,16 -8000099e: 0808 addi a0,sp,16 -800009a0: 0808 addi a0,sp,16 -800009a2: 0808 addi a0,sp,16 -800009a4: 0808 addi a0,sp,16 -800009a6: 0808 addi a0,sp,16 -800009a8: 0808 addi a0,sp,16 -800009aa: 0808 addi a0,sp,16 -800009ac: 0808 addi a0,sp,16 -800009ae: 0808 addi a0,sp,16 Disassembly of section .init_array: -800019b0 <__init_array_start>: -800019b0: 0184 addi s1,sp,192 -800019b2: 8000 0x8000 +80001998 <__init_array_start>: +80001998: 016c addi a1,sp,140 +8000199a: 8000 0x8000 Disassembly of section .data: -800019b8 : -800019b8: 0000 unimp -800019ba: 0000 unimp -800019bc: 1ca4 addi s1,sp,632 -800019be: 8000 0x8000 -800019c0: 1d0c addi a1,sp,688 -800019c2: 8000 0x8000 -800019c4: 1d74 addi a3,sp,700 -800019c6: 8000 0x8000 +800019a0 : +800019a0: 0000 unimp +800019a2: 0000 unimp +800019a4: 1c8c addi a1,sp,624 +800019a6: 8000 0x8000 +800019a8: 1cf4 addi a3,sp,636 +800019aa: 8000 0x8000 +800019ac: 1d5c addi a5,sp,692 +800019ae: 8000 0x8000 ... -80001a60: 0001 nop -80001a62: 0000 unimp -80001a64: 0000 unimp -80001a66: 0000 unimp -80001a68: 330e fld ft6,224(sp) -80001a6a: abcd j 8000205c <__BSS_END__+0x1f0> -80001a6c: 1234 addi a3,sp,296 -80001a6e: e66d bnez a2,80001b58 -80001a70: deec sw a1,124(a3) -80001a72: 0005 c.nop 1 -80001a74: 0000000b 0xb +80001a48: 0001 nop +80001a4a: 0000 unimp +80001a4c: 0000 unimp +80001a4e: 0000 unimp +80001a50: 330e fld ft6,224(sp) +80001a52: abcd j 80002044 <__BSS_END__+0x1f0> +80001a54: 1234 addi a3,sp,296 +80001a56: e66d bnez a2,80001b40 +80001a58: deec sw a1,124(a3) +80001a5a: 0005 c.nop 1 +80001a5c: 0000000b 0xb ... Disassembly of section .sdata: -80001de0 <__SDATA_BEGIN__>: -80001de0: 0000 unimp -80001de2: 4980 lw s0,16(a1) -80001de4: 0000 unimp -80001de6: 3f80 fld fs0,56(a5) +80001dc8 <__SDATA_BEGIN__>: +80001dc8: 0000 unimp +80001dca: 4980 lw s0,16(a1) +80001dcc: 0000 unimp +80001dce: 3f80 fld fs0,56(a5) -80001de8 <_global_impure_ptr>: -80001de8: 19b8 addi a4,sp,248 -80001dea: 8000 0x8000 +80001dd0 <_global_impure_ptr>: +80001dd0: 19a0 addi s0,sp,248 +80001dd2: 8000 0x8000 Disassembly of section .bss: -80001dec : +80001dd4 : ... Disassembly of section .comment: @@ -800,7 +794,7 @@ Disassembly of section .debug_aranges: a: 0004 0x4 c: 0000 unimp e: 0000 unimp - 10: 0488 addi a0,sp,576 + 10: 0470 addi a2,sp,524 12: 8000 0x8000 14: 004c addi a1,sp,4 ... @@ -826,7 +820,7 @@ Disassembly of section .debug_info: 12: 0004 0x4 14: 5900 lw s0,48(a0) 16: 0006 c.slli zero,0x1 - 18: 8800 0x8800 + 18: 7000 flw fs0,32(s0) 1a: 0004 0x4 1c: 4c80 lw s0,24(s1) 1e: 0000 unimp @@ -2074,7 +2068,7 @@ Disassembly of section .debug_info: b80: 02c2 slli t0,t0,0x10 b82: 2501 jal 1182 <__stack_size+0xd82> b84: 0000 unimp - b86: 8800 0x8800 + b86: 7000 flw fs0,32(s0) b88: 0004 0x4 b8a: 4c80 lw s0,24(s1) b8c: 0000 unimp @@ -3319,7 +3313,7 @@ Disassembly of section .debug_info: 1736: b20d j 1058 <__stack_size+0xc58> 1738: 0f02 c.slli64 t5 173a: 0305 addi t1,t1,1 - 173c: 08b0 addi a2,sp,88 + 173c: 0898 addi a4,sp,80 173e: 8000 0x8000 ... @@ -3915,7 +3909,7 @@ Disassembly of section .debug_line: 224: 0500 addi s0,sp,640 226: 0001 nop 228: 0205 addi tp,tp,1 - 22a: 0488 addi a0,sp,576 + 22a: 0470 addi a2,sp,524 22c: 8000 0x8000 22e: 0105c203 lbu tp,16(a1) 232: 0305 addi t1,t1,1 @@ -4195,7 +4189,7 @@ Disassembly of section .debug_frame: 12: 0000 unimp 14: 0000 unimp 16: 0000 unimp - 18: 0488 addi a0,sp,576 + 18: 0470 addi a2,sp,524 1a: 8000 0x8000 1c: 004c addi a1,sp,4 ... diff --git a/driver/tests/tex_demo/kernel.elf b/driver/tests/tex_demo/kernel.elf index cbed7d43..2024bf95 100755 Binary files a/driver/tests/tex_demo/kernel.elf and b/driver/tests/tex_demo/kernel.elf differ diff --git a/driver/tests/tex_demo/main.cpp b/driver/tests/tex_demo/main.cpp index aaa048a2..53c00161 100644 --- a/driver/tests/tex_demo/main.cpp +++ b/driver/tests/tex_demo/main.cpp @@ -20,7 +20,7 @@ /////////////////////////////////////////////////////////////////////////////// const char* kernel_file = "kernel.bin"; -const char* input_file = "palette.tga"; +const char* input_file = "toad.tga"; const char* output_file = "output.tga"; float scale = 1.0f; diff --git a/driver/tests/tex_demo/utils.cpp b/driver/tests/tex_demo/utils.cpp index 45d691d9..dde621d6 100644 --- a/driver/tests/tex_demo/utils.cpp +++ b/driver/tests/tex_demo/utils.cpp @@ -63,11 +63,13 @@ int LoadTGA(const char *filename, return -1; } - // Because the TGA is BGR instead of RGB, we must swap RG components - for (int i = 0; i < pitch; i += stride) { - auto tmp = line[i]; - line[i] = line[i + 2]; - line[i + 2] = tmp; + // TGA uses BGR instead of RGB, we must swap RG components + if (stride >= 3) { + for (int i = 0; i < pitch; i += stride) { + auto tmp = line[i]; + line[i] = line[i + 2]; + line[i + 2] = tmp; + } } } break; @@ -116,7 +118,19 @@ int SaveTGA(const char *filename, for (uint32_t y = 0; y < height; ++y) { const uint8_t* pixel_row = pixel_bytes; for (uint32_t x = 0; x < width; ++x) { - ofs.write((const char*)pixel_row, bpp); + // TGA uses BGR instead of RGB, we must swap RG components + if (bpp == 4) { + ofs.write((const char*)pixel_row + 2, 1); + ofs.write((const char*)pixel_row + 1, 1); + ofs.write((const char*)pixel_row + 0, 1); + ofs.write((const char*)pixel_row + 3, 1); + } else if (bpp == 3) { + ofs.write((const char*)pixel_row + 2, 1); + ofs.write((const char*)pixel_row + 1, 1); + ofs.write((const char*)pixel_row + 0, 1); + } else{ + ofs.write((const char*)pixel_row, bpp); + } pixel_row += bpp; } pixel_bytes -= pitch; diff --git a/hw/rtl/tex_unit/VX_tex_sampler.v b/hw/rtl/tex_unit/VX_tex_sampler.v index 9bfb16b0..d9955efa 100644 --- a/hw/rtl/tex_unit/VX_tex_sampler.v +++ b/hw/rtl/tex_unit/VX_tex_sampler.v @@ -46,7 +46,7 @@ module VX_tex_sampler #( VX_tex_format #( .CORE_ID (CORE_ID), .NUM_TEXELS (4) - ) tex_format_texel ( + ) tex_format ( .texel_data (req_texels[i]), .format (req_format),