.file "21_union_find.sy" .option pic .attribute arch, "rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0" .attribute unaligned_access, 0 .attribute stack_align, 16 .text .align 1 .globl find .type find, @function find: addi sp,sp,-48 sd s0,32(sp) sd s1,24(sp) lla s0,parent slli s1,a0,2 add a5,s0,s1 lw a5,0(a5) sd ra,40(sp) sd s2,16(sp) sd s3,8(sp) sd s4,0(sp) bne a5,a0,.L8 ld ra,40(sp) ld s0,32(sp) ld s1,24(sp) ld s2,16(sp) ld s3,8(sp) ld s4,0(sp) addi sp,sp,48 jr ra .L8: slli s2,a5,2 add a4,s0,s2 lw a0,0(a4) beq a5,a0,.L3 slli s3,a0,2 add a5,s0,s3 lw a5,0(a5) bne a0,a5,.L9 .L4: add s2,s0,s2 sw a5,0(s2) mv a0,a5 .L3: add s0,s0,s1 ld ra,40(sp) sw a0,0(s0) ld s0,32(sp) ld s1,24(sp) ld s2,16(sp) ld s3,8(sp) ld s4,0(sp) addi sp,sp,48 jr ra .L9: slli s4,a5,2 add s4,s0,s4 lw a0,0(s4) beq a5,a0,.L5 call find sw a0,0(s4) .L5: add s3,s0,s3 sw a0,0(s3) mv a5,a0 j .L4 .size find, .-find .align 1 .globl merge .type merge, @function merge: addi sp,sp,-112 sd s0,96(sp) sd s2,80(sp) lla s0,parent slli s2,a0,2 add a5,s0,s2 sd s1,88(sp) lw s1,0(a5) sd ra,104(sp) sd s3,72(sp) sd s4,64(sp) sd s5,56(sp) sd s6,48(sp) sd s7,40(sp) sd s8,32(sp) sd s9,24(sp) bne a0,s1,.L29 .L11: slli s2,a1,2 add a5,s0,s2 lw a5,0(a5) bne a1,a5,.L30 .L19: beq a5,s1,.L10 slli a5,a5,2 add s0,s0,a5 sw s1,0(s0) .L10: ld ra,104(sp) ld s0,96(sp) ld s1,88(sp) ld s2,80(sp) ld s3,72(sp) ld s4,64(sp) ld s5,56(sp) ld s6,48(sp) ld s7,40(sp) ld s8,32(sp) ld s9,24(sp) addi sp,sp,112 jr ra .L30: slli s3,a5,2 add a4,s0,s3 lw a4,0(a4) beq a5,a4,.L20 slli s4,a4,2 add a5,s0,s4 lw a5,0(a5) bne a4,a5,.L31 .L21: add s3,s0,s3 sw a5,0(s3) mv a4,a5 .L20: add s2,s0,s2 sw a4,0(s2) mv a5,a4 j .L19 .L29: slli s3,s1,2 add a5,s0,s3 lw a5,0(a5) beq s1,a5,.L12 slli s1,a5,2 add a4,s0,s1 lw a4,0(a4) bne a5,a4,.L32 .L13: add s3,s0,s3 sw a4,0(s3) mv a5,a4 .L12: add s2,s0,s2 sw a5,0(s2) mv s1,a5 j .L11 .L32: slli s4,a4,2 add a5,s0,s4 lw a5,0(a5) beq a4,a5,.L14 slli s5,a5,2 add a4,s0,s5 lw a4,0(a4) bne a5,a4,.L33 .L15: add s4,s0,s4 sw a4,0(s4) mv a5,a4 .L14: add s1,s0,s1 sw a5,0(s1) mv a4,a5 j .L13 .L31: slli s5,a5,2 add a4,s0,s5 lw a4,0(a4) beq a5,a4,.L22 slli s6,a4,2 add a5,s0,s6 lw a5,0(a5) bne a4,a5,.L34 .L23: add s5,s0,s5 sw a5,0(s5) mv a4,a5 .L22: add s4,s0,s4 sw a4,0(s4) mv a5,a4 j .L21 .L34: slli s7,a5,2 add a4,s0,s7 lw a4,0(a4) beq a5,a4,.L24 slli s8,a4,2 add a5,s0,s8 lw a5,0(a5) beq a4,a5,.L25 slli s9,a5,2 add s9,s0,s9 lw a0,0(s9) beq a5,a0,.L26 call find sw a0,0(s9) .L26: add s8,s0,s8 sw a0,0(s8) mv a5,a0 .L25: add s7,s0,s7 sw a5,0(s7) mv a4,a5 .L24: add s6,s0,s6 sw a4,0(s6) mv a5,a4 j .L23 .L33: slli s6,a4,2 add a5,s0,s6 lw a5,0(a5) beq a4,a5,.L16 slli s7,a5,2 add a4,s0,s7 lw a4,0(a4) beq a5,a4,.L17 slli s8,a4,2 add s8,s0,s8 lw a0,0(s8) beq a4,a0,.L18 sd a1,8(sp) call find ld a1,8(sp) sw a0,0(s8) .L18: add s7,s0,s7 sw a0,0(s7) mv a4,a0 .L17: add s6,s0,s6 sw a4,0(s6) mv a5,a4 .L16: add s5,s0,s5 sw a5,0(s5) mv a4,a5 j .L15 .size merge, .-merge .section .text.startup,"ax",@progbits .align 1 .globl main .type main, @function main: addi sp,sp,-144 sd ra,136(sp) sd s4,96(sp) sd s7,72(sp) sd s0,128(sp) sd s1,120(sp) sd s2,112(sp) sd s3,104(sp) sd s5,88(sp) sd s6,80(sp) sd s8,64(sp) sd s9,56(sp) sd s10,48(sp) sd s11,40(sp) call getint@plt mv s7,a0 call getint@plt mv s4,a0 ble s7,zero,.L36 lla s0,parent mv a4,s0 li a5,0 .L37: sw a5,0(a4) addiw a5,a5,1 addi a4,a4,4 bne s7,a5,.L37 ble s4,zero,.L42 .L41: li s6,0 .L40: call getint@plt slli s5,a0,2 mv s3,a0 call getint@plt add a5,s0,s5 lw s1,0(a5) mv s2,a0 beq s3,s1,.L43 slli s3,s1,2 add a5,s0,s3 lw a5,0(a5) beq s1,a5,.L44 slli s1,a5,2 add a4,s0,s1 lw a4,0(a4) beq a5,a4,.L45 slli s8,a4,2 add a5,s0,s8 lw a5,0(a5) bne a4,a5,.L74 .L46: add s1,s0,s1 sw a4,0(s1) .L45: add s3,s0,s3 sw a4,0(s3) mv a5,a4 .L44: add s5,s0,s5 sw a5,0(s5) mv s1,a5 .L43: slli s3,s2,2 add a5,s0,s3 lw a5,0(a5) beq s2,a5,.L53 slli s2,a5,2 add a4,s0,s2 lw a4,0(a4) beq a5,a4,.L54 slli s5,a4,2 add a5,s0,s5 lw a5,0(a5) beq a4,a5,.L55 slli s8,a5,2 add a4,s0,s8 lw a4,0(a4) bne a5,a4,.L75 .L56: add s5,s0,s5 sw a5,0(s5) .L55: add s2,s0,s2 sw a5,0(s2) mv a4,a5 .L54: add s3,s0,s3 sw a4,0(s3) mv a5,a4 .L53: beq a5,s1,.L63 slli a5,a5,2 add a5,s0,a5 sw s1,0(a5) .L63: addiw s6,s6,1 bgt s4,s6,.L40 ble s7,zero,.L39 .L42: lla a4,parent li a0,0 li a5,0 .L65: lw a3,0(a4) addi a4,a4,4 bne a3,a5,.L64 addiw a0,a0,1 .L64: addiw a5,a5,1 bne s7,a5,.L65 .L66: call putint@plt ld ra,136(sp) ld s0,128(sp) ld s1,120(sp) ld s2,112(sp) ld s3,104(sp) ld s4,96(sp) ld s5,88(sp) ld s6,80(sp) ld s7,72(sp) ld s8,64(sp) ld s9,56(sp) ld s10,48(sp) ld s11,40(sp) li a0,0 addi sp,sp,144 jr ra .L75: slli s9,a4,2 add a5,s0,s9 lw a5,0(a5) beq a4,a5,.L57 slli s10,a5,2 add a4,s0,s10 lw a4,0(a4) bne a5,a4,.L76 .L58: add s9,s0,s9 sw a4,0(s9) mv a5,a4 .L57: add s8,s0,s8 sw a5,0(s8) j .L56 .L74: slli s9,a5,2 add a4,s0,s9 lw a4,0(a4) beq a5,a4,.L47 slli s10,a4,2 add a5,s0,s10 lw a5,0(a5) bne a4,a5,.L77 .L48: add s9,s0,s9 sw a5,0(s9) mv a4,a5 .L47: add s8,s0,s8 sw a4,0(s8) j .L46 .L77: slli s11,a5,2 add a4,s0,s11 lw a4,0(a4) beq a5,a4,.L49 slli a3,a4,2 add a5,s0,a3 lw a5,0(a5) bne a4,a5,.L78 .L50: add s11,s0,s11 sw a5,0(s11) mv a4,a5 .L49: add s10,s0,s10 sw a4,0(s10) mv a5,a4 j .L48 .L76: slli s11,a4,2 add a5,s0,s11 lw a5,0(a5) beq a4,a5,.L59 slli a3,a5,2 add a4,s0,a3 lw a4,0(a4) bne a5,a4,.L79 .L60: add s11,s0,s11 sw a4,0(s11) mv a5,a4 .L59: add s10,s0,s10 sw a5,0(s10) mv a4,a5 j .L58 .L39: li a0,0 j .L66 .L36: ble a0,zero,.L39 lla s0,parent j .L41 .L79: slli a2,a4,2 add a5,s0,a2 lw a5,0(a5) beq a4,a5,.L61 slli a4,a5,2 add a1,s0,a4 lw a0,0(a1) sd a4,24(sp) beq a5,a0,.L62 sd a2,16(sp) sd a3,8(sp) call find ld a4,24(sp) ld a2,16(sp) ld a3,8(sp) add a4,s0,a4 sw a0,0(a4) .L62: add a2,s0,a2 sw a0,0(a2) mv a5,a0 .L61: add a3,s0,a3 sw a5,0(a3) mv a4,a5 j .L60 .L78: slli a2,a5,2 add a4,s0,a2 lw a4,0(a4) beq a5,a4,.L51 slli a5,a4,2 add a1,s0,a5 lw a0,0(a1) sd a5,24(sp) beq a4,a0,.L52 sd a2,16(sp) sd a3,8(sp) call find ld a5,24(sp) ld a2,16(sp) ld a3,8(sp) add a5,s0,a5 sw a0,0(a5) .L52: add a2,s0,a2 sw a0,0(a2) mv a4,a0 .L51: add a3,s0,a3 sw a4,0(a3) mv a5,a4 j .L50 .size main, .-main .globl parent .globl _sysy_idx .globl _sysy_us .globl _sysy_s .globl _sysy_m .globl _sysy_h .globl _sysy_l2 .globl _sysy_l1 .globl _sysy_end .globl _sysy_start .bss .align 3 .type parent, @object .size parent, 4020 parent: .zero 4020 .type _sysy_idx, @object .size _sysy_idx, 4 _sysy_idx: .zero 4 .type _sysy_us, @object .size _sysy_us, 4096 _sysy_us: .zero 4096 .type _sysy_s, @object .size _sysy_s, 4096 _sysy_s: .zero 4096 .type _sysy_m, @object .size _sysy_m, 4096 _sysy_m: .zero 4096 .type _sysy_h, @object .size _sysy_h, 4096 _sysy_h: .zero 4096 .type _sysy_l2, @object .size _sysy_l2, 4096 _sysy_l2: .zero 4096 .type _sysy_l1, @object .size _sysy_l1, 4096 _sysy_l1: .zero 4096 .type _sysy_end, @object .size _sysy_end, 16 _sysy_end: .zero 16 .type _sysy_start, @object .size _sysy_start, 16 _sysy_start: .zero 16 .ident "GCC: (Debian 12.2.0-13) 12.2.0" .section .note.GNU-stack,"",@progbits