From 3e88a7180131f58c2b2106dfd16747ff7add187b Mon Sep 17 00:00:00 2001 From: Blaise Tine Date: Thu, 6 May 2021 08:55:46 -0700 Subject: [PATCH] minor update --- driver/tests/stress/kernel.bin | Bin 7100 -> 7108 bytes driver/tests/stress/kernel.c | 8 +- driver/tests/stress/kernel.dump | 994 ++++++++++++++++---------------- driver/tests/stress/kernel.elf | Bin 9156 -> 9164 bytes driver/tests/stress/main.cpp | 66 ++- hw/rtl/afu/VX_avs_wrapper.v | 2 +- 6 files changed, 560 insertions(+), 510 deletions(-) diff --git a/driver/tests/stress/kernel.bin b/driver/tests/stress/kernel.bin index 537c5f79445c1395dbcf43896358b20cefbbdf2a..9aec10635f9f5ae18b54a794e3114b05d5a345a3 100755 GIT binary patch delta 501 zcmYj~F-RLx9LB$Qckf*z8O}b;1q(%#T-y1DI0&9lBZA=2E-i%)4h{|u3UX5puDN6l zkG2kl79p3;eUyUSAkrj`g$!{N99)Drs6lY>U9i>R&jz zMfy;r0_iU;a_@6tGg4gN(&G;KS3DX@vuZfyWbGItDvz?Gt(~D&{656#-VbOZeD zOK%MsjT?q95+g6Z8e_Q>TOMJLZJ8KPNm}}s?kSPmY-&9FaT39~x;M`dh=#c I?Ai$K09MbJ8vpPLlHT zp!8?8^bzNXCj~EI6&zjw2+luyHRDcqPdbB8o4)Bh@Qe$7aQ_@%?iq#V4$lzwm%VjV zwF|U+E}9&%;0tqRAXj2Q4HK~K1E>Kf>0Vmu{Q|W+?zr4Ig_yYm;ng7>mt?U>*+y|* z)g7>)1r>C`{6naQLwd6gF&Th0S|pPJvh*kPn*i!AH+&atJ?K)Fe1Z@@*bawOPYmFY z^j5<_7_wfOM5O_>eZxGyBH453A283S*U%iu0&emOa+Z3RpFPS_*Jucto|t@Tw$g%M zy~6ifCl~n#MZV3aG(|6TN{_9hQFcaSWF3$6h4q0J^^nb3=}4cknzJA2^eECd?ME}6 zNEBX1vhXYPYZLHi`w$Orhiw!rVRs_^%APIfmE-Hmf1`^2X8+EaU-?^O*_ustride; uint32_t* addr_ptr = (uint32_t*)_arg->addr_ptr; - int32_t* src_ptr = (int32_t*)_arg->src_ptr; - int32_t* dst_ptr = (int32_t*)_arg->dst_ptr; + float* src_ptr = (float*)_arg->src_ptr; + float* dst_ptr = (float*)_arg->dst_ptr; uint32_t offset = task_id * stride; for (uint32_t i = 0; i < stride; ++i) { - int value = 0; + float value = 0.0f; for (uint32_t j = 0; j < NUM_LOADS; ++j) { uint32_t addr = offset + i + j; uint32_t index = addr_ptr[addr]; - value += src_ptr[index]; + value *= src_ptr[index]; } dst_ptr[offset+i] = value; } diff --git a/driver/tests/stress/kernel.dump b/driver/tests/stress/kernel.dump index 53bad0ae..21e810bf 100644 --- a/driver/tests/stress/kernel.dump +++ b/driver/tests/stress/kernel.dump @@ -6,25 +6,25 @@ Disassembly of section .init: 80000000 <_start>: 80000000: 00000597 auipc a1,0x0 -80000004: 16858593 addi a1,a1,360 # 80000168 +80000004: 17058593 addi a1,a1,368 # 80000170 80000008: fc102573 csrr a0,0xfc1 8000000c: 00b5106b 0xb5106b -80000010: 158000ef jal ra,80000168 +80000010: 160000ef jal ra,80000170 80000014: 00100513 li a0,1 80000018: 0005006b 0x5006b 8000001c: 00002517 auipc a0,0x2 -80000020: ba050513 addi a0,a0,-1120 # 80001bbc +80000020: ba850513 addi a0,a0,-1112 # 80001bc4 80000024: 00002617 auipc a2,0x2 -80000028: c1860613 addi a2,a2,-1000 # 80001c3c <__BSS_END__> +80000028: c2060613 addi a2,a2,-992 # 80001c44 <__BSS_END__> 8000002c: 40a60633 sub a2,a2,a0 80000030: 00000593 li a1,0 -80000034: 4b8000ef jal ra,800004ec +80000034: 4c0000ef jal ra,800004f4 80000038: 00000517 auipc a0,0x0 -8000003c: 3bc50513 addi a0,a0,956 # 800003f4 <__libc_fini_array> -80000040: 36c000ef jal ra,800003ac -80000044: 40c000ef jal ra,80000450 <__libc_init_array> +8000003c: 3c450513 addi a0,a0,964 # 800003fc <__libc_fini_array> +80000040: 374000ef jal ra,800003b4 +80000044: 414000ef jal ra,80000458 <__libc_init_array> 80000048: 008000ef jal ra,80000050
-8000004c: 3740006f j 800003c0 +8000004c: 37c0006f j 800003c8 Disassembly of section .text: @@ -34,532 +34,534 @@ Disassembly of section .text: 80000058: 800005b7 lui a1,0x80000 8000005c: 7ffff637 lui a2,0x7ffff 80000060: 08058593 addi a1,a1,128 # 80000080 <__stack_top+0x81000080> -80000064: 2000006f j 80000264 +80000064: 2080006f j 8000026c 80000068 : 80000068: 00000793 li a5,0 8000006c: 00078863 beqz a5,8000007c 80000070: 80000537 lui a0,0x80000 -80000074: 3f450513 addi a0,a0,1012 # 800003f4 <__stack_top+0x810003f4> -80000078: 3340006f j 800003ac +80000074: 3fc50513 addi a0,a0,1020 # 800003fc <__stack_top+0x810003fc> +80000078: 33c0006f j 800003b4 8000007c: 00008067 ret 80000080 : 80000080: 0085a783 lw a5,8(a1) -80000084: 00c5a803 lw a6,12(a1) -80000088: 0105a683 lw a3,16(a1) -8000008c: 02f50733 mul a4,a0,a5 -80000090: 0145ae83 lw t4,20(a1) -80000094: 0c078463 beqz a5,8000015c -80000098: 00e78e33 add t3,a5,a4 -8000009c: 002e1e13 slli t3,t3,0x2 -800000a0: 00271713 slli a4,a4,0x2 -800000a4: 01070633 add a2,a4,a6 -800000a8: 010e0e33 add t3,t3,a6 -800000ac: 410e8eb3 sub t4,t4,a6 -800000b0: 00062783 lw a5,0(a2) # 7ffff000 <__stack_size+0x7fffec00> -800000b4: 00462503 lw a0,4(a2) -800000b8: 00862583 lw a1,8(a2) -800000bc: 00c62303 lw t1,12(a2) -800000c0: 01062883 lw a7,16(a2) -800000c4: 00279793 slli a5,a5,0x2 -800000c8: 00251513 slli a0,a0,0x2 -800000cc: 01462803 lw a6,20(a2) -800000d0: 00a68533 add a0,a3,a0 -800000d4: 00f687b3 add a5,a3,a5 +80000084: 00c5a603 lw a2,12(a1) +80000088: 0105a703 lw a4,16(a1) +8000008c: 02f506b3 mul a3,a0,a5 +80000090: 0145a883 lw a7,20(a1) +80000094: 0c078863 beqz a5,80000164 +80000098: 00d78833 add a6,a5,a3 +8000009c: f0000653 fmv.w.x fa2,zero +800000a0: 00269693 slli a3,a3,0x2 +800000a4: 00281813 slli a6,a6,0x2 +800000a8: 00c686b3 add a3,a3,a2 +800000ac: 00c80833 add a6,a6,a2 +800000b0: 40c888b3 sub a7,a7,a2 +800000b4: 0006a583 lw a1,0(a3) +800000b8: 0086a603 lw a2,8(a3) +800000bc: 00c6a503 lw a0,12(a3) +800000c0: 00259593 slli a1,a1,0x2 +800000c4: 00b705b3 add a1,a4,a1 +800000c8: 0005a787 flw fa5,0(a1) +800000cc: 0046a583 lw a1,4(a3) +800000d0: 00261613 slli a2,a2,0x2 +800000d4: 10f677d3 fmul.s fa5,fa2,fa5 800000d8: 00259593 slli a1,a1,0x2 -800000dc: 00052f83 lw t6,0(a0) -800000e0: 0007a783 lw a5,0(a5) -800000e4: 01862503 lw a0,24(a2) -800000e8: 00b685b3 add a1,a3,a1 -800000ec: 00231313 slli t1,t1,0x2 -800000f0: 0005af03 lw t5,0(a1) -800000f4: 00668333 add t1,a3,t1 -800000f8: 01c62583 lw a1,28(a2) -800000fc: 00289893 slli a7,a7,0x2 -80000100: 00032303 lw t1,0(t1) -80000104: 011688b3 add a7,a3,a7 -80000108: 00281813 slli a6,a6,0x2 -8000010c: 0008a883 lw a7,0(a7) -80000110: 01f787b3 add a5,a5,t6 -80000114: 01068833 add a6,a3,a6 -80000118: 00251513 slli a0,a0,0x2 -8000011c: 00082803 lw a6,0(a6) -80000120: 01e787b3 add a5,a5,t5 -80000124: 00a68533 add a0,a3,a0 -80000128: 00259593 slli a1,a1,0x2 -8000012c: 00052503 lw a0,0(a0) -80000130: 006787b3 add a5,a5,t1 -80000134: 00b685b3 add a1,a3,a1 -80000138: 0005a583 lw a1,0(a1) -8000013c: 011787b3 add a5,a5,a7 -80000140: 010787b3 add a5,a5,a6 -80000144: 00a787b3 add a5,a5,a0 -80000148: 00ce8733 add a4,t4,a2 -8000014c: 00f587b3 add a5,a1,a5 -80000150: 00460613 addi a2,a2,4 -80000154: 00f72023 sw a5,0(a4) -80000158: f4ce1ce3 bne t3,a2,800000b0 -8000015c: 00008067 ret +800000dc: 00b705b3 add a1,a4,a1 +800000e0: 0005a687 flw fa3,0(a1) +800000e4: 00c70633 add a2,a4,a2 +800000e8: 00062707 flw fa4,0(a2) # 7ffff000 <__stack_size+0x7fffec00> +800000ec: 10d7f7d3 fmul.s fa5,fa5,fa3 +800000f0: 00251513 slli a0,a0,0x2 +800000f4: 00a70533 add a0,a4,a0 +800000f8: 0106a583 lw a1,16(a3) +800000fc: 0146a603 lw a2,20(a3) +80000100: 10e7f7d3 fmul.s fa5,fa5,fa4 +80000104: 00052707 flw fa4,0(a0) +80000108: 00259593 slli a1,a1,0x2 +8000010c: 00b705b3 add a1,a4,a1 +80000110: 0005a687 flw fa3,0(a1) +80000114: 10e7f7d3 fmul.s fa5,fa5,fa4 +80000118: 00261613 slli a2,a2,0x2 +8000011c: 00c70633 add a2,a4,a2 +80000120: 00062707 flw fa4,0(a2) +80000124: 0186a583 lw a1,24(a3) +80000128: 10d7f7d3 fmul.s fa5,fa5,fa3 +8000012c: 01c6a603 lw a2,28(a3) +80000130: 00259593 slli a1,a1,0x2 +80000134: 00b705b3 add a1,a4,a1 +80000138: 00261613 slli a2,a2,0x2 +8000013c: 10e7f7d3 fmul.s fa5,fa5,fa4 +80000140: 0005a707 flw fa4,0(a1) +80000144: 00c70633 add a2,a4,a2 +80000148: 00d887b3 add a5,a7,a3 +8000014c: 00468693 addi a3,a3,4 +80000150: 10e7f7d3 fmul.s fa5,fa5,fa4 +80000154: 00062707 flw fa4,0(a2) +80000158: 10f777d3 fmul.s fa5,fa4,fa5 +8000015c: 00f7a027 fsw fa5,0(a5) +80000160: f4d81ae3 bne a6,a3,800000b4 +80000164: 00008067 ret -80000160 <_exit>: -80000160: 00000513 li a0,0 -80000164: 0005006b 0x5006b - -80000168 : -80000168: fc002573 csrr a0,0xfc0 +80000168 <_exit>: +80000168: 00000513 li a0,0 8000016c: 0005006b 0x5006b -80000170: 00002197 auipc gp,0x2 -80000174: e2018193 addi gp,gp,-480 # 80001f90 <__global_pointer> -80000178: 7f000117 auipc sp,0x7f000 -8000017c: e8810113 addi sp,sp,-376 # ff000000 <__stack_top> -80000180: 40000593 li a1,1024 -80000184: cc102673 csrr a2,0xcc1 -80000188: 02c585b3 mul a1,a1,a2 -8000018c: 40b10133 sub sp,sp,a1 -80000190: cc3026f3 csrr a3,0xcc3 -80000194: 00068663 beqz a3,800001a0 -80000198: 00000513 li a0,0 -8000019c: 0005006b 0x5006b -800001a0 : -800001a0: 00008067 ret +80000170 : +80000170: fc002573 csrr a0,0xfc0 +80000174: 0005006b 0x5006b +80000178: 00002197 auipc gp,0x2 +8000017c: e2018193 addi gp,gp,-480 # 80001f98 <__global_pointer> +80000180: 7f000117 auipc sp,0x7f000 +80000184: e8010113 addi sp,sp,-384 # ff000000 <__stack_top> +80000188: 40000593 li a1,1024 +8000018c: cc102673 csrr a2,0xcc1 +80000190: 02c585b3 mul a1,a1,a2 +80000194: 40b10133 sub sp,sp,a1 +80000198: cc3026f3 csrr a3,0xcc3 +8000019c: 00068663 beqz a3,800001a8 +800001a0: 00000513 li a0,0 +800001a4: 0005006b 0x5006b -800001a4 : -800001a4: fe010113 addi sp,sp,-32 -800001a8: 00112e23 sw ra,28(sp) -800001ac: 00812c23 sw s0,24(sp) -800001b0: 00912a23 sw s1,20(sp) -800001b4: 01212823 sw s2,16(sp) -800001b8: 01312623 sw s3,12(sp) -800001bc: fc0027f3 csrr a5,0xfc0 -800001c0: 0007806b 0x7806b -800001c4: cc5027f3 csrr a5,0xcc5 -800001c8: cc3029f3 csrr s3,0xcc3 -800001cc: cc002773 csrr a4,0xcc0 -800001d0: fc002673 csrr a2,0xfc0 -800001d4: 00279693 slli a3,a5,0x2 -800001d8: 800027b7 lui a5,0x80002 -800001dc: bbc78793 addi a5,a5,-1092 # 80001bbc <__stack_top+0x81001bbc> -800001e0: 00d787b3 add a5,a5,a3 -800001e4: 0007a483 lw s1,0(a5) -800001e8: 0104a403 lw s0,16(s1) -800001ec: 00c4a683 lw a3,12(s1) -800001f0: 0089a933 slt s2,s3,s0 -800001f4: 00040793 mv a5,s0 -800001f8: 00d90933 add s2,s2,a3 -800001fc: 03368433 mul s0,a3,s3 -80000200: 00f9d463 bge s3,a5,80000208 -80000204: 00098793 mv a5,s3 -80000208: 00f40433 add s0,s0,a5 -8000020c: 0084a683 lw a3,8(s1) -80000210: 02c40433 mul s0,s0,a2 -80000214: 02e907b3 mul a5,s2,a4 -80000218: 00d40433 add s0,s0,a3 -8000021c: 00f40433 add s0,s0,a5 -80000220: 00890933 add s2,s2,s0 -80000224: 01245e63 bge s0,s2,80000240 -80000228: 0004a783 lw a5,0(s1) -8000022c: 0044a583 lw a1,4(s1) -80000230: 00040513 mv a0,s0 -80000234: 00140413 addi s0,s0,1 -80000238: 000780e7 jalr a5 -8000023c: fe8916e3 bne s2,s0,80000228 -80000240: 0019b993 seqz s3,s3 -80000244: 0009806b 0x9806b -80000248: 01c12083 lw ra,28(sp) -8000024c: 01812403 lw s0,24(sp) -80000250: 01412483 lw s1,20(sp) -80000254: 01012903 lw s2,16(sp) -80000258: 00c12983 lw s3,12(sp) -8000025c: 02010113 addi sp,sp,32 -80000260: 00008067 ret +800001a8 : +800001a8: 00008067 ret -80000264 : -80000264: fc010113 addi sp,sp,-64 -80000268: 02112e23 sw ra,60(sp) -8000026c: 02812c23 sw s0,56(sp) -80000270: 02912a23 sw s1,52(sp) -80000274: 03212823 sw s2,48(sp) -80000278: 03312623 sw s3,44(sp) -8000027c: fc2026f3 csrr a3,0xfc2 -80000280: fc102873 csrr a6,0xfc1 -80000284: fc002473 csrr s0,0xfc0 -80000288: cc5027f3 csrr a5,0xcc5 -8000028c: 01f00713 li a4,31 -80000290: 0cf74463 blt a4,a5,80000358 -80000294: 030408b3 mul a7,s0,a6 -80000298: 00100713 li a4,1 -8000029c: 00a8d463 bge a7,a0,800002a4 -800002a0: 03154733 div a4,a0,a7 -800002a4: 0ce6c863 blt a3,a4,80000374 -800002a8: 0ae7d863 bge a5,a4,80000358 -800002ac: fff68693 addi a3,a3,-1 -800002b0: 02e54333 div t1,a0,a4 -800002b4: 00030893 mv a7,t1 -800002b8: 00f69663 bne a3,a5,800002c4 -800002bc: 02e56533 rem a0,a0,a4 -800002c0: 006508b3 add a7,a0,t1 -800002c4: 0288c4b3 div s1,a7,s0 -800002c8: 0288e933 rem s2,a7,s0 -800002cc: 0b04ca63 blt s1,a6,80000380 -800002d0: 00100693 li a3,1 -800002d4: 0304c733 div a4,s1,a6 -800002d8: 00070663 beqz a4,800002e4 -800002dc: 00070693 mv a3,a4 -800002e0: 0304e733 rem a4,s1,a6 -800002e4: 800029b7 lui s3,0x80002 -800002e8: bbc98993 addi s3,s3,-1092 # 80001bbc <__stack_top+0x81001bbc> -800002ec: 00e12e23 sw a4,28(sp) -800002f0: 00c10713 addi a4,sp,12 -800002f4: 00b12623 sw a1,12(sp) -800002f8: 00c12823 sw a2,16(sp) -800002fc: 00d12c23 sw a3,24(sp) -80000300: 02f30333 mul t1,t1,a5 -80000304: 00279793 slli a5,a5,0x2 -80000308: 00f987b3 add a5,s3,a5 -8000030c: 00e7a023 sw a4,0(a5) -80000310: 00612a23 sw t1,20(sp) -80000314: 06904c63 bgtz s1,8000038c -80000318: 04090063 beqz s2,80000358 -8000031c: 02848433 mul s0,s1,s0 -80000320: 00812a23 sw s0,20(sp) -80000324: 0009006b 0x9006b -80000328: cc5027f3 csrr a5,0xcc5 -8000032c: cc202573 csrr a0,0xcc2 -80000330: 00279793 slli a5,a5,0x2 -80000334: 00f989b3 add s3,s3,a5 -80000338: 0009a783 lw a5,0(s3) -8000033c: 0087a683 lw a3,8(a5) -80000340: 0007a703 lw a4,0(a5) -80000344: 0047a583 lw a1,4(a5) -80000348: 00d50533 add a0,a0,a3 -8000034c: 000700e7 jalr a4 -80000350: 00100793 li a5,1 -80000354: 0007806b 0x7806b -80000358: 03c12083 lw ra,60(sp) -8000035c: 03812403 lw s0,56(sp) -80000360: 03412483 lw s1,52(sp) -80000364: 03012903 lw s2,48(sp) -80000368: 02c12983 lw s3,44(sp) -8000036c: 04010113 addi sp,sp,64 -80000370: 00008067 ret -80000374: 00068713 mv a4,a3 -80000378: f2e7cae3 blt a5,a4,800002ac -8000037c: fddff06f j 80000358 -80000380: 00000713 li a4,0 -80000384: 00100693 li a3,1 -80000388: f5dff06f j 800002e4 -8000038c: 00048713 mv a4,s1 -80000390: 00985463 bge a6,s1,80000398 -80000394: 00080713 mv a4,a6 -80000398: 800007b7 lui a5,0x80000 -8000039c: 1a478793 addi a5,a5,420 # 800001a4 <__stack_top+0x810001a4> -800003a0: 00f7106b 0xf7106b -800003a4: e01ff0ef jal ra,800001a4 -800003a8: f71ff06f j 80000318 +800001ac : +800001ac: fe010113 addi sp,sp,-32 +800001b0: 00112e23 sw ra,28(sp) +800001b4: 00812c23 sw s0,24(sp) +800001b8: 00912a23 sw s1,20(sp) +800001bc: 01212823 sw s2,16(sp) +800001c0: 01312623 sw s3,12(sp) +800001c4: fc0027f3 csrr a5,0xfc0 +800001c8: 0007806b 0x7806b +800001cc: cc5027f3 csrr a5,0xcc5 +800001d0: cc3029f3 csrr s3,0xcc3 +800001d4: cc002773 csrr a4,0xcc0 +800001d8: fc002673 csrr a2,0xfc0 +800001dc: 00279693 slli a3,a5,0x2 +800001e0: 800027b7 lui a5,0x80002 +800001e4: bc478793 addi a5,a5,-1084 # 80001bc4 <__stack_top+0x81001bc4> +800001e8: 00d787b3 add a5,a5,a3 +800001ec: 0007a483 lw s1,0(a5) +800001f0: 0104a403 lw s0,16(s1) +800001f4: 00c4a683 lw a3,12(s1) +800001f8: 0089a933 slt s2,s3,s0 +800001fc: 00040793 mv a5,s0 +80000200: 00d90933 add s2,s2,a3 +80000204: 03368433 mul s0,a3,s3 +80000208: 00f9d463 bge s3,a5,80000210 +8000020c: 00098793 mv a5,s3 +80000210: 00f40433 add s0,s0,a5 +80000214: 0084a683 lw a3,8(s1) +80000218: 02c40433 mul s0,s0,a2 +8000021c: 02e907b3 mul a5,s2,a4 +80000220: 00d40433 add s0,s0,a3 +80000224: 00f40433 add s0,s0,a5 +80000228: 00890933 add s2,s2,s0 +8000022c: 01245e63 bge s0,s2,80000248 +80000230: 0004a783 lw a5,0(s1) +80000234: 0044a583 lw a1,4(s1) +80000238: 00040513 mv a0,s0 +8000023c: 00140413 addi s0,s0,1 +80000240: 000780e7 jalr a5 +80000244: fe8916e3 bne s2,s0,80000230 +80000248: 0019b993 seqz s3,s3 +8000024c: 0009806b 0x9806b +80000250: 01c12083 lw ra,28(sp) +80000254: 01812403 lw s0,24(sp) +80000258: 01412483 lw s1,20(sp) +8000025c: 01012903 lw s2,16(sp) +80000260: 00c12983 lw s3,12(sp) +80000264: 02010113 addi sp,sp,32 +80000268: 00008067 ret -800003ac : -800003ac: 00050593 mv a1,a0 -800003b0: 00000693 li a3,0 -800003b4: 00000613 li a2,0 -800003b8: 00000513 li a0,0 -800003bc: 20c0006f j 800005c8 <__register_exitproc> +8000026c : +8000026c: fc010113 addi sp,sp,-64 +80000270: 02112e23 sw ra,60(sp) +80000274: 02812c23 sw s0,56(sp) +80000278: 02912a23 sw s1,52(sp) +8000027c: 03212823 sw s2,48(sp) +80000280: 03312623 sw s3,44(sp) +80000284: fc2026f3 csrr a3,0xfc2 +80000288: fc102873 csrr a6,0xfc1 +8000028c: fc002473 csrr s0,0xfc0 +80000290: cc5027f3 csrr a5,0xcc5 +80000294: 01f00713 li a4,31 +80000298: 0cf74463 blt a4,a5,80000360 +8000029c: 030408b3 mul a7,s0,a6 +800002a0: 00100713 li a4,1 +800002a4: 00a8d463 bge a7,a0,800002ac +800002a8: 03154733 div a4,a0,a7 +800002ac: 0ce6c863 blt a3,a4,8000037c +800002b0: 0ae7d863 bge a5,a4,80000360 +800002b4: fff68693 addi a3,a3,-1 +800002b8: 02e54333 div t1,a0,a4 +800002bc: 00030893 mv a7,t1 +800002c0: 00f69663 bne a3,a5,800002cc +800002c4: 02e56533 rem a0,a0,a4 +800002c8: 006508b3 add a7,a0,t1 +800002cc: 0288c4b3 div s1,a7,s0 +800002d0: 0288e933 rem s2,a7,s0 +800002d4: 0b04ca63 blt s1,a6,80000388 +800002d8: 00100693 li a3,1 +800002dc: 0304c733 div a4,s1,a6 +800002e0: 00070663 beqz a4,800002ec +800002e4: 00070693 mv a3,a4 +800002e8: 0304e733 rem a4,s1,a6 +800002ec: 800029b7 lui s3,0x80002 +800002f0: bc498993 addi s3,s3,-1084 # 80001bc4 <__stack_top+0x81001bc4> +800002f4: 00e12e23 sw a4,28(sp) +800002f8: 00c10713 addi a4,sp,12 +800002fc: 00b12623 sw a1,12(sp) +80000300: 00c12823 sw a2,16(sp) +80000304: 00d12c23 sw a3,24(sp) +80000308: 02f30333 mul t1,t1,a5 +8000030c: 00279793 slli a5,a5,0x2 +80000310: 00f987b3 add a5,s3,a5 +80000314: 00e7a023 sw a4,0(a5) +80000318: 00612a23 sw t1,20(sp) +8000031c: 06904c63 bgtz s1,80000394 +80000320: 04090063 beqz s2,80000360 +80000324: 02848433 mul s0,s1,s0 +80000328: 00812a23 sw s0,20(sp) +8000032c: 0009006b 0x9006b +80000330: cc5027f3 csrr a5,0xcc5 +80000334: cc202573 csrr a0,0xcc2 +80000338: 00279793 slli a5,a5,0x2 +8000033c: 00f989b3 add s3,s3,a5 +80000340: 0009a783 lw a5,0(s3) +80000344: 0087a683 lw a3,8(a5) +80000348: 0007a703 lw a4,0(a5) +8000034c: 0047a583 lw a1,4(a5) +80000350: 00d50533 add a0,a0,a3 +80000354: 000700e7 jalr a4 +80000358: 00100793 li a5,1 +8000035c: 0007806b 0x7806b +80000360: 03c12083 lw ra,60(sp) +80000364: 03812403 lw s0,56(sp) +80000368: 03412483 lw s1,52(sp) +8000036c: 03012903 lw s2,48(sp) +80000370: 02c12983 lw s3,44(sp) +80000374: 04010113 addi sp,sp,64 +80000378: 00008067 ret +8000037c: 00068713 mv a4,a3 +80000380: f2e7cae3 blt a5,a4,800002b4 +80000384: fddff06f j 80000360 +80000388: 00000713 li a4,0 +8000038c: 00100693 li a3,1 +80000390: f5dff06f j 800002ec +80000394: 00048713 mv a4,s1 +80000398: 00985463 bge a6,s1,800003a0 +8000039c: 00080713 mv a4,a6 +800003a0: 800007b7 lui a5,0x80000 +800003a4: 1ac78793 addi a5,a5,428 # 800001ac <__stack_top+0x810001ac> +800003a8: 00f7106b 0xf7106b +800003ac: e01ff0ef jal ra,800001ac +800003b0: f71ff06f j 80000320 -800003c0 : -800003c0: ff010113 addi sp,sp,-16 -800003c4: 00000593 li a1,0 -800003c8: 00812423 sw s0,8(sp) -800003cc: 00112623 sw ra,12(sp) -800003d0: 00050413 mv s0,a0 -800003d4: 290000ef jal ra,80000664 <__call_exitprocs> -800003d8: 800027b7 lui a5,0x80002 -800003dc: bb87a503 lw a0,-1096(a5) # 80001bb8 <__stack_top+0x81001bb8> -800003e0: 03c52783 lw a5,60(a0) -800003e4: 00078463 beqz a5,800003ec -800003e8: 000780e7 jalr a5 -800003ec: 00040513 mv a0,s0 -800003f0: d71ff0ef jal ra,80000160 <_exit> +800003b4 : +800003b4: 00050593 mv a1,a0 +800003b8: 00000693 li a3,0 +800003bc: 00000613 li a2,0 +800003c0: 00000513 li a0,0 +800003c4: 20c0006f j 800005d0 <__register_exitproc> -800003f4 <__libc_fini_array>: -800003f4: ff010113 addi sp,sp,-16 -800003f8: 00812423 sw s0,8(sp) -800003fc: 800017b7 lui a5,0x80001 -80000400: 80001437 lui s0,0x80001 -80000404: 78c40413 addi s0,s0,1932 # 8000178c <__stack_top+0x8100178c> -80000408: 78c78793 addi a5,a5,1932 # 8000178c <__stack_top+0x8100178c> -8000040c: 408787b3 sub a5,a5,s0 -80000410: 00912223 sw s1,4(sp) -80000414: 00112623 sw ra,12(sp) -80000418: 4027d493 srai s1,a5,0x2 -8000041c: 02048063 beqz s1,8000043c <__libc_fini_array+0x48> -80000420: ffc78793 addi a5,a5,-4 -80000424: 00878433 add s0,a5,s0 -80000428: 00042783 lw a5,0(s0) -8000042c: fff48493 addi s1,s1,-1 -80000430: ffc40413 addi s0,s0,-4 -80000434: 000780e7 jalr a5 -80000438: fe0498e3 bnez s1,80000428 <__libc_fini_array+0x34> -8000043c: 00c12083 lw ra,12(sp) -80000440: 00812403 lw s0,8(sp) -80000444: 00412483 lw s1,4(sp) -80000448: 01010113 addi sp,sp,16 -8000044c: 00008067 ret +800003c8 : +800003c8: ff010113 addi sp,sp,-16 +800003cc: 00000593 li a1,0 +800003d0: 00812423 sw s0,8(sp) +800003d4: 00112623 sw ra,12(sp) +800003d8: 00050413 mv s0,a0 +800003dc: 290000ef jal ra,8000066c <__call_exitprocs> +800003e0: 800027b7 lui a5,0x80002 +800003e4: bc07a503 lw a0,-1088(a5) # 80001bc0 <__stack_top+0x81001bc0> +800003e8: 03c52783 lw a5,60(a0) +800003ec: 00078463 beqz a5,800003f4 +800003f0: 000780e7 jalr a5 +800003f4: 00040513 mv a0,s0 +800003f8: d71ff0ef jal ra,80000168 <_exit> -80000450 <__libc_init_array>: -80000450: ff010113 addi sp,sp,-16 -80000454: 00812423 sw s0,8(sp) -80000458: 01212023 sw s2,0(sp) -8000045c: 80001437 lui s0,0x80001 -80000460: 80001937 lui s2,0x80001 -80000464: 78840793 addi a5,s0,1928 # 80001788 <__stack_top+0x81001788> -80000468: 78890913 addi s2,s2,1928 # 80001788 <__stack_top+0x81001788> -8000046c: 40f90933 sub s2,s2,a5 -80000470: 00112623 sw ra,12(sp) -80000474: 00912223 sw s1,4(sp) -80000478: 40295913 srai s2,s2,0x2 -8000047c: 02090063 beqz s2,8000049c <__libc_init_array+0x4c> -80000480: 78840413 addi s0,s0,1928 -80000484: 00000493 li s1,0 -80000488: 00042783 lw a5,0(s0) -8000048c: 00148493 addi s1,s1,1 -80000490: 00440413 addi s0,s0,4 -80000494: 000780e7 jalr a5 -80000498: fe9918e3 bne s2,s1,80000488 <__libc_init_array+0x38> -8000049c: 80001437 lui s0,0x80001 -800004a0: 80001937 lui s2,0x80001 -800004a4: 78840793 addi a5,s0,1928 # 80001788 <__stack_top+0x81001788> -800004a8: 78c90913 addi s2,s2,1932 # 8000178c <__stack_top+0x8100178c> -800004ac: 40f90933 sub s2,s2,a5 -800004b0: 40295913 srai s2,s2,0x2 -800004b4: 02090063 beqz s2,800004d4 <__libc_init_array+0x84> -800004b8: 78840413 addi s0,s0,1928 -800004bc: 00000493 li s1,0 -800004c0: 00042783 lw a5,0(s0) -800004c4: 00148493 addi s1,s1,1 -800004c8: 00440413 addi s0,s0,4 -800004cc: 000780e7 jalr a5 -800004d0: fe9918e3 bne s2,s1,800004c0 <__libc_init_array+0x70> -800004d4: 00c12083 lw ra,12(sp) -800004d8: 00812403 lw s0,8(sp) -800004dc: 00412483 lw s1,4(sp) -800004e0: 00012903 lw s2,0(sp) -800004e4: 01010113 addi sp,sp,16 -800004e8: 00008067 ret +800003fc <__libc_fini_array>: +800003fc: ff010113 addi sp,sp,-16 +80000400: 00812423 sw s0,8(sp) +80000404: 800017b7 lui a5,0x80001 +80000408: 80001437 lui s0,0x80001 +8000040c: 79440413 addi s0,s0,1940 # 80001794 <__stack_top+0x81001794> +80000410: 79478793 addi a5,a5,1940 # 80001794 <__stack_top+0x81001794> +80000414: 408787b3 sub a5,a5,s0 +80000418: 00912223 sw s1,4(sp) +8000041c: 00112623 sw ra,12(sp) +80000420: 4027d493 srai s1,a5,0x2 +80000424: 02048063 beqz s1,80000444 <__libc_fini_array+0x48> +80000428: ffc78793 addi a5,a5,-4 +8000042c: 00878433 add s0,a5,s0 +80000430: 00042783 lw a5,0(s0) +80000434: fff48493 addi s1,s1,-1 +80000438: ffc40413 addi s0,s0,-4 +8000043c: 000780e7 jalr a5 +80000440: fe0498e3 bnez s1,80000430 <__libc_fini_array+0x34> +80000444: 00c12083 lw ra,12(sp) +80000448: 00812403 lw s0,8(sp) +8000044c: 00412483 lw s1,4(sp) +80000450: 01010113 addi sp,sp,16 +80000454: 00008067 ret -800004ec : -800004ec: 00f00313 li t1,15 -800004f0: 00050713 mv a4,a0 -800004f4: 02c37e63 bgeu t1,a2,80000530 -800004f8: 00f77793 andi a5,a4,15 -800004fc: 0a079063 bnez a5,8000059c -80000500: 08059263 bnez a1,80000584 -80000504: ff067693 andi a3,a2,-16 -80000508: 00f67613 andi a2,a2,15 -8000050c: 00e686b3 add a3,a3,a4 -80000510: 00b72023 sw a1,0(a4) -80000514: 00b72223 sw a1,4(a4) -80000518: 00b72423 sw a1,8(a4) -8000051c: 00b72623 sw a1,12(a4) -80000520: 01070713 addi a4,a4,16 -80000524: fed766e3 bltu a4,a3,80000510 -80000528: 00061463 bnez a2,80000530 -8000052c: 00008067 ret -80000530: 40c306b3 sub a3,t1,a2 -80000534: 00269693 slli a3,a3,0x2 -80000538: 00000297 auipc t0,0x0 -8000053c: 005686b3 add a3,a3,t0 -80000540: 00c68067 jr 12(a3) -80000544: 00b70723 sb a1,14(a4) -80000548: 00b706a3 sb a1,13(a4) -8000054c: 00b70623 sb a1,12(a4) -80000550: 00b705a3 sb a1,11(a4) -80000554: 00b70523 sb a1,10(a4) -80000558: 00b704a3 sb a1,9(a4) -8000055c: 00b70423 sb a1,8(a4) -80000560: 00b703a3 sb a1,7(a4) -80000564: 00b70323 sb a1,6(a4) -80000568: 00b702a3 sb a1,5(a4) -8000056c: 00b70223 sb a1,4(a4) -80000570: 00b701a3 sb a1,3(a4) -80000574: 00b70123 sb a1,2(a4) -80000578: 00b700a3 sb a1,1(a4) -8000057c: 00b70023 sb a1,0(a4) -80000580: 00008067 ret -80000584: 0ff5f593 andi a1,a1,255 -80000588: 00859693 slli a3,a1,0x8 -8000058c: 00d5e5b3 or a1,a1,a3 -80000590: 01059693 slli a3,a1,0x10 +80000458 <__libc_init_array>: +80000458: ff010113 addi sp,sp,-16 +8000045c: 00812423 sw s0,8(sp) +80000460: 01212023 sw s2,0(sp) +80000464: 80001437 lui s0,0x80001 +80000468: 80001937 lui s2,0x80001 +8000046c: 79040793 addi a5,s0,1936 # 80001790 <__stack_top+0x81001790> +80000470: 79090913 addi s2,s2,1936 # 80001790 <__stack_top+0x81001790> +80000474: 40f90933 sub s2,s2,a5 +80000478: 00112623 sw ra,12(sp) +8000047c: 00912223 sw s1,4(sp) +80000480: 40295913 srai s2,s2,0x2 +80000484: 02090063 beqz s2,800004a4 <__libc_init_array+0x4c> +80000488: 79040413 addi s0,s0,1936 +8000048c: 00000493 li s1,0 +80000490: 00042783 lw a5,0(s0) +80000494: 00148493 addi s1,s1,1 +80000498: 00440413 addi s0,s0,4 +8000049c: 000780e7 jalr a5 +800004a0: fe9918e3 bne s2,s1,80000490 <__libc_init_array+0x38> +800004a4: 80001437 lui s0,0x80001 +800004a8: 80001937 lui s2,0x80001 +800004ac: 79040793 addi a5,s0,1936 # 80001790 <__stack_top+0x81001790> +800004b0: 79490913 addi s2,s2,1940 # 80001794 <__stack_top+0x81001794> +800004b4: 40f90933 sub s2,s2,a5 +800004b8: 40295913 srai s2,s2,0x2 +800004bc: 02090063 beqz s2,800004dc <__libc_init_array+0x84> +800004c0: 79040413 addi s0,s0,1936 +800004c4: 00000493 li s1,0 +800004c8: 00042783 lw a5,0(s0) +800004cc: 00148493 addi s1,s1,1 +800004d0: 00440413 addi s0,s0,4 +800004d4: 000780e7 jalr a5 +800004d8: fe9918e3 bne s2,s1,800004c8 <__libc_init_array+0x70> +800004dc: 00c12083 lw ra,12(sp) +800004e0: 00812403 lw s0,8(sp) +800004e4: 00412483 lw s1,4(sp) +800004e8: 00012903 lw s2,0(sp) +800004ec: 01010113 addi sp,sp,16 +800004f0: 00008067 ret + +800004f4 : +800004f4: 00f00313 li t1,15 +800004f8: 00050713 mv a4,a0 +800004fc: 02c37e63 bgeu t1,a2,80000538 +80000500: 00f77793 andi a5,a4,15 +80000504: 0a079063 bnez a5,800005a4 +80000508: 08059263 bnez a1,8000058c +8000050c: ff067693 andi a3,a2,-16 +80000510: 00f67613 andi a2,a2,15 +80000514: 00e686b3 add a3,a3,a4 +80000518: 00b72023 sw a1,0(a4) +8000051c: 00b72223 sw a1,4(a4) +80000520: 00b72423 sw a1,8(a4) +80000524: 00b72623 sw a1,12(a4) +80000528: 01070713 addi a4,a4,16 +8000052c: fed766e3 bltu a4,a3,80000518 +80000530: 00061463 bnez a2,80000538 +80000534: 00008067 ret +80000538: 40c306b3 sub a3,t1,a2 +8000053c: 00269693 slli a3,a3,0x2 +80000540: 00000297 auipc t0,0x0 +80000544: 005686b3 add a3,a3,t0 +80000548: 00c68067 jr 12(a3) +8000054c: 00b70723 sb a1,14(a4) +80000550: 00b706a3 sb a1,13(a4) +80000554: 00b70623 sb a1,12(a4) +80000558: 00b705a3 sb a1,11(a4) +8000055c: 00b70523 sb a1,10(a4) +80000560: 00b704a3 sb a1,9(a4) +80000564: 00b70423 sb a1,8(a4) +80000568: 00b703a3 sb a1,7(a4) +8000056c: 00b70323 sb a1,6(a4) +80000570: 00b702a3 sb a1,5(a4) +80000574: 00b70223 sb a1,4(a4) +80000578: 00b701a3 sb a1,3(a4) +8000057c: 00b70123 sb a1,2(a4) +80000580: 00b700a3 sb a1,1(a4) +80000584: 00b70023 sb a1,0(a4) +80000588: 00008067 ret +8000058c: 0ff5f593 andi a1,a1,255 +80000590: 00859693 slli a3,a1,0x8 80000594: 00d5e5b3 or a1,a1,a3 -80000598: f6dff06f j 80000504 -8000059c: 00279693 slli a3,a5,0x2 -800005a0: 00000297 auipc t0,0x0 -800005a4: 005686b3 add a3,a3,t0 -800005a8: 00008293 mv t0,ra -800005ac: fa0680e7 jalr -96(a3) -800005b0: 00028093 mv ra,t0 -800005b4: ff078793 addi a5,a5,-16 -800005b8: 40f70733 sub a4,a4,a5 -800005bc: 00f60633 add a2,a2,a5 -800005c0: f6c378e3 bgeu t1,a2,80000530 -800005c4: f3dff06f j 80000500 +80000598: 01059693 slli a3,a1,0x10 +8000059c: 00d5e5b3 or a1,a1,a3 +800005a0: f6dff06f j 8000050c +800005a4: 00279693 slli a3,a5,0x2 +800005a8: 00000297 auipc t0,0x0 +800005ac: 005686b3 add a3,a3,t0 +800005b0: 00008293 mv t0,ra +800005b4: fa0680e7 jalr -96(a3) +800005b8: 00028093 mv ra,t0 +800005bc: ff078793 addi a5,a5,-16 +800005c0: 40f70733 sub a4,a4,a5 +800005c4: 00f60633 add a2,a2,a5 +800005c8: f6c378e3 bgeu t1,a2,80000538 +800005cc: f3dff06f j 80000508 -800005c8 <__register_exitproc>: -800005c8: 800027b7 lui a5,0x80002 -800005cc: bb87a703 lw a4,-1096(a5) # 80001bb8 <__stack_top+0x81001bb8> -800005d0: 14872783 lw a5,328(a4) -800005d4: 04078c63 beqz a5,8000062c <__register_exitproc+0x64> -800005d8: 0047a703 lw a4,4(a5) -800005dc: 01f00813 li a6,31 -800005e0: 06e84e63 blt a6,a4,8000065c <__register_exitproc+0x94> -800005e4: 00271813 slli a6,a4,0x2 -800005e8: 02050663 beqz a0,80000614 <__register_exitproc+0x4c> -800005ec: 01078333 add t1,a5,a6 -800005f0: 08c32423 sw a2,136(t1) -800005f4: 1887a883 lw a7,392(a5) -800005f8: 00100613 li a2,1 -800005fc: 00e61633 sll a2,a2,a4 -80000600: 00c8e8b3 or a7,a7,a2 -80000604: 1917a423 sw a7,392(a5) -80000608: 10d32423 sw a3,264(t1) -8000060c: 00200693 li a3,2 -80000610: 02d50463 beq a0,a3,80000638 <__register_exitproc+0x70> -80000614: 00170713 addi a4,a4,1 -80000618: 00e7a223 sw a4,4(a5) -8000061c: 010787b3 add a5,a5,a6 -80000620: 00b7a423 sw a1,8(a5) -80000624: 00000513 li a0,0 -80000628: 00008067 ret -8000062c: 14c70793 addi a5,a4,332 -80000630: 14f72423 sw a5,328(a4) -80000634: fa5ff06f j 800005d8 <__register_exitproc+0x10> -80000638: 18c7a683 lw a3,396(a5) -8000063c: 00170713 addi a4,a4,1 -80000640: 00e7a223 sw a4,4(a5) -80000644: 00c6e633 or a2,a3,a2 -80000648: 18c7a623 sw a2,396(a5) -8000064c: 010787b3 add a5,a5,a6 -80000650: 00b7a423 sw a1,8(a5) -80000654: 00000513 li a0,0 -80000658: 00008067 ret -8000065c: fff00513 li a0,-1 +800005d0 <__register_exitproc>: +800005d0: 800027b7 lui a5,0x80002 +800005d4: bc07a703 lw a4,-1088(a5) # 80001bc0 <__stack_top+0x81001bc0> +800005d8: 14872783 lw a5,328(a4) +800005dc: 04078c63 beqz a5,80000634 <__register_exitproc+0x64> +800005e0: 0047a703 lw a4,4(a5) +800005e4: 01f00813 li a6,31 +800005e8: 06e84e63 blt a6,a4,80000664 <__register_exitproc+0x94> +800005ec: 00271813 slli a6,a4,0x2 +800005f0: 02050663 beqz a0,8000061c <__register_exitproc+0x4c> +800005f4: 01078333 add t1,a5,a6 +800005f8: 08c32423 sw a2,136(t1) +800005fc: 1887a883 lw a7,392(a5) +80000600: 00100613 li a2,1 +80000604: 00e61633 sll a2,a2,a4 +80000608: 00c8e8b3 or a7,a7,a2 +8000060c: 1917a423 sw a7,392(a5) +80000610: 10d32423 sw a3,264(t1) +80000614: 00200693 li a3,2 +80000618: 02d50463 beq a0,a3,80000640 <__register_exitproc+0x70> +8000061c: 00170713 addi a4,a4,1 +80000620: 00e7a223 sw a4,4(a5) +80000624: 010787b3 add a5,a5,a6 +80000628: 00b7a423 sw a1,8(a5) +8000062c: 00000513 li a0,0 +80000630: 00008067 ret +80000634: 14c70793 addi a5,a4,332 +80000638: 14f72423 sw a5,328(a4) +8000063c: fa5ff06f j 800005e0 <__register_exitproc+0x10> +80000640: 18c7a683 lw a3,396(a5) +80000644: 00170713 addi a4,a4,1 +80000648: 00e7a223 sw a4,4(a5) +8000064c: 00c6e633 or a2,a3,a2 +80000650: 18c7a623 sw a2,396(a5) +80000654: 010787b3 add a5,a5,a6 +80000658: 00b7a423 sw a1,8(a5) +8000065c: 00000513 li a0,0 80000660: 00008067 ret +80000664: fff00513 li a0,-1 +80000668: 00008067 ret -80000664 <__call_exitprocs>: -80000664: fd010113 addi sp,sp,-48 -80000668: 800027b7 lui a5,0x80002 -8000066c: 01412c23 sw s4,24(sp) -80000670: bb87aa03 lw s4,-1096(a5) # 80001bb8 <__stack_top+0x81001bb8> -80000674: 03212023 sw s2,32(sp) -80000678: 02112623 sw ra,44(sp) -8000067c: 148a2903 lw s2,328(s4) -80000680: 02812423 sw s0,40(sp) -80000684: 02912223 sw s1,36(sp) -80000688: 01312e23 sw s3,28(sp) -8000068c: 01512a23 sw s5,20(sp) -80000690: 01612823 sw s6,16(sp) -80000694: 01712623 sw s7,12(sp) -80000698: 01812423 sw s8,8(sp) -8000069c: 04090063 beqz s2,800006dc <__call_exitprocs+0x78> -800006a0: 00050b13 mv s6,a0 -800006a4: 00058b93 mv s7,a1 -800006a8: 00100a93 li s5,1 -800006ac: fff00993 li s3,-1 -800006b0: 00492483 lw s1,4(s2) -800006b4: fff48413 addi s0,s1,-1 -800006b8: 02044263 bltz s0,800006dc <__call_exitprocs+0x78> -800006bc: 00249493 slli s1,s1,0x2 -800006c0: 009904b3 add s1,s2,s1 -800006c4: 040b8463 beqz s7,8000070c <__call_exitprocs+0xa8> -800006c8: 1044a783 lw a5,260(s1) -800006cc: 05778063 beq a5,s7,8000070c <__call_exitprocs+0xa8> -800006d0: fff40413 addi s0,s0,-1 -800006d4: ffc48493 addi s1,s1,-4 -800006d8: ff3416e3 bne s0,s3,800006c4 <__call_exitprocs+0x60> -800006dc: 02c12083 lw ra,44(sp) -800006e0: 02812403 lw s0,40(sp) -800006e4: 02412483 lw s1,36(sp) -800006e8: 02012903 lw s2,32(sp) -800006ec: 01c12983 lw s3,28(sp) -800006f0: 01812a03 lw s4,24(sp) -800006f4: 01412a83 lw s5,20(sp) -800006f8: 01012b03 lw s6,16(sp) -800006fc: 00c12b83 lw s7,12(sp) -80000700: 00812c03 lw s8,8(sp) -80000704: 03010113 addi sp,sp,48 -80000708: 00008067 ret -8000070c: 00492783 lw a5,4(s2) -80000710: 0044a683 lw a3,4(s1) -80000714: fff78793 addi a5,a5,-1 -80000718: 04878e63 beq a5,s0,80000774 <__call_exitprocs+0x110> -8000071c: 0004a223 sw zero,4(s1) -80000720: fa0688e3 beqz a3,800006d0 <__call_exitprocs+0x6c> -80000724: 18892783 lw a5,392(s2) -80000728: 008a9733 sll a4,s5,s0 -8000072c: 00492c03 lw s8,4(s2) -80000730: 00f777b3 and a5,a4,a5 -80000734: 02079263 bnez a5,80000758 <__call_exitprocs+0xf4> -80000738: 000680e7 jalr a3 -8000073c: 00492703 lw a4,4(s2) -80000740: 148a2783 lw a5,328(s4) -80000744: 01871463 bne a4,s8,8000074c <__call_exitprocs+0xe8> -80000748: f92784e3 beq a5,s2,800006d0 <__call_exitprocs+0x6c> -8000074c: f80788e3 beqz a5,800006dc <__call_exitprocs+0x78> -80000750: 00078913 mv s2,a5 -80000754: f5dff06f j 800006b0 <__call_exitprocs+0x4c> -80000758: 18c92783 lw a5,396(s2) -8000075c: 0844a583 lw a1,132(s1) -80000760: 00f77733 and a4,a4,a5 -80000764: 00071c63 bnez a4,8000077c <__call_exitprocs+0x118> -80000768: 000b0513 mv a0,s6 -8000076c: 000680e7 jalr a3 -80000770: fcdff06f j 8000073c <__call_exitprocs+0xd8> -80000774: 00892223 sw s0,4(s2) -80000778: fa9ff06f j 80000720 <__call_exitprocs+0xbc> -8000077c: 00058513 mv a0,a1 -80000780: 000680e7 jalr a3 -80000784: fb9ff06f j 8000073c <__call_exitprocs+0xd8> +8000066c <__call_exitprocs>: +8000066c: fd010113 addi sp,sp,-48 +80000670: 800027b7 lui a5,0x80002 +80000674: 01412c23 sw s4,24(sp) +80000678: bc07aa03 lw s4,-1088(a5) # 80001bc0 <__stack_top+0x81001bc0> +8000067c: 03212023 sw s2,32(sp) +80000680: 02112623 sw ra,44(sp) +80000684: 148a2903 lw s2,328(s4) +80000688: 02812423 sw s0,40(sp) +8000068c: 02912223 sw s1,36(sp) +80000690: 01312e23 sw s3,28(sp) +80000694: 01512a23 sw s5,20(sp) +80000698: 01612823 sw s6,16(sp) +8000069c: 01712623 sw s7,12(sp) +800006a0: 01812423 sw s8,8(sp) +800006a4: 04090063 beqz s2,800006e4 <__call_exitprocs+0x78> +800006a8: 00050b13 mv s6,a0 +800006ac: 00058b93 mv s7,a1 +800006b0: 00100a93 li s5,1 +800006b4: fff00993 li s3,-1 +800006b8: 00492483 lw s1,4(s2) +800006bc: fff48413 addi s0,s1,-1 +800006c0: 02044263 bltz s0,800006e4 <__call_exitprocs+0x78> +800006c4: 00249493 slli s1,s1,0x2 +800006c8: 009904b3 add s1,s2,s1 +800006cc: 040b8463 beqz s7,80000714 <__call_exitprocs+0xa8> +800006d0: 1044a783 lw a5,260(s1) +800006d4: 05778063 beq a5,s7,80000714 <__call_exitprocs+0xa8> +800006d8: fff40413 addi s0,s0,-1 +800006dc: ffc48493 addi s1,s1,-4 +800006e0: ff3416e3 bne s0,s3,800006cc <__call_exitprocs+0x60> +800006e4: 02c12083 lw ra,44(sp) +800006e8: 02812403 lw s0,40(sp) +800006ec: 02412483 lw s1,36(sp) +800006f0: 02012903 lw s2,32(sp) +800006f4: 01c12983 lw s3,28(sp) +800006f8: 01812a03 lw s4,24(sp) +800006fc: 01412a83 lw s5,20(sp) +80000700: 01012b03 lw s6,16(sp) +80000704: 00c12b83 lw s7,12(sp) +80000708: 00812c03 lw s8,8(sp) +8000070c: 03010113 addi sp,sp,48 +80000710: 00008067 ret +80000714: 00492783 lw a5,4(s2) +80000718: 0044a683 lw a3,4(s1) +8000071c: fff78793 addi a5,a5,-1 +80000720: 04878e63 beq a5,s0,8000077c <__call_exitprocs+0x110> +80000724: 0004a223 sw zero,4(s1) +80000728: fa0688e3 beqz a3,800006d8 <__call_exitprocs+0x6c> +8000072c: 18892783 lw a5,392(s2) +80000730: 008a9733 sll a4,s5,s0 +80000734: 00492c03 lw s8,4(s2) +80000738: 00f777b3 and a5,a4,a5 +8000073c: 02079263 bnez a5,80000760 <__call_exitprocs+0xf4> +80000740: 000680e7 jalr a3 +80000744: 00492703 lw a4,4(s2) +80000748: 148a2783 lw a5,328(s4) +8000074c: 01871463 bne a4,s8,80000754 <__call_exitprocs+0xe8> +80000750: f92784e3 beq a5,s2,800006d8 <__call_exitprocs+0x6c> +80000754: f80788e3 beqz a5,800006e4 <__call_exitprocs+0x78> +80000758: 00078913 mv s2,a5 +8000075c: f5dff06f j 800006b8 <__call_exitprocs+0x4c> +80000760: 18c92783 lw a5,396(s2) +80000764: 0844a583 lw a1,132(s1) +80000768: 00f77733 and a4,a4,a5 +8000076c: 00071c63 bnez a4,80000784 <__call_exitprocs+0x118> +80000770: 000b0513 mv a0,s6 +80000774: 000680e7 jalr a3 +80000778: fcdff06f j 80000744 <__call_exitprocs+0xd8> +8000077c: 00892223 sw s0,4(s2) +80000780: fa9ff06f j 80000728 <__call_exitprocs+0xbc> +80000784: 00058513 mv a0,a1 +80000788: 000680e7 jalr a3 +8000078c: fb9ff06f j 80000744 <__call_exitprocs+0xd8> Disassembly of section .init_array: -80001788 <__init_array_start>: -80001788: 0068 addi a0,sp,12 -8000178a: 8000 0x8000 +80001790 <__init_array_start>: +80001790: 0068 addi a0,sp,12 +80001792: 8000 0x8000 Disassembly of section .data: -80001790 : -80001790: 0000 unimp -80001792: 0000 unimp -80001794: 1a7c addi a5,sp,316 -80001796: 8000 0x8000 -80001798: 1ae4 addi s1,sp,380 -8000179a: 8000 0x8000 -8000179c: 1b4c addi a1,sp,436 +80001798 : +80001798: 0000 unimp +8000179a: 0000 unimp +8000179c: 1a84 addi s1,sp,368 8000179e: 8000 0x8000 +800017a0: 1aec addi a1,sp,380 +800017a2: 8000 0x8000 +800017a4: 1b54 addi a3,sp,436 +800017a6: 8000 0x8000 ... -80001838: 0001 nop -8000183a: 0000 unimp -8000183c: 0000 unimp -8000183e: 0000 unimp -80001840: 330e fld ft6,224(sp) -80001842: abcd j 80001e34 <__BSS_END__+0x1f8> -80001844: 1234 addi a3,sp,296 -80001846: e66d bnez a2,80001930 -80001848: deec sw a1,124(a3) -8000184a: 0005 c.nop 1 -8000184c: 0000000b 0xb +80001840: 0001 nop +80001842: 0000 unimp +80001844: 0000 unimp +80001846: 0000 unimp +80001848: 330e fld ft6,224(sp) +8000184a: abcd j 80001e3c <__BSS_END__+0x1f8> +8000184c: 1234 addi a3,sp,296 +8000184e: e66d bnez a2,80001938 +80001850: deec sw a1,124(a3) +80001852: 0005 c.nop 1 +80001854: 0000000b 0xb ... Disassembly of section .sdata: -80001bb8 <_global_impure_ptr>: -80001bb8: 1790 addi a2,sp,992 -80001bba: 8000 0x8000 +80001bc0 <_global_impure_ptr>: +80001bc0: 1798 addi a4,sp,992 +80001bc2: 8000 0x8000 Disassembly of section .bss: -80001bbc : +80001bc4 : ... Disassembly of section .comment: diff --git a/driver/tests/stress/kernel.elf b/driver/tests/stress/kernel.elf index 4be84fc82c023874a05274861639e6d1abd3aeb4..b107e920dae8b7ba7776c8681dca30b341f62ddd 100755 GIT binary patch delta 1081 zcmZ8gT}TvB6h3!m@2o3Uv(CCJy1Kf9Yef(;f-iv^_=6xwR8WzXNEB!&7})mW#O5kN zuyRrsG74c=A0ntJqS(k{{dwp?5YiV(2(kym3QK~8I(OYQafZX4@0{=Z&Y3%RQq3Ql zqZMp@q*5=7+5tpxpi2c{v_w6bFr!a9;s;u|r>{y)cd0L61Hi3u6}pJ+sRGdW;A>BS zRz-PlD2X7F32|CIv}(NZ*aigaD2{J{2|X~4ZK`L$tU&74Ic$eI4yMLu>ZxK}F#*Dp zgCHknK%V5xQhrI{sYXV;0%LdyPAc#n#{!@g9|S8h3r5~NSi|$da9klx1myTE;Aj|Dh#i>#-M{dRNh(FH? z7T=Ir3}2P@)zH_cuK^&_Ew0!Owq@`%$;5-aeP$qq?cRDeg%7-K>@j}x_K;6|nXlts zRwtPEiN6~^*@NE_&h-`i#Xb1T9-JoJjVonGPo!uXlaLb>sHMZ3n@*+a8VJXH+taG> zQ@P$v4J^GxDX_`NjQz|{!flh3WJ4e|DZ_b+z z6k#z7SQ37yxp!2s?U?YHmlDgOjDZ# zGZXJ8Ou+nVb@Tx_U$s${^8yG{fG!Py(UJ=n%+5V*9o)39yX>5)EuYpN!&k6FT+!e(Wrs}wt|-sK zHMFWd7ed8EIf`UEUI_cL8{G3-E9PEY-^_zn{6i{(2{&f^0T|WA=b-OoEeC z8D38S51Ak*8=2KT1a9^RV801YtwQ=5L(Wlcn>o->m?foD?3BHMBCB`M*JtdkIXEJ z59G8hcqUN6E@C!tRGJ!fKLs{2X?heFOCPZ&9OiXWb`(GH8ueucvr`!i29HF$GTe7L zWBGokjG6!#dLQt^n^SGzleniVgI9ujnMj!~q^t{-<6Q8M(0miRLyOx{7H1_L6<~iL zJ5ULB-^BqpRc^~HkK>i+w$hKMIRRw4#g+fho&rCm67eFh92XeFbfk{m#=%H4yNgSa zv!s)*inU%@trM9yD1R-FtmEgz#l9kcb{&6Q$IHa+IA2xUGDg$bL;+A?8=c$YbQ(>! zmpC6=nO1{ue-Ew3#dicKevA #include "common.h" #include +#include +#include #include #define RT_CHECK(_expr) \ @@ -18,10 +20,55 @@ /////////////////////////////////////////////////////////////////////////////// +union Float_t { + float f; + int i; + struct { + uint32_t man : 23; + uint32_t exp : 8; + uint32_t sign : 1; + } parts; +}; + +inline float fround(float x, int32_t precision = 8) { + auto power_of_10 = std::pow(10, precision); + return std::round(x * power_of_10) / power_of_10; +} + +inline bool almost_equal_eps(float a, float b, int ulp = 128) { + auto eps = std::numeric_limits::epsilon() * (std::max(fabs(a), fabs(b)) * ulp); + auto d = fabs(a - b); + if (d > eps) { + std::cout << "*** almost_equal_eps: d=" << d << ", eps=" << eps << std::endl; + return false; + } + return true; +} + +inline bool almost_equal_ulp(float a, float b, int32_t ulp = 6) { + Float_t fa{a}, fb{b}; + auto d = std::abs(fa.i - fb.i); + if (d > ulp) { + std::cout << "*** almost_equal_ulp: a=" << a << ", b=" << b << ", ulp=" << d << ", ia=" << std::hex << fa.i << ", ib=" << fb.i << std::endl; + return false; + } + return true; +} + +inline bool almost_equal(float a, float b) { + if (a == b) + return true; + /*if (almost_equal_eps(a, b)) + return true;*/ + return almost_equal_ulp(a, b); +} + +/////////////////////////////////////////////////////////////////////////////// + const char* kernel_file = "kernel.bin"; uint32_t count = 0; -std::vector test_data; +std::vector test_data; std::vector addr_table; vx_device_h device = nullptr; @@ -68,7 +115,8 @@ void gen_input_data(uint32_t num_points) { addr_table.resize(num_points + NUM_LOADS - 1); for (uint32_t i = 0; i < test_data.size(); ++i) { - test_data[i] = std::rand(); + float r = static_cast(std::rand()) / RAND_MAX; + test_data[i] = r; } for (uint32_t i = 0; i < addr_table.size(); ++i) { @@ -98,21 +146,21 @@ int run_test(const kernel_arg_t& kernel_arg, std::cout << "verify result" << std::endl; { int errors = 0; - auto buf_ptr = (int32_t*)vx_host_ptr(staging_buf); + auto buf_ptr = (float*)vx_host_ptr(staging_buf); for (uint32_t i = 0; i < num_points; ++i) { - int ref = 0; + float ref = 0.0f; for (uint32_t j = 0; j < NUM_LOADS; ++j) { uint32_t addr = i + j; uint32_t index = addr_table.at(addr); - int value = test_data.at(index); - //printf("*** [%d] addr=%d, index=%d, value=%d\n", i, addr, index, value); - ref += value; + float value = test_data.at(index); + //printf("*** [%d] addr=%d, index=%d, value=%f\n", i, addr, index, value); + ref *= value; } - int cur = buf_ptr[i]; - if (cur != ref) { + float cur = buf_ptr[i]; + if (!almost_equal(cur, ref)) { std::cout << "error at result #" << std::dec << i << ": actual " << cur << ", expected " << ref << std::endl; ++errors; diff --git a/hw/rtl/afu/VX_avs_wrapper.v b/hw/rtl/afu/VX_avs_wrapper.v index 74f5b48d..16947179 100644 --- a/hw/rtl/afu/VX_avs_wrapper.v +++ b/hw/rtl/afu/VX_avs_wrapper.v @@ -52,7 +52,7 @@ module VX_avs_wrapper #( wire [NUM_BANKS-1:0][RD_QUEUE_ADDR_WIDTH-1:0] req_queue_size; wire [NUM_BANKS-1:0][REQ_TAG_WIDTH-1:0] avs_reqq_data_out; - wire [BANK_ADDRW-1:0] req_bank_sel = (NUM_BANKS >= 2) ? mem_req_addr [BANK_ADDRW-1:0] : 1'b0; + wire [BANK_ADDRW-1:0] req_bank_sel = (NUM_BANKS >= 2) ? mem_req_addr [BANK_ADDRW-1:0] : '0; wire avs_reqq_push = mem_req_valid && !mem_req_rw && mem_req_ready;