objdump.out

text/plain

Filename: objdump.out
Type: text/plain
Part: 1
Message: Re: [PATCH] Add loongarch native checksum implementation.
  62a548:	47fff9bf 	bnez        	$t1, -8(0x7ffff8)	# 62a540 <strlcpy+0x2c>
			;
	}

	return (s - src - 1);		/* count does not include NUL */
  62a54c:	00119584 	sub.d       	$a0, $t0, $a1
}
  62a550:	02fffc84 	addi.d      	$a0, $a0, -1(0xfff)
  62a554:	4c000020 	jirl        	$zero, $ra, 0

000000000062a558 <pg_comp_crc32c_loongarch>:

	/*
	 * Aligned memory access is significantly faster.
	 * Process leading bytes so that the loop below starts with a pointer aligned to eight bytes.
	 */
	if (!PointerIsAligned(p, uint16) &&
  62a558:	034004ae 	andi        	$t2, $a1, 0x1
{
  62a55c:	0015008d 	move        	$t1, $a0
	const unsigned char *pend = p + len;
  62a560:	001098a6 	add.d       	$a2, $a1, $a2
	if (!PointerIsAligned(p, uint16) &&
  62a564:	001500ac 	move        	$t0, $a1
  62a568:	40000dc0 	beqz        	$t2, 12(0xc)	# 62a574 <pg_comp_crc32c_loongarch+0x1c>
		p + 1 <= pend)
  62a56c:	02c004ae 	addi.d      	$t2, $a1, 1(0x1)
	if (!PointerIsAligned(p, uint16) &&
  62a570:	6c00ecce 	bgeu        	$a2, $t2, 236(0xec)	# 62a65c <pg_comp_crc32c_loongarch+0x104>
	{
		crc = __builtin_loongarch_crcc_w_b_w(*p, crc);
		p += 1;
	}
	if (!PointerIsAligned(p, uint32) &&
  62a574:	03400d8e 	andi        	$t2, $t0, 0x3
  62a578:	40000dc0 	beqz        	$t2, 12(0xc)	# 62a584 <pg_comp_crc32c_loongarch+0x2c>
		p + 2 <= pend)
  62a57c:	02c008ae 	addi.d      	$t2, $a1, 2(0x2)
	if (!PointerIsAligned(p, uint32) &&
  62a580:	6c00c4ce 	bgeu        	$a2, $t2, 196(0xc4)	# 62a644 <pg_comp_crc32c_loongarch+0xec>
	{
		crc = __builtin_loongarch_crcc_w_h_w(*(uint16 *) p, crc);
		p += 2;
	}
	if (!PointerIsAligned(p, uint64) &&
  62a584:	03401d8c 	andi        	$t0, $t0, 0x7
  62a588:	40001d80 	beqz        	$t0, 28(0x1c)	# 62a5a4 <pg_comp_crc32c_loongarch+0x4c>
		p + 4 <= pend)
  62a58c:	02c010ac 	addi.d      	$t0, $a1, 4(0x4)
	if (!PointerIsAligned(p, uint64) &&
  62a590:	6800a4cc 	bltu        	$a2, $t0, 164(0xa4)	# 62a634 <pg_comp_crc32c_loongarch+0xdc>
	{
		crc = __builtin_loongarch_crcc_w_w_w(*(uint32 *) p, crc);
  62a594:	240000ae 	ldptr.w     	$t2, $a1, 0
		p += 4;
  62a598:	00150185 	move        	$a1, $t0
		crc = __builtin_loongarch_crcc_w_w_w(*(uint32 *) p, crc);
  62a59c:	002735cc 	crcc.w.w.w  	$t0, $t2, $t1
  62a5a0:	0040818d 	slli.w      	$t1, $t0, 0x0
	}

	/* Process eight bytes at a time, as far as we can. */
	while (p + 8 <= pend)
  62a5a4:	02c020ae 	addi.d      	$t2, $a1, 8(0x8)
  62a5a8:	6800ccce 	bltu        	$a2, $t2, 204(0xcc)	# 62a674 <pg_comp_crc32c_loongarch+0x11c>
		p += 4;
  62a5ac:	001501cc 	move        	$t0, $t2
	{
		crc = __builtin_loongarch_crcc_w_d_w(*(uint64 *) p, crc);
  62a5b0:	260000a4 	ldptr.d     	$a0, $a1, 0
  62a5b4:	00150185 	move        	$a1, $t0
	while (p + 8 <= pend)
  62a5b8:	02c0218c 	addi.d      	$t0, $t0, 8(0x8)
		crc = __builtin_loongarch_crcc_w_d_w(*(uint64 *) p, crc);
  62a5bc:	0027b484 	crcc.w.d.w  	$a0, $a0, $t1
  62a5c0:	0040808d 	slli.w      	$t1, $a0, 0x0
	while (p + 8 <= pend)
  62a5c4:	6fffeccc 	bgeu        	$a2, $t0, -20(0x3ffec)	# 62a5b0 <pg_comp_crc32c_loongarch+0x58>
  62a5c8:	0011b8c5 	sub.d       	$a1, $a2, $t2
  62a5cc:	00450ca5 	srli.d      	$a1, $a1, 0x3
  62a5d0:	02c004cc 	addi.d      	$t0, $a2, 1(0x1)
  62a5d4:	02c005cf 	addi.d      	$t3, $t2, 1(0x1)
  62a5d8:	00410ca5 	slli.d      	$a1, $a1, 0x3
  62a5dc:	0012bd8c 	sltu        	$t0, $t0, $t3
  62a5e0:	0013b0a5 	masknez     	$a1, $a1, $t0
  62a5e4:	001095c5 	add.d       	$a1, $t2, $a1
  62a5e8:	001501a4 	move        	$a0, $t1
		p += 8;
	}

	/* Process remaining 0-7 bytes. */
	if (p + 4 <= pend)
  62a5ec:	02c010ac 	addi.d      	$t0, $a1, 4(0x4)
  62a5f0:	680014cc 	bltu        	$a2, $t0, 20(0x14)	# 62a604 <pg_comp_crc32c_loongarch+0xac>
	{
		crc = __builtin_loongarch_crcc_w_w_w(*(uint32 *) p, crc);
  62a5f4:	240000a4 	ldptr.w     	$a0, $a1, 0
		p += 4;
  62a5f8:	00150185 	move        	$a1, $t0
		crc = __builtin_loongarch_crcc_w_w_w(*(uint32 *) p, crc);
  62a5fc:	00273484 	crcc.w.w.w  	$a0, $a0, $t1
  62a600:	00408084 	slli.w      	$a0, $a0, 0x0
	}
	if (p + 2 <= pend)
  62a604:	02c008ac 	addi.d      	$t0, $a1, 2(0x2)
  62a608:	680014cc 	bltu        	$a2, $t0, 20(0x14)	# 62a61c <pg_comp_crc32c_loongarch+0xc4>
	{
		crc = __builtin_loongarch_crcc_w_h_w(*(uint16 *) p, crc);
  62a60c:	2a4000ad 	ld.hu       	$t1, $a1, 0
		p += 2;
  62a610:	00150185 	move        	$a1, $t0
		crc = __builtin_loongarch_crcc_w_h_w(*(uint16 *) p, crc);
  62a614:	002691a4 	crcc.w.h.w  	$a0, $t1, $a0
  62a618:	00408084 	slli.w      	$a0, $a0, 0x0
	}
	if (p < pend)
  62a61c:	6c0014a6 	bgeu        	$a1, $a2, 20(0x14)	# 62a630 <pg_comp_crc32c_loongarch+0xd8>
	{
		crc = __builtin_loongarch_crcc_w_b_w(*p, crc);
  62a620:	2a0000ac 	ld.bu       	$t0, $a1, 0
  62a624:	00261184 	crcc.w.b.w  	$a0, $t0, $a0
  62a628:	00408084 	slli.w      	$a0, $a0, 0x0
	}

	return crc;
  62a62c:	4c000020 	jirl        	$zero, $ra, 0
}
  62a630:	4c000020 	jirl        	$zero, $ra, 0
	while (p + 8 <= pend)
  62a634:	02c020ae 	addi.d      	$t2, $a1, 8(0x8)
  62a638:	001501a4 	move        	$a0, $t1
  62a63c:	6fff70ce 	bgeu        	$a2, $t2, -144(0x3ff70)	# 62a5ac <pg_comp_crc32c_loongarch+0x54>
  62a640:	53ffc7ff 	b           	-60(0xfffffc4)	# 62a604 <pg_comp_crc32c_loongarch+0xac>
		crc = __builtin_loongarch_crcc_w_h_w(*(uint16 *) p, crc);
  62a644:	2a4000af 	ld.hu       	$t3, $a1, 0
		p += 2;
  62a648:	001501cc 	move        	$t0, $t2
	if (!PointerIsAligned(p, uint64) &&
  62a64c:	001501c5 	move        	$a1, $t2
		crc = __builtin_loongarch_crcc_w_h_w(*(uint16 *) p, crc);
  62a650:	0026b5ed 	crcc.w.h.w  	$t1, $t3, $t1
  62a654:	004081ad 	slli.w      	$t1, $t1, 0x0
		p += 2;
  62a658:	53ff2fff 	b           	-212(0xfffff2c)	# 62a584 <pg_comp_crc32c_loongarch+0x2c>
		crc = __builtin_loongarch_crcc_w_b_w(*p, crc);
  62a65c:	2a0000af 	ld.bu       	$t3, $a1, 0
		p += 1;
  62a660:	001501cc 	move        	$t0, $t2
	if (!PointerIsAligned(p, uint32) &&
  62a664:	001501c5 	move        	$a1, $t2
		crc = __builtin_loongarch_crcc_w_b_w(*p, crc);
  62a668:	002611ed 	crcc.w.b.w  	$t1, $t3, $a0
  62a66c:	004081ad 	slli.w      	$t1, $t1, 0x0
		p += 1;
  62a670:	53ff07ff 	b           	-252(0xfffff04)	# 62a574 <pg_comp_crc32c_loongarch+0x1c>
	while (p + 8 <= pend)
  62a674:	001501a4 	move        	$a0, $t1
  62a678:	53ff77ff 	b           	-140(0xfffff74)	# 62a5ec <pg_comp_crc32c_loongarch+0x94>

000000000062a67c <bsearch_arg>:
void *
bsearch_arg(const void *key, const void *base0,