15adb5c05SPengcheng Wang; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 25adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -O2 \ 35adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-ALIGNED,CHECK-ALIGNED-RV32 45adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -O2 \ 55adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-ALIGNED,CHECK-ALIGNED-RV64 65adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+zbb -O2 \ 75adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-ALIGNED,CHECK-ALIGNED-RV32-ZBB 85adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+zbb -O2 \ 95adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-ALIGNED,CHECK-ALIGNED-RV64-ZBB 105adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+zbkb -O2 \ 115adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-ALIGNED,CHECK-ALIGNED-RV32-ZBKB 125adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+zbkb -O2 \ 135adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-ALIGNED,CHECK-ALIGNED-RV64-ZBKB 145adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v -O2 \ 155adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-ALIGNED,CHECK-ALIGNED-RV32-V 165adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v -O2 \ 175adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-ALIGNED,CHECK-ALIGNED-RV64-V 185adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+unaligned-scalar-mem -O2 \ 195adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-UNALIGNED,CHECK-UNALIGNED-RV32 205adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+unaligned-scalar-mem -O2 \ 215adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-UNALIGNED,CHECK-UNALIGNED-RV64 225adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+zbb,+unaligned-scalar-mem -O2 \ 235adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-UNALIGNED,CHECK-UNALIGNED-RV32-ZBB 245adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+zbb,+unaligned-scalar-mem -O2 \ 255adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-UNALIGNED,CHECK-UNALIGNED-RV64-ZBB 265adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+zbkb,+unaligned-scalar-mem -O2 \ 275adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-UNALIGNED,CHECK-UNALIGNED-RV32-ZBKB 285adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+zbkb,+unaligned-scalar-mem -O2 \ 295adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-UNALIGNED,CHECK-UNALIGNED-RV64-ZBKB 305adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+unaligned-scalar-mem,+unaligned-vector-mem -O2 \ 315adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-UNALIGNED,CHECK-UNALIGNED-RV32-V 325adb5c05SPengcheng Wang; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+unaligned-scalar-mem,+unaligned-vector-mem -O2 \ 335adb5c05SPengcheng Wang; RUN: | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-UNALIGNED,CHECK-UNALIGNED-RV64-V 345adb5c05SPengcheng Wang 355adb5c05SPengcheng Wangdeclare i32 @bcmp(ptr, ptr, iXLen) nounwind readonly 365adb5c05SPengcheng Wangdeclare i32 @memcmp(ptr, ptr, iXLen) nounwind readonly 375adb5c05SPengcheng Wang 385adb5c05SPengcheng Wangdefine i32 @bcmp_size_0(ptr %s1, ptr %s2) nounwind optsize { 395adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_0: 405adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 415adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 425adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 435adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 0 445adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 455adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 465adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 475adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 485adb5c05SPengcheng Wang; 495adb5c05SPengcheng Wang; CHECK-RV64-LABEL: bcmp_size_0: 505adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 515adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 525adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 535adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 0 545adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call bcmp 555adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 565adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 575adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 585adb5c05SPengcheng Wangentry: 595adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 0) 605adb5c05SPengcheng Wang ret i32 %bcmp 615adb5c05SPengcheng Wang} 625adb5c05SPengcheng Wang 635adb5c05SPengcheng Wangdefine i32 @bcmp_size_1(ptr %s1, ptr %s2) nounwind optsize { 647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_size_1: 657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 1 697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 735adb5c05SPengcheng Wang; 747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_1: 757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 1 797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 837a5b040eSPengcheng Wang; 847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_1: 857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 1 897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 937a5b040eSPengcheng Wang; 947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_1: 957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 1 997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 1007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 1017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 1027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 1037a5b040eSPengcheng Wang; 1047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_1: 1057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 1067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 1077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 1087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 1 1097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 1107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 1117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 1127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 1137a5b040eSPengcheng Wang; 1147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_1: 1157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 1167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 1177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 1187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 1 1197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 1207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 1217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 1227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 1237a5b040eSPengcheng Wang; 1247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_1: 1257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 1267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 1277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 1287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 1 1297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 1307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 1317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 1327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 1337a5b040eSPengcheng Wang; 1347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_1: 1357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 1367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 1377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 1387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 1 1397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 1407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 1417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 1427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 1437a5b040eSPengcheng Wang; 1447a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_size_1: 1457a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 1467a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lbu a0, 0(a0) 1477a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lbu a1, 0(a1) 1487a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 1497a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: snez a0, a0 1507a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 1515adb5c05SPengcheng Wangentry: 1525adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 1) 1535adb5c05SPengcheng Wang ret i32 %bcmp 1545adb5c05SPengcheng Wang} 1555adb5c05SPengcheng Wang 1565adb5c05SPengcheng Wangdefine i32 @bcmp_size_2(ptr %s1, ptr %s2) nounwind optsize { 1577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_size_2: 1587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 1597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 1607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 1617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 2 1627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 1637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 1647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 1657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 1665adb5c05SPengcheng Wang; 1677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_2: 1687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 1697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 1707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 1717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 2 1727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 1737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 1747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 1757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 1767a5b040eSPengcheng Wang; 1777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_2: 1787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 1797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 1807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 1817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 2 1827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 1837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 1847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 1857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 1867a5b040eSPengcheng Wang; 1877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_2: 1887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 1897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 1907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 1917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 2 1927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 1937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 1947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 1957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 1967a5b040eSPengcheng Wang; 1977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_2: 1987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 1997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 2007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 2 2027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 2037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 2057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 2067a5b040eSPengcheng Wang; 2077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_2: 2087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 2097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 2107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 2117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 2 2127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 2137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 2147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 2157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 2167a5b040eSPengcheng Wang; 2177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_2: 2187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 2197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 2207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 2 2227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 2237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 2257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 2267a5b040eSPengcheng Wang; 2277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_2: 2287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 2297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 2307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 2317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 2 2327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 2337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 2347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 2357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 2367a5b040eSPengcheng Wang; 2377a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_size_2: 2387a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 2397a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lhu a0, 0(a0) 2407a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lhu a1, 0(a1) 2417a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 2427a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: snez a0, a0 2437a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 2445adb5c05SPengcheng Wangentry: 2455adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 2) 2465adb5c05SPengcheng Wang ret i32 %bcmp 2475adb5c05SPengcheng Wang} 2485adb5c05SPengcheng Wang 2495adb5c05SPengcheng Wangdefine i32 @bcmp_size_3(ptr %s1, ptr %s2) nounwind optsize { 2507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_size_3: 2517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 2527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 2537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 3 2557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 2567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 2587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 2595adb5c05SPengcheng Wang; 2607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_3: 2617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 2627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 2637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 2647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 3 2657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 2667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 2677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 2687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 2697a5b040eSPengcheng Wang; 2707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_3: 2717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 2727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 2737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 3 2757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 2767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 2787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 2797a5b040eSPengcheng Wang; 2807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_3: 2817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 2827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 2837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 2847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 3 2857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 2867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 2877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 2887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 2897a5b040eSPengcheng Wang; 2907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_3: 2917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 2927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 2937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 3 2957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 2967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 2987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 2997a5b040eSPengcheng Wang; 3007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_3: 3017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 3027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 3037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 3047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 3 3057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 3067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 3077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 3087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 3097a5b040eSPengcheng Wang; 3107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_3: 3117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 3127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 3137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 3147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 3 3157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 3167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 3177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 3187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 3197a5b040eSPengcheng Wang; 3207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_3: 3217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 3227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 3237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 3247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 3 3257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 3267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 3277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 3287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 3297a5b040eSPengcheng Wang; 3307a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_size_3: 3317a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 3327a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lhu a2, 0(a0) 3337a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lbu a0, 2(a0) 3347a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lhu a3, 0(a1) 3357a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lbu a1, 2(a1) 3367a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a2, a2, a3 3377a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 3387a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: or a0, a2, a0 3397a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: snez a0, a0 3407a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 3415adb5c05SPengcheng Wangentry: 3425adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 3) 3435adb5c05SPengcheng Wang ret i32 %bcmp 3445adb5c05SPengcheng Wang} 3455adb5c05SPengcheng Wang 3465adb5c05SPengcheng Wangdefine i32 @bcmp_size_4(ptr %s1, ptr %s2) nounwind optsize { 3477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_size_4: 3487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 3497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 3507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 3517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 3527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 3537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 3547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 3557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 3565adb5c05SPengcheng Wang; 3577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_4: 3587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 3597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 3607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 3617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 3627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 3637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 3647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 3657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 3667a5b040eSPengcheng Wang; 3677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_4: 3687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 3697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 3707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 3717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 3727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 3737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 3747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 3757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 3767a5b040eSPengcheng Wang; 3777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_4: 3787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 3797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 3807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 3817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 3827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 3837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 3847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 3857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 3867a5b040eSPengcheng Wang; 3877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_4: 3887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 3897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 3907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 3917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 3927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 3937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 3947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 3957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 3967a5b040eSPengcheng Wang; 3977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_4: 3987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 3997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 4007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 4017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 4027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 4037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 4047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 4057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 4067a5b040eSPengcheng Wang; 4077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_4: 4087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 4097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 4107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 4117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 4127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 4137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 4147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 4157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 4167a5b040eSPengcheng Wang; 4177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_4: 4187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 4197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 4207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 4217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 4227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 4237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 4247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 4257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 4267a5b040eSPengcheng Wang; 4277a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_size_4: 4287a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 4297a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a0, 0(a0) 4307a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a1, 0(a1) 4317a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 4327a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: snez a0, a0 4337a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 4345adb5c05SPengcheng Wangentry: 4355adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4) 4365adb5c05SPengcheng Wang ret i32 %bcmp 4375adb5c05SPengcheng Wang} 4385adb5c05SPengcheng Wang 4395adb5c05SPengcheng Wangdefine i32 @bcmp_size_5(ptr %s1, ptr %s2) nounwind optsize { 4407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_size_5: 4417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 4427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 4437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 4447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 5 4457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 4467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 4477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 4487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 4495adb5c05SPengcheng Wang; 4507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_5: 4517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 4527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 4537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 4547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 5 4557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 4567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 4577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 4587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 4597a5b040eSPengcheng Wang; 4607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_5: 4617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 4627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 4637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 4647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 5 4657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 4667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 4677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 4687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 4697a5b040eSPengcheng Wang; 4707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_5: 4717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 4727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 4737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 4747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 5 4757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 4767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 4777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 4787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 4797a5b040eSPengcheng Wang; 4807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_5: 4817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 4827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 4837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 4847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 5 4857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 4867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 4877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 4887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 4897a5b040eSPengcheng Wang; 4907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_5: 4917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 4927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 4937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 4947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 5 4957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 4967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 4977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 4987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 4997a5b040eSPengcheng Wang; 5007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_5: 5017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 5027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 5037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 5047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 5 5057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 5067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 5077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 5087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 5097a5b040eSPengcheng Wang; 5107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_5: 5117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 5127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 5137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 5147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 5 5157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 5167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 5177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 5187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 5197a5b040eSPengcheng Wang; 5207a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_size_5: 5217a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 5227a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a2, 0(a0) 5237a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lbu a0, 4(a0) 5247a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a3, 0(a1) 5257a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lbu a1, 4(a1) 5267a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a2, a2, a3 5277a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 5287a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: or a0, a2, a0 5297a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: snez a0, a0 5307a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 5315adb5c05SPengcheng Wangentry: 5325adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 5) 5335adb5c05SPengcheng Wang ret i32 %bcmp 5345adb5c05SPengcheng Wang} 5355adb5c05SPengcheng Wang 5365adb5c05SPengcheng Wangdefine i32 @bcmp_size_6(ptr %s1, ptr %s2) nounwind optsize { 5377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_size_6: 5387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 5397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 5407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 5417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 6 5427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 5437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 5447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 5457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 5465adb5c05SPengcheng Wang; 5477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_6: 5487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 5497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 5507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 5517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 6 5527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 5537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 5547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 5557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 5567a5b040eSPengcheng Wang; 5577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_6: 5587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 5597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 5607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 5617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 6 5627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 5637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 5647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 5657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 5667a5b040eSPengcheng Wang; 5677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_6: 5687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 5697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 5707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 5717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 6 5727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 5737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 5747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 5757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 5767a5b040eSPengcheng Wang; 5777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_6: 5787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 5797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 5807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 5817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 6 5827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 5837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 5847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 5857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 5867a5b040eSPengcheng Wang; 5877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_6: 5887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 5897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 5907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 5917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 6 5927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 5937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 5947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 5957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 5967a5b040eSPengcheng Wang; 5977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_6: 5987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 5997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 6007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 6 6027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 6037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 6057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 6067a5b040eSPengcheng Wang; 6077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_6: 6087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 6097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 6107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 6 6127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 6137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 6157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 6167a5b040eSPengcheng Wang; 6177a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_size_6: 6187a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 6197a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a2, 0(a0) 6207a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lhu a0, 4(a0) 6217a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a3, 0(a1) 6227a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lhu a1, 4(a1) 6237a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a2, a2, a3 6247a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 6257a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: or a0, a2, a0 6267a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: snez a0, a0 6277a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 6285adb5c05SPengcheng Wangentry: 6295adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 6) 6305adb5c05SPengcheng Wang ret i32 %bcmp 6315adb5c05SPengcheng Wang} 6325adb5c05SPengcheng Wang 6335adb5c05SPengcheng Wangdefine i32 @bcmp_size_7(ptr %s1, ptr %s2) nounwind optsize { 6347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_size_7: 6357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 6367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 6377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 7 6397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 6407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 6427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 6435adb5c05SPengcheng Wang; 6447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_7: 6457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 6467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 6477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 7 6497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 6507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 6527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 6537a5b040eSPengcheng Wang; 6547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_7: 6557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 6567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 6577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 7 6597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 6607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 6627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 6637a5b040eSPengcheng Wang; 6647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_7: 6657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 6667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 6677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 7 6697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 6707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 6727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 6737a5b040eSPengcheng Wang; 6747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_7: 6757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 6767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 6777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 7 6797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 6807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 6827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 6837a5b040eSPengcheng Wang; 6847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_7: 6857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 6867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 6877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 7 6897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 6907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 6927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 6937a5b040eSPengcheng Wang; 6947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_7: 6957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 6967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 6977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 7 6997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 7007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 7017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 7027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 7037a5b040eSPengcheng Wang; 7047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_7: 7057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 7067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 7077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 7087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 7 7097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 7107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 7117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 7127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 7137a5b040eSPengcheng Wang; 7147a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_size_7: 7157a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 7167a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a2, 0(a0) 7177a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a0, 3(a0) 7187a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a3, 0(a1) 7197a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a1, 3(a1) 7207a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a2, a2, a3 7217a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 7227a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: or a0, a2, a0 7237a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: snez a0, a0 7247a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 7255adb5c05SPengcheng Wangentry: 7265adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 7) 7275adb5c05SPengcheng Wang ret i32 %bcmp 7285adb5c05SPengcheng Wang} 7295adb5c05SPengcheng Wang 7305adb5c05SPengcheng Wangdefine i32 @bcmp_size_8(ptr %s1, ptr %s2) nounwind optsize { 7317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_size_8: 7327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 7337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 7347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 7357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 8 7367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 7377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 7387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 7397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 7405adb5c05SPengcheng Wang; 7417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_8: 7427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 7437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 7447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 7457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 8 7467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 7477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 7487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 7497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 7507a5b040eSPengcheng Wang; 7517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_8: 7527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 7537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 7547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 7557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 8 7567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 7577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 7587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 7597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 7607a5b040eSPengcheng Wang; 7617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_8: 7627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 7637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 7647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 7657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 8 7667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 7677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 7687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 7697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 7707a5b040eSPengcheng Wang; 7717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_8: 7727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 7737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 7747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 7757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 8 7767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 7777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 7787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 7797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 7807a5b040eSPengcheng Wang; 7817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_8: 7827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 7837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 7847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 7857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 8 7867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 7877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 7887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 7897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 7907a5b040eSPengcheng Wang; 7917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_8: 7927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 7937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 7947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 7957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 8 7967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 7977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 7987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 7997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 8007a5b040eSPengcheng Wang; 8017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_8: 8027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 8037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 8047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 8057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 8 8067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 8077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 8087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 8097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 8107a5b040eSPengcheng Wang; 8117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_8: 8127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 8137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a2, 0(a0) 8147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a0, 4(a0) 8157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a3, 0(a1) 8167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a1, 4(a1) 8177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a2, a2, a3 8187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a0, a0, a1 8197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a0, a2, a0 8207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: snez a0, a0 8217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 8227a5b040eSPengcheng Wang; 8237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_8: 8247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 8257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a0, 0(a0) 8267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a1, 0(a1) 8277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a0, a0, a1 8287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: snez a0, a0 8297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 8307a5b040eSPengcheng Wang; 8317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_8: 8327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 8337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 8347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 4(a0) 8357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 8367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 4(a1) 8377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a2, a2, a3 8387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a0, a0, a1 8397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, a2, a0 8407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: snez a0, a0 8417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 8427a5b040eSPengcheng Wang; 8437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_8: 8447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 8457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 0(a0) 8467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 0(a1) 8477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a0, a0, a1 8487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: snez a0, a0 8497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 8507a5b040eSPengcheng Wang; 8517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_8: 8527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 8537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 8547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 4(a0) 8557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 8567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 4(a1) 8577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a2, a2, a3 8587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a0, a0, a1 8597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a0, a2, a0 8607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: snez a0, a0 8617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 8627a5b040eSPengcheng Wang; 8637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_8: 8647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 8657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 0(a0) 8667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 0(a1) 8677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a0, a0, a1 8687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: snez a0, a0 8697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 8707a5b040eSPengcheng Wang; 8717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_8: 8727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 8737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a2, 0(a0) 8747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a0, 4(a0) 8757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a3, 0(a1) 8767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a1, 4(a1) 8777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a2, a2, a3 8787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a0, a0, a1 8797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a0, a2, a0 8807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: snez a0, a0 8817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 8827a5b040eSPengcheng Wang; 8837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_8: 8847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 8857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a0, 0(a0) 8867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a1, 0(a1) 8877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a0, a0, a1 8887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: snez a0, a0 8897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 8905adb5c05SPengcheng Wangentry: 8915adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 8) 8925adb5c05SPengcheng Wang ret i32 %bcmp 8935adb5c05SPengcheng Wang} 8945adb5c05SPengcheng Wang 8955adb5c05SPengcheng Wangdefine i32 @bcmp_size_15(ptr %s1, ptr %s2) nounwind optsize { 8967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_size_15: 8977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 8987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 8997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 9007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 15 9017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 9027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 9037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 9047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 9055adb5c05SPengcheng Wang; 9067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_15: 9077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 9087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 9097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 9107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 15 9117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 9127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 9137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 9147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 9157a5b040eSPengcheng Wang; 9167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_15: 9177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 9187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 9197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 9207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 15 9217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 9227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 9237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 9247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 9257a5b040eSPengcheng Wang; 9267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_15: 9277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 9287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 9297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 9307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 15 9317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 9327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 9337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 9347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 9357a5b040eSPengcheng Wang; 9367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_15: 9377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 9387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 9397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 9407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 15 9417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 9427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 9437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 9447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 9457a5b040eSPengcheng Wang; 9467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_15: 9477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 9487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 9497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 9507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 15 9517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 9527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 9537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 9547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 9557a5b040eSPengcheng Wang; 9567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_15: 9577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 9587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 9597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 9607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 15 9617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 9627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 9637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 9647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 9657a5b040eSPengcheng Wang; 9667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_15: 9677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 9687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 9697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 9707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 15 9717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 9727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 9737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 9747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 9757a5b040eSPengcheng Wang; 9767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_15: 9777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 9787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a2, 0(a0) 9797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a3, 4(a0) 9807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a4, 8(a0) 9817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a0, 11(a0) 9827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a5, 0(a1) 9837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a6, 4(a1) 9847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a7, 8(a1) 9857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a1, 11(a1) 9867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a2, a2, a5 9877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a3, a3, a6 9887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a4, a4, a7 9897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a0, a0, a1 9907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a2, a2, a3 9917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a0, a4, a0 9927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a0, a2, a0 9937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: snez a0, a0 9947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 9957a5b040eSPengcheng Wang; 9967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_15: 9977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 9987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a2, 0(a0) 9997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a0, 7(a0) 10007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a3, 0(a1) 10017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a1, 7(a1) 10027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a2, a2, a3 10037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a0, a0, a1 10047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a2, a0 10057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: snez a0, a0 10067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 10077a5b040eSPengcheng Wang; 10087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_15: 10097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 10107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 10117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 4(a0) 10127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a4, 8(a0) 10137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 11(a0) 10147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a5, 0(a1) 10157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a6, 4(a1) 10167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a7, 8(a1) 10177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 11(a1) 10187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a2, a2, a5 10197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a3, a3, a6 10207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a4, a4, a7 10217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a0, a0, a1 10227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a2, a2, a3 10237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, a4, a0 10247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, a2, a0 10257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: snez a0, a0 10267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 10277a5b040eSPengcheng Wang; 10287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_15: 10297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 10307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 10317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 7(a0) 10327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 0(a1) 10337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 7(a1) 10347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a2, a2, a3 10357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a0, a0, a1 10367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a2, a0 10377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: snez a0, a0 10387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 10397a5b040eSPengcheng Wang; 10407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_15: 10417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 10427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 10437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 4(a0) 10447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a4, 8(a0) 10457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 11(a0) 10467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a5, 0(a1) 10477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a6, 4(a1) 10487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a7, 8(a1) 10497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 11(a1) 10507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a2, a2, a5 10517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a3, a3, a6 10527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a4, a4, a7 10537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a0, a0, a1 10547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a2, a2, a3 10557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a0, a4, a0 10567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a0, a2, a0 10577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: snez a0, a0 10587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 10597a5b040eSPengcheng Wang; 10607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_15: 10617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 10627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 10637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 7(a0) 10647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 0(a1) 10657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 7(a1) 10667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a2, a2, a3 10677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a0, a0, a1 10687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a2, a0 10697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: snez a0, a0 10707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 10717a5b040eSPengcheng Wang; 10727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_15: 10737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 10747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a2, 0(a0) 10757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a3, 4(a0) 10767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a4, 8(a0) 10777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a0, 11(a0) 10787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a5, 0(a1) 10797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a6, 4(a1) 10807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a7, 8(a1) 10817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a1, 11(a1) 10827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a2, a2, a5 10837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a3, a3, a6 10847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a4, a4, a7 10857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a0, a0, a1 10867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a2, a2, a3 10877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a0, a4, a0 10887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a0, a2, a0 10897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: snez a0, a0 10907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 10917a5b040eSPengcheng Wang; 10927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_15: 10937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 10947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a2, 0(a0) 10957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a0, 7(a0) 10967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a3, 0(a1) 10977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a1, 7(a1) 10987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a2, a2, a3 10997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a0, a0, a1 11007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a2, a0 11017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: snez a0, a0 11027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 11035adb5c05SPengcheng Wangentry: 11045adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 15) 11055adb5c05SPengcheng Wang ret i32 %bcmp 11065adb5c05SPengcheng Wang} 11075adb5c05SPengcheng Wang 11085adb5c05SPengcheng Wangdefine i32 @bcmp_size_16(ptr %s1, ptr %s2) nounwind optsize { 11097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_size_16: 11107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 11117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 11127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 11137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 16 11147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 11157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 11167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 11177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 11185adb5c05SPengcheng Wang; 11197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_16: 11207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 11217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 11227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 11237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 16 11247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 11257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 11267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 11277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 11287a5b040eSPengcheng Wang; 11297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_16: 11307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 11317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 11327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 11337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 16 11347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 11357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 11367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 11377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 11387a5b040eSPengcheng Wang; 11397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_16: 11407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 11417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 11427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 11437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 16 11447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 11457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 11467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 11477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 11487a5b040eSPengcheng Wang; 11497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_16: 11507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 11517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 11527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 11537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 16 11547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 11557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 11567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 11577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 11587a5b040eSPengcheng Wang; 11597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_16: 11607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 11617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 11627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 11637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 16 11647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 11657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 11667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 11677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 11687a5b040eSPengcheng Wang; 11697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_16: 11707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 11717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 11727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 11737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 16 11747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 11757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 11767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 11777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 11787a5b040eSPengcheng Wang; 11797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_16: 11807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 11817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 11827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 11837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 16 11847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 11857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 11867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 11877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 11887a5b040eSPengcheng Wang; 11897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_16: 11907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 11917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a2, 0(a0) 11927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a3, 4(a0) 11937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a4, 8(a0) 11947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a0, 12(a0) 11957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a5, 0(a1) 11967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a6, 4(a1) 11977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a7, 8(a1) 11987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a1, 12(a1) 11997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a2, a2, a5 12007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a3, a3, a6 12017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a4, a4, a7 12027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a0, a0, a1 12037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a2, a2, a3 12047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a0, a4, a0 12057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a0, a2, a0 12067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: snez a0, a0 12077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 12087a5b040eSPengcheng Wang; 12097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_16: 12107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 12117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a2, 0(a0) 12127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a0, 8(a0) 12137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a3, 0(a1) 12147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a1, 8(a1) 12157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a2, a2, a3 12167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a0, a0, a1 12177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a2, a0 12187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: snez a0, a0 12197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 12207a5b040eSPengcheng Wang; 12217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_16: 12227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 12237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 12247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 4(a0) 12257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a4, 8(a0) 12267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 12(a0) 12277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a5, 0(a1) 12287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a6, 4(a1) 12297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a7, 8(a1) 12307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 12(a1) 12317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a2, a2, a5 12327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a3, a3, a6 12337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a4, a4, a7 12347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a0, a0, a1 12357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a2, a2, a3 12367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, a4, a0 12377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, a2, a0 12387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: snez a0, a0 12397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 12407a5b040eSPengcheng Wang; 12417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_16: 12427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 12437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 12447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 8(a0) 12457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 0(a1) 12467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 8(a1) 12477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a2, a2, a3 12487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a0, a0, a1 12497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a2, a0 12507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: snez a0, a0 12517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 12527a5b040eSPengcheng Wang; 12537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_16: 12547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 12557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 12567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 4(a0) 12577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a4, 8(a0) 12587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 12(a0) 12597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a5, 0(a1) 12607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a6, 4(a1) 12617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a7, 8(a1) 12627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 12(a1) 12637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a2, a2, a5 12647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a3, a3, a6 12657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a4, a4, a7 12667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a0, a0, a1 12677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a2, a2, a3 12687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a0, a4, a0 12697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a0, a2, a0 12707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: snez a0, a0 12717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 12727a5b040eSPengcheng Wang; 12737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_16: 12747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 12757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 12767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 8(a0) 12777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 0(a1) 12787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 8(a1) 12797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a2, a2, a3 12807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a0, a0, a1 12817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a2, a0 12827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: snez a0, a0 12837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 12847a5b040eSPengcheng Wang; 12857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_16: 12867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 12877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a2, 0(a0) 12887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a3, 4(a0) 12897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a4, 8(a0) 12907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a0, 12(a0) 12917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a5, 0(a1) 12927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a6, 4(a1) 12937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a7, 8(a1) 12947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a1, 12(a1) 12957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a2, a2, a5 12967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a3, a3, a6 12977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a4, a4, a7 12987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a0, a0, a1 12997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a2, a2, a3 13007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a0, a4, a0 13017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a0, a2, a0 13027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: snez a0, a0 13037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 13047a5b040eSPengcheng Wang; 13057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_16: 13067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 13077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a2, 0(a0) 13087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a0, 8(a0) 13097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a3, 0(a1) 13107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a1, 8(a1) 13117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a2, a2, a3 13127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a0, a0, a1 13137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a2, a0 13147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: snez a0, a0 13157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 13165adb5c05SPengcheng Wangentry: 13175adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 16) 13185adb5c05SPengcheng Wang ret i32 %bcmp 13195adb5c05SPengcheng Wang} 13205adb5c05SPengcheng Wang 13215adb5c05SPengcheng Wangdefine i32 @bcmp_size_31(ptr %s1, ptr %s2) nounwind optsize { 13225adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_31: 13235adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 13245adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 13255adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 13265adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 31 13275adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 13285adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 13295adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 13305adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 13315adb5c05SPengcheng Wang; 13327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_31: 13337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 13347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 13357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 13367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 31 13377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 13387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 13397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 13407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 13417a5b040eSPengcheng Wang; 13427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_31: 13437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 13447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 13457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 13467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 31 13477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 13487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 13497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 13507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 13517a5b040eSPengcheng Wang; 13527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_31: 13537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 13547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 13557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 13567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 31 13577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 13587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 13597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 13607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 13617a5b040eSPengcheng Wang; 13627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_31: 13637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 13647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 13657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 13667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 31 13677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 13687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 13697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 13707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 13717a5b040eSPengcheng Wang; 13727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_31: 13737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 13747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a2, 0(a0) 13757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a3, 8(a0) 13767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a4, 16(a0) 13777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a0, 23(a0) 13787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a5, 0(a1) 13797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a6, 8(a1) 13807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a7, 16(a1) 13817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a1, 23(a1) 13827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a2, a2, a5 13837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a3, a3, a6 13847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a4, a4, a7 13857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a0, a0, a1 13867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a2, a2, a3 13877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a4, a0 13887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a2, a0 13897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: snez a0, a0 13907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 13917a5b040eSPengcheng Wang; 13927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_31: 13937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 13947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 13957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 8(a0) 13967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a4, 16(a0) 13977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 23(a0) 13987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a5, 0(a1) 13997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a6, 8(a1) 14007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a7, 16(a1) 14017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 23(a1) 14027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a2, a2, a5 14037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a3, a3, a6 14047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a4, a4, a7 14057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a0, a0, a1 14067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a2, a2, a3 14077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a4, a0 14087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a2, a0 14097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: snez a0, a0 14107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 14117a5b040eSPengcheng Wang; 14127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_31: 14137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 14147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 14157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 8(a0) 14167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a4, 16(a0) 14177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 23(a0) 14187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a5, 0(a1) 14197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a6, 8(a1) 14207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a7, 16(a1) 14217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 23(a1) 14227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a2, a2, a5 14237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a3, a3, a6 14247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a4, a4, a7 14257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a0, a0, a1 14267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a2, a2, a3 14277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a4, a0 14287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a2, a0 14297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: snez a0, a0 14307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 14317a5b040eSPengcheng Wang; 14327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_31: 14337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 14347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a2, 0(a0) 14357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a3, 8(a0) 14367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a4, 16(a0) 14377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a0, 23(a0) 14387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a5, 0(a1) 14397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a6, 8(a1) 14407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a7, 16(a1) 14417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a1, 23(a1) 14427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a2, a2, a5 14437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a3, a3, a6 14447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a4, a4, a7 14457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a0, a0, a1 14467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a2, a2, a3 14477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a4, a0 14487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a2, a0 14497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: snez a0, a0 14507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 14515adb5c05SPengcheng Wangentry: 14525adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 31) 14535adb5c05SPengcheng Wang ret i32 %bcmp 14545adb5c05SPengcheng Wang} 14555adb5c05SPengcheng Wang 14565adb5c05SPengcheng Wangdefine i32 @bcmp_size_32(ptr %s1, ptr %s2) nounwind optsize { 14575adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_32: 14585adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 14595adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 14605adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 14615adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 32 14625adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 14635adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 14645adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 14655adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 14665adb5c05SPengcheng Wang; 14677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_32: 14687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 14697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 14707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 14717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 32 14727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 14737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 14747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 14757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 14767a5b040eSPengcheng Wang; 14777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_32: 14787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 14797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 14807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 14817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 32 14827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 14837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 14847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 14857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 14867a5b040eSPengcheng Wang; 14877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_32: 14887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 14897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 14907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 14917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 32 14927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 14937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 14947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 14957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 14967a5b040eSPengcheng Wang; 14977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_32: 14987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 14997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 15007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 15017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 32 15027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 15037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 15047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 15057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 15067a5b040eSPengcheng Wang; 15077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_32: 15087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 15097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a2, 0(a0) 15107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a3, 8(a0) 15117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a4, 16(a0) 15127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a0, 24(a0) 15137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a5, 0(a1) 15147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a6, 8(a1) 15157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a7, 16(a1) 15167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a1, 24(a1) 15177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a2, a2, a5 15187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a3, a3, a6 15197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a4, a4, a7 15207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a0, a0, a1 15217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a2, a2, a3 15227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a4, a0 15237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a2, a0 15247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: snez a0, a0 15257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 15267a5b040eSPengcheng Wang; 15277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_32: 15287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 15297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 15307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 8(a0) 15317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a4, 16(a0) 15327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 24(a0) 15337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a5, 0(a1) 15347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a6, 8(a1) 15357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a7, 16(a1) 15367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 24(a1) 15377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a2, a2, a5 15387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a3, a3, a6 15397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a4, a4, a7 15407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a0, a0, a1 15417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a2, a2, a3 15427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a4, a0 15437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a2, a0 15447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: snez a0, a0 15457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 15467a5b040eSPengcheng Wang; 15477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_32: 15487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 15497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 15507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 8(a0) 15517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a4, 16(a0) 15527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 24(a0) 15537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a5, 0(a1) 15547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a6, 8(a1) 15557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a7, 16(a1) 15567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 24(a1) 15577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a2, a2, a5 15587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a3, a3, a6 15597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a4, a4, a7 15607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a0, a0, a1 15617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a2, a2, a3 15627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a4, a0 15637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a2, a0 15647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: snez a0, a0 15657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 15667a5b040eSPengcheng Wang; 15677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_32: 15687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 15697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a2, 0(a0) 15707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a3, 8(a0) 15717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a4, 16(a0) 15727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a0, 24(a0) 15737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a5, 0(a1) 15747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a6, 8(a1) 15757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a7, 16(a1) 15767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a1, 24(a1) 15777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a2, a2, a5 15787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a3, a3, a6 15797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a4, a4, a7 15807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a0, a0, a1 15817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a2, a2, a3 15827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a4, a0 15837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a2, a0 15847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: snez a0, a0 15857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 15865adb5c05SPengcheng Wangentry: 15875adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 32) 15885adb5c05SPengcheng Wang ret i32 %bcmp 15895adb5c05SPengcheng Wang} 15905adb5c05SPengcheng Wang 15915adb5c05SPengcheng Wangdefine i32 @bcmp_size_63(ptr %s1, ptr %s2) nounwind optsize { 15925adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_63: 15935adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 15945adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 15955adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 15965adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 63 15975adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 15985adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 15995adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 16005adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 16015adb5c05SPengcheng Wang; 16025adb5c05SPengcheng Wang; CHECK-RV64-LABEL: bcmp_size_63: 16035adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 16045adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 16055adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 16065adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 63 16075adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call bcmp 16085adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 16095adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 16105adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 16115adb5c05SPengcheng Wangentry: 16125adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 63) 16135adb5c05SPengcheng Wang ret i32 %bcmp 16145adb5c05SPengcheng Wang} 16155adb5c05SPengcheng Wang 16165adb5c05SPengcheng Wangdefine i32 @bcmp_size_64(ptr %s1, ptr %s2) nounwind optsize { 16175adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_64: 16185adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 16195adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 16205adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 16215adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 64 16225adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 16235adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 16245adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 16255adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 16265adb5c05SPengcheng Wang; 16275adb5c05SPengcheng Wang; CHECK-RV64-LABEL: bcmp_size_64: 16285adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 16295adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 16305adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 16315adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 64 16325adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call bcmp 16335adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 16345adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 16355adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 16365adb5c05SPengcheng Wangentry: 16375adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 64) 16385adb5c05SPengcheng Wang ret i32 %bcmp 16395adb5c05SPengcheng Wang} 16405adb5c05SPengcheng Wang 16415adb5c05SPengcheng Wangdefine i32 @bcmp_size_127(ptr %s1, ptr %s2) nounwind optsize { 16425adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_127: 16435adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 16445adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 16455adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 16465adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 127 16475adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 16485adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 16495adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 16505adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 16515adb5c05SPengcheng Wang; 16525adb5c05SPengcheng Wang; CHECK-RV64-LABEL: bcmp_size_127: 16535adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 16545adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 16555adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 16565adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 127 16575adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call bcmp 16585adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 16595adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 16605adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 16615adb5c05SPengcheng Wangentry: 16625adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 127) 16635adb5c05SPengcheng Wang ret i32 %bcmp 16645adb5c05SPengcheng Wang} 16655adb5c05SPengcheng Wang 16665adb5c05SPengcheng Wangdefine i32 @bcmp_size_128(ptr %s1, ptr %s2) nounwind optsize { 16675adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_128: 16685adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 16695adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 16705adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 16715adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 128 16725adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 16735adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 16745adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 16755adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 16765adb5c05SPengcheng Wang; 16775adb5c05SPengcheng Wang; CHECK-RV64-LABEL: bcmp_size_128: 16785adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 16795adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 16805adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 16815adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 128 16825adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call bcmp 16835adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 16845adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 16855adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 16865adb5c05SPengcheng Wangentry: 16875adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 128) 16885adb5c05SPengcheng Wang ret i32 %bcmp 16895adb5c05SPengcheng Wang} 16905adb5c05SPengcheng Wang 16915adb5c05SPengcheng Wangdefine i32 @bcmp_size_runtime(ptr %s1, ptr %s2, iXLen %len) nounwind optsize { 16925adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_runtime: 16935adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 16945adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 16955adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 16965adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 16975adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 16985adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 16995adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 17005adb5c05SPengcheng Wang; 17015adb5c05SPengcheng Wang; CHECK-RV64-LABEL: bcmp_size_runtime: 17025adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 17035adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 17045adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 17055adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call bcmp 17065adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 17075adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 17085adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 17095adb5c05SPengcheng Wangentry: 17105adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen %len) 17115adb5c05SPengcheng Wang ret i32 %bcmp 17125adb5c05SPengcheng Wang} 17135adb5c05SPengcheng Wang 17145adb5c05SPengcheng Wangdefine i1 @bcmp_eq_zero(ptr %s1, ptr %s2) nounwind optsize { 17157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_eq_zero: 17167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 17177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 17187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 17197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 17207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 17217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: seqz a0, a0 17227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 17237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 17247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 17255adb5c05SPengcheng Wang; 17267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_eq_zero: 17277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 17287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 17297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 17307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 17317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 17327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: seqz a0, a0 17337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 17347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 17357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 17367a5b040eSPengcheng Wang; 17377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_eq_zero: 17387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 17397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 17407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 17417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 17427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 17437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: seqz a0, a0 17447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 17457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 17467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 17477a5b040eSPengcheng Wang; 17487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_eq_zero: 17497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 17507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 17517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 17527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 17537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 17547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: seqz a0, a0 17557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 17567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 17577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 17587a5b040eSPengcheng Wang; 17597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_eq_zero: 17607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 17617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 17627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 17637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 17647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 17657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: seqz a0, a0 17667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 17677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 17687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 17697a5b040eSPengcheng Wang; 17707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_eq_zero: 17717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 17727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 17737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 17747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 17757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 17767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: seqz a0, a0 17777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 17787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 17797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 17807a5b040eSPengcheng Wang; 17817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_eq_zero: 17827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 17837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 17847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 17857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 17867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 17877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: seqz a0, a0 17887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 17897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 17907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 17917a5b040eSPengcheng Wang; 17927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_eq_zero: 17937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 17947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 17957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 17967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 17977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 17987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: seqz a0, a0 17997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 18007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 18017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 18027a5b040eSPengcheng Wang; 18037a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_eq_zero: 18047a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 18057a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a0, 0(a0) 18067a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a1, 0(a1) 18077a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 18087a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: seqz a0, a0 18097a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 18105adb5c05SPengcheng Wangentry: 18115adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4) 18125adb5c05SPengcheng Wang %ret = icmp eq i32 %bcmp, 0 18135adb5c05SPengcheng Wang ret i1 %ret 18145adb5c05SPengcheng Wang} 18155adb5c05SPengcheng Wang 18165adb5c05SPengcheng Wangdefine i1 @bcmp_lt_zero(ptr %s1, ptr %s2) nounwind optsize { 18177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_lt_zero: 18187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 18197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 18207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 18217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 18227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 18237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: srli a0, a0, 31 18247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 18257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 18267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 18275adb5c05SPengcheng Wang; 18287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_lt_zero: 18297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 18307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 18317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 18327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 18337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 18347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slti a0, a0, 0 18357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 18367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 18377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 18387a5b040eSPengcheng Wang; 18397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_lt_zero: 18407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 18417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 18427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 18437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 18447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 18457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: srli a0, a0, 31 18467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 18477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 18487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 18497a5b040eSPengcheng Wang; 18507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_lt_zero: 18517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 18527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 18537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 18547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 18557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 18567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slti a0, a0, 0 18577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 18587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 18597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 18607a5b040eSPengcheng Wang; 18617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_lt_zero: 18627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 18637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 18647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 18657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 18667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 18677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: srli a0, a0, 31 18687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 18697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 18707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 18717a5b040eSPengcheng Wang; 18727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_lt_zero: 18737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 18747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 18757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 18767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 18777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 18787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: slti a0, a0, 0 18797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 18807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 18817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 18827a5b040eSPengcheng Wang; 18837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_lt_zero: 18847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 18857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 18867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 18877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 18887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 18897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: srli a0, a0, 31 18907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 18917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 18927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 18937a5b040eSPengcheng Wang; 18947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_lt_zero: 18957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 18967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 18977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 18987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 18997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 19007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slti a0, a0, 0 19017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 19027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 19037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 19047a5b040eSPengcheng Wang; 19057a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_lt_zero: 19067a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 19077a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: li a0, 0 19087a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 19095adb5c05SPengcheng Wangentry: 19105adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4) 19115adb5c05SPengcheng Wang %ret = icmp slt i32 %bcmp, 0 19125adb5c05SPengcheng Wang ret i1 %ret 19135adb5c05SPengcheng Wang} 19145adb5c05SPengcheng Wang 19155adb5c05SPengcheng Wangdefine i1 @bcmp_gt_zero(ptr %s1, ptr %s2) nounwind optsize { 19167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_gt_zero: 19177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 19187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 19197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 19207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 19217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 19227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sgtz a0, a0 19237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 19247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 19257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 19265adb5c05SPengcheng Wang; 19277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_gt_zero: 19287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 19297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 19307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 19317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 19327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 19337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sgtz a0, a0 19347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 19357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 19367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 19377a5b040eSPengcheng Wang; 19387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_gt_zero: 19397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 19407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 19417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 19427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 19437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 19447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sgtz a0, a0 19457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 19467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 19477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 19487a5b040eSPengcheng Wang; 19497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_gt_zero: 19507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 19517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 19527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 19537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 19547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 19557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sgtz a0, a0 19567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 19577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 19587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 19597a5b040eSPengcheng Wang; 19607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_gt_zero: 19617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 19627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 19637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 19647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 19657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 19667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sgtz a0, a0 19677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 19687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 19697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 19707a5b040eSPengcheng Wang; 19717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_gt_zero: 19727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 19737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 19747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 19757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 19767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 19777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sgtz a0, a0 19787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 19797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 19807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 19817a5b040eSPengcheng Wang; 19827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_gt_zero: 19837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 19847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 19857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 19867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 19877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 19887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sgtz a0, a0 19897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 19907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 19917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 19927a5b040eSPengcheng Wang; 19937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_gt_zero: 19947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 19957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 19967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 19977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 19987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 19997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sgtz a0, a0 20007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 20017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 20027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 20037a5b040eSPengcheng Wang; 20047a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_gt_zero: 20057a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 20067a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a0, 0(a0) 20077a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a1, 0(a1) 20087a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 20097a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: snez a0, a0 20107a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 20115adb5c05SPengcheng Wangentry: 20125adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4) 20135adb5c05SPengcheng Wang %ret = icmp sgt i32 %bcmp, 0 20145adb5c05SPengcheng Wang ret i1 %ret 20155adb5c05SPengcheng Wang} 20165adb5c05SPengcheng Wang 20175adb5c05SPengcheng Wangdefine i32 @memcmp_size_0(ptr %s1, ptr %s2) nounwind optsize { 20185adb5c05SPengcheng Wang; CHECK-LABEL: memcmp_size_0: 20195adb5c05SPengcheng Wang; CHECK: # %bb.0: # %entry 20205adb5c05SPengcheng Wang; CHECK-NEXT: li a0, 0 20215adb5c05SPengcheng Wang; CHECK-NEXT: ret 20225adb5c05SPengcheng Wangentry: 20235adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 0) 20245adb5c05SPengcheng Wang ret i32 %memcmp 20255adb5c05SPengcheng Wang} 20265adb5c05SPengcheng Wang 20275adb5c05SPengcheng Wangdefine i32 @memcmp_size_1(ptr %s1, ptr %s2) nounwind optsize { 20287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_1: 20297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 20307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 20317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 20327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 1 20337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 20347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 20357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 20367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 20375adb5c05SPengcheng Wang; 20387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_1: 20397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 20407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 20417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 20427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 1 20437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 20447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 20457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 20467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 20477a5b040eSPengcheng Wang; 20487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_1: 20497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 20507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 20517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 20527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 1 20537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 20547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 20557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 20567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 20577a5b040eSPengcheng Wang; 20587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_1: 20597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 20607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 20617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 20627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 1 20637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 20647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 20657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 20667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 20677a5b040eSPengcheng Wang; 20687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_1: 20697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 20707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 20717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 20727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 1 20737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 20747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 20757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 20767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 20777a5b040eSPengcheng Wang; 20787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_1: 20797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 20807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 20817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 20827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 1 20837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 20847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 20857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 20867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 20877a5b040eSPengcheng Wang; 20887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_1: 20897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 20907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 20917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 20927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 1 20937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 20947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 20957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 20967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 20977a5b040eSPengcheng Wang; 20987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_1: 20997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 21007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 21017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 21027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 1 21037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 21047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 21057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 21067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 21077a5b040eSPengcheng Wang; 21087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_1: 21097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 21107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 21117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 21127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 1 21137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 21147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 21157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 21167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 21177a5b040eSPengcheng Wang; 21187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_1: 21197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 21207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 21217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 21227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 1 21237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 21247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 21257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 21267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 21277a5b040eSPengcheng Wang; 21287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_1: 21297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 21307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a0, 0(a0) 21317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a1, 0(a1) 21327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sub a0, a0, a1 21337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 21347a5b040eSPengcheng Wang; 21357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_1: 21367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 21377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a0, 0(a0) 21387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a1, 0(a1) 21397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a1 21407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 21417a5b040eSPengcheng Wang; 21427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_1: 21437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 21447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a0, 0(a0) 21457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a1, 0(a1) 21467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sub a0, a0, a1 21477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 21487a5b040eSPengcheng Wang; 21497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_1: 21507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 21517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a0, 0(a0) 21527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a1, 0(a1) 21537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a1 21547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 21557a5b040eSPengcheng Wang; 21567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_1: 21577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 21587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 21597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 21607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 1 21617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 21627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 21637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 21647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 21657a5b040eSPengcheng Wang; 21667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_1: 21677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 21687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 21697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 21707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 1 21717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 21727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 21737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 21747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 21755adb5c05SPengcheng Wangentry: 21765adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 1) 21775adb5c05SPengcheng Wang ret i32 %memcmp 21785adb5c05SPengcheng Wang} 21795adb5c05SPengcheng Wang 21805adb5c05SPengcheng Wangdefine i32 @memcmp_size_2(ptr %s1, ptr %s2) nounwind optsize { 21817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_2: 21827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 21837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 21847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 21857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 2 21867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 21877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 21887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 21897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 21905adb5c05SPengcheng Wang; 21917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_2: 21927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 21937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 21947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 21957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 2 21967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 21977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 21987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 21997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 22007a5b040eSPengcheng Wang; 22017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_2: 22027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 22037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 22047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 22057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 2 22067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 22077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 22087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 22097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 22107a5b040eSPengcheng Wang; 22117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_2: 22127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 22137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 22147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 22157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 2 22167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 22177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 22187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 22197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 22207a5b040eSPengcheng Wang; 22217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_2: 22227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 22237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 22247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 22257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 2 22267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 22277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 22287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 22297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 22307a5b040eSPengcheng Wang; 22317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_2: 22327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 22337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 22347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 22357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 2 22367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 22377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 22387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 22397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 22407a5b040eSPengcheng Wang; 22417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_2: 22427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 22437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 22447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 22457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 2 22467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 22477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 22487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 22497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 22507a5b040eSPengcheng Wang; 22517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_2: 22527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 22537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 22547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 22557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 2 22567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 22577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 22587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 22597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 22607a5b040eSPengcheng Wang; 22617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_2: 22627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 22637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 22647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 22657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 2 22667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 22677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 22687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 22697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 22707a5b040eSPengcheng Wang; 22717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_2: 22727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 22737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 22747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 22757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 2 22767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 22777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 22787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 22797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 22807a5b040eSPengcheng Wang; 22817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_2: 22827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 22837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lh a0, 0(a0) 22847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lh a1, 0(a1) 22857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0 22867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1 22879122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: srli a0, a0, 16 22887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: srli a1, a1, 16 22897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sub a0, a0, a1 22907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 22917a5b040eSPengcheng Wang; 22927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_2: 22937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 22947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lh a0, 0(a0) 22957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lh a1, 0(a1) 22967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 22977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 22989122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 48 22997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 48 23007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a1 23017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 23027a5b040eSPengcheng Wang; 23037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_2: 23047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 23057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lh a0, 0(a0) 23067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lh a1, 0(a1) 23077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0 23087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1 23099122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: srli a0, a0, 16 23107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: srli a1, a1, 16 23117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sub a0, a0, a1 23127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 23137a5b040eSPengcheng Wang; 23147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_2: 23157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 23167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lh a0, 0(a0) 23177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lh a1, 0(a1) 23187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 23197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 23209122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 48 23217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 48 23227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a1 23237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 23247a5b040eSPengcheng Wang; 23257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_2: 23267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 23277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 23287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 23297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 2 23307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 23317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 23327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 23337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 23347a5b040eSPengcheng Wang; 23357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_2: 23367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 23377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 23387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 23397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 2 23407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 23417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 23427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 23437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 23445adb5c05SPengcheng Wangentry: 23455adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 2) 23465adb5c05SPengcheng Wang ret i32 %memcmp 23475adb5c05SPengcheng Wang} 23485adb5c05SPengcheng Wang 23495adb5c05SPengcheng Wangdefine i32 @memcmp_size_3(ptr %s1, ptr %s2) nounwind optsize { 23507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_3: 23517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 23527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 23537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 23547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 3 23557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 23567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 23577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 23587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 23595adb5c05SPengcheng Wang; 23607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_3: 23617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 23627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 23637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 23647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 3 23657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 23667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 23677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 23687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 23697a5b040eSPengcheng Wang; 23707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_3: 23717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 23727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 23737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 23747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 3 23757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 23767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 23777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 23787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 23797a5b040eSPengcheng Wang; 23807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_3: 23817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 23827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 23837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 23847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 3 23857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 23867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 23877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 23887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 23897a5b040eSPengcheng Wang; 23907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_3: 23917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 23927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 23937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 23947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 3 23957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 23967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 23977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 23987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 23997a5b040eSPengcheng Wang; 24007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_3: 24017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 24027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 24037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 24047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 3 24057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 24067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 24077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 24087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 24097a5b040eSPengcheng Wang; 24107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_3: 24117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 24127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 24137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 24147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 3 24157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 24167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 24177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 24187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 24197a5b040eSPengcheng Wang; 24207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_3: 24217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 24227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 24237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 24247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 3 24257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 24267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 24277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 24287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 24297a5b040eSPengcheng Wang; 24307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_3: 24317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 24327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 24337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 24347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 3 24357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 24367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 24377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 24387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 24397a5b040eSPengcheng Wang; 24407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_3: 24417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 24427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 24437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 24447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 3 24457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 24467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 24477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 24487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 24497a5b040eSPengcheng Wang; 24507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_3: 24517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 245272db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a2, 2(a0) 245372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lhu a0, 0(a0) 245472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a3, 2(a1) 245572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lhu a1, 0(a1) 245672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: slli a2, a2, 16 245772db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, a0, a2 245872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: slli a3, a3, 16 245972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a1, a1, a3 246072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0 246172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1 2462*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a2, a0, a1 2463*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a1, a0 2464*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sub a0, a0, a2 24657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 24667a5b040eSPengcheng Wang; 24677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_3: 24687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 246972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a2, 2(a0) 247072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lhu a0, 0(a0) 247172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a3, 2(a1) 247272db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lhu a1, 0(a1) 247372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a2, a2, 16 247472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a0, a2 247572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a3, a3, 16 247672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a1, a1, a3 247772db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 247872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 247972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 32 248072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 32 2481*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a0, a1 2482*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 2483*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a2 24847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 24857a5b040eSPengcheng Wang; 24867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_3: 24877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 248872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lhu a2, 0(a0) 24897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a0, 2(a0) 249072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lhu a3, 0(a1) 24917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a1, 2(a1) 249272db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: pack a0, a2, a0 249372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: pack a1, a3, a1 249472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0 249572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1 2496*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a2, a0, a1 2497*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a1, a0 2498*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sub a0, a0, a2 24997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 25007a5b040eSPengcheng Wang; 25017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_3: 25027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 250372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a2, 2(a0) 250472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lhu a0, 0(a0) 250572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a3, 2(a1) 250672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lhu a1, 0(a1) 250772db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: slli a2, a2, 16 250872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a0, a2 250972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: slli a3, a3, 16 251072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a1, a1, a3 251172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 251272db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 251372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 32 251472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 32 2515*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a0, a1 2516*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 2517*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a2 25187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 25197a5b040eSPengcheng Wang; 25207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_3: 25217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 25227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 25237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 25247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 3 25257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 25267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 25277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 25287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 25297a5b040eSPengcheng Wang; 25307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_3: 25317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 25327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 25337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 25347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 3 25357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 25367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 25377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 25387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 25395adb5c05SPengcheng Wangentry: 25405adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 3) 25415adb5c05SPengcheng Wang ret i32 %memcmp 25425adb5c05SPengcheng Wang} 25435adb5c05SPengcheng Wang 25445adb5c05SPengcheng Wangdefine i32 @memcmp_size_4(ptr %s1, ptr %s2) nounwind optsize { 25457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_4: 25467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 25477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 25487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 25497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 25507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 25517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 25527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 25537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 25545adb5c05SPengcheng Wang; 25557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_4: 25567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 25577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 25587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 25597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 25607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 25617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 25627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 25637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 25647a5b040eSPengcheng Wang; 25657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_4: 25667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 25677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 25687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 25697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 25707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 25717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 25727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 25737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 25747a5b040eSPengcheng Wang; 25757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_4: 25767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 25777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 25787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 25797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 25807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 25817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 25827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 25837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 25847a5b040eSPengcheng Wang; 25857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_4: 25867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 25877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 25887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 25897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 25907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 25917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 25927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 25937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 25947a5b040eSPengcheng Wang; 25957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_4: 25967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 25977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 25987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 25997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 26007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 26017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 26027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 26037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 26047a5b040eSPengcheng Wang; 26057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_4: 26067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 26077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 26087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 26097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 26107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 26117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 26127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 26137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 26147a5b040eSPengcheng Wang; 26157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_4: 26167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 26177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 26187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 26197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 26207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 26217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 26227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 26237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 26247a5b040eSPengcheng Wang; 26257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_4: 26267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 26277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 26287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 26297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 4 26307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 26317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 26327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 26337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 26347a5b040eSPengcheng Wang; 26357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_4: 26367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 26377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 26387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 26397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 4 26407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 26417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 26427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 26437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 26447a5b040eSPengcheng Wang; 26457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_4: 26467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 26477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 0(a0) 26487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 0(a1) 26497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0 26507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1 26514dfea22eSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a2, a0, a1 26524dfea22eSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a1, a0 26534dfea22eSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sub a0, a0, a2 26547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 26557a5b040eSPengcheng Wang; 26567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_4: 26577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 26587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a0, 0(a0) 26597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a1, 0(a1) 26607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 26617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 26629122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 32 26637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 32 26644dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a0, a1 26654dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 26664dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a2 26677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 26687a5b040eSPengcheng Wang; 26697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_4: 26707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 26717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 0(a0) 26727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 0(a1) 26737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0 26747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1 26754dfea22eSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a2, a0, a1 26764dfea22eSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a1, a0 26774dfea22eSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sub a0, a0, a2 26787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 26797a5b040eSPengcheng Wang; 26807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_4: 26817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 26827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a0, 0(a0) 26837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a1, 0(a1) 26847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 26857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 26869122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 32 26877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 32 26884dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a0, a1 26894dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 26904dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a2 26917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 26927a5b040eSPengcheng Wang; 26937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_4: 26947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 26957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 26967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 26977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 4 26987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 26997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 27007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 27017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 27027a5b040eSPengcheng Wang; 27037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_4: 27047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 27057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 27067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 27077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 4 27087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 27097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 27107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 27117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 27125adb5c05SPengcheng Wangentry: 27135adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4) 27145adb5c05SPengcheng Wang ret i32 %memcmp 27155adb5c05SPengcheng Wang} 27165adb5c05SPengcheng Wang 27175adb5c05SPengcheng Wangdefine i32 @memcmp_size_5(ptr %s1, ptr %s2) nounwind optsize { 27187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_5: 27197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 27207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 27217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 27227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 5 27237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 27247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 27257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 27267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 27275adb5c05SPengcheng Wang; 27287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_5: 27297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 27307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 27317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 27327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 5 27337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 27347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 27357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 27367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 27377a5b040eSPengcheng Wang; 27387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_5: 27397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 27407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 27417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 27427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 5 27437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 27447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 27457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 27467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 27477a5b040eSPengcheng Wang; 27487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_5: 27497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 27507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 27517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 27527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 5 27537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 27547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 27557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 27567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 27577a5b040eSPengcheng Wang; 27587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_5: 27597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 27607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 27617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 27627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 5 27637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 27647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 27657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 27667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 27677a5b040eSPengcheng Wang; 27687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_5: 27697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 27707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 27717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 27727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 5 27737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 27747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 27757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 27767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 27777a5b040eSPengcheng Wang; 27787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_5: 27797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 27807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 27817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 27827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 5 27837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 27847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 27857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 27867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 27877a5b040eSPengcheng Wang; 27887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_5: 27897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 27907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 27917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 27927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 5 27937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 27947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 27957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 27967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 27977a5b040eSPengcheng Wang; 27987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_5: 27997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 28007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 28017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 28027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 5 28037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 28047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 28057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 28067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 28077a5b040eSPengcheng Wang; 28087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_5: 28097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 28107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 28117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 28127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 5 28137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 28147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 28157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 28167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 28177a5b040eSPengcheng Wang; 28187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_5: 28197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 28207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 28217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 28227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 28237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 28247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB26_2 28257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 28267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a0, 4(a0) 28277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a1, 4(a1) 28287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sub a0, a0, a1 28297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 28307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB26_2: # %res_block 28317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 28327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 28337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 28347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 28357a5b040eSPengcheng Wang; 28367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_5: 28377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 283872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a2, 4(a0) 283972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lwu a0, 0(a0) 284072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a3, 4(a1) 284172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lwu a1, 0(a1) 284272db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a2, a2, 32 284372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a0, a2 284472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a3, a3, 32 284572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a1, a1, a3 284672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 284772db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 2848*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a0, a1 2849*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 2850*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a2 28517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 28527a5b040eSPengcheng Wang; 28537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_5: 28547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 28557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 28567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 28577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 28587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 28597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB26_2 28607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 28617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a0, 4(a0) 28627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a1, 4(a1) 28637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sub a0, a0, a1 28647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 28657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB26_2: # %res_block 28667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 28677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 28687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 28697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 28707a5b040eSPengcheng Wang; 28717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_5: 28727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 287372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lwu a2, 0(a0) 28747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a0, 4(a0) 287572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lwu a3, 0(a1) 28767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a1, 4(a1) 287772db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: pack a0, a2, a0 287872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: pack a1, a3, a1 287972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 288072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 2881*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a0, a1 2882*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 2883*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a2 28847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 28857a5b040eSPengcheng Wang; 28867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_5: 28877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 28887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 28897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 28907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 5 28917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 28927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 28937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 28947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 28957a5b040eSPengcheng Wang; 28967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_5: 28977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 28987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 28997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 29007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 5 29017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 29027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 29037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 29047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 29055adb5c05SPengcheng Wangentry: 29065adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 5) 29075adb5c05SPengcheng Wang ret i32 %memcmp 29085adb5c05SPengcheng Wang} 29095adb5c05SPengcheng Wang 29105adb5c05SPengcheng Wangdefine i32 @memcmp_size_6(ptr %s1, ptr %s2) nounwind optsize { 29117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_6: 29127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 29137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 29147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 29157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 6 29167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 29177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 29187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 29197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 29205adb5c05SPengcheng Wang; 29217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_6: 29227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 29237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 29247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 29257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 6 29267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 29277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 29287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 29297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 29307a5b040eSPengcheng Wang; 29317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_6: 29327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 29337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 29347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 29357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 6 29367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 29377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 29387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 29397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 29407a5b040eSPengcheng Wang; 29417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_6: 29427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 29437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 29447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 29457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 6 29467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 29477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 29487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 29497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 29507a5b040eSPengcheng Wang; 29517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_6: 29527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 29537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 29547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 29557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 6 29567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 29577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 29587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 29597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 29607a5b040eSPengcheng Wang; 29617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_6: 29627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 29637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 29647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 29657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 6 29667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 29677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 29687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 29697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 29707a5b040eSPengcheng Wang; 29717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_6: 29727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 29737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 29747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 29757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 6 29767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 29777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 29787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 29797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 29807a5b040eSPengcheng Wang; 29817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_6: 29827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 29837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 29847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 29857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 6 29867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 29877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 29887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 29897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 29907a5b040eSPengcheng Wang; 29917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_6: 29927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 29937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 29947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 29957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 6 29967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 29977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 29987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 29997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 30007a5b040eSPengcheng Wang; 30017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_6: 30027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 30037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 30047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 30057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 6 30067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 30077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 30087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 30097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 30107a5b040eSPengcheng Wang; 30117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_6: 30127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 30137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 30147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 30157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 30167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 30177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB27_3 30187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 30197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lh a0, 4(a0) 30207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lh a1, 4(a1) 30217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a0 30227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a1 30239122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: srli a2, a2, 16 30247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: srli a3, a3, 16 30257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB27_3 30267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.2: 30277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: li a0, 0 30287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 30297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB27_3: # %res_block 30307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 30317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 30327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 30337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 30347a5b040eSPengcheng Wang; 30357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_6: 30367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 303772db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lhu a2, 4(a0) 303872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lwu a0, 0(a0) 303972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lhu a3, 4(a1) 304072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lwu a1, 0(a1) 304172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a2, a2, 32 304272db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a0, a2 304372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a3, a3, 32 304472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a1, a1, a3 304572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 304672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 3047*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a0, a1 3048*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 3049*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a2 30507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 30517a5b040eSPengcheng Wang; 30527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_6: 30537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 30547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 30557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 30567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 30577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 30587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB27_3 30597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 30607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lh a0, 4(a0) 30617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lh a1, 4(a1) 30627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a0 30637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a1 30649122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: srli a2, a2, 16 30657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: srli a3, a3, 16 30667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB27_3 30677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.2: 30687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: li a0, 0 30697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 30707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB27_3: # %res_block 30717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 30727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 30737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 30747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 30757a5b040eSPengcheng Wang; 30767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_6: 30777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 307872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lwu a2, 0(a0) 307972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lhu a0, 4(a0) 308072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lwu a3, 0(a1) 308172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lhu a1, 4(a1) 308272db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: pack a0, a2, a0 308372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: pack a1, a3, a1 308472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 308572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 3086*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a0, a1 3087*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 3088*13cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a2 30897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 30907a5b040eSPengcheng Wang; 30917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_6: 30927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 30937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 30947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 30957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 6 30967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 30977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 30987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 30997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 31007a5b040eSPengcheng Wang; 31017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_6: 31027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 31037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 31047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 31057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 6 31067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 31077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 31087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 31097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 31105adb5c05SPengcheng Wangentry: 31115adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 6) 31125adb5c05SPengcheng Wang ret i32 %memcmp 31135adb5c05SPengcheng Wang} 31145adb5c05SPengcheng Wang 31155adb5c05SPengcheng Wangdefine i32 @memcmp_size_7(ptr %s1, ptr %s2) nounwind optsize { 31167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_7: 31177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 31187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 31197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 31207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 7 31217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 31227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 31237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 31247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 31255adb5c05SPengcheng Wang; 31267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_7: 31277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 31287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 31297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 31307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 7 31317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 31327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 31337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 31347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 31357a5b040eSPengcheng Wang; 31367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_7: 31377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 31387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 31397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 31407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 7 31417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 31427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 31437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 31447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 31457a5b040eSPengcheng Wang; 31467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_7: 31477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 31487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 31497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 31507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 7 31517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 31527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 31537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 31547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 31557a5b040eSPengcheng Wang; 31567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_7: 31577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 31587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 31597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 31607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 7 31617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 31627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 31637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 31647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 31657a5b040eSPengcheng Wang; 31667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_7: 31677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 31687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 31697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 31707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 7 31717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 31727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 31737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 31747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 31757a5b040eSPengcheng Wang; 31767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_7: 31777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 31787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 31797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 31807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 7 31817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 31827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 31837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 31847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 31857a5b040eSPengcheng Wang; 31867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_7: 31877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 31887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 31897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 31907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 7 31917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 31927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 31937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 31947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 31957a5b040eSPengcheng Wang; 31967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_7: 31977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 31987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 31997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 32007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 7 32017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 32027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 32037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 32047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 32057a5b040eSPengcheng Wang; 32067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_7: 32077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 32087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 32097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 32107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 7 32117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 32127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 32137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 32147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 32157a5b040eSPengcheng Wang; 32167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_7: 32177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 32187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 32197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 32207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 32217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 32227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB28_3 32237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 32247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 3(a0) 32257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 3(a1) 32267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a0 32277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a1 32287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB28_3 32297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.2: 32307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: li a0, 0 32317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 32327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB28_3: # %res_block 32337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 32347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 32357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 32367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 32377a5b040eSPengcheng Wang; 32387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_7: 32397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 32407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a2, 0(a0) 32417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a3, 0(a1) 32427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 32437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 32449122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a2, a2, 32 32457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a3, a3, 32 32467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB28_3 32477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1 32487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a0, 3(a0) 32497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a1, 3(a1) 32507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0 32517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1 32529122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a2, a2, 32 32537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a3, a3, 32 32547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB28_3 32557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2: 32567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0 32577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 32587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB28_3: # %res_block 32597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3 32607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0 32617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1 32627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 32637a5b040eSPengcheng Wang; 32647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_7: 32657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 32667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 32677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 32687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 32697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 32707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB28_3 32717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 32727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 3(a0) 32737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 3(a1) 32747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a0 32757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a1 32767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB28_3 32777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.2: 32787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: li a0, 0 32797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 32807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB28_3: # %res_block 32817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 32827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 32837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 32847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 32857a5b040eSPengcheng Wang; 32867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_7: 32877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 32887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a2, 0(a0) 32897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a3, 0(a1) 32907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 32917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 32929122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a2, a2, 32 32937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a3, a3, 32 32947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB28_3 32957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1 32967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a0, 3(a0) 32977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a1, 3(a1) 32987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0 32997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1 33009122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a2, a2, 32 33017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a3, a3, 32 33027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB28_3 33037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2: 33047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0 33057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 33067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB28_3: # %res_block 33077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3 33087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0 33097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1 33107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 33117a5b040eSPengcheng Wang; 33127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_7: 33137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 33147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 33157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 33167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 7 33177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 33187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 33197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 33207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 33217a5b040eSPengcheng Wang; 33227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_7: 33237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 33247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 33257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 33267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 7 33277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 33287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 33297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 33307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 33315adb5c05SPengcheng Wangentry: 33325adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 7) 33335adb5c05SPengcheng Wang ret i32 %memcmp 33345adb5c05SPengcheng Wang} 33355adb5c05SPengcheng Wang 33365adb5c05SPengcheng Wangdefine i32 @memcmp_size_8(ptr %s1, ptr %s2) nounwind optsize { 33377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_8: 33387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 33397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 33407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 33417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 8 33427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 33437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 33447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 33457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 33465adb5c05SPengcheng Wang; 33477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_8: 33487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 33497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 33507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 33517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 8 33527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 33537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 33547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 33557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 33567a5b040eSPengcheng Wang; 33577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_8: 33587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 33597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 33607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 33617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 8 33627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 33637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 33647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 33657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 33667a5b040eSPengcheng Wang; 33677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_8: 33687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 33697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 33707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 33717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 8 33727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 33737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 33747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 33757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 33767a5b040eSPengcheng Wang; 33777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_8: 33787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 33797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 33807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 33817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 8 33827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 33837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 33847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 33857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 33867a5b040eSPengcheng Wang; 33877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_8: 33887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 33897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 33907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 33917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 8 33927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 33937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 33947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 33957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 33967a5b040eSPengcheng Wang; 33977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_8: 33987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 33997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 34007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 34017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 8 34027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 34037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 34047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 34057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 34067a5b040eSPengcheng Wang; 34077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_8: 34087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 34097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 34107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 34117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 8 34127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 34137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 34147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 34157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 34167a5b040eSPengcheng Wang; 34177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_8: 34187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 34197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 34207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 34217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 8 34227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 34237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 34247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 34257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 34267a5b040eSPengcheng Wang; 34277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_8: 34287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 34297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 34307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 34317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 8 34327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 34337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 34347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 34357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 34367a5b040eSPengcheng Wang; 34377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_8: 34387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 34397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 34407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 34417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 34427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 34437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB29_3 34447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 34457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 4(a0) 34467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 4(a1) 34477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a0 34487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a1 34497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB29_3 34507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.2: 34517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: li a0, 0 34527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 34537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB29_3: # %res_block 34547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 34557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 34567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 34577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 34587a5b040eSPengcheng Wang; 34597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_8: 34607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 34617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 0(a0) 34627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 0(a1) 34637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 34647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 34654dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a0, a1 34664dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 34674dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a2 34687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 34697a5b040eSPengcheng Wang; 34707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_8: 34717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 34727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 34737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 34747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 34757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 34767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB29_3 34777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 34787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 4(a0) 34797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 4(a1) 34807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a0 34817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a1 34827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB29_3 34837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.2: 34847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: li a0, 0 34857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 34867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB29_3: # %res_block 34877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 34887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 34897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 34907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 34917a5b040eSPengcheng Wang; 34927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_8: 34937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 34947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 0(a0) 34957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 0(a1) 34967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 34977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 34984dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a0, a1 34994dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 35004dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a2 35017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 35027a5b040eSPengcheng Wang; 35037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_8: 35047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 35057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 35067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 35077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 8 35087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 35097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 35107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 35117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 35127a5b040eSPengcheng Wang; 35137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_8: 35147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 35157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 35167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 35177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 8 35187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 35197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 35207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 35217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 35225adb5c05SPengcheng Wangentry: 35235adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 8) 35245adb5c05SPengcheng Wang ret i32 %memcmp 35255adb5c05SPengcheng Wang} 35265adb5c05SPengcheng Wang 35275adb5c05SPengcheng Wangdefine i32 @memcmp_size_15(ptr %s1, ptr %s2) nounwind optsize { 35287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_15: 35297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 35307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 35317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 35327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 15 35337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 35347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 35357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 35367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 35375adb5c05SPengcheng Wang; 35387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_15: 35397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 35407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 35417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 35427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 15 35437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 35447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 35457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 35467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 35477a5b040eSPengcheng Wang; 35487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_15: 35497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 35507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 35517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 35527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 15 35537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 35547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 35557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 35567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 35577a5b040eSPengcheng Wang; 35587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_15: 35597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 35607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 35617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 35627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 15 35637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 35647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 35657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 35667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 35677a5b040eSPengcheng Wang; 35687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_15: 35697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 35707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 35717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 35727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 15 35737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 35747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 35757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 35767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 35777a5b040eSPengcheng Wang; 35787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_15: 35797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 35807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 35817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 35827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 15 35837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 35847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 35857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 35867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 35877a5b040eSPengcheng Wang; 35887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_15: 35897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 35907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 35917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 35927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 15 35937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 35947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 35957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 35967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 35977a5b040eSPengcheng Wang; 35987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_15: 35997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 36007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 36017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 36027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 15 36037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 36047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 36057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 36067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 36077a5b040eSPengcheng Wang; 36087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_15: 36097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 36107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 36117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 36127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 15 36137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 36147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 36157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 36167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 36177a5b040eSPengcheng Wang; 36187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_15: 36197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 36207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 36217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 36227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 15 36237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 36247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 36257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 36267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 36277a5b040eSPengcheng Wang; 36287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_15: 36297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 36307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 36317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 36327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 36337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 36347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB30_5 36357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 36367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 4(a0) 36377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 4(a1) 36387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 36397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 36407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB30_5 36417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.2: # %loadbb2 36427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 8(a0) 36437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 8(a1) 36447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 36457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 36467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB30_5 36477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.3: # %loadbb3 36487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 11(a0) 36497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 11(a1) 36507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a0 36517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a1 36527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB30_5 36537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.4: 36547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: li a0, 0 36557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 36567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB30_5: # %res_block 36577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 36587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 36597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 36607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 36617a5b040eSPengcheng Wang; 36627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_15: 36637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 36647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 36657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 0(a1) 36667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 36677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 36687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB30_3 36697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1 36707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 7(a0) 36717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 7(a1) 36727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0 36737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1 36747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB30_3 36757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2: 36767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0 36777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 36787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB30_3: # %res_block 36797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3 36807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0 36817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1 36827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 36837a5b040eSPengcheng Wang; 36847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_15: 36857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 36867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 36877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 36887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 36897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 36907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB30_5 36917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 36927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 4(a0) 36937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 4(a1) 36947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 36957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 36967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB30_5 36977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.2: # %loadbb2 36987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 8(a0) 36997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 8(a1) 37007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 37017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 37027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB30_5 37037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.3: # %loadbb3 37047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 11(a0) 37057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 11(a1) 37067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a0 37077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a1 37087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB30_5 37097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.4: 37107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: li a0, 0 37117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 37127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB30_5: # %res_block 37137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 37147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 37157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 37167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 37177a5b040eSPengcheng Wang; 37187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_15: 37197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 37207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 37217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 0(a1) 37227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 37237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 37247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB30_3 37257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1 37267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 7(a0) 37277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 7(a1) 37287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0 37297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1 37307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB30_3 37317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2: 37327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0 37337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 37347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB30_3: # %res_block 37357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3 37367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0 37377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1 37387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 37397a5b040eSPengcheng Wang; 37407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_15: 37417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 37427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 37437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 37447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 15 37457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 37467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 37477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 37487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 37497a5b040eSPengcheng Wang; 37507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_15: 37517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 37527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 37537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 37547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 15 37557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 37567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 37577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 37587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 37595adb5c05SPengcheng Wangentry: 37605adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 15) 37615adb5c05SPengcheng Wang ret i32 %memcmp 37625adb5c05SPengcheng Wang} 37635adb5c05SPengcheng Wang 37645adb5c05SPengcheng Wangdefine i32 @memcmp_size_16(ptr %s1, ptr %s2) nounwind optsize { 37657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_16: 37667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 37677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 37687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 37697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 16 37707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 37717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 37727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 37737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 37745adb5c05SPengcheng Wang; 37757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_16: 37767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 37777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 37787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 37797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 16 37807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 37817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 37827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 37837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 37847a5b040eSPengcheng Wang; 37857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_16: 37867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 37877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 37887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 37897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 16 37907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 37917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 37927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 37937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 37947a5b040eSPengcheng Wang; 37957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_16: 37967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 37977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 37987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 37997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 16 38007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 38017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 38027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 38037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 38047a5b040eSPengcheng Wang; 38057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_16: 38067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 38077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 38087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 38097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 16 38107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 38117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 38127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 38137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 38147a5b040eSPengcheng Wang; 38157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_16: 38167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 38177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 38187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 38197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 16 38207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 38217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 38227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 38237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 38247a5b040eSPengcheng Wang; 38257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_16: 38267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 38277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 38287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 38297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 16 38307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 38317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 38327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 38337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 38347a5b040eSPengcheng Wang; 38357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_16: 38367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 38377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 38387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 38397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 16 38407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 38417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 38427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 38437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 38447a5b040eSPengcheng Wang; 38457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_16: 38467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 38477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 38487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 38497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 16 38507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 38517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 38527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 38537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 38547a5b040eSPengcheng Wang; 38557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_16: 38567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 38577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 38587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 38597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 16 38607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 38617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 38627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 38637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 38647a5b040eSPengcheng Wang; 38657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_16: 38667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 38677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 38687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 38697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 38707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 38717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB31_5 38727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 38737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 4(a0) 38747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 4(a1) 38757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 38767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 38777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB31_5 38787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.2: # %loadbb2 38797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 8(a0) 38807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 8(a1) 38817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 38827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 38837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB31_5 38847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.3: # %loadbb3 38857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 12(a0) 38867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 12(a1) 38877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a0 38887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a1 38897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB31_5 38907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.4: 38917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: li a0, 0 38927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 38937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB31_5: # %res_block 38947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 38957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 38967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 38977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 38987a5b040eSPengcheng Wang; 38997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_16: 39007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 39017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 39027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 0(a1) 39037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 39047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 39057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB31_3 39067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1 39077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 8(a0) 39087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 8(a1) 39097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0 39107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1 39117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB31_3 39127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2: 39137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0 39147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 39157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB31_3: # %res_block 39167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3 39177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0 39187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1 39197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 39207a5b040eSPengcheng Wang; 39217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_16: 39227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 39237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 39247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 39257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 39267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 39277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB31_5 39287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 39297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 4(a0) 39307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 4(a1) 39317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 39327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 39337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB31_5 39347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.2: # %loadbb2 39357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 8(a0) 39367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 8(a1) 39377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 39387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 39397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB31_5 39407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.3: # %loadbb3 39417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 12(a0) 39427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 12(a1) 39437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a0 39447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a1 39457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB31_5 39467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.4: 39477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: li a0, 0 39487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 39497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB31_5: # %res_block 39507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 39517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 39527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 39537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 39547a5b040eSPengcheng Wang; 39557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_16: 39567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 39577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 39587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 0(a1) 39597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 39607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 39617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB31_3 39627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1 39637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 8(a0) 39647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 8(a1) 39657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0 39667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1 39677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB31_3 39687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2: 39697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0 39707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 39717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB31_3: # %res_block 39727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3 39737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0 39747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1 39757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 39767a5b040eSPengcheng Wang; 39777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_16: 39787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 39797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 39807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 39817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 16 39827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 39837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 39847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 39857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 39867a5b040eSPengcheng Wang; 39877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_16: 39887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 39897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 39907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 39917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 16 39927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 39937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 39947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 39957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 39965adb5c05SPengcheng Wangentry: 39975adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 16) 39985adb5c05SPengcheng Wang ret i32 %memcmp 39995adb5c05SPengcheng Wang} 40005adb5c05SPengcheng Wang 40015adb5c05SPengcheng Wangdefine i32 @memcmp_size_31(ptr %s1, ptr %s2) nounwind optsize { 40025adb5c05SPengcheng Wang; CHECK-RV32-LABEL: memcmp_size_31: 40035adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 40045adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 40055adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 40065adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 31 40075adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call memcmp 40085adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 40095adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 40105adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 40115adb5c05SPengcheng Wang; 40127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_31: 40137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 40147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 40157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 40167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 31 40177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 40187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 40197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 40207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 40217a5b040eSPengcheng Wang; 40227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_31: 40237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 40247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 40257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 40267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 31 40277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 40287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 40297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 40307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 40317a5b040eSPengcheng Wang; 40327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_31: 40337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 40347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 40357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 40367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 31 40377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 40387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 40397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 40407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 40417a5b040eSPengcheng Wang; 40427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_31: 40437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 40447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 40457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 40467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 31 40477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 40487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 40497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 40507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 40517a5b040eSPengcheng Wang; 40527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_31: 40537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 40547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 40557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 40567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 31 40577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 40587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 40597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 40607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 40617a5b040eSPengcheng Wang; 40627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_31: 40637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 40647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 40657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 0(a1) 40667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 40677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 40687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB32_5 40697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1 40707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 8(a0) 40717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 8(a1) 40727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 40737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 40747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB32_5 40757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2: # %loadbb2 40767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 16(a0) 40777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 16(a1) 40787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 40797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 40807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB32_5 40817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.3: # %loadbb3 40827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 23(a0) 40837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 23(a1) 40847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0 40857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1 40867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB32_5 40877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.4: 40887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0 40897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 40907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB32_5: # %res_block 40917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3 40927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0 40937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1 40947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 40957a5b040eSPengcheng Wang; 40967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_31: 40977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 40987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 40997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 0(a1) 41007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 41017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 41027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB32_5 41037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1 41047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 8(a0) 41057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 8(a1) 41067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 41077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 41087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB32_5 41097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2: # %loadbb2 41107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 16(a0) 41117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 16(a1) 41127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 41137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 41147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB32_5 41157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.3: # %loadbb3 41167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 23(a0) 41177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 23(a1) 41187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0 41197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1 41207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB32_5 41217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.4: 41227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0 41237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 41247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB32_5: # %res_block 41257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3 41267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0 41277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1 41287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 41297a5b040eSPengcheng Wang; 41307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_31: 41317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 41327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 41337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 41347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 31 41357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 41367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 41377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 41387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 41395adb5c05SPengcheng Wangentry: 41405adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 31) 41415adb5c05SPengcheng Wang ret i32 %memcmp 41425adb5c05SPengcheng Wang} 41435adb5c05SPengcheng Wang 41445adb5c05SPengcheng Wangdefine i32 @memcmp_size_32(ptr %s1, ptr %s2) nounwind optsize { 41455adb5c05SPengcheng Wang; CHECK-RV32-LABEL: memcmp_size_32: 41465adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 41475adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 41485adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 41495adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 32 41505adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call memcmp 41515adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 41525adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 41535adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 41545adb5c05SPengcheng Wang; 41557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_32: 41567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 41577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 41587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 41597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 32 41607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 41617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 41627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 41637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 41647a5b040eSPengcheng Wang; 41657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_32: 41667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 41677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 41687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 41697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 32 41707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 41717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 41727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 41737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 41747a5b040eSPengcheng Wang; 41757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_32: 41767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 41777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 41787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 41797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 32 41807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 41817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 41827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 41837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 41847a5b040eSPengcheng Wang; 41857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_32: 41867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 41877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 41887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 41897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 32 41907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 41917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 41927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 41937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 41947a5b040eSPengcheng Wang; 41957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_32: 41967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 41977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 41987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 41997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 32 42007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 42017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 42027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 42037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 42047a5b040eSPengcheng Wang; 42057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_32: 42067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 42077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 42087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 0(a1) 42097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 42107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 42117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB33_5 42127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1 42137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 8(a0) 42147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 8(a1) 42157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 42167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 42177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB33_5 42187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2: # %loadbb2 42197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 16(a0) 42207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 16(a1) 42217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 42227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 42237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB33_5 42247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.3: # %loadbb3 42257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 24(a0) 42267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 24(a1) 42277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0 42287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1 42297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB33_5 42307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.4: 42317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0 42327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 42337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB33_5: # %res_block 42347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3 42357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0 42367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1 42377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 42387a5b040eSPengcheng Wang; 42397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_32: 42407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 42417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 42427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 0(a1) 42437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 42447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 42457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB33_5 42467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1 42477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 8(a0) 42487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 8(a1) 42497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 42507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 42517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB33_5 42527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2: # %loadbb2 42537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 16(a0) 42547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 16(a1) 42557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 42567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 42577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB33_5 42587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.3: # %loadbb3 42597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 24(a0) 42607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 24(a1) 42617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0 42627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1 42637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB33_5 42647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.4: 42657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0 42667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 42677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB33_5: # %res_block 42687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3 42697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0 42707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1 42717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 42727a5b040eSPengcheng Wang; 42737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_32: 42747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 42757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 42767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 42777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 32 42787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 42797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 42807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 42817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 42825adb5c05SPengcheng Wangentry: 42835adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 32) 42845adb5c05SPengcheng Wang ret i32 %memcmp 42855adb5c05SPengcheng Wang} 42865adb5c05SPengcheng Wang 42875adb5c05SPengcheng Wangdefine i32 @memcmp_size_63(ptr %s1, ptr %s2) nounwind optsize { 42885adb5c05SPengcheng Wang; CHECK-RV32-LABEL: memcmp_size_63: 42895adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 42905adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 42915adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 42925adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 63 42935adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call memcmp 42945adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 42955adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 42965adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 42975adb5c05SPengcheng Wang; 42985adb5c05SPengcheng Wang; CHECK-RV64-LABEL: memcmp_size_63: 42995adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 43005adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 43015adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 43025adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 63 43035adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call memcmp 43045adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 43055adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 43065adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 43075adb5c05SPengcheng Wangentry: 43085adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 63) 43095adb5c05SPengcheng Wang ret i32 %memcmp 43105adb5c05SPengcheng Wang} 43115adb5c05SPengcheng Wang 43125adb5c05SPengcheng Wangdefine i32 @memcmp_size_64(ptr %s1, ptr %s2) nounwind optsize { 43135adb5c05SPengcheng Wang; CHECK-RV32-LABEL: memcmp_size_64: 43145adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 43155adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 43165adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 43175adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 64 43185adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call memcmp 43195adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 43205adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 43215adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 43225adb5c05SPengcheng Wang; 43235adb5c05SPengcheng Wang; CHECK-RV64-LABEL: memcmp_size_64: 43245adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 43255adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 43265adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 43275adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 64 43285adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call memcmp 43295adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 43305adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 43315adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 43325adb5c05SPengcheng Wangentry: 43335adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 64) 43345adb5c05SPengcheng Wang ret i32 %memcmp 43355adb5c05SPengcheng Wang} 43365adb5c05SPengcheng Wang 43375adb5c05SPengcheng Wangdefine i32 @memcmp_size_127(ptr %s1, ptr %s2) nounwind optsize { 43385adb5c05SPengcheng Wang; CHECK-RV32-LABEL: memcmp_size_127: 43395adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 43405adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 43415adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 43425adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 127 43435adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call memcmp 43445adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 43455adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 43465adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 43475adb5c05SPengcheng Wang; 43485adb5c05SPengcheng Wang; CHECK-RV64-LABEL: memcmp_size_127: 43495adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 43505adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 43515adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 43525adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 127 43535adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call memcmp 43545adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 43555adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 43565adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 43575adb5c05SPengcheng Wangentry: 43585adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 127) 43595adb5c05SPengcheng Wang ret i32 %memcmp 43605adb5c05SPengcheng Wang} 43615adb5c05SPengcheng Wang 43625adb5c05SPengcheng Wangdefine i32 @memcmp_size_128(ptr %s1, ptr %s2) nounwind optsize { 43635adb5c05SPengcheng Wang; CHECK-RV32-LABEL: memcmp_size_128: 43645adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 43655adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 43665adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 43675adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 128 43685adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call memcmp 43695adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 43705adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 43715adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 43725adb5c05SPengcheng Wang; 43735adb5c05SPengcheng Wang; CHECK-RV64-LABEL: memcmp_size_128: 43745adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 43755adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 43765adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 43775adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 128 43785adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call memcmp 43795adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 43805adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 43815adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 43825adb5c05SPengcheng Wangentry: 43835adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 128) 43845adb5c05SPengcheng Wang ret i32 %memcmp 43855adb5c05SPengcheng Wang} 43865adb5c05SPengcheng Wang 43875adb5c05SPengcheng Wangdefine i32 @memcmp_size_runtime(ptr %s1, ptr %s2, iXLen %len) nounwind optsize { 43885adb5c05SPengcheng Wang; CHECK-RV32-LABEL: memcmp_size_runtime: 43895adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 43905adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 43915adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 43925adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call memcmp 43935adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 43945adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 43955adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 43965adb5c05SPengcheng Wang; 43975adb5c05SPengcheng Wang; CHECK-RV64-LABEL: memcmp_size_runtime: 43985adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 43995adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 44005adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 44015adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call memcmp 44025adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 44035adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 44045adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 44055adb5c05SPengcheng Wangentry: 44065adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen %len) 44075adb5c05SPengcheng Wang ret i32 %memcmp 44085adb5c05SPengcheng Wang} 44095adb5c05SPengcheng Wang 44105adb5c05SPengcheng Wangdefine i1 @memcmp_eq_zero(ptr %s1, ptr %s2) nounwind optsize { 44115adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_eq_zero: 44125adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 44135adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a2, 1(a1) 44149122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a3, 2(a1) 44159122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a4, 3(a1) 44169122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a1, 0(a1) 44175adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: slli a2, a2, 8 44189122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: slli a3, a3, 16 44199122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: slli a4, a4, 24 44209122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: or a1, a2, a1 44219122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a2, 0(a0) 44229122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a5, 1(a0) 44235adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: or a3, a4, a3 44249122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a4, 2(a0) 44259122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a0, 3(a0) 44269122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: slli a5, a5, 8 44279122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: or a2, a5, a2 44289122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: slli a4, a4, 16 44295adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: slli a0, a0, 24 44309122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: or a0, a0, a4 44319122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: or a1, a3, a1 44325adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: or a0, a0, a2 44335adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: xor a0, a0, a1 44345adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: seqz a0, a0 44355adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 44365adb5c05SPengcheng Wang; 44375adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_eq_zero: 44385adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 44395adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lbu a2, 1(a1) 44409122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lbu a3, 2(a1) 44419122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lb a4, 3(a1) 44429122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lbu a1, 0(a1) 44435adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slli a2, a2, 8 44449122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slli a3, a3, 16 44459122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slli a4, a4, 24 44469122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: or a1, a2, a1 44479122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lbu a2, 0(a0) 44489122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lbu a5, 1(a0) 44495adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: or a3, a4, a3 44509122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lbu a4, 2(a0) 44519122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lb a0, 3(a0) 44529122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slli a5, a5, 8 44539122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: or a2, a5, a2 44549122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slli a4, a4, 16 44555adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slli a0, a0, 24 44569122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: or a0, a0, a4 44579122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: or a1, a3, a1 44585adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: or a0, a0, a2 44595adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: xor a0, a0, a1 44605adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: seqz a0, a0 44615adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 44625adb5c05SPengcheng Wang; 44635adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_eq_zero: 44645adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 44655adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a2, 1(a1) 44669122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a3, 2(a1) 44679122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a4, 3(a1) 44689122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a1, 0(a1) 44695adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: slli a2, a2, 8 44709122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: slli a3, a3, 16 44719122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: slli a4, a4, 24 44729122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: or a1, a2, a1 44739122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a2, 0(a0) 44749122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a5, 1(a0) 44755adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: or a3, a4, a3 44769122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a4, 2(a0) 44779122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a0, 3(a0) 44789122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: slli a5, a5, 8 44799122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: or a2, a5, a2 44809122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: slli a4, a4, 16 44815adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: slli a0, a0, 24 44829122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: or a0, a0, a4 44839122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: or a1, a3, a1 44845adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: or a0, a0, a2 44855adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: xor a0, a0, a1 44865adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: seqz a0, a0 44875adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 44885adb5c05SPengcheng Wang; 44895adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_eq_zero: 44905adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 44915adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lbu a2, 1(a1) 44929122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lbu a3, 2(a1) 44939122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lb a4, 3(a1) 44949122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lbu a1, 0(a1) 44955adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slli a2, a2, 8 44969122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slli a3, a3, 16 44979122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slli a4, a4, 24 44989122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: or a1, a2, a1 44999122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lbu a2, 0(a0) 45009122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lbu a5, 1(a0) 45015adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: or a3, a4, a3 45029122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lbu a4, 2(a0) 45039122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lb a0, 3(a0) 45049122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slli a5, a5, 8 45059122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: or a2, a5, a2 45069122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slli a4, a4, 16 45075adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slli a0, a0, 24 45089122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: or a0, a0, a4 45099122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: or a1, a3, a1 45105adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: or a0, a0, a2 45115adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: xor a0, a0, a1 45125adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: seqz a0, a0 45135adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 45145adb5c05SPengcheng Wang; 45155adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_eq_zero: 45165adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 45175adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a2, 0(a1) 45185adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a3, 1(a1) 45195adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a4, 2(a1) 45205adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a1, 3(a1) 45219122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a5, 1(a0) 45229122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a6, 2(a0) 45239122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a7, 3(a0) 45249122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a0, 0(a0) 45255adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: packh a1, a4, a1 45265adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: packh a2, a2, a3 45279122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: packh a3, a6, a7 45289122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: packh a0, a0, a5 45295adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: pack a1, a2, a1 45309122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: pack a0, a0, a3 45315adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: xor a0, a0, a1 45325adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: seqz a0, a0 45335adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 45345adb5c05SPengcheng Wang; 45355adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_eq_zero: 45365adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 45375adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lbu a2, 0(a1) 45385adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lbu a3, 1(a1) 45395adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lbu a4, 2(a1) 45405adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lb a1, 3(a1) 45419122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lbu a5, 0(a0) 45429122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lbu a6, 1(a0) 45435adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: packh a2, a2, a3 45449122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lbu a3, 2(a0) 45459122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lb a0, 3(a0) 45469122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: packh a5, a5, a6 45475adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: slli a4, a4, 16 45485adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: slli a1, a1, 24 45495adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: or a1, a1, a4 45509122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: slli a3, a3, 16 45515adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: slli a0, a0, 24 45529122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: or a0, a0, a3 45539122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: or a1, a1, a2 45545adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: or a0, a0, a5 45555adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: xor a0, a0, a1 45565adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: seqz a0, a0 45575adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 45585adb5c05SPengcheng Wang; 45595adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_eq_zero: 45605adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 45615adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a2, 1(a1) 45629122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a3, 2(a1) 45639122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a4, 3(a1) 45649122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a1, 0(a1) 45655adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: slli a2, a2, 8 45669122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: slli a3, a3, 16 45679122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: slli a4, a4, 24 45689122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: or a1, a2, a1 45699122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a2, 0(a0) 45709122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a5, 1(a0) 45715adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: or a3, a4, a3 45729122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a4, 2(a0) 45739122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a0, 3(a0) 45749122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: slli a5, a5, 8 45759122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: or a2, a5, a2 45769122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: slli a4, a4, 16 45775adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: slli a0, a0, 24 45789122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: or a0, a0, a4 45799122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: or a1, a3, a1 45805adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: or a0, a0, a2 45815adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: xor a0, a0, a1 45825adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: seqz a0, a0 45835adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 45845adb5c05SPengcheng Wang; 45855adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_eq_zero: 45865adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 45875adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lbu a2, 1(a1) 45889122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lbu a3, 2(a1) 45899122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lb a4, 3(a1) 45909122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lbu a1, 0(a1) 45915adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slli a2, a2, 8 45929122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slli a3, a3, 16 45939122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slli a4, a4, 24 45949122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: or a1, a2, a1 45959122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lbu a2, 0(a0) 45969122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lbu a5, 1(a0) 45975adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: or a3, a4, a3 45989122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lbu a4, 2(a0) 45999122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lb a0, 3(a0) 46009122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slli a5, a5, 8 46019122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: or a2, a5, a2 46029122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slli a4, a4, 16 46035adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slli a0, a0, 24 46049122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: or a0, a0, a4 46059122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: or a1, a3, a1 46065adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: or a0, a0, a2 46075adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: xor a0, a0, a1 46085adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: seqz a0, a0 46095adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 46105adb5c05SPengcheng Wang; 46115adb5c05SPengcheng Wang; CHECK-UNALIGNED-LABEL: memcmp_eq_zero: 46125adb5c05SPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 46135adb5c05SPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a0, 0(a0) 46147a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a1, 0(a1) 46155adb5c05SPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 46165adb5c05SPengcheng Wang; CHECK-UNALIGNED-NEXT: seqz a0, a0 46175adb5c05SPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 46185adb5c05SPengcheng Wangentry: 46195adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4) 46205adb5c05SPengcheng Wang %ret = icmp eq i32 %memcmp, 0 46215adb5c05SPengcheng Wang ret i1 %ret 46225adb5c05SPengcheng Wang} 46235adb5c05SPengcheng Wang 46245adb5c05SPengcheng Wangdefine i1 @memcmp_lt_zero(ptr %s1, ptr %s2) nounwind optsize { 46257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_lt_zero: 46267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 46277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 46287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 46297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 46307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 46317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: srli a0, a0, 31 46327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 46337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 46347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 46355adb5c05SPengcheng Wang; 46367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_lt_zero: 46377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 46387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 46397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 46407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 46417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 46427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slti a0, a0, 0 46437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 46447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 46457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 46467a5b040eSPengcheng Wang; 46477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_lt_zero: 46487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 46497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 46507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 46517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 46527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 46537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: srli a0, a0, 31 46547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 46557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 46567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 46577a5b040eSPengcheng Wang; 46587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_lt_zero: 46597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 46607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 46617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 46627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 46637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 46647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slti a0, a0, 0 46657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 46667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 46677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 46687a5b040eSPengcheng Wang; 46697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_lt_zero: 46707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 46717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 46727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 46737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 46747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 46757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: srli a0, a0, 31 46767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 46777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 46787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 46797a5b040eSPengcheng Wang; 46807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_lt_zero: 46817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 46827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 46837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 46847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 46857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 46867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: slti a0, a0, 0 46877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 46887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 46897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 46907a5b040eSPengcheng Wang; 46917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_lt_zero: 46927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 46937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 46947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 46957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 46967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 46977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: srli a0, a0, 31 46987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 46997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 47007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 47017a5b040eSPengcheng Wang; 47027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_lt_zero: 47037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 47047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 47057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 47067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 47077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 47087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slti a0, a0, 0 47097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 47107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 47117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 47127a5b040eSPengcheng Wang; 47137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_lt_zero: 47147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 47157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 47167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 47177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 4 47187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 47197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: srli a0, a0, 31 47207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 47217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 47227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 47237a5b040eSPengcheng Wang; 47247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_lt_zero: 47257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 47267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 47277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 47287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 4 47297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 47307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: slti a0, a0, 0 47317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 47327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 47337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 47347a5b040eSPengcheng Wang; 47357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_lt_zero: 47367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 47377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 0(a0) 47387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 0(a1) 47397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0 47407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1 47417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a0, a1 47427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 47437a5b040eSPengcheng Wang; 47447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_lt_zero: 47457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 47467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a0, 0(a0) 47477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a1, 0(a1) 47487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 47497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 47509122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 32 47517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 32 47527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a0, a1 47537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 47547a5b040eSPengcheng Wang; 47557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_lt_zero: 47567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 47577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 0(a0) 47587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 0(a1) 47597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0 47607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1 47617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a0, a1 47627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 47637a5b040eSPengcheng Wang; 47647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_lt_zero: 47657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 47667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a0, 0(a0) 47677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a1, 0(a1) 47687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 47697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 47709122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 32 47717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 32 47727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a0, a1 47737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 47747a5b040eSPengcheng Wang; 47757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_lt_zero: 47767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 47777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 47787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 47797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 4 47807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 47817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: srli a0, a0, 31 47827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 47837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 47847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 47857a5b040eSPengcheng Wang; 47867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_lt_zero: 47877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 47887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 47897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 47907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 4 47917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 47927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: slti a0, a0, 0 47937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 47947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 47957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 47965adb5c05SPengcheng Wangentry: 47975adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4) 47985adb5c05SPengcheng Wang %ret = icmp slt i32 %memcmp, 0 47995adb5c05SPengcheng Wang ret i1 %ret 48005adb5c05SPengcheng Wang} 48015adb5c05SPengcheng Wang 48025adb5c05SPengcheng Wangdefine i1 @memcmp_gt_zero(ptr %s1, ptr %s2) nounwind optsize { 48037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_gt_zero: 48047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 48057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 48067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 48077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 48087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 48097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sgtz a0, a0 48107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 48117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 48127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 48135adb5c05SPengcheng Wang; 48147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_gt_zero: 48157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 48167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 48177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 48187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 48197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 48207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sgtz a0, a0 48217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 48227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 48237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 48247a5b040eSPengcheng Wang; 48257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_gt_zero: 48267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 48277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 48287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 48297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 48307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 48317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sgtz a0, a0 48327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 48337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 48347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 48357a5b040eSPengcheng Wang; 48367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_gt_zero: 48377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 48387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 48397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 48407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 48417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 48427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sgtz a0, a0 48437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 48447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 48457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 48467a5b040eSPengcheng Wang; 48477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_gt_zero: 48487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 48497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 48507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 48517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 48527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 48537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sgtz a0, a0 48547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 48557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 48567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 48577a5b040eSPengcheng Wang; 48587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_gt_zero: 48597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 48607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 48617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 48627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 48637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 48647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sgtz a0, a0 48657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 48667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 48677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 48687a5b040eSPengcheng Wang; 48697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_gt_zero: 48707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 48717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 48727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 48737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 48747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 48757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sgtz a0, a0 48767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 48777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 48787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 48797a5b040eSPengcheng Wang; 48807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_gt_zero: 48817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 48827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 48837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 48847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 48857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 48867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sgtz a0, a0 48877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 48887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 48897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 48907a5b040eSPengcheng Wang; 48917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_gt_zero: 48927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 48937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 48947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 48957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 4 48967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 48977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sgtz a0, a0 48987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 48997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 49007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 49017a5b040eSPengcheng Wang; 49027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_gt_zero: 49037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 49047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 49057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 49067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 4 49077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 49087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sgtz a0, a0 49097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 49107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 49117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 49127a5b040eSPengcheng Wang; 49137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_gt_zero: 49147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 49157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 0(a0) 49167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 0(a1) 49177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0 49187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1 49197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a1, a0 49207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 49217a5b040eSPengcheng Wang; 49227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_gt_zero: 49237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 49247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a0, 0(a0) 49257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a1, 0(a1) 49267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 49277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 49289122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 32 49297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 32 49307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 49317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 49327a5b040eSPengcheng Wang; 49337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_gt_zero: 49347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 49357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 0(a0) 49367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 0(a1) 49377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0 49387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1 49397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a1, a0 49407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 49417a5b040eSPengcheng Wang; 49427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_gt_zero: 49437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 49447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a0, 0(a0) 49457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a1, 0(a1) 49467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 49477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 49489122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 32 49497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 32 49507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 49517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 49527a5b040eSPengcheng Wang; 49537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_gt_zero: 49547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 49557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 49567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 49577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 4 49587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 49597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sgtz a0, a0 49607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 49617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 49627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 49637a5b040eSPengcheng Wang; 49647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_gt_zero: 49657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 49667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 49677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 49687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 4 49697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 49707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sgtz a0, a0 49717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 49727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 49737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 49745adb5c05SPengcheng Wangentry: 49755adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4) 49765adb5c05SPengcheng Wang %ret = icmp sgt i32 %memcmp, 0 49775adb5c05SPengcheng Wang ret i1 %ret 49785adb5c05SPengcheng Wang} 49795adb5c05SPengcheng Wang;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 49805adb5c05SPengcheng Wang; CHECK-ALIGNED: {{.*}} 4981