From 90e4a800d5c2d7d65e66f0eba3cbfc88afa7659c Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Wed, 31 Mar 2021 14:28:12 -0400 Subject: [PATCH] minor update --- driver/tests/tex_demo/common.h | 3 + driver/tests/tex_demo/demo | Bin 156328 -> 156616 bytes driver/tests/tex_demo/kernel.bin | Bin 7636 -> 7644 bytes driver/tests/tex_demo/kernel.c | 6 +- driver/tests/tex_demo/kernel.dump | 1200 +++++++++++++++-------------- driver/tests/tex_demo/kernel.elf | Bin 20752 -> 20760 bytes driver/tests/tex_demo/main.cpp | 37 +- hw/rtl/tex_unit/VX_tex_stride.v | 2 +- 8 files changed, 632 insertions(+), 616 deletions(-) diff --git a/driver/tests/tex_demo/common.h b/driver/tests/tex_demo/common.h index 9e16ff38..714514e3 100644 --- a/driver/tests/tex_demo/common.h +++ b/driver/tests/tex_demo/common.h @@ -5,6 +5,9 @@ struct kernel_arg_t { uint32_t num_tasks; + uint32_t format; + uint32_t filter; + uint32_t wrap; uint32_t src_width; uint32_t src_height; uint32_t src_stride; diff --git a/driver/tests/tex_demo/demo b/driver/tests/tex_demo/demo index db297d4e984fa5f59ddd244a096d747a7b234680..9d4b0def7ab4a154a99fd588ca019afd406bcd96 100755 GIT binary patch delta 51358 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 b|9hTIgFRH0p8;FG2yFSe3mcg1PJ#Ugn%ufo delta 608 zcmZ8eO=uHg5S{scb_rfmmzY#+iTfqHv6LWheXfh9yeMch_QS(14hdqExnd+8P4&P9s z566Py-HU;*__e!gFsu+)I6n+PFXJrnxrsK2O< z*TJ}T&RKvEF_>SM&$xMNXnA*J`A>?;Z~T{v{Hi@iJ$R%?PR5o{efzi`p8src_width)); vx_csr_write(CSR_TEX_HEIGHT(0), ilog2(arg->src_height)); - vx_csr_write(CSR_TEX_FORMAT(0), 0); - vx_csr_write(CSR_TEX_WRAP(0), 0); - vx_csr_write(CSR_TEX_FILTER(0), 0); + vx_csr_write(CSR_TEX_FORMAT(0), arg->format); + vx_csr_write(CSR_TEX_WRAP(0), (arg->wrap << 2) | arg->wrap); + vx_csr_write(CSR_TEX_FILTER(0), arg->filter); struct tile_arg_t targ; targ.karg = *arg; diff --git a/driver/tests/tex_demo/kernel.dump b/driver/tests/tex_demo/kernel.dump index 99a7fd04..70d6d534 100644 --- a/driver/tests/tex_demo/kernel.dump +++ b/driver/tests/tex_demo/kernel.dump @@ -6,612 +6,610 @@ Disassembly of section .init: 80000000 <_start>: 80000000: 00000597 auipc a1,0x0 -80000004: 22c58593 addi a1,a1,556 # 8000022c +80000004: 23458593 addi a1,a1,564 # 80000234 80000008: fc102573 csrr a0,0xfc1 8000000c: 00b5106b 0xb5106b -80000010: 21c000ef jal ra,8000022c +80000010: 224000ef jal ra,80000234 80000014: 00100513 li a0,1 80000018: 0005006b 0x5006b 8000001c: 00002517 auipc a0,0x2 -80000020: db850513 addi a0,a0,-584 # 80001dd4 +80000020: dc050513 addi a0,a0,-576 # 80001ddc 80000024: 00002617 auipc a2,0x2 -80000028: e3060613 addi a2,a2,-464 # 80001e54 <__BSS_END__> +80000028: e3860613 addi a2,a2,-456 # 80001e5c <__BSS_END__> 8000002c: 40a60633 sub a2,a2,a0 80000030: 00000593 li a1,0 -80000034: 5c8000ef jal ra,800005fc +80000034: 5d0000ef jal ra,80000604 80000038: 00000517 auipc a0,0x0 -8000003c: 4cc50513 addi a0,a0,1228 # 80000504 <__libc_fini_array> -80000040: 47c000ef jal ra,800004bc -80000044: 51c000ef jal ra,80000560 <__libc_init_array> +8000003c: 4d450513 addi a0,a0,1236 # 8000050c <__libc_fini_array> +80000040: 484000ef jal ra,800004c4 +80000044: 524000ef jal ra,80000568 <__libc_init_array> 80000048: 008000ef jal ra,80000050
-8000004c: 4840006f j 800004d0 +8000004c: 48c0006f j 800004d8 Disassembly of section .text: 80000050
: -80000050: fb010113 addi sp,sp,-80 -80000054: 04812423 sw s0,72(sp) -80000058: 04112623 sw ra,76(sp) -8000005c: 04912223 sw s1,68(sp) +80000050: fa010113 addi sp,sp,-96 +80000054: 04812c23 sw s0,88(sp) +80000058: 04112e23 sw ra,92(sp) +8000005c: 04912a23 sw s1,84(sp) 80000060: 7ffff437 lui s0,0x7ffff -80000064: 01444783 lbu a5,20(s0) # 7ffff014 <__stack_size+0x7fffec14> +80000064: 02044783 lbu a5,32(s0) # 7ffff020 <__stack_size+0x7fffec20> 80000068: fd079073 csrw 0xfd0,a5 8000006c: fd405073 csrwi 0xfd4,0 -80000070: 00442503 lw a0,4(s0) +80000070: 01042503 lw a0,16(s0) 80000074: 01f00493 li s1,31 80000078: 00151513 slli a0,a0,0x1 8000007c: fff50513 addi a0,a0,-1 -80000080: 3f0000ef jal ra,80000470 <__clzsi2> +80000080: 3f8000ef jal ra,80000478 <__clzsi2> 80000084: 40a48533 sub a0,s1,a0 80000088: fd551073 csrw 0xfd5,a0 -8000008c: 00842503 lw a0,8(s0) +8000008c: 01442503 lw a0,20(s0) 80000090: 00151513 slli a0,a0,0x1 80000094: fff50513 addi a0,a0,-1 -80000098: 3d8000ef jal ra,80000470 <__clzsi2> +80000098: 3e0000ef jal ra,80000478 <__clzsi2> 8000009c: 40a484b3 sub s1,s1,a0 800000a0: fd649073 csrw 0xfd6,s1 -800000a4: fd105073 csrwi 0xfd1,0 -800000a8: fd205073 csrwi 0xfd2,0 -800000ac: fd305073 csrwi 0xfd3,0 -800000b0: 01442503 lw a0,20(s0) -800000b4: 01842583 lw a1,24(s0) -800000b8: 01c42603 lw a2,28(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: 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: dcc72707 flw fa4,-564(a4) # 80001dcc <__stack_top+0x81001dcc> -80000114: 02f12823 sw a5,48(sp) -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 +800000a4: 00442783 lw a5,4(s0) +800000a8: fd179073 csrw 0xfd1,a5 +800000ac: 00c42703 lw a4,12(s0) +800000b0: 00271793 slli a5,a4,0x2 +800000b4: 00e7e7b3 or a5,a5,a4 +800000b8: fd279073 csrw 0xfd2,a5 +800000bc: 00842783 lw a5,8(s0) +800000c0: fd379073 csrw 0xfd3,a5 +800000c4: 7ffff7b7 lui a5,0x7ffff +800000c8: 00810713 addi a4,sp,8 +800000cc: 03078693 addi a3,a5,48 # 7ffff030 <__stack_size+0x7fffec30> +800000d0: 0007a803 lw a6,0(a5) +800000d4: 0047a503 lw a0,4(a5) +800000d8: 0087a583 lw a1,8(a5) +800000dc: 00c7a603 lw a2,12(a5) +800000e0: 01072023 sw a6,0(a4) +800000e4: 00a72223 sw a0,4(a4) +800000e8: 00b72423 sw a1,8(a4) +800000ec: 00c72623 sw a2,12(a4) +800000f0: 01078793 addi a5,a5,16 +800000f4: 01070713 addi a4,a4,16 +800000f8: fcd79ce3 bne a5,a3,800000d0 +800000fc: 0007a603 lw a2,0(a5) +80000100: 0047a783 lw a5,4(a5) +80000104: 7ffff6b7 lui a3,0x7ffff +80000108: 00c72023 sw a2,0(a4) +8000010c: 00f72223 sw a5,4(a4) +80000110: 0246a783 lw a5,36(a3) # 7ffff024 <__stack_size+0x7fffec24> +80000114: 80002737 lui a4,0x80002 +80000118: dd472707 flw fa4,-556(a4) # 80001dd4 <__stack_top+0x81001dd4> +8000011c: 04f12023 sw a5,64(sp) +80000120: 0006a503 lw a0,0(a3) +80000124: 0286a703 lw a4,40(a3) +80000128: d017f7d3 fcvt.s.wu fa5,a5 +8000012c: 800005b7 lui a1,0x80000 +80000130: 00a707b3 add a5,a4,a0 +80000134: fff78793 addi a5,a5,-1 +80000138: 02a7d7b3 divu a5,a5,a0 +8000013c: d01776d3 fcvt.s.wu fa3,a4 +80000140: 18f777d3 fdiv.s fa5,fa4,fa5 +80000144: 00810613 addi a2,sp,8 +80000148: 18c58593 addi a1,a1,396 # 8000018c <__stack_top+0x8100018c> +8000014c: 18d77753 fdiv.s fa4,fa4,fa3 +80000150: 04f12427 fsw fa5,72(sp) +80000154: 04f12223 sw a5,68(sp) +80000158: 04e12627 fsw fa4,76(sp) +8000015c: 1d4000ef jal ra,80000330 +80000160: 05c12083 lw ra,92(sp) +80000164: 05812403 lw s0,88(sp) +80000168: 05412483 lw s1,84(sp) +8000016c: 06010113 addi sp,sp,96 +80000170: 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 +80000174 : +80000174: 00000793 li a5,0 +80000178: 00078863 beqz a5,80000188 +8000017c: 80000537 lui a0,0x80000 +80000180: 50c50513 addi a0,a0,1292 # 8000050c <__stack_top+0x8100050c> +80000184: 3400006f j 800004c4 +80000188: 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 +8000018c : +8000018c: 03c5a703 lw a4,60(a1) +80000190: 0305a683 lw a3,48(a1) +80000194: 0345a603 lw a2,52(a1) +80000198: 02e507b3 mul a5,a0,a4 +8000019c: 0405a687 flw fa3,64(a1) +800001a0: 0445a507 flw fa0,68(a1) +800001a4: f00007d3 fmv.w.x fa5,zero +800001a8: 10f6f7d3 fmul.s fa5,fa3,fa5 +800001ac: 02f68833 mul a6,a3,a5 +800001b0: d017f5d3 fcvt.s.wu fa1,a5 +800001b4: 10a5f5d3 fmul.s fa1,fa1,fa0 +800001b8: 00c80833 add a6,a6,a2 +800001bc: 06070663 beqz a4,80000228 +800001c0: 800027b7 lui a5,0x80002 +800001c4: dd07a007 flw ft0,-560(a5) # 80001dd0 <__stack_top+0x81001dd0> +800001c8: 0385a783 lw a5,56(a1) +800001cc: 00000893 li a7,0 +800001d0: 20000653 fmv.s fa2,ft0 +800001d4: 00000513 li a0,0 +800001d8: 04078063 beqz a5,80000218 +800001dc: 1005f753 fmul.s fa4,fa1,ft0 +800001e0: 00080693 mv a3,a6 +800001e4: 00000713 li a4,0 +800001e8: c0071653 fcvt.w.s a2,fa4,rtz +800001ec: 10c7f753 fmul.s fa4,fa5,fa2 +800001f0: c00717d3 fcvt.w.s a5,fa4,rtz +800001f4: 50c7d7eb 0x50c7d7eb +800001f8: 00f6a023 sw a5,0(a3) +800001fc: 0385a783 lw a5,56(a1) +80000200: 00170713 addi a4,a4,1 +80000204: 00d7f7d3 fadd.s fa5,fa5,fa3 +80000208: 00468693 addi a3,a3,4 +8000020c: fef760e3 bltu a4,a5,800001ec +80000210: 0305a683 lw a3,48(a1) +80000214: 03c5a703 lw a4,60(a1) +80000218: 00188893 addi a7,a7,1 +8000021c: 00a5f5d3 fadd.s fa1,fa1,fa0 +80000220: 00d80833 add a6,a6,a3 +80000224: fae8eae3 bltu a7,a4,800001d8 +80000228: 00008067 ret -80000224 <_exit>: -80000224: 00000513 li a0,0 -80000228: 0005006b 0x5006b - -8000022c : -8000022c: fc002573 csrr a0,0xfc0 +8000022c <_exit>: +8000022c: 00000513 li a0,0 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 -80000264 : -80000264: 00008067 ret +80000234 : +80000234: fc002573 csrr a0,0xfc0 +80000238: 0005006b 0x5006b +8000023c: 00002197 auipc gp,0x2 +80000240: f6c18193 addi gp,gp,-148 # 800021a8 <__global_pointer> +80000244: 7f000117 auipc sp,0x7f000 +80000248: dbc10113 addi sp,sp,-580 # ff000000 <__stack_top> +8000024c: 40000593 li a1,1024 +80000250: cc102673 csrr a2,0xcc1 +80000254: 02c585b3 mul a1,a1,a2 +80000258: 40b10133 sub sp,sp,a1 +8000025c: cc3026f3 csrr a3,0xcc3 +80000260: 00068663 beqz a3,8000026c +80000264: 00000513 li a0,0 +80000268: 0005006b 0x5006b -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 +8000026c : +8000026c: 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 +80000270 : +80000270: fe010113 addi sp,sp,-32 +80000274: 00112e23 sw ra,28(sp) +80000278: 00812c23 sw s0,24(sp) +8000027c: 00912a23 sw s1,20(sp) +80000280: 01212823 sw s2,16(sp) +80000284: 01312623 sw s3,12(sp) +80000288: fc0027f3 csrr a5,0xfc0 +8000028c: 0007806b 0x7806b +80000290: cc5026f3 csrr a3,0xcc5 +80000294: cc3029f3 csrr s3,0xcc3 +80000298: cc002773 csrr a4,0xcc0 +8000029c: fc002673 csrr a2,0xfc0 +800002a0: 800027b7 lui a5,0x80002 +800002a4: 00269693 slli a3,a3,0x2 +800002a8: ddc78793 addi a5,a5,-548 # 80001ddc <__stack_top+0x81001ddc> +800002ac: 00d787b3 add a5,a5,a3 +800002b0: 0007a483 lw s1,0(a5) +800002b4: 0104a403 lw s0,16(s1) +800002b8: 00c4a683 lw a3,12(s1) +800002bc: 0089a933 slt s2,s3,s0 +800002c0: 00040793 mv a5,s0 +800002c4: 00d90933 add s2,s2,a3 +800002c8: 03368433 mul s0,a3,s3 +800002cc: 00f9d463 bge s3,a5,800002d4 +800002d0: 00098793 mv a5,s3 +800002d4: 00f40433 add s0,s0,a5 +800002d8: 0084a683 lw a3,8(s1) +800002dc: 02c40433 mul s0,s0,a2 +800002e0: 02e907b3 mul a5,s2,a4 +800002e4: 00d40433 add s0,s0,a3 +800002e8: 00f40433 add s0,s0,a5 +800002ec: 00890933 add s2,s2,s0 +800002f0: 01245e63 bge s0,s2,8000030c +800002f4: 0004a783 lw a5,0(s1) +800002f8: 0044a583 lw a1,4(s1) +800002fc: 00040513 mv a0,s0 +80000300: 00140413 addi s0,s0,1 +80000304: 000780e7 jalr a5 +80000308: fe8916e3 bne s2,s0,800002f4 +8000030c: 0019b993 seqz s3,s3 +80000310: 0009806b 0x9806b +80000314: 01c12083 lw ra,28(sp) +80000318: 01812403 lw s0,24(sp) +8000031c: 01412483 lw s1,20(sp) +80000320: 01012903 lw s2,16(sp) +80000324: 00c12983 lw s3,12(sp) +80000328: 02010113 addi sp,sp,32 +8000032c: 00008067 ret -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> +80000330 : +80000330: fc010113 addi sp,sp,-64 +80000334: 02112e23 sw ra,60(sp) +80000338: 02812c23 sw s0,56(sp) +8000033c: 02912a23 sw s1,52(sp) +80000340: 03212823 sw s2,48(sp) +80000344: 03312623 sw s3,44(sp) +80000348: fc2026f3 csrr a3,0xfc2 +8000034c: fc102873 csrr a6,0xfc1 +80000350: fc002473 csrr s0,0xfc0 +80000354: cc5027f3 csrr a5,0xcc5 +80000358: 01f00713 li a4,31 +8000035c: 0cf74463 blt a4,a5,80000424 +80000360: 030408b3 mul a7,s0,a6 +80000364: 00100713 li a4,1 +80000368: 00a8d463 bge a7,a0,80000370 +8000036c: 03154733 div a4,a0,a7 +80000370: 0ce6c863 blt a3,a4,80000440 +80000374: 0ae7d863 bge a5,a4,80000424 +80000378: fff68693 addi a3,a3,-1 +8000037c: 02e54333 div t1,a0,a4 +80000380: 00030893 mv a7,t1 +80000384: 00f69663 bne a3,a5,80000390 +80000388: 02e56533 rem a0,a0,a4 +8000038c: 006508b3 add a7,a0,t1 +80000390: 0288c4b3 div s1,a7,s0 +80000394: 0288e933 rem s2,a7,s0 +80000398: 0b04ca63 blt s1,a6,8000044c +8000039c: 00100693 li a3,1 +800003a0: 0304c733 div a4,s1,a6 +800003a4: 00070663 beqz a4,800003b0 +800003a8: 00070693 mv a3,a4 +800003ac: 0304e733 rem a4,s1,a6 +800003b0: 800029b7 lui s3,0x80002 +800003b4: ddc98993 addi s3,s3,-548 # 80001ddc <__stack_top+0x81001ddc> +800003b8: 00e12e23 sw a4,28(sp) +800003bc: 00c10713 addi a4,sp,12 +800003c0: 00b12623 sw a1,12(sp) +800003c4: 00c12823 sw a2,16(sp) +800003c8: 00d12c23 sw a3,24(sp) +800003cc: 02f30333 mul t1,t1,a5 +800003d0: 00279793 slli a5,a5,0x2 +800003d4: 00f987b3 add a5,s3,a5 +800003d8: 00e7a023 sw a4,0(a5) +800003dc: 00612a23 sw t1,20(sp) +800003e0: 06904c63 bgtz s1,80000458 +800003e4: 04090063 beqz s2,80000424 +800003e8: 02848433 mul s0,s1,s0 +800003ec: 00812a23 sw s0,20(sp) +800003f0: 0009006b 0x9006b +800003f4: cc5027f3 csrr a5,0xcc5 +800003f8: cc202573 csrr a0,0xcc2 +800003fc: 00279793 slli a5,a5,0x2 +80000400: 00f989b3 add s3,s3,a5 +80000404: 0009a783 lw a5,0(s3) +80000408: 0087a683 lw a3,8(a5) +8000040c: 0007a703 lw a4,0(a5) +80000410: 0047a583 lw a1,4(a5) +80000414: 00d50533 add a0,a0,a3 +80000418: 000700e7 jalr a4 +8000041c: 00100793 li a5,1 +80000420: 0007806b 0x7806b +80000424: 03c12083 lw ra,60(sp) +80000428: 03812403 lw s0,56(sp) +8000042c: 03412483 lw s1,52(sp) +80000430: 03012903 lw s2,48(sp) +80000434: 02c12983 lw s3,44(sp) +80000438: 04010113 addi sp,sp,64 +8000043c: 00008067 ret +80000440: 00068713 mv a4,a3 +80000444: f2e7cae3 blt a5,a4,80000378 +80000448: fddff06f j 80000424 +8000044c: 00000713 li a4,0 +80000450: 00100693 li a3,1 +80000454: f5dff06f j 800003b0 +80000458: 00048713 mv a4,s1 +8000045c: 00985463 bge a6,s1,80000464 +80000460: 00080713 mv a4,a6 +80000464: 800007b7 lui a5,0x80000 +80000468: 27078793 addi a5,a5,624 # 80000270 <__stack_top+0x81000270> +8000046c: 00f7106b 0xf7106b +80000470: e01ff0ef jal ra,80000270 +80000474: f71ff06f j 800003e4 -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> +80000478 <__clzsi2>: +80000478: 000107b7 lui a5,0x10 +8000047c: 02f57a63 bgeu a0,a5,800004b0 <__clzsi2+0x38> +80000480: 0ff00793 li a5,255 +80000484: 00a7b7b3 sltu a5,a5,a0 +80000488: 00379793 slli a5,a5,0x3 +8000048c: 80001737 lui a4,0x80001 +80000490: 02000693 li a3,32 +80000494: 40f686b3 sub a3,a3,a5 +80000498: 00f55533 srl a0,a0,a5 +8000049c: 8a070793 addi a5,a4,-1888 # 800008a0 <__stack_top+0x810008a0> +800004a0: 00a78533 add a0,a5,a0 +800004a4: 00054503 lbu a0,0(a0) +800004a8: 40a68533 sub a0,a3,a0 +800004ac: 00008067 ret +800004b0: 01000737 lui a4,0x1000 +800004b4: 01000793 li a5,16 +800004b8: fce56ae3 bltu a0,a4,8000048c <__clzsi2+0x14> +800004bc: 01800793 li a5,24 +800004c0: fcdff06f j 8000048c <__clzsi2+0x14> -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> +800004c4 : +800004c4: 00050593 mv a1,a0 +800004c8: 00000693 li a3,0 +800004cc: 00000613 li a2,0 +800004d0: 00000513 li a0,0 +800004d4: 20c0006f j 800006e0 <__register_exitproc> -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 +800004d8 : +800004d8: ff010113 addi sp,sp,-16 +800004dc: 00000593 li a1,0 +800004e0: 00812423 sw s0,8(sp) +800004e4: 00112623 sw ra,12(sp) +800004e8: 00050413 mv s0,a0 +800004ec: 290000ef jal ra,8000077c <__call_exitprocs> +800004f0: 800027b7 lui a5,0x80002 +800004f4: dd87a503 lw a0,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> +800004f8: 03c52783 lw a5,60(a0) +800004fc: 00078463 beqz a5,80000504 +80000500: 000780e7 jalr a5 +80000504: 00040513 mv a0,s0 +80000508: d25ff0ef jal ra,8000022c <_exit> -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 +8000050c <__libc_fini_array>: +8000050c: ff010113 addi sp,sp,-16 +80000510: 00812423 sw s0,8(sp) +80000514: 800027b7 lui a5,0x80002 +80000518: 80002437 lui s0,0x80002 +8000051c: 9a440413 addi s0,s0,-1628 # 800019a4 <__stack_top+0x810019a4> +80000520: 9a478793 addi a5,a5,-1628 # 800019a4 <__stack_top+0x810019a4> +80000524: 408787b3 sub a5,a5,s0 +80000528: 00912223 sw s1,4(sp) +8000052c: 00112623 sw ra,12(sp) +80000530: 4027d493 srai s1,a5,0x2 +80000534: 02048063 beqz s1,80000554 <__libc_fini_array+0x48> +80000538: ffc78793 addi a5,a5,-4 +8000053c: 00878433 add s0,a5,s0 +80000540: 00042783 lw a5,0(s0) +80000544: fff48493 addi s1,s1,-1 +80000548: ffc40413 addi s0,s0,-4 +8000054c: 000780e7 jalr a5 +80000550: fe0498e3 bnez s1,80000540 <__libc_fini_array+0x34> +80000554: 00c12083 lw ra,12(sp) +80000558: 00812403 lw s0,8(sp) +8000055c: 00412483 lw s1,4(sp) +80000560: 01010113 addi sp,sp,16 +80000564: 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 +80000568 <__libc_init_array>: +80000568: ff010113 addi sp,sp,-16 +8000056c: 00812423 sw s0,8(sp) +80000570: 01212023 sw s2,0(sp) +80000574: 80002437 lui s0,0x80002 +80000578: 80002937 lui s2,0x80002 +8000057c: 9a040793 addi a5,s0,-1632 # 800019a0 <__stack_top+0x810019a0> +80000580: 9a090913 addi s2,s2,-1632 # 800019a0 <__stack_top+0x810019a0> +80000584: 40f90933 sub s2,s2,a5 +80000588: 00112623 sw ra,12(sp) +8000058c: 00912223 sw s1,4(sp) +80000590: 40295913 srai s2,s2,0x2 +80000594: 02090063 beqz s2,800005b4 <__libc_init_array+0x4c> +80000598: 9a040413 addi s0,s0,-1632 +8000059c: 00000493 li s1,0 +800005a0: 00042783 lw a5,0(s0) +800005a4: 00148493 addi s1,s1,1 +800005a8: 00440413 addi s0,s0,4 +800005ac: 000780e7 jalr a5 +800005b0: fe9918e3 bne s2,s1,800005a0 <__libc_init_array+0x38> +800005b4: 80002437 lui s0,0x80002 +800005b8: 80002937 lui s2,0x80002 +800005bc: 9a040793 addi a5,s0,-1632 # 800019a0 <__stack_top+0x810019a0> +800005c0: 9a490913 addi s2,s2,-1628 # 800019a4 <__stack_top+0x810019a4> +800005c4: 40f90933 sub s2,s2,a5 +800005c8: 40295913 srai s2,s2,0x2 +800005cc: 02090063 beqz s2,800005ec <__libc_init_array+0x84> +800005d0: 9a040413 addi s0,s0,-1632 +800005d4: 00000493 li s1,0 +800005d8: 00042783 lw a5,0(s0) +800005dc: 00148493 addi s1,s1,1 +800005e0: 00440413 addi s0,s0,4 +800005e4: 000780e7 jalr a5 +800005e8: fe9918e3 bne s2,s1,800005d8 <__libc_init_array+0x70> +800005ec: 00c12083 lw ra,12(sp) +800005f0: 00812403 lw s0,8(sp) +800005f4: 00412483 lw s1,4(sp) +800005f8: 00012903 lw s2,0(sp) +800005fc: 01010113 addi sp,sp,16 +80000600: 00008067 ret + +80000604 : +80000604: 00f00313 li t1,15 +80000608: 00050713 mv a4,a0 +8000060c: 02c37e63 bgeu t1,a2,80000648 +80000610: 00f77793 andi a5,a4,15 +80000614: 0a079063 bnez a5,800006b4 +80000618: 08059263 bnez a1,8000069c +8000061c: ff067693 andi a3,a2,-16 +80000620: 00f67613 andi a2,a2,15 +80000624: 00e686b3 add a3,a3,a4 +80000628: 00b72023 sw a1,0(a4) # 1000000 <__stack_size+0xfffc00> +8000062c: 00b72223 sw a1,4(a4) +80000630: 00b72423 sw a1,8(a4) +80000634: 00b72623 sw a1,12(a4) +80000638: 01070713 addi a4,a4,16 +8000063c: fed766e3 bltu a4,a3,80000628 +80000640: 00061463 bnez a2,80000648 +80000644: 00008067 ret +80000648: 40c306b3 sub a3,t1,a2 +8000064c: 00269693 slli a3,a3,0x2 +80000650: 00000297 auipc t0,0x0 +80000654: 005686b3 add a3,a3,t0 +80000658: 00c68067 jr 12(a3) +8000065c: 00b70723 sb a1,14(a4) +80000660: 00b706a3 sb a1,13(a4) +80000664: 00b70623 sb a1,12(a4) +80000668: 00b705a3 sb a1,11(a4) +8000066c: 00b70523 sb a1,10(a4) +80000670: 00b704a3 sb a1,9(a4) +80000674: 00b70423 sb a1,8(a4) +80000678: 00b703a3 sb a1,7(a4) +8000067c: 00b70323 sb a1,6(a4) +80000680: 00b702a3 sb a1,5(a4) +80000684: 00b70223 sb a1,4(a4) +80000688: 00b701a3 sb a1,3(a4) +8000068c: 00b70123 sb a1,2(a4) +80000690: 00b700a3 sb a1,1(a4) +80000694: 00b70023 sb a1,0(a4) +80000698: 00008067 ret +8000069c: 0ff5f593 andi a1,a1,255 +800006a0: 00859693 slli a3,a1,0x8 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 +800006a8: 01059693 slli a3,a1,0x10 +800006ac: 00d5e5b3 or a1,a1,a3 +800006b0: f6dff06f j 8000061c +800006b4: 00279693 slli a3,a5,0x2 +800006b8: 00000297 auipc t0,0x0 +800006bc: 005686b3 add a3,a3,t0 +800006c0: 00008293 mv t0,ra +800006c4: fa0680e7 jalr -96(a3) +800006c8: 00028093 mv ra,t0 +800006cc: ff078793 addi a5,a5,-16 +800006d0: 40f70733 sub a4,a4,a5 +800006d4: 00f60633 add a2,a2,a5 +800006d8: f6c378e3 bgeu t1,a2,80000648 +800006dc: f3dff06f j 80000618 -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 +800006e0 <__register_exitproc>: +800006e0: 800027b7 lui a5,0x80002 +800006e4: dd87a703 lw a4,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> +800006e8: 14872783 lw a5,328(a4) +800006ec: 04078c63 beqz a5,80000744 <__register_exitproc+0x64> +800006f0: 0047a703 lw a4,4(a5) +800006f4: 01f00813 li a6,31 +800006f8: 06e84e63 blt a6,a4,80000774 <__register_exitproc+0x94> +800006fc: 00271813 slli a6,a4,0x2 +80000700: 02050663 beqz a0,8000072c <__register_exitproc+0x4c> +80000704: 01078333 add t1,a5,a6 +80000708: 08c32423 sw a2,136(t1) +8000070c: 1887a883 lw a7,392(a5) +80000710: 00100613 li a2,1 +80000714: 00e61633 sll a2,a2,a4 +80000718: 00c8e8b3 or a7,a7,a2 +8000071c: 1917a423 sw a7,392(a5) +80000720: 10d32423 sw a3,264(t1) +80000724: 00200693 li a3,2 +80000728: 02d50463 beq a0,a3,80000750 <__register_exitproc+0x70> +8000072c: 00170713 addi a4,a4,1 +80000730: 00e7a223 sw a4,4(a5) +80000734: 010787b3 add a5,a5,a6 +80000738: 00b7a423 sw a1,8(a5) +8000073c: 00000513 li a0,0 +80000740: 00008067 ret +80000744: 14c70793 addi a5,a4,332 +80000748: 14f72423 sw a5,328(a4) +8000074c: fa5ff06f j 800006f0 <__register_exitproc+0x10> +80000750: 18c7a683 lw a3,396(a5) +80000754: 00170713 addi a4,a4,1 +80000758: 00e7a223 sw a4,4(a5) +8000075c: 00c6e633 or a2,a3,a2 +80000760: 18c7a623 sw a2,396(a5) +80000764: 010787b3 add a5,a5,a6 +80000768: 00b7a423 sw a1,8(a5) +8000076c: 00000513 li a0,0 80000770: 00008067 ret +80000774: fff00513 li a0,-1 +80000778: 00008067 ret -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> +8000077c <__call_exitprocs>: +8000077c: fd010113 addi sp,sp,-48 +80000780: 800027b7 lui a5,0x80002 +80000784: 01412c23 sw s4,24(sp) +80000788: dd87aa03 lw s4,-552(a5) # 80001dd8 <__stack_top+0x81001dd8> +8000078c: 03212023 sw s2,32(sp) +80000790: 02112623 sw ra,44(sp) +80000794: 148a2903 lw s2,328(s4) +80000798: 02812423 sw s0,40(sp) +8000079c: 02912223 sw s1,36(sp) +800007a0: 01312e23 sw s3,28(sp) +800007a4: 01512a23 sw s5,20(sp) +800007a8: 01612823 sw s6,16(sp) +800007ac: 01712623 sw s7,12(sp) +800007b0: 01812423 sw s8,8(sp) +800007b4: 04090063 beqz s2,800007f4 <__call_exitprocs+0x78> +800007b8: 00050b13 mv s6,a0 +800007bc: 00058b93 mv s7,a1 +800007c0: 00100a93 li s5,1 +800007c4: fff00993 li s3,-1 +800007c8: 00492483 lw s1,4(s2) +800007cc: fff48413 addi s0,s1,-1 +800007d0: 02044263 bltz s0,800007f4 <__call_exitprocs+0x78> +800007d4: 00249493 slli s1,s1,0x2 +800007d8: 009904b3 add s1,s2,s1 +800007dc: 040b8463 beqz s7,80000824 <__call_exitprocs+0xa8> +800007e0: 1044a783 lw a5,260(s1) +800007e4: 05778063 beq a5,s7,80000824 <__call_exitprocs+0xa8> +800007e8: fff40413 addi s0,s0,-1 +800007ec: ffc48493 addi s1,s1,-4 +800007f0: ff3416e3 bne s0,s3,800007dc <__call_exitprocs+0x60> +800007f4: 02c12083 lw ra,44(sp) +800007f8: 02812403 lw s0,40(sp) +800007fc: 02412483 lw s1,36(sp) +80000800: 02012903 lw s2,32(sp) +80000804: 01c12983 lw s3,28(sp) +80000808: 01812a03 lw s4,24(sp) +8000080c: 01412a83 lw s5,20(sp) +80000810: 01012b03 lw s6,16(sp) +80000814: 00c12b83 lw s7,12(sp) +80000818: 00812c03 lw s8,8(sp) +8000081c: 03010113 addi sp,sp,48 +80000820: 00008067 ret +80000824: 00492783 lw a5,4(s2) +80000828: 0044a683 lw a3,4(s1) +8000082c: fff78793 addi a5,a5,-1 +80000830: 04878e63 beq a5,s0,8000088c <__call_exitprocs+0x110> +80000834: 0004a223 sw zero,4(s1) +80000838: fa0688e3 beqz a3,800007e8 <__call_exitprocs+0x6c> +8000083c: 18892783 lw a5,392(s2) +80000840: 008a9733 sll a4,s5,s0 +80000844: 00492c03 lw s8,4(s2) +80000848: 00f777b3 and a5,a4,a5 +8000084c: 02079263 bnez a5,80000870 <__call_exitprocs+0xf4> +80000850: 000680e7 jalr a3 +80000854: 00492703 lw a4,4(s2) +80000858: 148a2783 lw a5,328(s4) +8000085c: 01871463 bne a4,s8,80000864 <__call_exitprocs+0xe8> +80000860: f8f904e3 beq s2,a5,800007e8 <__call_exitprocs+0x6c> +80000864: f80788e3 beqz a5,800007f4 <__call_exitprocs+0x78> +80000868: 00078913 mv s2,a5 +8000086c: f5dff06f j 800007c8 <__call_exitprocs+0x4c> +80000870: 18c92783 lw a5,396(s2) +80000874: 0844a583 lw a1,132(s1) +80000878: 00f77733 and a4,a4,a5 +8000087c: 00071c63 bnez a4,80000894 <__call_exitprocs+0x118> +80000880: 000b0513 mv a0,s6 +80000884: 000680e7 jalr a3 +80000888: fcdff06f j 80000854 <__call_exitprocs+0xd8> +8000088c: 00892223 sw s0,4(s2) +80000890: fa9ff06f j 80000838 <__call_exitprocs+0xbc> +80000894: 00058513 mv a0,a1 +80000898: 000680e7 jalr a3 +8000089c: fb9ff06f j 80000854 <__call_exitprocs+0xd8> Disassembly of section .rodata: -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 +800008a0 <__clz_tab>: +800008a0: 0100 addi s0,sp,128 +800008a2: 0202 c.slli64 tp +800008a4: 03030303 lb t1,48(t1) +800008a8: 0404 addi s1,sp,512 +800008aa: 0404 addi s1,sp,512 +800008ac: 0404 addi s1,sp,512 +800008ae: 0404 addi s1,sp,512 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 +800008b8: 0505 addi a0,a0,1 +800008ba: 0505 addi a0,a0,1 +800008bc: 0505 addi a0,a0,1 +800008be: 0505 addi a0,a0,1 800008c0: 0606 slli a2,a2,0x1 800008c2: 0606 slli a2,a2,0x1 800008c4: 0606 slli a2,a2,0x1 @@ -624,8 +622,10 @@ Disassembly of section .rodata: 800008d2: 0606 slli a2,a2,0x1 800008d4: 0606 slli a2,a2,0x1 800008d6: 0606 slli a2,a2,0x1 -800008d8: 07070707 0x7070707 -800008dc: 07070707 0x7070707 +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: 07070707 0x7070707 800008e4: 07070707 0x7070707 800008e8: 07070707 0x7070707 @@ -640,10 +640,8 @@ Disassembly of section .rodata: 8000090c: 07070707 0x7070707 80000910: 07070707 0x7070707 80000914: 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 +80000918: 07070707 0x7070707 +8000091c: 07070707 0x7070707 80000920: 0808 addi a0,sp,16 80000922: 0808 addi a0,sp,16 80000924: 0808 addi a0,sp,16 @@ -704,53 +702,57 @@ 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 Disassembly of section .init_array: -80001998 <__init_array_start>: -80001998: 016c addi a1,sp,140 -8000199a: 8000 0x8000 +800019a0 <__init_array_start>: +800019a0: 0174 addi a3,sp,140 +800019a2: 8000 0x8000 Disassembly of section .data: -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 +800019a8 : +800019a8: 0000 unimp +800019aa: 0000 unimp +800019ac: 1c94 addi a3,sp,624 800019ae: 8000 0x8000 +800019b0: 1cfc addi a5,sp,636 +800019b2: 8000 0x8000 +800019b4: 1d64 addi s1,sp,700 +800019b6: 8000 0x8000 ... -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 +80001a50: 0001 nop +80001a52: 0000 unimp +80001a54: 0000 unimp +80001a56: 0000 unimp +80001a58: 330e fld ft6,224(sp) +80001a5a: abcd j 8000204c <__BSS_END__+0x1f0> +80001a5c: 1234 addi a3,sp,296 +80001a5e: e66d bnez a2,80001b48 +80001a60: deec sw a1,124(a3) +80001a62: 0005 c.nop 1 +80001a64: 0000000b 0xb ... Disassembly of section .sdata: -80001dc8 <__SDATA_BEGIN__>: -80001dc8: 0000 unimp -80001dca: 4980 lw s0,16(a1) -80001dcc: 0000 unimp -80001dce: 3f80 fld fs0,56(a5) +80001dd0 <__SDATA_BEGIN__>: +80001dd0: 0000 unimp +80001dd2: 4980 lw s0,16(a1) +80001dd4: 0000 unimp +80001dd6: 3f80 fld fs0,56(a5) -80001dd0 <_global_impure_ptr>: -80001dd0: 19a0 addi s0,sp,248 -80001dd2: 8000 0x8000 +80001dd8 <_global_impure_ptr>: +80001dd8: 19a8 addi a0,sp,248 +80001dda: 8000 0x8000 Disassembly of section .bss: -80001dd4 : +80001ddc : ... Disassembly of section .comment: @@ -794,7 +796,7 @@ Disassembly of section .debug_aranges: a: 0004 0x4 c: 0000 unimp e: 0000 unimp - 10: 0470 addi a2,sp,524 + 10: 0478 addi a4,sp,524 12: 8000 0x8000 14: 004c addi a1,sp,4 ... @@ -820,7 +822,7 @@ Disassembly of section .debug_info: 12: 0004 0x4 14: 5900 lw s0,48(a0) 16: 0006 c.slli zero,0x1 - 18: 7000 flw fs0,32(s0) + 18: 7800 flw fs0,48(s0) 1a: 0004 0x4 1c: 4c80 lw s0,24(s1) 1e: 0000 unimp @@ -2068,7 +2070,7 @@ Disassembly of section .debug_info: b80: 02c2 slli t0,t0,0x10 b82: 2501 jal 1182 <__stack_size+0xd82> b84: 0000 unimp - b86: 7000 flw fs0,32(s0) + b86: 7800 flw fs0,48(s0) b88: 0004 0x4 b8a: 4c80 lw s0,24(s1) b8c: 0000 unimp @@ -3313,7 +3315,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: 0898 addi a4,sp,80 + 173c: 08a0 addi s0,sp,88 173e: 8000 0x8000 ... @@ -3909,7 +3911,7 @@ Disassembly of section .debug_line: 224: 0500 addi s0,sp,640 226: 0001 nop 228: 0205 addi tp,tp,1 - 22a: 0470 addi a2,sp,524 + 22a: 0478 addi a4,sp,524 22c: 8000 0x8000 22e: 0105c203 lbu tp,16(a1) 232: 0305 addi t1,t1,1 @@ -4189,7 +4191,7 @@ Disassembly of section .debug_frame: 12: 0000 unimp 14: 0000 unimp 16: 0000 unimp - 18: 0470 addi a2,sp,524 + 18: 0478 addi a4,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 2024bf958360f6f67c632f1b1b6aa04075f1deac..7cc7ac2c80a46fe5cdc3df9806b50e820f4da383 100755 GIT binary patch delta 1368 zcmZ8hZ)jUp6hHUf_ug%+(4?Cmpub;*buJPEFBK<~~VRah8pC@x0eYLoeKO?(dx6 z`E&ogH+r6ppJ$^%wlvnLH)LD@_Edm|8-S6@)H&14e0DrrmF(0LP43N;?ipBvXh>7s zaFW=*CIC%Q3cd(wb$GQ|%|(%ttN|SLk=B&Xr-EjXtM^%KH9gH zGCCkJ>f7SR9H7qt>&6Yj2H6Kmw{FdD6qA}502~&aPYK}J7^Jdk;JF3RgM#UyJm}$B z&?5_gX~8rh*y`l+CeH~-Q%RH+B&ksu&^!Sfa zjiLG4XU{Cx8sT+W53S2a7bPeu(3o=Rn;M*Mtv#+*qcab;0T@8+V@tWsZ8rNzJwPOO)u?ejAzUY@H zG?#0l*>yXrM?AFKG0=|ejh+CPq{;FGUiQ}FwD+DpHm%2@mAkFW-fBiUf7^3`rLC0D zE7hK6bnQFi!+J0`Y4$aMIW{nEb>BC_*%V%BILP|3-XCTC)=~dkm88Dk`*|hHSmvWI zsDyrg>|2S{M{T}}_DscgJ`UW;O0U$(&p~$Z)PLA{%dkYXYzGI`@fYw`*VpV#oQdsc zr}26$z}`ls`vYp@TzBC3#hqxNY+2%$<1csNMZ%@(Hh*OozPSsl^ie&G-k$x33)GWI zUJnRpBWtNgH}%*{c&c%`XE&@DUnYE&`1bBR-1PA30H#zgM{zJb3K8^7HK=m zwoa3^Uk39@nZ6h7~JzZ4lwyr!|kM9ocd(@yNDEi%TsxM|fQF0v2S(RGz}Y*0tt9Q3DG z5*KBIDd$fD7P8F`M#n(1vi(?DWlAmVM@xmSoBbiB8-op-(jjiO?zvG{@se}S`<##G zocF%(P3Chkf?ti8AFZ_lnNlKGG{WN{5-^!PMR79I-4na|=R$oE&%-mGi?mFaYfa5V zXOQiW5SiNGul^{kuHR|UC*ur~Wpa-DVNGqW1Np6xF8Jsy#oJ6F{On;gTwvS`H$Qi*`no)sMP22V5*54KdkeC}qY zU00CSzJj#tm*g_V1Id~hRl$an;U*QE*WPi6*dRJJWKg3 zGC3&o#$B17Y*CDfL50V?Aw9jAoSKvTllQ=$IcXYxy0LPT_@g6q=j6(xV%3z!{_+Od zw8$OhCq!%hLV1}G?fk8om+2_?R2-1$Va`>&CJbJwu=Uw2r>|r=?0X}a%9^Fa*@n{9 zIL-xI9wqbG-uNjhm8P1?@|Z8Q+fBJzOxY2t(|oCQzv$t=TC2so{6yQQ z7~_0fb@$k2HGypc`P=b#JMdNDt?q9A?H%~u4y@x_igBQQf7b$LauD^BL5Jbpn$d$9 zJArex8#8;Tu>KbCHRQXy^CJEM@JZa2G2n8Nlmb@ye0z0mo!qE$yyK-Hf%lc*Rxg8o19oRa5x#wc?gKwWuSJ&ytgFBYBBu)0#gAZ%=K<@L z3YAEr@6oklGk+KG)_HjFClQqN!nOuF<&e02fG7&Cf#BdKK?FFwZCg(Pr}CGMo>N2{ zAL^{u-0m4Z)@f<(No05cE4O2gzr@OYuk(BzD|c55yxM7t1+IO`7I(QFx{Tk4evz}# mDV~A;n*S)Sy$M^4^E1%*xf}XT9)@;!8u~Kdf?i?K<^K;c$3s&9 diff --git a/driver/tests/tex_demo/main.cpp b/driver/tests/tex_demo/main.cpp index 53c00161..59c1b781 100644 --- a/driver/tests/tex_demo/main.cpp +++ b/driver/tests/tex_demo/main.cpp @@ -22,6 +22,8 @@ const char* kernel_file = "kernel.bin"; const char* input_file = "toad.tga"; const char* output_file = "output.tga"; +int wrap = 0; +int filter = 0; float scale = 1.0f; vx_device_h device = nullptr; @@ -29,12 +31,12 @@ vx_buffer_h buffer = nullptr; static void show_usage() { std::cout << "Vortex Texture Test." << std::endl; - std::cout << "Usage: [-k: kernel] [-i image] [-o image] [-s scale] [-h: help]" << std::endl; + std::cout << "Usage: [-k: kernel] [-i image] [-o image] [-s scale] [-w wrap] [-f filter] [-h: help]" << std::endl; } static void parse_args(int argc, char **argv) { int c; - while ((c = getopt(argc, argv, "i:o:k:h?")) != -1) { + while ((c = getopt(argc, argv, "i:o:k:w:f:h?")) != -1) { switch (c) { case 'i': input_file = optarg; @@ -45,6 +47,12 @@ static void parse_args(int argc, char **argv) { case 's': scale = std::stof(optarg, NULL); break; + case 'w': + wrap = std::atoi(optarg); + break; + case 'f': + filter = std::atoi(optarg); + break; case 'k': kernel_file = optarg; break; @@ -151,19 +159,22 @@ int main(int argc, char *argv[]) { // upload kernel argument std::cout << "upload kernel argument" << std::endl; { - kernel_arg.num_tasks = std::min(num_tasks, dst_height); + kernel_arg.num_tasks = std::min(num_tasks, dst_height); + kernel_arg.format = (src_bpp == 1) ? 5 : (src_bpp == 2) ? 1 : 0; + kernel_arg.filter = filter; + kernel_arg.wrap = wrap; - kernel_arg.src_width = src_width; - kernel_arg.src_height = src_height; - kernel_arg.src_stride = src_bpp; - kernel_arg.src_pitch = src_bpp * src_width; - kernel_arg.src_ptr = src_addr; + kernel_arg.src_width = src_width; + kernel_arg.src_height = src_height; + kernel_arg.src_stride = src_bpp; + kernel_arg.src_pitch = src_bpp * src_width; + kernel_arg.src_ptr = src_addr; - kernel_arg.dst_width = dst_width; - kernel_arg.dst_height = dst_height; - kernel_arg.dst_stride = dst_bpp; - kernel_arg.dst_pitch = dst_bpp * dst_width; - kernel_arg.dst_ptr = dst_addr; + kernel_arg.dst_width = dst_width; + kernel_arg.dst_height = dst_height; + kernel_arg.dst_stride = dst_bpp; + kernel_arg.dst_pitch = dst_bpp * dst_width; + kernel_arg.dst_ptr = dst_addr; auto buf_ptr = (int*)vx_host_ptr(buffer); memcpy(buf_ptr, &kernel_arg, sizeof(kernel_arg_t)); diff --git a/hw/rtl/tex_unit/VX_tex_stride.v b/hw/rtl/tex_unit/VX_tex_stride.v index ddfab035..50393fe9 100644 --- a/hw/rtl/tex_unit/VX_tex_stride.v +++ b/hw/rtl/tex_unit/VX_tex_stride.v @@ -17,7 +17,7 @@ module VX_tex_stride #( `TEX_FORMAT_L8A8: log_stride_r = 1; `TEX_FORMAT_R5G6B5: log_stride_r = 1; `TEX_FORMAT_R4G4B4A4: log_stride_r = 1; - // `TEX_FORMAT_R8G8B8A8 + //`TEX_FORMAT_R8G8B8A8 default: log_stride_r = 2; endcase end