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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 13227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_size_31: 13237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 13247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 13257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 13267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 31 13277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 13287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 13297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 13307a5b040eSPengcheng Wang; CHECK-ALIGNED-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-RV32-ZBB-LABEL: bcmp_size_31: 13437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 13447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 13457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 13467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 31 13477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 13487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 13497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 13507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 13517a5b040eSPengcheng Wang; 13527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_31: 13537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 13547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 13557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 13567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 31 13577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 13587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 13597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 13607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 13617a5b040eSPengcheng Wang; 13627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_31: 13637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 13647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 13657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 13667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 31 13677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 13687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 13697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 13707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 13717a5b040eSPengcheng Wang; 13727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_31: 13737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 13747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 13757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 13767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 31 13777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 13787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 13797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 13807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 13817a5b040eSPengcheng Wang; 13827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_31: 13837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 13847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 13857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 13867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 31 13877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 13887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 13897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 13907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 13917a5b040eSPengcheng Wang; 13927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_31: 13937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 13947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 13957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 13967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 31 13977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 13987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 13997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 14007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 14017a5b040eSPengcheng Wang; 14027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_31: 14037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 14047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a2, 0(a0) 14057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a3, 4(a0) 14067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a4, 8(a0) 14077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a5, 12(a0) 14087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a6, 0(a1) 14097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a7, 4(a1) 14107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw t0, 8(a1) 14117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw t1, 12(a1) 14127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a2, a2, a6 14139122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a6, 16(a0) 14149122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw t2, 20(a0) 14159122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw t3, 24(a0) 14169122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a0, 27(a0) 14177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a3, a3, a7 14187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a4, a4, t0 14197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a5, a5, t1 14209122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a7, 16(a1) 14219122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw t0, 20(a1) 14229122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw t1, 24(a1) 14237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a1, 27(a1) 14249122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a6, a6, a7 14259122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a7, t2, t0 14269122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor t0, t3, t1 14277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a0, a0, a1 14287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a2, a2, a3 14297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a4, a4, a5 14307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a1, a6, a7 14317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a0, t0, a0 14327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a2, a2, a4 14337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a0, a1, a0 14347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a0, a2, a0 14357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: snez a0, a0 14367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 14377a5b040eSPengcheng Wang; 14387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_31: 14397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 14407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a2, 0(a0) 14417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a3, 8(a0) 14427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a4, 16(a0) 14437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a0, 23(a0) 14447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a5, 0(a1) 14457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a6, 8(a1) 14467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a7, 16(a1) 14477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a1, 23(a1) 14487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a2, a2, a5 14497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a3, a3, a6 14507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a4, a4, a7 14517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a0, a0, a1 14527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a2, a2, a3 14537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a4, a0 14547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a2, a0 14557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: snez a0, a0 14567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 14577a5b040eSPengcheng Wang; 14587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_31: 14597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 14607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 14617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 4(a0) 14627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a4, 8(a0) 14637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a5, 12(a0) 14647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a6, 0(a1) 14657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a7, 4(a1) 14667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw t0, 8(a1) 14677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw t1, 12(a1) 14687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a2, a2, a6 14699122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a6, 16(a0) 14709122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw t2, 20(a0) 14719122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw t3, 24(a0) 14729122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 27(a0) 14737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a3, a3, a7 14747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a4, a4, t0 14757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a5, a5, t1 14769122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a7, 16(a1) 14779122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw t0, 20(a1) 14789122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw t1, 24(a1) 14797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 27(a1) 14809122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a6, a6, a7 14819122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a7, t2, t0 14829122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor t0, t3, t1 14837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a0, a0, a1 14847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a2, a2, a3 14857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a4, a4, a5 14867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a1, a6, a7 14877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, t0, a0 14887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a2, a2, a4 14897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, a1, a0 14907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, a2, a0 14917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: snez a0, a0 14927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 14937a5b040eSPengcheng Wang; 14947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_31: 14957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 14967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 14977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 8(a0) 14987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a4, 16(a0) 14997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 23(a0) 15007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a5, 0(a1) 15017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a6, 8(a1) 15027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a7, 16(a1) 15037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 23(a1) 15047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a2, a2, a5 15057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a3, a3, a6 15067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a4, a4, a7 15077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a0, a0, a1 15087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a2, a2, a3 15097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a4, a0 15107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a2, a0 15117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: snez a0, a0 15127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 15137a5b040eSPengcheng Wang; 15147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_31: 15157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 15167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 15177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 4(a0) 15187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a4, 8(a0) 15197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a5, 12(a0) 15207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a6, 0(a1) 15217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a7, 4(a1) 15227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw t0, 8(a1) 15237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw t1, 12(a1) 15247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a2, a2, a6 15259122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a6, 16(a0) 15269122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw t2, 20(a0) 15279122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw t3, 24(a0) 15289122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 27(a0) 15297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a3, a3, a7 15307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a4, a4, t0 15317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a5, a5, t1 15329122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a7, 16(a1) 15339122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw t0, 20(a1) 15349122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw t1, 24(a1) 15357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 27(a1) 15369122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a6, a6, a7 15379122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a7, t2, t0 15389122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor t0, t3, t1 15397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a0, a0, a1 15407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a2, a2, a3 15417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a4, a4, a5 15427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a1, a6, a7 15437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a0, t0, a0 15447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a2, a2, a4 15457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a0, a1, a0 15467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a0, a2, a0 15477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: snez a0, a0 15487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 15497a5b040eSPengcheng Wang; 15507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_31: 15517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 15527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 15537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 8(a0) 15547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a4, 16(a0) 15557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 23(a0) 15567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a5, 0(a1) 15577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a6, 8(a1) 15587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a7, 16(a1) 15597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 23(a1) 15607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a2, a2, a5 15617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a3, a3, a6 15627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a4, a4, a7 15637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a0, a0, a1 15647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a2, a2, a3 15657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a4, a0 15667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a2, a0 15677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: snez a0, a0 15687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 15697a5b040eSPengcheng Wang; 15707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_31: 15717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 15727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a2, 0(a0) 15737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a3, 4(a0) 15747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a4, 8(a0) 15757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a5, 12(a0) 15767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a6, 0(a1) 15777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a7, 4(a1) 15787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw t0, 8(a1) 15797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw t1, 12(a1) 15807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a2, a2, a6 15819122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a6, 16(a0) 15829122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw t2, 20(a0) 15839122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw t3, 24(a0) 15849122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a0, 27(a0) 15857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a3, a3, a7 15867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a4, a4, t0 15877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a5, a5, t1 15889122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a7, 16(a1) 15899122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw t0, 20(a1) 15909122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw t1, 24(a1) 15917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a1, 27(a1) 15929122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a6, a6, a7 15939122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a7, t2, t0 15949122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor t0, t3, t1 15957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a0, a0, a1 15967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a2, a2, a3 15977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a4, a4, a5 15987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a1, a6, a7 15997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a0, t0, a0 16007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a2, a2, a4 16017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a0, a1, a0 16027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a0, a2, a0 16037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: snez a0, a0 16047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 16057a5b040eSPengcheng Wang; 16067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_31: 16077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 16087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a2, 0(a0) 16097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a3, 8(a0) 16107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a4, 16(a0) 16117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a0, 23(a0) 16127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a5, 0(a1) 16137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a6, 8(a1) 16147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a7, 16(a1) 16157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a1, 23(a1) 16167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a2, a2, a5 16177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a3, a3, a6 16187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a4, a4, a7 16197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a0, a0, a1 16207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a2, a2, a3 16217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a4, a0 16227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a2, a0 16237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: snez a0, a0 16247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 16255adb5c05SPengcheng Wangentry: 16265adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 31) 16275adb5c05SPengcheng Wang ret i32 %bcmp 16285adb5c05SPengcheng Wang} 16295adb5c05SPengcheng Wang 16305adb5c05SPengcheng Wangdefine i32 @bcmp_size_32(ptr %s1, ptr %s2) nounwind { 16317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_size_32: 16327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 16337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 16347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 16357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 32 16367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 16377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 16387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 16397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 16405adb5c05SPengcheng Wang; 16417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_32: 16427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 16437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 16447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 16457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 32 16467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 16477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 16487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 16497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 16507a5b040eSPengcheng Wang; 16517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_32: 16527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 16537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 16547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 16557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 32 16567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 16577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 16587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 16597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 16607a5b040eSPengcheng Wang; 16617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_32: 16627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 16637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 16647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 16657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 32 16667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 16677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 16687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 16697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 16707a5b040eSPengcheng Wang; 16717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_32: 16727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 16737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 16747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 16757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 32 16767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 16777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 16787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 16797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 16807a5b040eSPengcheng Wang; 16817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_32: 16827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 16837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 16847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 16857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 32 16867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 16877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 16887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 16897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 16907a5b040eSPengcheng Wang; 16917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_32: 16927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 16937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 16947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 16957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 32 16967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 16977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 16987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 16997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 17007a5b040eSPengcheng Wang; 17017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_32: 17027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 17037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 17047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 17057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 32 17067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 17077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 17087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 17097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 17107a5b040eSPengcheng Wang; 17117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_32: 17127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 17137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a2, 0(a0) 17147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a3, 4(a0) 17157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a4, 8(a0) 17167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a5, 12(a0) 17177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a6, 0(a1) 17187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a7, 4(a1) 17197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw t0, 8(a1) 17207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw t1, 12(a1) 17217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a2, a2, a6 17229122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a6, 16(a0) 17239122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw t2, 20(a0) 17249122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw t3, 24(a0) 17259122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a0, 28(a0) 17267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a3, a3, a7 17277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a4, a4, t0 17287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a5, a5, t1 17299122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a7, 16(a1) 17309122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw t0, 20(a1) 17319122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw t1, 24(a1) 17327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw a1, 28(a1) 17339122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a6, a6, a7 17349122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a7, t2, t0 17359122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor t0, t3, t1 17367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: xor a0, a0, a1 17377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a2, a2, a3 17387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a4, a4, a5 17397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a1, a6, a7 17407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a0, t0, a0 17417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a2, a2, a4 17427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a0, a1, a0 17437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: or a0, a2, a0 17447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: snez a0, a0 17457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 17467a5b040eSPengcheng Wang; 17477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_32: 17487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 17497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a2, 0(a0) 17507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a3, 8(a0) 17517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a4, 16(a0) 17527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a0, 24(a0) 17537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a5, 0(a1) 17547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a6, 8(a1) 17557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a7, 16(a1) 17567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a1, 24(a1) 17577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a2, a2, a5 17587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a3, a3, a6 17597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a4, a4, a7 17607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a0, a0, a1 17617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a2, a2, a3 17627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a4, a0 17637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a2, a0 17647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: snez a0, a0 17657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 17667a5b040eSPengcheng Wang; 17677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_32: 17687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 17697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 17707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 4(a0) 17717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a4, 8(a0) 17727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a5, 12(a0) 17737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a6, 0(a1) 17747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a7, 4(a1) 17757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw t0, 8(a1) 17767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw t1, 12(a1) 17777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a2, a2, a6 17789122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a6, 16(a0) 17799122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw t2, 20(a0) 17809122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw t3, 24(a0) 17819122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 28(a0) 17827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a3, a3, a7 17837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a4, a4, t0 17847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a5, a5, t1 17859122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a7, 16(a1) 17869122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw t0, 20(a1) 17879122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw t1, 24(a1) 17887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 28(a1) 17899122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a6, a6, a7 17909122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a7, t2, t0 17919122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor t0, t3, t1 17927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: xor a0, a0, a1 17937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a2, a2, a3 17947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a4, a4, a5 17957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a1, a6, a7 17967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, t0, a0 17977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a2, a2, a4 17987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, a1, a0 17997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, a2, a0 18007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: snez a0, a0 18017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 18027a5b040eSPengcheng Wang; 18037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_32: 18047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 18057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 18067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 8(a0) 18077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a4, 16(a0) 18087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 24(a0) 18097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a5, 0(a1) 18107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a6, 8(a1) 18117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a7, 16(a1) 18127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 24(a1) 18137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a2, a2, a5 18147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a3, a3, a6 18157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a4, a4, a7 18167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a0, a0, a1 18177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a2, a2, a3 18187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a4, a0 18197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a2, a0 18207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: snez a0, a0 18217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 18227a5b040eSPengcheng Wang; 18237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_32: 18247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 18257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 18267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 4(a0) 18277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a4, 8(a0) 18287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a5, 12(a0) 18297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a6, 0(a1) 18307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a7, 4(a1) 18317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw t0, 8(a1) 18327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw t1, 12(a1) 18337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a2, a2, a6 18349122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a6, 16(a0) 18359122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw t2, 20(a0) 18369122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw t3, 24(a0) 18379122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 28(a0) 18387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a3, a3, a7 18397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a4, a4, t0 18407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a5, a5, t1 18419122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a7, 16(a1) 18429122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw t0, 20(a1) 18439122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw t1, 24(a1) 18447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 28(a1) 18459122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a6, a6, a7 18469122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a7, t2, t0 18479122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor t0, t3, t1 18487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xor a0, a0, a1 18497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a2, a2, a3 18507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a4, a4, a5 18517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a1, a6, a7 18527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a0, t0, a0 18537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a2, a2, a4 18547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a0, a1, a0 18557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: or a0, a2, a0 18567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: snez a0, a0 18577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 18587a5b040eSPengcheng Wang; 18597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_32: 18607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 18617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 18627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 8(a0) 18637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a4, 16(a0) 18647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 24(a0) 18657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a5, 0(a1) 18667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a6, 8(a1) 18677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a7, 16(a1) 18687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 24(a1) 18697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a2, a2, a5 18707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a3, a3, a6 18717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a4, a4, a7 18727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a0, a0, a1 18737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a2, a2, a3 18747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a4, a0 18757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a2, a0 18767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: snez a0, a0 18777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 18787a5b040eSPengcheng Wang; 18797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_32: 18807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 18817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a2, 0(a0) 18827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a3, 4(a0) 18837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a4, 8(a0) 18847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a5, 12(a0) 18857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a6, 0(a1) 18867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a7, 4(a1) 18877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw t0, 8(a1) 18887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw t1, 12(a1) 18897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a2, a2, a6 18909122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a6, 16(a0) 18919122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw t2, 20(a0) 18929122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw t3, 24(a0) 18939122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a0, 28(a0) 18947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a3, a3, a7 18957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a4, a4, t0 18967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a5, a5, t1 18979122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a7, 16(a1) 18989122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw t0, 20(a1) 18999122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw t1, 24(a1) 19007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw a1, 28(a1) 19019122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a6, a6, a7 19029122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a7, t2, t0 19039122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor t0, t3, t1 19047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: xor a0, a0, a1 19057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a2, a2, a3 19067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a4, a4, a5 19077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a1, a6, a7 19087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a0, t0, a0 19097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a2, a2, a4 19107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a0, a1, a0 19117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: or a0, a2, a0 19127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: snez a0, a0 19137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 19147a5b040eSPengcheng Wang; 19157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_32: 19167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 19177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a2, 0(a0) 19187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a3, 8(a0) 19197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a4, 16(a0) 19207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a0, 24(a0) 19217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a5, 0(a1) 19227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a6, 8(a1) 19237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a7, 16(a1) 19247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a1, 24(a1) 19257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a2, a2, a5 19267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a3, a3, a6 19277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a4, a4, a7 19287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a0, a0, a1 19297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a2, a2, a3 19307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a4, a0 19317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a2, a0 19327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: snez a0, a0 19337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 19345adb5c05SPengcheng Wangentry: 19355adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 32) 19365adb5c05SPengcheng Wang ret i32 %bcmp 19375adb5c05SPengcheng Wang} 19385adb5c05SPengcheng Wang 19395adb5c05SPengcheng Wangdefine i32 @bcmp_size_63(ptr %s1, ptr %s2) nounwind { 19405adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_63: 19415adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 19425adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 19435adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 19445adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 63 19455adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 19465adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 19475adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 19485adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 19495adb5c05SPengcheng Wang; 19507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_63: 19517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 19527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 19537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 19547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 63 19557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 19567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 19577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 19587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 19597a5b040eSPengcheng Wang; 19607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_63: 19617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 19627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 19637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 19647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 63 19657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 19667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 19677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 19687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 19697a5b040eSPengcheng Wang; 19707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_63: 19717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 19727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 19737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 19747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 63 19757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 19767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 19777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 19787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 19797a5b040eSPengcheng Wang; 19807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_63: 19817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 19827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 19837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 19847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 63 19857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 19867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 19877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 19887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 19897a5b040eSPengcheng Wang; 19907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_63: 19917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 19927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a2, 0(a0) 19937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a3, 8(a0) 19947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a4, 16(a0) 19957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a5, 24(a0) 19967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a6, 0(a1) 19977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a7, 8(a1) 19987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld t0, 16(a1) 19997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld t1, 24(a1) 20007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a2, a2, a6 20019122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a6, 32(a0) 20029122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld t2, 40(a0) 20039122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld t3, 48(a0) 20049122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a0, 55(a0) 20057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a3, a3, a7 20067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a4, a4, t0 20077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a5, a5, t1 20089122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a7, 32(a1) 20099122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld t0, 40(a1) 20109122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld t1, 48(a1) 20117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a1, 55(a1) 20129122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a6, a6, a7 20139122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a7, t2, t0 20149122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor t0, t3, t1 20157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a0, a0, a1 20167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a2, a2, a3 20177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a4, a4, a5 20187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a1, a6, a7 20197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, t0, a0 20207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a2, a2, a4 20217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a1, a0 20227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a2, a0 20237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: snez a0, a0 20247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 20257a5b040eSPengcheng Wang; 20267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_63: 20277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 20287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 20297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 8(a0) 20307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a4, 16(a0) 20317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a5, 24(a0) 20327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a6, 0(a1) 20337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a7, 8(a1) 20347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld t0, 16(a1) 20357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld t1, 24(a1) 20367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a2, a2, a6 20379122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a6, 32(a0) 20389122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld t2, 40(a0) 20399122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld t3, 48(a0) 20409122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 55(a0) 20417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a3, a3, a7 20427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a4, a4, t0 20437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a5, a5, t1 20449122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a7, 32(a1) 20459122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld t0, 40(a1) 20469122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld t1, 48(a1) 20477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 55(a1) 20489122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a6, a6, a7 20499122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a7, t2, t0 20509122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor t0, t3, t1 20517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a0, a0, a1 20527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a2, a2, a3 20537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a4, a4, a5 20547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a1, a6, a7 20557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, t0, a0 20567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a2, a2, a4 20577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a1, a0 20587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a2, a0 20597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: snez a0, a0 20607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 20617a5b040eSPengcheng Wang; 20627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_63: 20637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 20647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 20657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 8(a0) 20667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a4, 16(a0) 20677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a5, 24(a0) 20687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a6, 0(a1) 20697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a7, 8(a1) 20707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld t0, 16(a1) 20717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld t1, 24(a1) 20727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a2, a2, a6 20739122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a6, 32(a0) 20749122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld t2, 40(a0) 20759122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld t3, 48(a0) 20769122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 55(a0) 20777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a3, a3, a7 20787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a4, a4, t0 20797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a5, a5, t1 20809122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a7, 32(a1) 20819122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld t0, 40(a1) 20829122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld t1, 48(a1) 20837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 55(a1) 20849122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a6, a6, a7 20859122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a7, t2, t0 20869122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor t0, t3, t1 20877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a0, a0, a1 20887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a2, a2, a3 20897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a4, a4, a5 20907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a1, a6, a7 20917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, t0, a0 20927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a2, a2, a4 20937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a1, a0 20947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a2, a0 20957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: snez a0, a0 20967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 20977a5b040eSPengcheng Wang; 20987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_63: 20997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 21007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a2, 0(a0) 21017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a3, 8(a0) 21027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a4, 16(a0) 21037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a5, 24(a0) 21047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a6, 0(a1) 21057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a7, 8(a1) 21067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld t0, 16(a1) 21077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld t1, 24(a1) 21087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a2, a2, a6 21099122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a6, 32(a0) 21109122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld t2, 40(a0) 21119122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld t3, 48(a0) 21129122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a0, 55(a0) 21137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a3, a3, a7 21147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a4, a4, t0 21157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a5, a5, t1 21169122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a7, 32(a1) 21179122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld t0, 40(a1) 21189122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld t1, 48(a1) 21197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a1, 55(a1) 21209122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a6, a6, a7 21219122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a7, t2, t0 21229122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor t0, t3, t1 21237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a0, a0, a1 21247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a2, a2, a3 21257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a4, a4, a5 21267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a1, a6, a7 21277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, t0, a0 21287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a2, a2, a4 21297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a1, a0 21307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a2, a0 21317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: snez a0, a0 21327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 21335adb5c05SPengcheng Wangentry: 21345adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 63) 21355adb5c05SPengcheng Wang ret i32 %bcmp 21365adb5c05SPengcheng Wang} 21375adb5c05SPengcheng Wang 21385adb5c05SPengcheng Wangdefine i32 @bcmp_size_64(ptr %s1, ptr %s2) nounwind { 21395adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_64: 21405adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 21415adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 21425adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 21435adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 64 21445adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 21455adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 21465adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 21475adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 21485adb5c05SPengcheng Wang; 21497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_size_64: 21507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 21517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 21527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 21537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 64 21547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 21557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 21567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 21577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 21587a5b040eSPengcheng Wang; 21597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_64: 21607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 21617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 21627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 21637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 64 21647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 21657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 21667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 21677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 21687a5b040eSPengcheng Wang; 21697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_64: 21707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 21717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 21727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 21737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 64 21747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 21757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 21767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 21777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 21787a5b040eSPengcheng Wang; 21797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_64: 21807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 21817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 21827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 21837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 64 21847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 21857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 21867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 21877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 21887a5b040eSPengcheng Wang; 21897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_64: 21907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 21917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a2, 0(a0) 21927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a3, 8(a0) 21937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a4, 16(a0) 21947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a5, 24(a0) 21957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a6, 0(a1) 21967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a7, 8(a1) 21977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld t0, 16(a1) 21987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld t1, 24(a1) 21997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a2, a2, a6 22009122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a6, 32(a0) 22019122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld t2, 40(a0) 22029122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld t3, 48(a0) 22039122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a0, 56(a0) 22047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a3, a3, a7 22057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a4, a4, t0 22067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a5, a5, t1 22079122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a7, 32(a1) 22089122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld t0, 40(a1) 22099122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld t1, 48(a1) 22107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld a1, 56(a1) 22119122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a6, a6, a7 22129122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a7, t2, t0 22139122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor t0, t3, t1 22147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: xor a0, a0, a1 22157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a2, a2, a3 22167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a4, a4, a5 22177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a1, a6, a7 22187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, t0, a0 22197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a2, a2, a4 22207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a1, a0 22217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: or a0, a2, a0 22227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: snez a0, a0 22237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 22247a5b040eSPengcheng Wang; 22257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_64: 22267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 22277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 22287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 8(a0) 22297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a4, 16(a0) 22307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a5, 24(a0) 22317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a6, 0(a1) 22327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a7, 8(a1) 22337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld t0, 16(a1) 22347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld t1, 24(a1) 22357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a2, a2, a6 22369122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a6, 32(a0) 22379122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld t2, 40(a0) 22389122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld t3, 48(a0) 22399122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 56(a0) 22407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a3, a3, a7 22417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a4, a4, t0 22427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a5, a5, t1 22439122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a7, 32(a1) 22449122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld t0, 40(a1) 22459122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld t1, 48(a1) 22467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 56(a1) 22479122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a6, a6, a7 22489122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a7, t2, t0 22499122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor t0, t3, t1 22507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: xor a0, a0, a1 22517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a2, a2, a3 22527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a4, a4, a5 22537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a1, a6, a7 22547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, t0, a0 22557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a2, a2, a4 22567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a1, a0 22577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a2, a0 22587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: snez a0, a0 22597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 22607a5b040eSPengcheng Wang; 22617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_64: 22627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 22637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 22647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 8(a0) 22657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a4, 16(a0) 22667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a5, 24(a0) 22677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a6, 0(a1) 22687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a7, 8(a1) 22697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld t0, 16(a1) 22707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld t1, 24(a1) 22717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a2, a2, a6 22729122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a6, 32(a0) 22739122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld t2, 40(a0) 22749122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld t3, 48(a0) 22759122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 56(a0) 22767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a3, a3, a7 22777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a4, a4, t0 22787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a5, a5, t1 22799122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a7, 32(a1) 22809122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld t0, 40(a1) 22819122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld t1, 48(a1) 22827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 56(a1) 22839122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a6, a6, a7 22849122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a7, t2, t0 22859122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor t0, t3, t1 22867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xor a0, a0, a1 22877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a2, a2, a3 22887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a4, a4, a5 22897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a1, a6, a7 22907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, t0, a0 22917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a2, a2, a4 22927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a1, a0 22937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a2, a0 22947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: snez a0, a0 22957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 22967a5b040eSPengcheng Wang; 22977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_64: 22987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 22997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a2, 0(a0) 23007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a3, 8(a0) 23017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a4, 16(a0) 23027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a5, 24(a0) 23037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a6, 0(a1) 23047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a7, 8(a1) 23057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld t0, 16(a1) 23067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld t1, 24(a1) 23077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a2, a2, a6 23089122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a6, 32(a0) 23099122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld t2, 40(a0) 23109122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld t3, 48(a0) 23119122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a0, 56(a0) 23127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a3, a3, a7 23137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a4, a4, t0 23147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a5, a5, t1 23159122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a7, 32(a1) 23169122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld t0, 40(a1) 23179122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld t1, 48(a1) 23187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld a1, 56(a1) 23199122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a6, a6, a7 23209122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a7, t2, t0 23219122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor t0, t3, t1 23227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: xor a0, a0, a1 23237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a2, a2, a3 23247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a4, a4, a5 23257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a1, a6, a7 23267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, t0, a0 23277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a2, a2, a4 23287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a1, a0 23297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: or a0, a2, a0 23307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: snez a0, a0 23317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 23325adb5c05SPengcheng Wangentry: 23335adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 64) 23345adb5c05SPengcheng Wang ret i32 %bcmp 23355adb5c05SPengcheng Wang} 23365adb5c05SPengcheng Wang 23375adb5c05SPengcheng Wangdefine i32 @bcmp_size_127(ptr %s1, ptr %s2) nounwind { 23385adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_127: 23395adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 23405adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 23415adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 23425adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 127 23435adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 23445adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 23455adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 23465adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 23475adb5c05SPengcheng Wang; 23485adb5c05SPengcheng Wang; CHECK-RV64-LABEL: bcmp_size_127: 23495adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 23505adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 23515adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 23525adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 127 23535adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call bcmp 23545adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 23555adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 23565adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 23575adb5c05SPengcheng Wangentry: 23585adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 127) 23595adb5c05SPengcheng Wang ret i32 %bcmp 23605adb5c05SPengcheng Wang} 23615adb5c05SPengcheng Wang 23625adb5c05SPengcheng Wangdefine i32 @bcmp_size_128(ptr %s1, ptr %s2) nounwind { 23635adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_128: 23645adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 23655adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 23665adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 23675adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 128 23685adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 23695adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 23705adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 23715adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 23725adb5c05SPengcheng Wang; 23735adb5c05SPengcheng Wang; CHECK-RV64-LABEL: bcmp_size_128: 23745adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 23755adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 23765adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 23775adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 128 23785adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call bcmp 23795adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 23805adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 23815adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 23825adb5c05SPengcheng Wangentry: 23835adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 128) 23845adb5c05SPengcheng Wang ret i32 %bcmp 23855adb5c05SPengcheng Wang} 23865adb5c05SPengcheng Wang 23875adb5c05SPengcheng Wangdefine i32 @bcmp_size_runtime(ptr %s1, ptr %s2, iXLen %len) nounwind { 23885adb5c05SPengcheng Wang; CHECK-RV32-LABEL: bcmp_size_runtime: 23895adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 23905adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 23915adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 23925adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call bcmp 23935adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 23945adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 23955adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 23965adb5c05SPengcheng Wang; 23975adb5c05SPengcheng Wang; CHECK-RV64-LABEL: bcmp_size_runtime: 23985adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 23995adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 24005adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 24015adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call bcmp 24025adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 24035adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 24045adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 24055adb5c05SPengcheng Wangentry: 24065adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen %len) 24075adb5c05SPengcheng Wang ret i32 %bcmp 24085adb5c05SPengcheng Wang} 24095adb5c05SPengcheng Wang 24105adb5c05SPengcheng Wangdefine i1 @bcmp_eq_zero(ptr %s1, ptr %s2) nounwind { 24117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_eq_zero: 24127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 24137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 24147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 24157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 24167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 24177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: seqz a0, a0 24187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 24197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 24207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 24215adb5c05SPengcheng Wang; 24227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_eq_zero: 24237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 24247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 24257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 24267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 24277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 24287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: seqz a0, a0 24297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 24307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 24317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 24327a5b040eSPengcheng Wang; 24337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_eq_zero: 24347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 24357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 24367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 24377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 24387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 24397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: seqz a0, a0 24407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 24417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 24427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 24437a5b040eSPengcheng Wang; 24447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_eq_zero: 24457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 24467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 24477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 24487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 24497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 24507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: seqz a0, a0 24517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 24527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 24537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 24547a5b040eSPengcheng Wang; 24557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_eq_zero: 24567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 24577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 24587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 24597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 24607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 24617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: seqz a0, a0 24627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 24637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 24647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 24657a5b040eSPengcheng Wang; 24667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_eq_zero: 24677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 24687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 24697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 24707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 24717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 24727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: seqz a0, a0 24737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 24747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 24757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 24767a5b040eSPengcheng Wang; 24777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_eq_zero: 24787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 24797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 24807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 24817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 24827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 24837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: seqz a0, a0 24847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 24857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 24867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 24877a5b040eSPengcheng Wang; 24887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_eq_zero: 24897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 24907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 24917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 24927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 24937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 24947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: seqz a0, a0 24957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 24967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 24977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 24987a5b040eSPengcheng Wang; 24997a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_eq_zero: 25007a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 25017a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a0, 0(a0) 25027a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a1, 0(a1) 25037a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 25047a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: seqz a0, a0 25057a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 25065adb5c05SPengcheng Wangentry: 25075adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4) 25085adb5c05SPengcheng Wang %ret = icmp eq i32 %bcmp, 0 25095adb5c05SPengcheng Wang ret i1 %ret 25105adb5c05SPengcheng Wang} 25115adb5c05SPengcheng Wang 25125adb5c05SPengcheng Wangdefine i1 @bcmp_lt_zero(ptr %s1, ptr %s2) nounwind { 25137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_lt_zero: 25147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 25157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 25167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 25177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 25187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 25197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: srli a0, a0, 31 25207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 25217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 25227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 25235adb5c05SPengcheng Wang; 25247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_lt_zero: 25257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 25267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 25277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 25287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 25297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 25307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slti a0, a0, 0 25317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 25327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 25337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 25347a5b040eSPengcheng Wang; 25357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_lt_zero: 25367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 25377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 25387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 25397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 25407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 25417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: srli a0, a0, 31 25427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 25437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 25447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 25457a5b040eSPengcheng Wang; 25467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_lt_zero: 25477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 25487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 25497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 25507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 25517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 25527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slti a0, a0, 0 25537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 25547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 25557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 25567a5b040eSPengcheng Wang; 25577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_lt_zero: 25587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 25597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 25607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 25617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 25627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 25637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: srli a0, a0, 31 25647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 25657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 25667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 25677a5b040eSPengcheng Wang; 25687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_lt_zero: 25697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 25707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 25717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 25727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 25737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 25747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: slti a0, a0, 0 25757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 25767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 25777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 25787a5b040eSPengcheng Wang; 25797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_lt_zero: 25807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 25817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 25827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 25837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 25847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 25857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: srli a0, a0, 31 25867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 25877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 25887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 25897a5b040eSPengcheng Wang; 25907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_lt_zero: 25917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 25927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 25937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 25947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 25957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 25967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slti a0, a0, 0 25977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 25987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 25997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 26007a5b040eSPengcheng Wang; 26017a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_lt_zero: 26027a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 26037a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: li a0, 0 26047a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 26055adb5c05SPengcheng Wangentry: 26065adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4) 26075adb5c05SPengcheng Wang %ret = icmp slt i32 %bcmp, 0 26085adb5c05SPengcheng Wang ret i1 %ret 26095adb5c05SPengcheng Wang} 26105adb5c05SPengcheng Wang 26115adb5c05SPengcheng Wangdefine i1 @bcmp_gt_zero(ptr %s1, ptr %s2) nounwind { 26127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: bcmp_gt_zero: 26137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 26147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 26157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 26167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 26177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call bcmp 26187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sgtz a0, a0 26197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 26207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 26217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 26225adb5c05SPengcheng Wang; 26237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: bcmp_gt_zero: 26247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 26257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 26267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 26277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 26287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call bcmp 26297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sgtz a0, a0 26307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 26317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 26327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 26337a5b040eSPengcheng Wang; 26347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_gt_zero: 26357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 26367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 26377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 26387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 26397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 26407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sgtz a0, a0 26417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 26427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 26437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 26447a5b040eSPengcheng Wang; 26457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_gt_zero: 26467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 26477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 26487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 26497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 26507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 26517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sgtz a0, a0 26527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 26537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 26547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 26557a5b040eSPengcheng Wang; 26567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_gt_zero: 26577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 26587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 26597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 26607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 26617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 26627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sgtz a0, a0 26637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 26647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 26657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 26667a5b040eSPengcheng Wang; 26677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_gt_zero: 26687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 26697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 26707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 26717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 26727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 26737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sgtz a0, a0 26747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 26757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 26767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 26777a5b040eSPengcheng Wang; 26787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: bcmp_gt_zero: 26797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 26807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 26817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 26827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 26837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 26847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sgtz a0, a0 26857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 26867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 26877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 26887a5b040eSPengcheng Wang; 26897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: bcmp_gt_zero: 26907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 26917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 26927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 26937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 26947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 26957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sgtz a0, a0 26967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 26977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 26987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 26997a5b040eSPengcheng Wang; 27007a5b040eSPengcheng Wang; CHECK-UNALIGNED-LABEL: bcmp_gt_zero: 27017a5b040eSPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 27027a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a0, 0(a0) 27037a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a1, 0(a1) 27047a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 27057a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: snez a0, a0 27067a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 27075adb5c05SPengcheng Wangentry: 27085adb5c05SPengcheng Wang %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4) 27095adb5c05SPengcheng Wang %ret = icmp sgt i32 %bcmp, 0 27105adb5c05SPengcheng Wang ret i1 %ret 27115adb5c05SPengcheng Wang} 27125adb5c05SPengcheng Wang 2713bad0f98bSCraig Topperdefine i1 @bcmp_le_zero(ptr %s1, ptr %s2) nounwind { 2714bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-LABEL: bcmp_le_zero: 2715bad0f98bSCraig Topper; CHECK-ALIGNED-RV32: # %bb.0: # %entry 2716bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 2717bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2718bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: li a2, 4 2719bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: call bcmp 2720bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: slti a0, a0, 1 2721bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2722bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 2723bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: ret 2724bad0f98bSCraig Topper; 2725bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-LABEL: bcmp_le_zero: 2726bad0f98bSCraig Topper; CHECK-ALIGNED-RV64: # %bb.0: # %entry 2727bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 2728bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 2729bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: li a2, 4 2730bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: call bcmp 2731bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: slti a0, a0, 1 2732bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 2733bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 2734bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: ret 2735bad0f98bSCraig Topper; 2736bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_le_zero: 2737bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 2738bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 2739bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2740bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 2741bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 2742bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: slti a0, a0, 1 2743bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2744bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 2745bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 2746bad0f98bSCraig Topper; 2747bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_le_zero: 2748bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 2749bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 2750bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 2751bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 2752bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 2753bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: slti a0, a0, 1 2754bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 2755bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 2756bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 2757bad0f98bSCraig Topper; 2758bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_le_zero: 2759bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 2760bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 2761bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2762bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 2763bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 2764bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: slti a0, a0, 1 2765bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2766bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 2767bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 2768bad0f98bSCraig Topper; 2769bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_le_zero: 2770bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 2771bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 2772bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 2773bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 2774bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 2775bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: slti a0, a0, 1 2776bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 2777bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 2778bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 2779bad0f98bSCraig Topper; 2780bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-LABEL: bcmp_le_zero: 2781bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 2782bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 2783bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2784bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 2785bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 2786bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: slti a0, a0, 1 2787bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2788bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 2789bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: ret 2790bad0f98bSCraig Topper; 2791bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-LABEL: bcmp_le_zero: 2792bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 2793bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 2794bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 2795bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 2796bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 2797bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: slti a0, a0, 1 2798bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 2799bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 2800bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: ret 2801bad0f98bSCraig Topper; 2802bad0f98bSCraig Topper; CHECK-UNALIGNED-LABEL: bcmp_le_zero: 2803bad0f98bSCraig Topper; CHECK-UNALIGNED: # %bb.0: # %entry 2804bad0f98bSCraig Topper; CHECK-UNALIGNED-NEXT: lw a0, 0(a0) 2805bad0f98bSCraig Topper; CHECK-UNALIGNED-NEXT: lw a1, 0(a1) 2806bad0f98bSCraig Topper; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 2807bad0f98bSCraig Topper; CHECK-UNALIGNED-NEXT: snez a0, a0 2808bad0f98bSCraig Topper; CHECK-UNALIGNED-NEXT: slti a0, a0, 1 2809bad0f98bSCraig Topper; CHECK-UNALIGNED-NEXT: ret 2810bad0f98bSCraig Topperentry: 2811bad0f98bSCraig Topper %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4) 2812bad0f98bSCraig Topper %ret = icmp slt i32 %bcmp, 1 2813bad0f98bSCraig Topper ret i1 %ret 2814bad0f98bSCraig Topper} 2815bad0f98bSCraig Topper 2816bad0f98bSCraig Topperdefine i1 @bcmp_ge_zero(ptr %s1, ptr %s2) nounwind { 2817bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-LABEL: bcmp_ge_zero: 2818bad0f98bSCraig Topper; CHECK-ALIGNED-RV32: # %bb.0: # %entry 2819bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 2820bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2821bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: li a2, 4 2822bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: call bcmp 2823bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: slti a0, a0, 0 2824bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: xori a0, a0, 1 2825bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2826bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 2827bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: ret 2828bad0f98bSCraig Topper; 2829bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-LABEL: bcmp_ge_zero: 2830bad0f98bSCraig Topper; CHECK-ALIGNED-RV64: # %bb.0: # %entry 2831bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 2832bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 2833bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: li a2, 4 2834bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: call bcmp 2835bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: slti a0, a0, 0 2836bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: xori a0, a0, 1 2837bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 2838bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 2839bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: ret 2840bad0f98bSCraig Topper; 2841bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_ge_zero: 2842bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 2843bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 2844bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2845bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 2846bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: call bcmp 2847bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: slti a0, a0, 0 2848bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: xori a0, a0, 1 2849bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2850bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 2851bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 2852bad0f98bSCraig Topper; 2853bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_ge_zero: 2854bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 2855bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 2856bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 2857bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 2858bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: call bcmp 2859bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: slti a0, a0, 0 2860bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: xori a0, a0, 1 2861bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 2862bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 2863bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 2864bad0f98bSCraig Topper; 2865bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_ge_zero: 2866bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 2867bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 2868bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2869bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 2870bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: call bcmp 2871bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: slti a0, a0, 0 2872bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: xori a0, a0, 1 2873bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2874bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 2875bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 2876bad0f98bSCraig Topper; 2877bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_ge_zero: 2878bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 2879bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 2880bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 2881bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 2882bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: call bcmp 2883bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: slti a0, a0, 0 2884bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: xori a0, a0, 1 2885bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 2886bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 2887bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 2888bad0f98bSCraig Topper; 2889bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-LABEL: bcmp_ge_zero: 2890bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 2891bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 2892bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 2893bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 2894bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: call bcmp 2895bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: slti a0, a0, 0 2896bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: xori a0, a0, 1 2897bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 2898bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 2899bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: ret 2900bad0f98bSCraig Topper; 2901bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-LABEL: bcmp_ge_zero: 2902bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 2903bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 2904bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 2905bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 2906bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: call bcmp 2907bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: slti a0, a0, 0 2908bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: xori a0, a0, 1 2909bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 2910bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 2911bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: ret 2912bad0f98bSCraig Topper; 2913bad0f98bSCraig Topper; CHECK-UNALIGNED-LABEL: bcmp_ge_zero: 2914bad0f98bSCraig Topper; CHECK-UNALIGNED: # %bb.0: # %entry 2915bad0f98bSCraig Topper; CHECK-UNALIGNED-NEXT: li a0, 1 2916bad0f98bSCraig Topper; CHECK-UNALIGNED-NEXT: ret 2917bad0f98bSCraig Topperentry: 2918bad0f98bSCraig Topper %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4) 2919bad0f98bSCraig Topper %ret = icmp sgt i32 %bcmp, -1 2920bad0f98bSCraig Topper ret i1 %ret 2921bad0f98bSCraig Topper} 2922bad0f98bSCraig Topper 29235adb5c05SPengcheng Wangdefine i32 @memcmp_size_0(ptr %s1, ptr %s2) nounwind { 29245adb5c05SPengcheng Wang; CHECK-LABEL: memcmp_size_0: 29255adb5c05SPengcheng Wang; CHECK: # %bb.0: # %entry 29265adb5c05SPengcheng Wang; CHECK-NEXT: li a0, 0 29275adb5c05SPengcheng Wang; CHECK-NEXT: ret 29285adb5c05SPengcheng Wangentry: 29295adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 0) 29305adb5c05SPengcheng Wang ret i32 %memcmp 29315adb5c05SPengcheng Wang} 29325adb5c05SPengcheng Wang 29335adb5c05SPengcheng Wangdefine i32 @memcmp_size_1(ptr %s1, ptr %s2) nounwind { 29347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_1: 29357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 29367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 29377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 29387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 1 29397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 29407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 29417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 29427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 29435adb5c05SPengcheng Wang; 29447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_1: 29457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 29467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 29477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 29487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 1 29497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 29507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 29517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 29527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 29537a5b040eSPengcheng Wang; 29547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_1: 29557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 29567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 29577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 29587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 1 29597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 29607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 29617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 29627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 29637a5b040eSPengcheng Wang; 29647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_1: 29657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 29667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 29677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 29687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 1 29697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 29707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 29717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 29727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 29737a5b040eSPengcheng Wang; 29747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_1: 29757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 29767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 29777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 29787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 1 29797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 29807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 29817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 29827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 29837a5b040eSPengcheng Wang; 29847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_1: 29857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 29867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 29877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 29887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 1 29897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 29907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 29917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 29927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 29937a5b040eSPengcheng Wang; 29947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_1: 29957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 29967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 29977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 29987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 1 29997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 30007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 30017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 30027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 30037a5b040eSPengcheng Wang; 30047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_1: 30057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 30067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 30077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 30087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 1 30097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 30107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 30117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 30127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 30137a5b040eSPengcheng Wang; 30147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_1: 30157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 30167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 30177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 30187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 1 30197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 30207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 30217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 30227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 30237a5b040eSPengcheng Wang; 30247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_1: 30257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 30267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 30277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 30287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 1 30297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 30307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 30317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 30327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 30337a5b040eSPengcheng Wang; 30347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_1: 30357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 30367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a0, 0(a0) 30377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a1, 0(a1) 30387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sub a0, a0, a1 30397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 30407a5b040eSPengcheng Wang; 30417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_1: 30427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 30437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a0, 0(a0) 30447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a1, 0(a1) 30457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a1 30467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 30477a5b040eSPengcheng Wang; 30487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_1: 30497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 30507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a0, 0(a0) 30517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a1, 0(a1) 30527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sub a0, a0, a1 30537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 30547a5b040eSPengcheng Wang; 30557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_1: 30567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 30577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a0, 0(a0) 30587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a1, 0(a1) 30597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a1 30607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 30617a5b040eSPengcheng Wang; 30627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_1: 30637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 30647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 30657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 30667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 1 30677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 30687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 30697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 30707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 30717a5b040eSPengcheng Wang; 30727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_1: 30737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 30747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 30757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 30767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 1 30777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 30787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 30797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 30807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 30815adb5c05SPengcheng Wangentry: 30825adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 1) 30835adb5c05SPengcheng Wang ret i32 %memcmp 30845adb5c05SPengcheng Wang} 30855adb5c05SPengcheng Wang 30865adb5c05SPengcheng Wangdefine i32 @memcmp_size_2(ptr %s1, ptr %s2) nounwind { 30877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_2: 30887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 30897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 30907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 30917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 2 30927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 30937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 30947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 30957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 30965adb5c05SPengcheng Wang; 30977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_2: 30987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 30997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 31007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 31017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 2 31027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 31037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 31047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 31057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 31067a5b040eSPengcheng Wang; 31077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_2: 31087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 31097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 31107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 31117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 2 31127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 31137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 31147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 31157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 31167a5b040eSPengcheng Wang; 31177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_2: 31187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 31197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 31207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 31217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 2 31227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 31237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 31247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 31257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 31267a5b040eSPengcheng Wang; 31277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_2: 31287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 31297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 31307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 31317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 2 31327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 31337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 31347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 31357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 31367a5b040eSPengcheng Wang; 31377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_2: 31387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 31397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 31407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 31417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 2 31427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 31437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 31447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 31457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 31467a5b040eSPengcheng Wang; 31477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_2: 31487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 31497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 31507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 31517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 2 31527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 31537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 31547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 31557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 31567a5b040eSPengcheng Wang; 31577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_2: 31587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 31597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 31607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 31617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 2 31627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 31637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 31647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 31657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 31667a5b040eSPengcheng Wang; 31677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_2: 31687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 31697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 31707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 31717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 2 31727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 31737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 31747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 31757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 31767a5b040eSPengcheng Wang; 31777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_2: 31787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 31797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 31807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 31817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 2 31827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 31837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 31847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 31857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 31867a5b040eSPengcheng Wang; 31877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_2: 31887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 31897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lh a0, 0(a0) 31907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lh a1, 0(a1) 31917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0 31927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1 31939122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: srli a0, a0, 16 31947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: srli a1, a1, 16 31957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sub a0, a0, a1 31967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 31977a5b040eSPengcheng Wang; 31987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_2: 31997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 32007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lh a0, 0(a0) 32017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lh a1, 0(a1) 32027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 32037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 32049122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 48 32057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 48 32067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a1 32077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 32087a5b040eSPengcheng Wang; 32097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_2: 32107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 32117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lh a0, 0(a0) 32127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lh a1, 0(a1) 32137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0 32147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1 32159122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: srli a0, a0, 16 32167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: srli a1, a1, 16 32177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sub a0, a0, a1 32187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 32197a5b040eSPengcheng Wang; 32207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_2: 32217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 32227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lh a0, 0(a0) 32237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lh a1, 0(a1) 32247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 32257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 32269122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 48 32277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 48 32287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a1 32297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 32307a5b040eSPengcheng Wang; 32317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_2: 32327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 32337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 32347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 32357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 2 32367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 32377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 32387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 32397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 32407a5b040eSPengcheng Wang; 32417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_2: 32427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 32437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 32447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 32457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 2 32467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 32477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 32487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 32497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 32505adb5c05SPengcheng Wangentry: 32515adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 2) 32525adb5c05SPengcheng Wang ret i32 %memcmp 32535adb5c05SPengcheng Wang} 32545adb5c05SPengcheng Wang 32555adb5c05SPengcheng Wangdefine i32 @memcmp_size_3(ptr %s1, ptr %s2) nounwind { 32567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_3: 32577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 32587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 32597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 32607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 3 32617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 32627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 32637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 32647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 32655adb5c05SPengcheng Wang; 32667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_3: 32677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 32687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 32697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 32707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 3 32717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 32727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 32737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 32747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 32757a5b040eSPengcheng Wang; 32767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_3: 32777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 32787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 32797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 32807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 3 32817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 32827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 32837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 32847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 32857a5b040eSPengcheng Wang; 32867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_3: 32877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 32887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 32897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 32907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 3 32917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 32927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 32937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 32947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 32957a5b040eSPengcheng Wang; 32967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_3: 32977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 32987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 32997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 33007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 3 33017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 33027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 33037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 33047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 33057a5b040eSPengcheng Wang; 33067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_3: 33077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 33087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 33097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 33107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 3 33117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 33127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 33137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 33147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 33157a5b040eSPengcheng Wang; 33167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_3: 33177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 33187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 33197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 33207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 3 33217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 33227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 33237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 33247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 33257a5b040eSPengcheng Wang; 33267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_3: 33277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 33287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 33297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 33307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 3 33317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 33327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 33337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 33347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 33357a5b040eSPengcheng Wang; 33367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_3: 33377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 33387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 33397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 33407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 3 33417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 33427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 33437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 33447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 33457a5b040eSPengcheng Wang; 33467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_3: 33477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 33487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 33497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 33507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 3 33517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 33527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 33537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 33547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 33557a5b040eSPengcheng Wang; 33567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_3: 33577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 335872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a2, 2(a0) 335972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lhu a0, 0(a0) 336072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a3, 2(a1) 336172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lhu a1, 0(a1) 336272db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: slli a2, a2, 16 336372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a0, a0, a2 336472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: slli a3, a3, 16 336572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: or a1, a1, a3 336672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0 336772db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1 336813cf5c9cSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a2, a0, a1 336913cf5c9cSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a1, a0 337013cf5c9cSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sub a0, a0, a2 33717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 33727a5b040eSPengcheng Wang; 33737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_3: 33747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 337572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a2, 2(a0) 337672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lhu a0, 0(a0) 337772db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a3, 2(a1) 337872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lhu a1, 0(a1) 337972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a2, a2, 16 338072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a0, a2 338172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a3, a3, 16 338272db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a1, a1, a3 338372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 338472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 338572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 32 338672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 32 338713cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a0, a1 338813cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 338913cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a2 33907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 33917a5b040eSPengcheng Wang; 33927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_3: 33937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 339472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lhu a2, 0(a0) 33957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a0, 2(a0) 339672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lhu a3, 0(a1) 33977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a1, 2(a1) 339872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: pack a0, a2, a0 339972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: pack a1, a3, a1 340072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0 340172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1 340213cf5c9cSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a2, a0, a1 340313cf5c9cSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a1, a0 340413cf5c9cSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sub a0, a0, a2 34057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 34067a5b040eSPengcheng Wang; 34077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_3: 34087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 340972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a2, 2(a0) 341072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lhu a0, 0(a0) 341172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a3, 2(a1) 341272db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lhu a1, 0(a1) 341372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: slli a2, a2, 16 341472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a0, a0, a2 341572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: slli a3, a3, 16 341672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: or a1, a1, a3 341772db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 341872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 341972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 32 342072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 32 342113cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a0, a1 342213cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 342313cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a2 34247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 34257a5b040eSPengcheng Wang; 34267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_3: 34277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 34287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 34297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 34307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 3 34317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 34327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 34337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 34347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 34357a5b040eSPengcheng Wang; 34367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_3: 34377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 34387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 34397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 34407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 3 34417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 34427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 34437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 34447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 34455adb5c05SPengcheng Wangentry: 34465adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 3) 34475adb5c05SPengcheng Wang ret i32 %memcmp 34485adb5c05SPengcheng Wang} 34495adb5c05SPengcheng Wang 34505adb5c05SPengcheng Wangdefine i32 @memcmp_size_4(ptr %s1, ptr %s2) nounwind { 34517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_4: 34527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 34537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 34547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 34557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 34567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 34577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 34587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 34597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 34605adb5c05SPengcheng Wang; 34617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_4: 34627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 34637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 34647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 34657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 34667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 34677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 34687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 34697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 34707a5b040eSPengcheng Wang; 34717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_4: 34727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 34737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 34747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 34757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 34767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 34777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 34787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 34797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 34807a5b040eSPengcheng Wang; 34817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_4: 34827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 34837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 34847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 34857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 34867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 34877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 34887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 34897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 34907a5b040eSPengcheng Wang; 34917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_4: 34927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 34937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 34947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 34957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 34967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 34977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 34987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 34997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 35007a5b040eSPengcheng Wang; 35017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_4: 35027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 35037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 35047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 35057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 35067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 35077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 35087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 35097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 35107a5b040eSPengcheng Wang; 35117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_4: 35127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 35137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 35147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 35157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 35167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 35177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 35187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 35197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 35207a5b040eSPengcheng Wang; 35217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_4: 35227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 35237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 35247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 35257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 35267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 35277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 35287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 35297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 35307a5b040eSPengcheng Wang; 35317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_4: 35327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 35337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 35347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 35357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 4 35367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 35377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 35387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 35397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 35407a5b040eSPengcheng Wang; 35417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_4: 35427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 35437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 35447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 35457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 4 35467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 35477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 35487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 35497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 35507a5b040eSPengcheng Wang; 35517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_4: 35527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 35537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 0(a0) 35547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 0(a1) 35557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0 35567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1 35574dfea22eSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a2, a0, a1 35584dfea22eSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a1, a0 35594dfea22eSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sub a0, a0, a2 35607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 35617a5b040eSPengcheng Wang; 35627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_4: 35637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 35647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a0, 0(a0) 35657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a1, 0(a1) 35667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 35677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 35689122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 32 35697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 32 35704dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a0, a1 35714dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 35724dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a2 35737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 35747a5b040eSPengcheng Wang; 35757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_4: 35767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 35777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 0(a0) 35787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 0(a1) 35797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0 35807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1 35814dfea22eSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a2, a0, a1 35824dfea22eSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a1, a0 35834dfea22eSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sub a0, a0, a2 35847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 35857a5b040eSPengcheng Wang; 35867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_4: 35877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 35887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a0, 0(a0) 35897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a1, 0(a1) 35907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 35917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 35929122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 32 35937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 32 35944dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a0, a1 35954dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 35964dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a2 35977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 35987a5b040eSPengcheng Wang; 35997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_4: 36007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 36017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 36027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 36037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 4 36047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 36057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 36067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 36077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 36087a5b040eSPengcheng Wang; 36097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_4: 36107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 36117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 36127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 36137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 4 36147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 36157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 36167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 36177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 36185adb5c05SPengcheng Wangentry: 36195adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4) 36205adb5c05SPengcheng Wang ret i32 %memcmp 36215adb5c05SPengcheng Wang} 36225adb5c05SPengcheng Wang 36235adb5c05SPengcheng Wangdefine i32 @memcmp_size_5(ptr %s1, ptr %s2) nounwind { 36247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_5: 36257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 36267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 36277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 36287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 5 36297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 36307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 36317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 36327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 36335adb5c05SPengcheng Wang; 36347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_5: 36357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 36367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 36377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 36387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 5 36397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 36407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 36417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 36427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 36437a5b040eSPengcheng Wang; 36447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_5: 36457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 36467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 36477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 36487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 5 36497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 36507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 36517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 36527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 36537a5b040eSPengcheng Wang; 36547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_5: 36557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 36567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 36577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 36587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 5 36597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 36607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 36617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 36627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 36637a5b040eSPengcheng Wang; 36647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_5: 36657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 36667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 36677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 36687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 5 36697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 36707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 36717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 36727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 36737a5b040eSPengcheng Wang; 36747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_5: 36757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 36767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 36777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 36787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 5 36797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 36807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 36817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 36827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 36837a5b040eSPengcheng Wang; 36847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_5: 36857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 36867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 36877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 36887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 5 36897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 36907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 36917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 36927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 36937a5b040eSPengcheng Wang; 36947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_5: 36957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 36967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 36977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 36987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 5 36997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 37007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 37017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 37027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 37037a5b040eSPengcheng Wang; 37047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_5: 37057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 37067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 37077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 37087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 5 37097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 37107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 37117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 37127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 37137a5b040eSPengcheng Wang; 37147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_5: 37157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 37167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 37177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 37187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 5 37197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 37207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 37217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 37227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 37237a5b040eSPengcheng Wang; 37247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_5: 37257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 37267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 37277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 37287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 37297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 3730bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB28_2 37317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 37327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a0, 4(a0) 37337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lbu a1, 4(a1) 37347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sub a0, a0, a1 37357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 3736bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB28_2: # %res_block 37377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 37387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 37397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 37407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 37417a5b040eSPengcheng Wang; 37427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_5: 37437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 374472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a2, 4(a0) 374572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lwu a0, 0(a0) 374672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lbu a3, 4(a1) 374772db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lwu a1, 0(a1) 374872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a2, a2, 32 374972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a0, a2 375072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a3, a3, 32 375172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a1, a1, a3 375272db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 375372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 375413cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a0, a1 375513cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 375613cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a2 37577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 37587a5b040eSPengcheng Wang; 37597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_5: 37607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 37617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 37627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 37637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 37647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 3765bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB28_2 37667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 37677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a0, 4(a0) 37687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lbu a1, 4(a1) 37697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sub a0, a0, a1 37707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 3771bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB28_2: # %res_block 37727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 37737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 37747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 37757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 37767a5b040eSPengcheng Wang; 37777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_5: 37787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 377972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lwu a2, 0(a0) 37807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a0, 4(a0) 378172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lwu a3, 0(a1) 37827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lbu a1, 4(a1) 378372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: pack a0, a2, a0 378472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: pack a1, a3, a1 378572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 378672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 378713cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a0, a1 378813cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 378913cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a2 37907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 37917a5b040eSPengcheng Wang; 37927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_5: 37937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 37947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 37957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 37967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 5 37977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 37987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 37997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 38007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 38017a5b040eSPengcheng Wang; 38027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_5: 38037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 38047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 38057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 38067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 5 38077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 38087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 38097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 38107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 38115adb5c05SPengcheng Wangentry: 38125adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 5) 38135adb5c05SPengcheng Wang ret i32 %memcmp 38145adb5c05SPengcheng Wang} 38155adb5c05SPengcheng Wang 38165adb5c05SPengcheng Wangdefine i32 @memcmp_size_6(ptr %s1, ptr %s2) nounwind { 38177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_6: 38187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 38197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 38207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 38217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 6 38227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 38237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 38247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 38257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 38265adb5c05SPengcheng Wang; 38277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_6: 38287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 38297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 38307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 38317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 6 38327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 38337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 38347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 38357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 38367a5b040eSPengcheng Wang; 38377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_6: 38387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 38397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 38407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 38417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 6 38427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 38437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 38447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 38457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 38467a5b040eSPengcheng Wang; 38477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_6: 38487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 38497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 38507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 38517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 6 38527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 38537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 38547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 38557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 38567a5b040eSPengcheng Wang; 38577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_6: 38587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 38597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 38607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 38617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 6 38627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 38637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 38647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 38657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 38667a5b040eSPengcheng Wang; 38677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_6: 38687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 38697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 38707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 38717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 6 38727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 38737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 38747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 38757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 38767a5b040eSPengcheng Wang; 38777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_6: 38787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 38797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 38807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 38817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 6 38827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 38837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 38847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 38857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 38867a5b040eSPengcheng Wang; 38877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_6: 38887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 38897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 38907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 38917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 6 38927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 38937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 38947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 38957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 38967a5b040eSPengcheng Wang; 38977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_6: 38987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 38997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 39007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 39017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 6 39027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 39037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 39047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 39057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 39067a5b040eSPengcheng Wang; 39077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_6: 39087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 39097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 39107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 39117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 6 39127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 39137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 39147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 39157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 39167a5b040eSPengcheng Wang; 39177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_6: 39187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 39197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 39207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 39217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 39227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 3923bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB29_3 39247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 39257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lh a0, 4(a0) 39267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lh a1, 4(a1) 39277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a0 39287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a1 39299122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: srli a2, a2, 16 39307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: srli a3, a3, 16 3931bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB29_3 39327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.2: 39337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: li a0, 0 39347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 3935bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB29_3: # %res_block 39367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 39377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 39387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 39397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 39407a5b040eSPengcheng Wang; 39417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_6: 39427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 394372db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lhu a2, 4(a0) 394472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lwu a0, 0(a0) 394572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lhu a3, 4(a1) 394672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lwu a1, 0(a1) 394772db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a2, a2, 32 394872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a0, a0, a2 394972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: slli a3, a3, 32 395072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: or a1, a1, a3 395172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 395272db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 395313cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a0, a1 395413cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 395513cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a2 39567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 39577a5b040eSPengcheng Wang; 39587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_6: 39597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 39607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 39617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 39627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 39637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 3964bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB29_3 39657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 39667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lh a0, 4(a0) 39677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lh a1, 4(a1) 39687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a0 39697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a1 39709122c523SPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: srli a2, a2, 16 39717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: srli a3, a3, 16 3972bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB29_3 39737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.2: 39747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: li a0, 0 39757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 3976bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB29_3: # %res_block 39777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 39787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 39797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 39807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 39817a5b040eSPengcheng Wang; 39827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_6: 39837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 398472db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lwu a2, 0(a0) 398572db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lhu a0, 4(a0) 398672db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lwu a3, 0(a1) 398772db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lhu a1, 4(a1) 398872db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: pack a0, a2, a0 398972db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: pack a1, a3, a1 399072db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 399172db3f98SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 399213cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a0, a1 399313cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 399413cf5c9cSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a2 39957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 39967a5b040eSPengcheng Wang; 39977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_6: 39987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 39997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 40007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 40017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 6 40027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 40037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 40047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 40057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 40067a5b040eSPengcheng Wang; 40077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_6: 40087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 40097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 40107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 40117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 6 40127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 40137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 40147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 40157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 40165adb5c05SPengcheng Wangentry: 40175adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 6) 40185adb5c05SPengcheng Wang ret i32 %memcmp 40195adb5c05SPengcheng Wang} 40205adb5c05SPengcheng Wang 40215adb5c05SPengcheng Wangdefine i32 @memcmp_size_7(ptr %s1, ptr %s2) nounwind { 40227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_7: 40237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 40247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 40257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 40267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 7 40277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 40287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 40297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 40307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 40315adb5c05SPengcheng Wang; 40327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_7: 40337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 40347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 40357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 40367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 7 40377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 40387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 40397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 40407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 40417a5b040eSPengcheng Wang; 40427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_7: 40437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 40447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 40457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 40467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 7 40477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 40487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 40497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 40507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 40517a5b040eSPengcheng Wang; 40527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_7: 40537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 40547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 40557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 40567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 7 40577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 40587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 40597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 40607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 40617a5b040eSPengcheng Wang; 40627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_7: 40637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 40647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 40657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 40667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 7 40677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 40687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 40697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 40707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 40717a5b040eSPengcheng Wang; 40727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_7: 40737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 40747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 40757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 40767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 7 40777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 40787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 40797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 40807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 40817a5b040eSPengcheng Wang; 40827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_7: 40837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 40847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 40857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 40867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 7 40877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 40887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 40897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 40907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 40917a5b040eSPengcheng Wang; 40927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_7: 40937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 40947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 40957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 40967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 7 40977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 40987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 40997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 41007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 41017a5b040eSPengcheng Wang; 41027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_7: 41037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 41047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 41057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 41067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 7 41077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 41087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 41097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 41107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 41117a5b040eSPengcheng Wang; 41127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_7: 41137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 41147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 41157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 41167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 7 41177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 41187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 41197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 41207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 41217a5b040eSPengcheng Wang; 41227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_7: 41237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 41247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 41257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 41267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 41277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 4128bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB30_3 41297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 41307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 3(a0) 41317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 3(a1) 41327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a0 41337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a1 4134bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB30_3 41357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.2: 41367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: li a0, 0 41377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 4138bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB30_3: # %res_block 41397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 41407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 41417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 41427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 41437a5b040eSPengcheng Wang; 41447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_7: 41457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 41467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a2, 0(a0) 41477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a3, 0(a1) 41487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 41497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 41509122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a2, a2, 32 41517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a3, a3, 32 4152bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB30_3 41537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1 41547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a0, 3(a0) 41557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a1, 3(a1) 41567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0 41577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1 41589122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a2, a2, 32 41597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a3, a3, 32 4160bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB30_3 41617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2: 41627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0 41637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 4164bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB30_3: # %res_block 41657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3 41667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0 41677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1 41687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 41697a5b040eSPengcheng Wang; 41707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_7: 41717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 41727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 41737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 41747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 41757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 4176bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB30_3 41777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 41787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 3(a0) 41797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 3(a1) 41807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a0 41817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a1 4182bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB30_3 41837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.2: 41847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: li a0, 0 41857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 4186bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB30_3: # %res_block 41877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 41887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 41897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 41907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 41917a5b040eSPengcheng Wang; 41927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_7: 41937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 41947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a2, 0(a0) 41957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a3, 0(a1) 41967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 41977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 41989122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a2, a2, 32 41997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a3, a3, 32 4200bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB30_3 42017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1 42027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a0, 3(a0) 42037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a1, 3(a1) 42047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0 42057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1 42069122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a2, a2, 32 42077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a3, a3, 32 4208bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB30_3 42097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2: 42107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0 42117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 4212bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB30_3: # %res_block 42137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3 42147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0 42157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1 42167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 42177a5b040eSPengcheng Wang; 42187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_7: 42197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 42207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 42217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 42227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 7 42237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 42247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 42257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 42267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 42277a5b040eSPengcheng Wang; 42287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_7: 42297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 42307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 42317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 42327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 7 42337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 42347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 42357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 42367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 42375adb5c05SPengcheng Wangentry: 42385adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 7) 42395adb5c05SPengcheng Wang ret i32 %memcmp 42405adb5c05SPengcheng Wang} 42415adb5c05SPengcheng Wang 42425adb5c05SPengcheng Wangdefine i32 @memcmp_size_8(ptr %s1, ptr %s2) nounwind { 42437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_8: 42447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 42457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 42467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 42477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 8 42487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 42497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 42507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 42517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 42525adb5c05SPengcheng Wang; 42537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_8: 42547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 42557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 42567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 42577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 8 42587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 42597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 42607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 42617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 42627a5b040eSPengcheng Wang; 42637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_8: 42647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 42657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 42667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 42677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 8 42687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 42697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 42707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 42717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 42727a5b040eSPengcheng Wang; 42737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_8: 42747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 42757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 42767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 42777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 8 42787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 42797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 42807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 42817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 42827a5b040eSPengcheng Wang; 42837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_8: 42847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 42857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 42867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 42877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 8 42887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 42897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 42907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 42917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 42927a5b040eSPengcheng Wang; 42937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_8: 42947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 42957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 42967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 42977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 8 42987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 42997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 43007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 43017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 43027a5b040eSPengcheng Wang; 43037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_8: 43047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 43057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 43067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 43077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 8 43087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 43097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 43107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 43117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 43127a5b040eSPengcheng Wang; 43137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_8: 43147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 43157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 43167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 43177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 8 43187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 43197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 43207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 43217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 43227a5b040eSPengcheng Wang; 43237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_8: 43247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 43257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 43267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 43277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 8 43287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 43297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 43307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 43317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 43327a5b040eSPengcheng Wang; 43337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_8: 43347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 43357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 43367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 43377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 8 43387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 43397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 43407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 43417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 43427a5b040eSPengcheng Wang; 43437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_8: 43447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 43457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 43467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 43477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 43487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 4349bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB31_3 43507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 43517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 4(a0) 43527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 4(a1) 43537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a0 43547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a1 4355bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB31_3 43567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.2: 43577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: li a0, 0 43587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 4359bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB31_3: # %res_block 43607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 43617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 43627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 43637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 43647a5b040eSPengcheng Wang; 43657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_8: 43667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 43677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 0(a0) 43687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 0(a1) 43697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 43707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 43714dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a2, a0, a1 43724dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 43734dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sub a0, a0, a2 43747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 43757a5b040eSPengcheng Wang; 43767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_8: 43777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 43787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 43797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 43807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 43817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 4382bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB31_3 43837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 43847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 4(a0) 43857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 4(a1) 43867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a0 43877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a1 4388bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB31_3 43897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.2: 43907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: li a0, 0 43917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 4392bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB31_3: # %res_block 43937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 43947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 43957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 43967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 43977a5b040eSPengcheng Wang; 43987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_8: 43997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 44007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 0(a0) 44017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 0(a1) 44027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 44037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 44044dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a2, a0, a1 44054dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 44064dfea22eSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sub a0, a0, a2 44077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 44087a5b040eSPengcheng Wang; 44097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_8: 44107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 44117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 44127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 44137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 8 44147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 44157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 44167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 44177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 44187a5b040eSPengcheng Wang; 44197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_8: 44207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 44217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 44227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 44237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 8 44247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 44257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 44267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 44277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 44285adb5c05SPengcheng Wangentry: 44295adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 8) 44305adb5c05SPengcheng Wang ret i32 %memcmp 44315adb5c05SPengcheng Wang} 44325adb5c05SPengcheng Wang 44335adb5c05SPengcheng Wangdefine i32 @memcmp_size_15(ptr %s1, ptr %s2) nounwind { 44347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_15: 44357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 44367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 44377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 44387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 15 44397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 44407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 44417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 44427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 44435adb5c05SPengcheng Wang; 44447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_15: 44457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 44467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 44477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 44487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 15 44497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 44507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 44517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 44527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 44537a5b040eSPengcheng Wang; 44547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_15: 44557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 44567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 44577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 44587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 15 44597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 44607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 44617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 44627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 44637a5b040eSPengcheng Wang; 44647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_15: 44657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 44667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 44677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 44687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 15 44697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 44707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 44717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 44727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 44737a5b040eSPengcheng Wang; 44747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_15: 44757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 44767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 44777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 44787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 15 44797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 44807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 44817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 44827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 44837a5b040eSPengcheng Wang; 44847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_15: 44857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 44867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 44877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 44887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 15 44897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 44907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 44917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 44927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 44937a5b040eSPengcheng Wang; 44947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_15: 44957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 44967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 44977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 44987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 15 44997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 45007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 45017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 45027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 45037a5b040eSPengcheng Wang; 45047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_15: 45057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 45067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 45077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 45087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 15 45097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 45107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 45117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 45127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 45137a5b040eSPengcheng Wang; 45147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_15: 45157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 45167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 45177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 45187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 15 45197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 45207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 45217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 45227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 45237a5b040eSPengcheng Wang; 45247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_15: 45257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 45267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 45277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 45287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 15 45297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 45307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 45317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 45327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 45337a5b040eSPengcheng Wang; 45347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_15: 45357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 45367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 45377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 45387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 45397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 4540bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB32_5 45417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 45427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 4(a0) 45437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 4(a1) 45447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 45457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 4546bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB32_5 45477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.2: # %loadbb2 45487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 8(a0) 45497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 8(a1) 45507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 45517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 4552bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB32_5 45537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.3: # %loadbb3 45547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 11(a0) 45557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 11(a1) 45567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a0 45577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a1 4558bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB32_5 45597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.4: 45607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: li a0, 0 45617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 4562bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB32_5: # %res_block 45637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 45647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 45657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 45667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 45677a5b040eSPengcheng Wang; 45687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_15: 45697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 45707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 45717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 0(a1) 45727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 45737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 4574bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB32_3 45757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1 45767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 7(a0) 45777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 7(a1) 45787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0 45797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1 4580bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB32_3 45817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2: 45827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0 45837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 4584bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB32_3: # %res_block 45857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3 45867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0 45877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1 45887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 45897a5b040eSPengcheng Wang; 45907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_15: 45917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 45927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 45937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 45947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 45957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 4596bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB32_5 45977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 45987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 4(a0) 45997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 4(a1) 46007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 46017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 4602bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB32_5 46037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.2: # %loadbb2 46047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 8(a0) 46057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 8(a1) 46067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 46077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 4608bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB32_5 46097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.3: # %loadbb3 46107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 11(a0) 46117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 11(a1) 46127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a0 46137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a1 4614bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB32_5 46157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.4: 46167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: li a0, 0 46177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 4618bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB32_5: # %res_block 46197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 46207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 46217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 46227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 46237a5b040eSPengcheng Wang; 46247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_15: 46257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 46267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 46277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 0(a1) 46287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 46297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 4630bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB32_3 46317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1 46327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 7(a0) 46337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 7(a1) 46347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0 46357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1 4636bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB32_3 46377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2: 46387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0 46397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 4640bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB32_3: # %res_block 46417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3 46427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0 46437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1 46447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 46457a5b040eSPengcheng Wang; 46467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_15: 46477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 46487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 46497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 46507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 15 46517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 46527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 46537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 46547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 46557a5b040eSPengcheng Wang; 46567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_15: 46577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 46587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 46597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 46607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 15 46617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 46627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 46637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 46647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 46655adb5c05SPengcheng Wangentry: 46665adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 15) 46675adb5c05SPengcheng Wang ret i32 %memcmp 46685adb5c05SPengcheng Wang} 46695adb5c05SPengcheng Wang 46705adb5c05SPengcheng Wangdefine i32 @memcmp_size_16(ptr %s1, ptr %s2) nounwind { 46717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_16: 46727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 46737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 46747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 46757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 16 46767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 46777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 46787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 46797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 46805adb5c05SPengcheng Wang; 46817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_16: 46827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 46837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 46847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 46857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 16 46867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 46877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 46887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 46897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 46907a5b040eSPengcheng Wang; 46917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_16: 46927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 46937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 46947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 46957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 16 46967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 46977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 46987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 46997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 47007a5b040eSPengcheng Wang; 47017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_16: 47027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 47037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 47047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 47057a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 16 47067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 47077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 47087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 47097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 47107a5b040eSPengcheng Wang; 47117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_16: 47127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 47137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 47147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 47157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 16 47167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 47177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 47187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 47197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 47207a5b040eSPengcheng Wang; 47217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_16: 47227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 47237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 47247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 47257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 16 47267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 47277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 47287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 47297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 47307a5b040eSPengcheng Wang; 47317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_16: 47327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 47337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 47347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 47357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 16 47367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 47377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 47387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 47397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 47407a5b040eSPengcheng Wang; 47417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_16: 47427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 47437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 47447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 47457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 16 47467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 47477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 47487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 47497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 47507a5b040eSPengcheng Wang; 47517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_16: 47527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 47537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 47547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 47557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 16 47567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 47577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 47587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 47597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 47607a5b040eSPengcheng Wang; 47617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_16: 47627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 47637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 47647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 47657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 16 47667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 47677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 47687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 47697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 47707a5b040eSPengcheng Wang; 47717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_16: 47727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 47737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 47747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 47757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 47767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 4777bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB33_5 47787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 47797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 4(a0) 47807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 4(a1) 47817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 47827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 4783bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB33_5 47847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.2: # %loadbb2 47857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 8(a0) 47867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 8(a1) 47877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 47887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 4789bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB33_5 47907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.3: # %loadbb3 47917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 12(a0) 47927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 12(a1) 47937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a0 47947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a1 4795bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB33_5 47967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.4: 47977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: li a0, 0 47987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 4799bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB33_5: # %res_block 48007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 48017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 48027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 48037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 48047a5b040eSPengcheng Wang; 48057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_16: 48067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 48077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 48087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 0(a1) 48097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 48107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 4811bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB33_3 48127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1 48137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 8(a0) 48147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 8(a1) 48157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0 48167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1 4817bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB33_3 48187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2: 48197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0 48207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 4821bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB33_3: # %res_block 48227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3 48237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0 48247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1 48257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 48267a5b040eSPengcheng Wang; 48277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_16: 48287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 48297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 48307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 48317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 48327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 4833bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB33_5 48347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 48357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 4(a0) 48367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 4(a1) 48377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 48387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 4839bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB33_5 48407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.2: # %loadbb2 48417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 8(a0) 48427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 8(a1) 48437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 48447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 4845bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB33_5 48467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.3: # %loadbb3 48477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 12(a0) 48487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 12(a1) 48497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a0 48507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a1 4851bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB33_5 48527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.4: 48537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: li a0, 0 48547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 4855bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB33_5: # %res_block 48567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 48577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 48587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 48597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 48607a5b040eSPengcheng Wang; 48617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_16: 48627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 48637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 48647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 0(a1) 48657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 48667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 4867bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB33_3 48687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1 48697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 8(a0) 48707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 8(a1) 48717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0 48727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1 4873bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB33_3 48747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2: 48757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0 48767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 4877bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB33_3: # %res_block 48787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3 48797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0 48807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1 48817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 48827a5b040eSPengcheng Wang; 48837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_16: 48847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 48857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 48867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 48877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 16 48887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 48897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 48907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 48917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 48927a5b040eSPengcheng Wang; 48937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_16: 48947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 48957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 48967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 48977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 16 48987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 48997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 49007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 49017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 49025adb5c05SPengcheng Wangentry: 49035adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 16) 49045adb5c05SPengcheng Wang ret i32 %memcmp 49055adb5c05SPengcheng Wang} 49065adb5c05SPengcheng Wang 49075adb5c05SPengcheng Wangdefine i32 @memcmp_size_31(ptr %s1, ptr %s2) nounwind { 49087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_31: 49097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 49107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 49117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 49127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 31 49137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 49147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 49157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 49167a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 49175adb5c05SPengcheng Wang; 49187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_31: 49197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 49207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 49217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 49227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 31 49237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 49247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 49257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 49267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 49277a5b040eSPengcheng Wang; 49287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_31: 49297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 49307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 49317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 49327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 31 49337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 49347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 49357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 49367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 49377a5b040eSPengcheng Wang; 49387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_31: 49397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 49407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 49417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 49427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 31 49437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 49447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 49457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 49467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 49477a5b040eSPengcheng Wang; 49487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_31: 49497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 49507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 49517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 49527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 31 49537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 49547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 49557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 49567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 49577a5b040eSPengcheng Wang; 49587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_31: 49597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 49607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 49617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 49627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 31 49637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 49647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 49657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 49667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 49677a5b040eSPengcheng Wang; 49687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_31: 49697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 49707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 49717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 49727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 31 49737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 49747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 49757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 49767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 49777a5b040eSPengcheng Wang; 49787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_31: 49797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 49807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 49817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 49827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 31 49837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 49847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 49857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 49867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 49877a5b040eSPengcheng Wang; 49887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_31: 49897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 49907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 49917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 49927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 31 49937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 49947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 49957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 49967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 49977a5b040eSPengcheng Wang; 49987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_31: 49997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 50007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 50017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 50027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 31 50037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 50047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 50057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 50067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 50077a5b040eSPengcheng Wang; 50087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_31: 50097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 50107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 50117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 50127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 50137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5014bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB34_9 50157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 50167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 4(a0) 50177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 4(a1) 50187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 50197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5020bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB34_9 50217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.2: # %loadbb2 50227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 8(a0) 50237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 8(a1) 50247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 50257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5026bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB34_9 50277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.3: # %loadbb3 50287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 12(a0) 50297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 12(a1) 50307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 50317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5032bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB34_9 50337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.4: # %loadbb4 50347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 16(a0) 50357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 16(a1) 50367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 50377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5038bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB34_9 50397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.5: # %loadbb5 50407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 20(a0) 50417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 20(a1) 50427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 50437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5044bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB34_9 50457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.6: # %loadbb6 50467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 24(a0) 50477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 24(a1) 50487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 50497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5050bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB34_9 50517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.7: # %loadbb7 50527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 27(a0) 50537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 27(a1) 50547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a0 50557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a1 5056bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB34_9 50577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.8: 50587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: li a0, 0 50597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 5060bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB34_9: # %res_block 50617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 50627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 50637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 50647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 50657a5b040eSPengcheng Wang; 50667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_31: 50677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 50687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 50697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 0(a1) 50707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 50717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5072bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB34_5 50737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1 50747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 8(a0) 50757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 8(a1) 50767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 50777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5078bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB34_5 50797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2: # %loadbb2 50807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 16(a0) 50817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 16(a1) 50827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 50837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5084bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB34_5 50857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.3: # %loadbb3 50867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 23(a0) 50877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 23(a1) 50887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0 50897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1 5090bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB34_5 50917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.4: 50927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0 50937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 5094bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB34_5: # %res_block 50957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3 50967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0 50977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1 50987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 50997a5b040eSPengcheng Wang; 51007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_31: 51017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 51027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 51037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 51047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 51057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5106bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB34_9 51077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 51087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 4(a0) 51097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 4(a1) 51107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 51117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5112bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB34_9 51137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.2: # %loadbb2 51147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 8(a0) 51157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 8(a1) 51167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 51177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5118bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB34_9 51197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.3: # %loadbb3 51207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 12(a0) 51217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 12(a1) 51227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 51237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5124bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB34_9 51257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.4: # %loadbb4 51267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 16(a0) 51277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 16(a1) 51287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 51297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5130bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB34_9 51317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.5: # %loadbb5 51327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 20(a0) 51337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 20(a1) 51347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 51357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5136bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB34_9 51377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.6: # %loadbb6 51387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 24(a0) 51397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 24(a1) 51407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 51417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5142bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB34_9 51437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.7: # %loadbb7 51447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 27(a0) 51457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 27(a1) 51467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a0 51477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a1 5148bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB34_9 51497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.8: 51507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: li a0, 0 51517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 5152bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB34_9: # %res_block 51537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 51547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 51557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 51567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 51577a5b040eSPengcheng Wang; 51587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_31: 51597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 51607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 51617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 0(a1) 51627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 51637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5164bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB34_5 51657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1 51667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 8(a0) 51677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 8(a1) 51687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 51697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5170bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB34_5 51717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2: # %loadbb2 51727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 16(a0) 51737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 16(a1) 51747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 51757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5176bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB34_5 51777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.3: # %loadbb3 51787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 23(a0) 51797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 23(a1) 51807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0 51817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1 5182bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB34_5 51837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.4: 51847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0 51857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 5186bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB34_5: # %res_block 51877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3 51887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0 51897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1 51907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 51917a5b040eSPengcheng Wang; 51927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_31: 51937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 51947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 51957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 51967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 31 51977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 51987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 51997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 52007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 52017a5b040eSPengcheng Wang; 52027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_31: 52037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 52047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 52057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 52067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 31 52077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 52087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 52097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 52107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 52115adb5c05SPengcheng Wangentry: 52125adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 31) 52135adb5c05SPengcheng Wang ret i32 %memcmp 52145adb5c05SPengcheng Wang} 52155adb5c05SPengcheng Wang 52165adb5c05SPengcheng Wangdefine i32 @memcmp_size_32(ptr %s1, ptr %s2) nounwind { 52177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_size_32: 52187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 52197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 52207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 52217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 32 52227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 52237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 52247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 52257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 52265adb5c05SPengcheng Wang; 52277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_32: 52287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 52297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 52307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 52317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 32 52327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 52337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 52347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 52357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 52367a5b040eSPengcheng Wang; 52377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_32: 52387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 52397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 52407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 52417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 32 52427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 52437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 52447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 52457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 52467a5b040eSPengcheng Wang; 52477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_32: 52487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 52497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 52507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 52517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 32 52527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 52537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 52547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 52557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 52567a5b040eSPengcheng Wang; 52577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_32: 52587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 52597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 52607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 52617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 32 52627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 52637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 52647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 52657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 52667a5b040eSPengcheng Wang; 52677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_32: 52687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 52697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 52707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 52717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 32 52727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 52737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 52747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 52757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 52767a5b040eSPengcheng Wang; 52777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_32: 52787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 52797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 52807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 52817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 32 52827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 52837a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 52847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 52857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 52867a5b040eSPengcheng Wang; 52877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_32: 52887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 52897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 52907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 52917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 32 52927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 52937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 52947a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 52957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 52967a5b040eSPengcheng Wang; 52977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_32: 52987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 52997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 53007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 53017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 32 53027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 53037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 53047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 53057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 53067a5b040eSPengcheng Wang; 53077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_32: 53087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 53097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 53107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 53117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 32 53127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 53137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 53147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 53157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 53167a5b040eSPengcheng Wang; 53177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_32: 53187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 53197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 0(a0) 53207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 0(a1) 53217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 53227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5323bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB35_9 53247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.1: # %loadbb1 53257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 4(a0) 53267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 4(a1) 53277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 53287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5329bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB35_9 53307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.2: # %loadbb2 53317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 8(a0) 53327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 8(a1) 53337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 53347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5335bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB35_9 53367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.3: # %loadbb3 53377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 12(a0) 53387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 12(a1) 53397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 53407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5341bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB35_9 53427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.4: # %loadbb4 53437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 16(a0) 53447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 16(a1) 53457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 53467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5347bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB35_9 53487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.5: # %loadbb5 53497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 20(a0) 53507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 20(a1) 53517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 53527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5353bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB35_9 53547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.6: # %loadbb6 53557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a2, 24(a0) 53567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a3, 24(a1) 53577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a2 53587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a3 5359bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB35_9 53607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.7: # %loadbb7 53617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 28(a0) 53627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 28(a1) 53637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a2, a0 53647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a3, a1 5365bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: bne a2, a3, .LBB35_9 53667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: # %bb.8: 53677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: li a0, 0 53687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 5369bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: .LBB35_9: # %res_block 53707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a2, a3 53717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: neg a0, a0 53727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ori a0, a0, 1 53737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 53747a5b040eSPengcheng Wang; 53757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_32: 53767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 53777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 53787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 0(a1) 53797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 53807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5381bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB35_5 53827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1 53837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 8(a0) 53847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 8(a1) 53857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 53867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5387bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB35_5 53887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2: # %loadbb2 53897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 16(a0) 53907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 16(a1) 53917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 53927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5393bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB35_5 53947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.3: # %loadbb3 53957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 24(a0) 53967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 24(a1) 53977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0 53987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1 5399bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB35_5 54007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.4: 54017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0 54027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 5403bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB35_5: # %res_block 54047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3 54057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0 54067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1 54077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 54087a5b040eSPengcheng Wang; 54097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_32: 54107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 54117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 0(a0) 54127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 0(a1) 54137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 54147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5415bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB35_9 54167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.1: # %loadbb1 54177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 4(a0) 54187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 4(a1) 54197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 54207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5421bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB35_9 54227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.2: # %loadbb2 54237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 8(a0) 54247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 8(a1) 54257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 54267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5427bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB35_9 54287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.3: # %loadbb3 54297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 12(a0) 54307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 12(a1) 54317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 54327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5433bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB35_9 54347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.4: # %loadbb4 54357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 16(a0) 54367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 16(a1) 54377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 54387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5439bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB35_9 54407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.5: # %loadbb5 54417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 20(a0) 54427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 20(a1) 54437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 54447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5445bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB35_9 54467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.6: # %loadbb6 54477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a2, 24(a0) 54487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a3, 24(a1) 54497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a2 54507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a3 5451bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB35_9 54527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.7: # %loadbb7 54537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 28(a0) 54547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 28(a1) 54557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a2, a0 54567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a3, a1 5457bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: bne a2, a3, .LBB35_9 54587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: # %bb.8: 54597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: li a0, 0 54607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 5461bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: .LBB35_9: # %res_block 54627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a2, a3 54637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: neg a0, a0 54647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ori a0, a0, 1 54657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 54667a5b040eSPengcheng Wang; 54677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_32: 54687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 54697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 54707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 0(a1) 54717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 54727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5473bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB35_5 54747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1 54757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 8(a0) 54767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 8(a1) 54777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 54787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5479bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB35_5 54807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2: # %loadbb2 54817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 16(a0) 54827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 16(a1) 54837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 54847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5485bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB35_5 54867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.3: # %loadbb3 54877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 24(a0) 54887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 24(a1) 54897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0 54907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1 5491bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB35_5 54927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.4: 54937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0 54947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 5495bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB35_5: # %res_block 54967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3 54977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0 54987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1 54997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 55007a5b040eSPengcheng Wang; 55017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_32: 55027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 55037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 55047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 55057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 32 55067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 55077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 55087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 55097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 55107a5b040eSPengcheng Wang; 55117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_32: 55127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 55137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 55147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 55157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 32 55167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 55177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 55187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 55197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 55205adb5c05SPengcheng Wangentry: 55215adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 32) 55225adb5c05SPengcheng Wang ret i32 %memcmp 55235adb5c05SPengcheng Wang} 55245adb5c05SPengcheng Wang 55255adb5c05SPengcheng Wangdefine i32 @memcmp_size_63(ptr %s1, ptr %s2) nounwind { 55265adb5c05SPengcheng Wang; CHECK-RV32-LABEL: memcmp_size_63: 55275adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 55285adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 55295adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 55305adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 63 55315adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call memcmp 55325adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 55335adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 55345adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 55355adb5c05SPengcheng Wang; 55367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_63: 55377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 55387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 55397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 55407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 63 55417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 55427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 55437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 55447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 55457a5b040eSPengcheng Wang; 55467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_63: 55477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 55487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 55497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 55507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 63 55517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 55527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 55537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 55547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 55557a5b040eSPengcheng Wang; 55567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_63: 55577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 55587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 55597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 55607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 63 55617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 55627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 55637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 55647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 55657a5b040eSPengcheng Wang; 55667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_63: 55677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 55687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 55697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 55707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 63 55717a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 55727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 55737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 55747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 55757a5b040eSPengcheng Wang; 55767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_63: 55777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 55787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 55797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 55807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 63 55817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 55827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 55837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 55847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 55857a5b040eSPengcheng Wang; 55867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_63: 55877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 55887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 55897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 0(a1) 55907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 55917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5592bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB36_9 55937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1 55947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 8(a0) 55957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 8(a1) 55967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 55977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5598bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB36_9 55997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2: # %loadbb2 56007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 16(a0) 56017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 16(a1) 56027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 56037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5604bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB36_9 56057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.3: # %loadbb3 56067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 24(a0) 56077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 24(a1) 56087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 56097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5610bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB36_9 56117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.4: # %loadbb4 56127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 32(a0) 56137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 32(a1) 56147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 56157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5616bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB36_9 56177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.5: # %loadbb5 56187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 40(a0) 56197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 40(a1) 56207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 56217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5622bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB36_9 56237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.6: # %loadbb6 56247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 48(a0) 56257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 48(a1) 56267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 56277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5628bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB36_9 56297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.7: # %loadbb7 56307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 55(a0) 56317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 55(a1) 56327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0 56337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1 5634bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB36_9 56357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.8: 56367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0 56377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 5638bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB36_9: # %res_block 56397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3 56407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0 56417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1 56427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 56437a5b040eSPengcheng Wang; 56447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_63: 56457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 56467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 56477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 0(a1) 56487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 56497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5650bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB36_9 56517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1 56527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 8(a0) 56537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 8(a1) 56547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 56557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5656bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB36_9 56577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2: # %loadbb2 56587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 16(a0) 56597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 16(a1) 56607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 56617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5662bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB36_9 56637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.3: # %loadbb3 56647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 24(a0) 56657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 24(a1) 56667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 56677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5668bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB36_9 56697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.4: # %loadbb4 56707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 32(a0) 56717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 32(a1) 56727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 56737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5674bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB36_9 56757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.5: # %loadbb5 56767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 40(a0) 56777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 40(a1) 56787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 56797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5680bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB36_9 56817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.6: # %loadbb6 56827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 48(a0) 56837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 48(a1) 56847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 56857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5686bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB36_9 56877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.7: # %loadbb7 56887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 55(a0) 56897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 55(a1) 56907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0 56917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1 5692bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB36_9 56937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.8: 56947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0 56957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 5696bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB36_9: # %res_block 56977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3 56987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0 56997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1 57007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 57017a5b040eSPengcheng Wang; 57027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_63: 57037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 57047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 57057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 57067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 63 57077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 57087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 57097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 57107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 57115adb5c05SPengcheng Wangentry: 57125adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 63) 57135adb5c05SPengcheng Wang ret i32 %memcmp 57145adb5c05SPengcheng Wang} 57155adb5c05SPengcheng Wang 57165adb5c05SPengcheng Wangdefine i32 @memcmp_size_64(ptr %s1, ptr %s2) nounwind { 57175adb5c05SPengcheng Wang; CHECK-RV32-LABEL: memcmp_size_64: 57185adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 57195adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 57205adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 57215adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 64 57225adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call memcmp 57235adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 57245adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 57255adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 57265adb5c05SPengcheng Wang; 57277a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_size_64: 57287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 57297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 57307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 57317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 64 57327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 57337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 57347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 57357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 57367a5b040eSPengcheng Wang; 57377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_64: 57387a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 57397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 57407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 57417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 64 57427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 57437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 57447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 57457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 57467a5b040eSPengcheng Wang; 57477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_64: 57487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 57497a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 57507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 57517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 64 57527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 57537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 57547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 57557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 57567a5b040eSPengcheng Wang; 57577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_64: 57587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 57597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 57607a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 57617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 64 57627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 57637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 57647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 57657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 57667a5b040eSPengcheng Wang; 57677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_64: 57687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 57697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 57707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 57717a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 64 57727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 57737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 57747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 57757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 57767a5b040eSPengcheng Wang; 57777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_64: 57787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 57797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 0(a0) 57807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 0(a1) 57817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 57827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5783bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB37_9 57847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.1: # %loadbb1 57857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 8(a0) 57867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 8(a1) 57877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 57887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5789bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB37_9 57907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.2: # %loadbb2 57917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 16(a0) 57927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 16(a1) 57937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 57947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5795bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB37_9 57967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.3: # %loadbb3 57977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 24(a0) 57987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 24(a1) 57997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 58007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5801bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB37_9 58027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.4: # %loadbb4 58037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 32(a0) 58047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 32(a1) 58057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 58067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5807bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB37_9 58087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.5: # %loadbb5 58097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 40(a0) 58107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 40(a1) 58117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 58127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5813bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB37_9 58147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.6: # %loadbb6 58157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a2, 48(a0) 58167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a3, 48(a1) 58177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a2 58187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a3 5819bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB37_9 58207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.7: # %loadbb7 58217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a0, 56(a0) 58227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ld a1, 56(a1) 58237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a2, a0 58247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a3, a1 5825bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: bne a2, a3, .LBB37_9 58267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: # %bb.8: 58277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: li a0, 0 58287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 5829bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: .LBB37_9: # %res_block 58307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a2, a3 58317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: neg a0, a0 58327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ori a0, a0, 1 58337a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 58347a5b040eSPengcheng Wang; 58357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_64: 58367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 58377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 0(a0) 58387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 0(a1) 58397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 58407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5841bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB37_9 58427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.1: # %loadbb1 58437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 8(a0) 58447a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 8(a1) 58457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 58467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5847bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB37_9 58487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.2: # %loadbb2 58497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 16(a0) 58507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 16(a1) 58517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 58527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5853bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB37_9 58547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.3: # %loadbb3 58557a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 24(a0) 58567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 24(a1) 58577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 58587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5859bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB37_9 58607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.4: # %loadbb4 58617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 32(a0) 58627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 32(a1) 58637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 58647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5865bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB37_9 58667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.5: # %loadbb5 58677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 40(a0) 58687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 40(a1) 58697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 58707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5871bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB37_9 58727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.6: # %loadbb6 58737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a2, 48(a0) 58747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a3, 48(a1) 58757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a2 58767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a3 5877bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB37_9 58787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.7: # %loadbb7 58797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a0, 56(a0) 58807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ld a1, 56(a1) 58817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a2, a0 58827a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a3, a1 5883bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: bne a2, a3, .LBB37_9 58847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: # %bb.8: 58857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: li a0, 0 58867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 5887bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: .LBB37_9: # %res_block 58887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a2, a3 58897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: neg a0, a0 58907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ori a0, a0, 1 58917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 58927a5b040eSPengcheng Wang; 58937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_64: 58947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 58957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 58967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 58977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 64 58987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 58997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 59007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 59017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 59025adb5c05SPengcheng Wangentry: 59035adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 64) 59045adb5c05SPengcheng Wang ret i32 %memcmp 59055adb5c05SPengcheng Wang} 59065adb5c05SPengcheng Wang 59075adb5c05SPengcheng Wangdefine i32 @memcmp_size_127(ptr %s1, ptr %s2) nounwind { 59085adb5c05SPengcheng Wang; CHECK-RV32-LABEL: memcmp_size_127: 59095adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 59105adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 59115adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 59125adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 127 59135adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call memcmp 59145adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 59155adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 59165adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 59175adb5c05SPengcheng Wang; 59185adb5c05SPengcheng Wang; CHECK-RV64-LABEL: memcmp_size_127: 59195adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 59205adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 59215adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 59225adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 127 59235adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call memcmp 59245adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 59255adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 59265adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 59275adb5c05SPengcheng Wangentry: 59285adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 127) 59295adb5c05SPengcheng Wang ret i32 %memcmp 59305adb5c05SPengcheng Wang} 59315adb5c05SPengcheng Wang 59325adb5c05SPengcheng Wangdefine i32 @memcmp_size_128(ptr %s1, ptr %s2) nounwind { 59335adb5c05SPengcheng Wang; CHECK-RV32-LABEL: memcmp_size_128: 59345adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 59355adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 59365adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 59375adb5c05SPengcheng Wang; CHECK-RV32-NEXT: li a2, 128 59385adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call memcmp 59395adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 59405adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 59415adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 59425adb5c05SPengcheng Wang; 59435adb5c05SPengcheng Wang; CHECK-RV64-LABEL: memcmp_size_128: 59445adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 59455adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 59465adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 59475adb5c05SPengcheng Wang; CHECK-RV64-NEXT: li a2, 128 59485adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call memcmp 59495adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 59505adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 59515adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 59525adb5c05SPengcheng Wangentry: 59535adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 128) 59545adb5c05SPengcheng Wang ret i32 %memcmp 59555adb5c05SPengcheng Wang} 59565adb5c05SPengcheng Wang 59575adb5c05SPengcheng Wangdefine i32 @memcmp_size_runtime(ptr %s1, ptr %s2, iXLen %len) nounwind { 59585adb5c05SPengcheng Wang; CHECK-RV32-LABEL: memcmp_size_runtime: 59595adb5c05SPengcheng Wang; CHECK-RV32: # %bb.0: # %entry 59605adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, -16 59615adb5c05SPengcheng Wang; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 59625adb5c05SPengcheng Wang; CHECK-RV32-NEXT: call memcmp 59635adb5c05SPengcheng Wang; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 59645adb5c05SPengcheng Wang; CHECK-RV32-NEXT: addi sp, sp, 16 59655adb5c05SPengcheng Wang; CHECK-RV32-NEXT: ret 59665adb5c05SPengcheng Wang; 59675adb5c05SPengcheng Wang; CHECK-RV64-LABEL: memcmp_size_runtime: 59685adb5c05SPengcheng Wang; CHECK-RV64: # %bb.0: # %entry 59695adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, -16 59705adb5c05SPengcheng Wang; CHECK-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 59715adb5c05SPengcheng Wang; CHECK-RV64-NEXT: call memcmp 59725adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 59735adb5c05SPengcheng Wang; CHECK-RV64-NEXT: addi sp, sp, 16 59745adb5c05SPengcheng Wang; CHECK-RV64-NEXT: ret 59755adb5c05SPengcheng Wangentry: 59765adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen %len) 59775adb5c05SPengcheng Wang ret i32 %memcmp 59785adb5c05SPengcheng Wang} 59795adb5c05SPengcheng Wang 59805adb5c05SPengcheng Wangdefine i1 @memcmp_eq_zero(ptr %s1, ptr %s2) nounwind { 59815adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_eq_zero: 59825adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 59835adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a2, 1(a1) 59849122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a3, 2(a1) 59859122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a4, 3(a1) 59869122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a1, 0(a1) 59875adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: slli a2, a2, 8 59889122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: slli a3, a3, 16 59899122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: slli a4, a4, 24 59909122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: or a1, a2, a1 59919122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a2, 0(a0) 59929122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a5, 1(a0) 59935adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: or a3, a4, a3 59949122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a4, 2(a0) 59959122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lbu a0, 3(a0) 59969122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: slli a5, a5, 8 59979122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: or a2, a5, a2 59989122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: slli a4, a4, 16 59995adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: slli a0, a0, 24 60009122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: or a0, a0, a4 60019122c523SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: or a1, a3, a1 60025adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: or a0, a0, a2 60035adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: xor a0, a0, a1 60045adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: seqz a0, a0 60055adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 60065adb5c05SPengcheng Wang; 60075adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_eq_zero: 60085adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 60095adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lbu a2, 1(a1) 60109122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lbu a3, 2(a1) 60119122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lb a4, 3(a1) 60129122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lbu a1, 0(a1) 60135adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slli a2, a2, 8 60149122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slli a3, a3, 16 60159122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slli a4, a4, 24 60169122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: or a1, a2, a1 60179122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lbu a2, 0(a0) 60189122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lbu a5, 1(a0) 60195adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: or a3, a4, a3 60209122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lbu a4, 2(a0) 60219122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: lb a0, 3(a0) 60229122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slli a5, a5, 8 60239122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: or a2, a5, a2 60249122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slli a4, a4, 16 60255adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slli a0, a0, 24 60269122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: or a0, a0, a4 60279122c523SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: or a1, a3, a1 60285adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: or a0, a0, a2 60295adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: xor a0, a0, a1 60305adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: seqz a0, a0 60315adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 60325adb5c05SPengcheng Wang; 60335adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_eq_zero: 60345adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 60355adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a2, 1(a1) 60369122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a3, 2(a1) 60379122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a4, 3(a1) 60389122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a1, 0(a1) 60395adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: slli a2, a2, 8 60409122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: slli a3, a3, 16 60419122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: slli a4, a4, 24 60429122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: or a1, a2, a1 60439122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a2, 0(a0) 60449122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a5, 1(a0) 60455adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: or a3, a4, a3 60469122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a4, 2(a0) 60479122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lbu a0, 3(a0) 60489122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: slli a5, a5, 8 60499122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: or a2, a5, a2 60509122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: slli a4, a4, 16 60515adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: slli a0, a0, 24 60529122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: or a0, a0, a4 60539122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: or a1, a3, a1 60545adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: or a0, a0, a2 60555adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: xor a0, a0, a1 60565adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: seqz a0, a0 60575adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 60585adb5c05SPengcheng Wang; 60595adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_eq_zero: 60605adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 60615adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lbu a2, 1(a1) 60629122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lbu a3, 2(a1) 60639122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lb a4, 3(a1) 60649122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lbu a1, 0(a1) 60655adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slli a2, a2, 8 60669122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slli a3, a3, 16 60679122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slli a4, a4, 24 60689122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: or a1, a2, a1 60699122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lbu a2, 0(a0) 60709122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lbu a5, 1(a0) 60715adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: or a3, a4, a3 60729122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lbu a4, 2(a0) 60739122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: lb a0, 3(a0) 60749122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slli a5, a5, 8 60759122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: or a2, a5, a2 60769122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slli a4, a4, 16 60775adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slli a0, a0, 24 60789122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: or a0, a0, a4 60799122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: or a1, a3, a1 60805adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: or a0, a0, a2 60815adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: xor a0, a0, a1 60825adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: seqz a0, a0 60835adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 60845adb5c05SPengcheng Wang; 60855adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_eq_zero: 60865adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 60875adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a2, 0(a1) 60885adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a3, 1(a1) 60895adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a4, 2(a1) 60905adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a1, 3(a1) 60919122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a5, 1(a0) 60929122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a6, 2(a0) 60939122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a7, 3(a0) 60949122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lbu a0, 0(a0) 60955adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: packh a1, a4, a1 60965adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: packh a2, a2, a3 60979122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: packh a3, a6, a7 60989122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: packh a0, a0, a5 60995adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: pack a1, a2, a1 61009122c523SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: pack a0, a0, a3 61015adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: xor a0, a0, a1 61025adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: seqz a0, a0 61035adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 61045adb5c05SPengcheng Wang; 61055adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_eq_zero: 61065adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 61075adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lbu a2, 0(a1) 61085adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lbu a3, 1(a1) 61095adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lbu a4, 2(a1) 61105adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lb a1, 3(a1) 61119122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lbu a5, 0(a0) 61129122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lbu a6, 1(a0) 61135adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: packh a2, a2, a3 61149122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lbu a3, 2(a0) 61159122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: lb a0, 3(a0) 61169122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: packh a5, a5, a6 61175adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: slli a4, a4, 16 61185adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: slli a1, a1, 24 61195adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: or a1, a1, a4 61209122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: slli a3, a3, 16 61215adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: slli a0, a0, 24 61229122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: or a0, a0, a3 61239122c523SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: or a1, a1, a2 61245adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: or a0, a0, a5 61255adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: xor a0, a0, a1 61265adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: seqz a0, a0 61275adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 61285adb5c05SPengcheng Wang; 61295adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_eq_zero: 61305adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 61315adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a2, 1(a1) 61329122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a3, 2(a1) 61339122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a4, 3(a1) 61349122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a1, 0(a1) 61355adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: slli a2, a2, 8 61369122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: slli a3, a3, 16 61379122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: slli a4, a4, 24 61389122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: or a1, a2, a1 61399122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a2, 0(a0) 61409122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a5, 1(a0) 61415adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: or a3, a4, a3 61429122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a4, 2(a0) 61439122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lbu a0, 3(a0) 61449122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: slli a5, a5, 8 61459122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: or a2, a5, a2 61469122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: slli a4, a4, 16 61475adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: slli a0, a0, 24 61489122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: or a0, a0, a4 61499122c523SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: or a1, a3, a1 61505adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: or a0, a0, a2 61515adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: xor a0, a0, a1 61525adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: seqz a0, a0 61535adb5c05SPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 61545adb5c05SPengcheng Wang; 61555adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_eq_zero: 61565adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 61575adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lbu a2, 1(a1) 61589122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lbu a3, 2(a1) 61599122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lb a4, 3(a1) 61609122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lbu a1, 0(a1) 61615adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slli a2, a2, 8 61629122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slli a3, a3, 16 61639122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slli a4, a4, 24 61649122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: or a1, a2, a1 61659122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lbu a2, 0(a0) 61669122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lbu a5, 1(a0) 61675adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: or a3, a4, a3 61689122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lbu a4, 2(a0) 61699122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: lb a0, 3(a0) 61709122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slli a5, a5, 8 61719122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: or a2, a5, a2 61729122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slli a4, a4, 16 61735adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slli a0, a0, 24 61749122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: or a0, a0, a4 61759122c523SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: or a1, a3, a1 61765adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: or a0, a0, a2 61775adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: xor a0, a0, a1 61785adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: seqz a0, a0 61795adb5c05SPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 61805adb5c05SPengcheng Wang; 61815adb5c05SPengcheng Wang; CHECK-UNALIGNED-LABEL: memcmp_eq_zero: 61825adb5c05SPengcheng Wang; CHECK-UNALIGNED: # %bb.0: # %entry 61835adb5c05SPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a0, 0(a0) 61847a5b040eSPengcheng Wang; CHECK-UNALIGNED-NEXT: lw a1, 0(a1) 61855adb5c05SPengcheng Wang; CHECK-UNALIGNED-NEXT: xor a0, a0, a1 61865adb5c05SPengcheng Wang; CHECK-UNALIGNED-NEXT: seqz a0, a0 61875adb5c05SPengcheng Wang; CHECK-UNALIGNED-NEXT: ret 61885adb5c05SPengcheng Wangentry: 61895adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4) 61905adb5c05SPengcheng Wang %ret = icmp eq i32 %memcmp, 0 61915adb5c05SPengcheng Wang ret i1 %ret 61925adb5c05SPengcheng Wang} 61935adb5c05SPengcheng Wang 61945adb5c05SPengcheng Wangdefine i1 @memcmp_lt_zero(ptr %s1, ptr %s2) nounwind { 61957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_lt_zero: 61967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 61977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 61987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 61997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 62007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 62017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: srli a0, a0, 31 62027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 62037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 62047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 62055adb5c05SPengcheng Wang; 62067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_lt_zero: 62077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 62087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 62097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 62107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 62117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 62127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: slti a0, a0, 0 62137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 62147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 62157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 62167a5b040eSPengcheng Wang; 62177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_lt_zero: 62187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 62197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 62207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 62217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 62227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 62237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: srli a0, a0, 31 62247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 62257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 62267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 62277a5b040eSPengcheng Wang; 62287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_lt_zero: 62297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 62307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 62317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 62327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 62337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 62347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: slti a0, a0, 0 62357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 62367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 62377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 62387a5b040eSPengcheng Wang; 62397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_lt_zero: 62407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 62417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 62427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 62437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 62447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 62457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: srli a0, a0, 31 62467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 62477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 62487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 62497a5b040eSPengcheng Wang; 62507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_lt_zero: 62517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 62527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 62537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 62547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 62557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 62567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: slti a0, a0, 0 62577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 62587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 62597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 62607a5b040eSPengcheng Wang; 62617a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_lt_zero: 62627a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 62637a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 62647a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 62657a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 62667a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 62677a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: srli a0, a0, 31 62687a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 62697a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 62707a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 62717a5b040eSPengcheng Wang; 62727a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_lt_zero: 62737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 62747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 62757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 62767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 62777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 62787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: slti a0, a0, 0 62797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 62807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 62817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 62827a5b040eSPengcheng Wang; 62837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_lt_zero: 62847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 62857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 62867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 62877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 4 62887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 62897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: srli a0, a0, 31 62907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 62917a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 62927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 62937a5b040eSPengcheng Wang; 62947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_lt_zero: 62957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 62967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 62977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 62987a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 4 62997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 63007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: slti a0, a0, 0 63017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 63027a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 63037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 63047a5b040eSPengcheng Wang; 63057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_lt_zero: 63067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 63077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 0(a0) 63087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 0(a1) 63097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0 63107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1 63117a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a0, a1 63127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 63137a5b040eSPengcheng Wang; 63147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_lt_zero: 63157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 63167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a0, 0(a0) 63177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a1, 0(a1) 63187a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 63197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 63209122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 32 63217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 32 63227a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a0, a1 63237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 63247a5b040eSPengcheng Wang; 63257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_lt_zero: 63267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 63277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 0(a0) 63287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 0(a1) 63297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0 63307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1 63317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a0, a1 63327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 63337a5b040eSPengcheng Wang; 63347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_lt_zero: 63357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 63367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a0, 0(a0) 63377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a1, 0(a1) 63387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 63397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 63409122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 32 63417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 32 63427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a0, a1 63437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 63447a5b040eSPengcheng Wang; 63457a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_lt_zero: 63467a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 63477a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 63487a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 63497a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 4 63507a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 63517a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: srli a0, a0, 31 63527a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 63537a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 63547a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 63557a5b040eSPengcheng Wang; 63567a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_lt_zero: 63577a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 63587a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 63597a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 63607a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 4 63617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 63627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: slti a0, a0, 0 63637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 63647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 63657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 63665adb5c05SPengcheng Wangentry: 63675adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4) 63685adb5c05SPengcheng Wang %ret = icmp slt i32 %memcmp, 0 63695adb5c05SPengcheng Wang ret i1 %ret 63705adb5c05SPengcheng Wang} 63715adb5c05SPengcheng Wang 63725adb5c05SPengcheng Wangdefine i1 @memcmp_gt_zero(ptr %s1, ptr %s2) nounwind { 63737a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-LABEL: memcmp_gt_zero: 63747a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32: # %bb.0: # %entry 63757a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 63767a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 63777a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: li a2, 4 63787a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: call memcmp 63797a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: sgtz a0, a0 63807a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 63817a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 63827a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-NEXT: ret 63835adb5c05SPengcheng Wang; 63847a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-LABEL: memcmp_gt_zero: 63857a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64: # %bb.0: # %entry 63867a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 63877a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 63887a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: li a2, 4 63897a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: call memcmp 63907a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: sgtz a0, a0 63917a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 63927a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 63937a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-NEXT: ret 63947a5b040eSPengcheng Wang; 63957a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_gt_zero: 63967a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 63977a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 63987a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 63997a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 64007a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 64017a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: sgtz a0, a0 64027a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 64037a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 64047a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 64057a5b040eSPengcheng Wang; 64067a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_gt_zero: 64077a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 64087a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 64097a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 64107a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 64117a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 64127a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: sgtz a0, a0 64137a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 64147a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 64157a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 64167a5b040eSPengcheng Wang; 64177a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_gt_zero: 64187a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 64197a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 64207a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 64217a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 64227a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 64237a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: sgtz a0, a0 64247a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 64257a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 64267a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 64277a5b040eSPengcheng Wang; 64287a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_gt_zero: 64297a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 64307a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 64317a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 64327a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 64337a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 64347a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: sgtz a0, a0 64357a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 64367a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 64377a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 64387a5b040eSPengcheng Wang; 64397a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-LABEL: memcmp_gt_zero: 64407a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 64417a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 64427a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 64437a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 64447a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 64457a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: sgtz a0, a0 64467a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 64477a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 64487a5b040eSPengcheng Wang; CHECK-ALIGNED-RV32-V-NEXT: ret 64497a5b040eSPengcheng Wang; 64507a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-LABEL: memcmp_gt_zero: 64517a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 64527a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 64537a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 64547a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 64557a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 64567a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: sgtz a0, a0 64577a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 64587a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 64597a5b040eSPengcheng Wang; CHECK-ALIGNED-RV64-V-NEXT: ret 64607a5b040eSPengcheng Wang; 64617a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-LABEL: memcmp_gt_zero: 64627a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 64637a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 64647a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 64657a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: li a2, 4 64667a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: call memcmp 64677a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: sgtz a0, a0 64687a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 64697a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 64707a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-NEXT: ret 64717a5b040eSPengcheng Wang; 64727a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-LABEL: memcmp_gt_zero: 64737a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 64747a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 64757a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 64767a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: li a2, 4 64777a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: call memcmp 64787a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: sgtz a0, a0 64797a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 64807a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 64817a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-NEXT: ret 64827a5b040eSPengcheng Wang; 64837a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_gt_zero: 64847a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 64857a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 0(a0) 64867a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 0(a1) 64877a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0 64887a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1 64897a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a1, a0 64907a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 64917a5b040eSPengcheng Wang; 64927a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_gt_zero: 64937a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 64947a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a0, 0(a0) 64957a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a1, 0(a1) 64967a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 64977a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 64989122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 32 64997a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 32 65007a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 65017a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 65027a5b040eSPengcheng Wang; 65037a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_gt_zero: 65047a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 65057a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 0(a0) 65067a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 0(a1) 65077a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0 65087a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1 65097a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a1, a0 65107a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 65117a5b040eSPengcheng Wang; 65127a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_gt_zero: 65137a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 65147a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a0, 0(a0) 65157a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a1, 0(a1) 65167a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 65177a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 65189122c523SPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 32 65197a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 32 65207a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 65217a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 65227a5b040eSPengcheng Wang; 65237a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_gt_zero: 65247a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 65257a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 65267a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 65277a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 4 65287a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 65297a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: sgtz a0, a0 65307a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 65317a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 65327a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV32-V-NEXT: ret 65337a5b040eSPengcheng Wang; 65347a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_gt_zero: 65357a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 65367a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 65377a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 65387a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 4 65397a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 65407a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: sgtz a0, a0 65417a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 65427a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 65437a5b040eSPengcheng Wang; CHECK-UNALIGNED-RV64-V-NEXT: ret 65445adb5c05SPengcheng Wangentry: 65455adb5c05SPengcheng Wang %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4) 65465adb5c05SPengcheng Wang %ret = icmp sgt i32 %memcmp, 0 65475adb5c05SPengcheng Wang ret i1 %ret 65485adb5c05SPengcheng Wang} 6549bad0f98bSCraig Topper 6550bad0f98bSCraig Topperdefine i1 @memcmp_le_zero(ptr %s1, ptr %s2) nounwind { 6551bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-LABEL: memcmp_le_zero: 6552bad0f98bSCraig Topper; CHECK-ALIGNED-RV32: # %bb.0: # %entry 6553bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 6554bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6555bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: li a2, 4 6556bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: call memcmp 6557bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: slti a0, a0, 1 6558bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6559bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 6560bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: ret 6561bad0f98bSCraig Topper; 6562bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-LABEL: memcmp_le_zero: 6563bad0f98bSCraig Topper; CHECK-ALIGNED-RV64: # %bb.0: # %entry 6564bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 6565bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6566bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: li a2, 4 6567bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: call memcmp 6568bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: slti a0, a0, 1 6569bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6570bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 6571bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: ret 6572bad0f98bSCraig Topper; 6573bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_le_zero: 6574bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 6575bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 6576bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6577bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 6578bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 6579bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: slti a0, a0, 1 6580bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6581bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 6582bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 6583bad0f98bSCraig Topper; 6584bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_le_zero: 6585bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 6586bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 6587bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6588bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 6589bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 6590bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: slti a0, a0, 1 6591bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6592bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 6593bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 6594bad0f98bSCraig Topper; 6595bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_le_zero: 6596bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 6597bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 6598bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6599bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 6600bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 6601bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: slti a0, a0, 1 6602bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6603bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 6604bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 6605bad0f98bSCraig Topper; 6606bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_le_zero: 6607bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 6608bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 6609bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6610bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 6611bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 6612bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: slti a0, a0, 1 6613bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6614bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 6615bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 6616bad0f98bSCraig Topper; 6617bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-LABEL: memcmp_le_zero: 6618bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 6619bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 6620bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6621bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 6622bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 6623bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: slti a0, a0, 1 6624bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6625bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 6626bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: ret 6627bad0f98bSCraig Topper; 6628bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-LABEL: memcmp_le_zero: 6629bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 6630bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 6631bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6632bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 6633bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 6634bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: slti a0, a0, 1 6635bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6636bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 6637bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: ret 6638bad0f98bSCraig Topper; 6639bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-LABEL: memcmp_le_zero: 6640bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 6641bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 6642bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6643bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: li a2, 4 6644bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: call memcmp 6645bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: slti a0, a0, 1 6646bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6647bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 6648bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: ret 6649bad0f98bSCraig Topper; 6650bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-LABEL: memcmp_le_zero: 6651bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 6652bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 6653bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6654bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: li a2, 4 6655bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: call memcmp 6656bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: slti a0, a0, 1 6657bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6658bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 6659bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: ret 6660bad0f98bSCraig Topper; 6661bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_le_zero: 6662bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 6663bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 0(a0) 6664bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 0(a1) 6665bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0 6666bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1 6667bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a1, a0 6668*a4e47586SCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: xori a0, a0, 1 6669bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 6670bad0f98bSCraig Topper; 6671bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_le_zero: 6672bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 6673bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a0, 0(a0) 6674bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a1, 0(a1) 6675bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 6676bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 6677bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 32 6678bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 32 6679bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a1, a0 6680*a4e47586SCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: xori a0, a0, 1 6681bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 6682bad0f98bSCraig Topper; 6683bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_le_zero: 6684bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 6685bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 0(a0) 6686bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 0(a1) 6687bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0 6688bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1 6689bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a1, a0 6690*a4e47586SCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xori a0, a0, 1 6691bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 6692bad0f98bSCraig Topper; 6693bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_le_zero: 6694bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 6695bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a0, 0(a0) 6696bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a1, 0(a1) 6697bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 6698bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 6699bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 32 6700bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 32 6701bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a1, a0 6702*a4e47586SCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xori a0, a0, 1 6703bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 6704bad0f98bSCraig Topper; 6705bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_le_zero: 6706bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 6707bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 6708bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6709bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 4 6710bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 6711bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: slti a0, a0, 1 6712bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6713bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 6714bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: ret 6715bad0f98bSCraig Topper; 6716bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_le_zero: 6717bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 6718bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 6719bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6720bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 4 6721bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 6722bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: slti a0, a0, 1 6723bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6724bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 6725bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: ret 6726bad0f98bSCraig Topperentry: 6727bad0f98bSCraig Topper %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4) 6728bad0f98bSCraig Topper %ret = icmp slt i32 %memcmp, 1 6729bad0f98bSCraig Topper ret i1 %ret 6730bad0f98bSCraig Topper} 6731bad0f98bSCraig Topper 6732bad0f98bSCraig Topperdefine i1 @memcmp_ge_zero(ptr %s1, ptr %s2) nounwind { 6733bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-LABEL: memcmp_ge_zero: 6734bad0f98bSCraig Topper; CHECK-ALIGNED-RV32: # %bb.0: # %entry 6735bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, -16 6736bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6737bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: li a2, 4 6738bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: call memcmp 6739bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: slti a0, a0, 0 6740bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: xori a0, a0, 1 6741bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6742bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: addi sp, sp, 16 6743bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-NEXT: ret 6744bad0f98bSCraig Topper; 6745bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-LABEL: memcmp_ge_zero: 6746bad0f98bSCraig Topper; CHECK-ALIGNED-RV64: # %bb.0: # %entry 6747bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, -16 6748bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6749bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: li a2, 4 6750bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: call memcmp 6751bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: slti a0, a0, 0 6752bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: xori a0, a0, 1 6753bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6754bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: addi sp, sp, 16 6755bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-NEXT: ret 6756bad0f98bSCraig Topper; 6757bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_ge_zero: 6758bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB: # %bb.0: # %entry 6759bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, -16 6760bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6761bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: li a2, 4 6762bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: call memcmp 6763bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: slti a0, a0, 0 6764bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: xori a0, a0, 1 6765bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6766bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: addi sp, sp, 16 6767bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBB-NEXT: ret 6768bad0f98bSCraig Topper; 6769bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_ge_zero: 6770bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB: # %bb.0: # %entry 6771bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, -16 6772bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6773bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: li a2, 4 6774bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: call memcmp 6775bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: slti a0, a0, 0 6776bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: xori a0, a0, 1 6777bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6778bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: addi sp, sp, 16 6779bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBB-NEXT: ret 6780bad0f98bSCraig Topper; 6781bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_ge_zero: 6782bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB: # %bb.0: # %entry 6783bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, -16 6784bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6785bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: li a2, 4 6786bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: call memcmp 6787bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: slti a0, a0, 0 6788bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: xori a0, a0, 1 6789bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6790bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: addi sp, sp, 16 6791bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-ZBKB-NEXT: ret 6792bad0f98bSCraig Topper; 6793bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_ge_zero: 6794bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB: # %bb.0: # %entry 6795bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, -16 6796bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6797bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: li a2, 4 6798bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: call memcmp 6799bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: slti a0, a0, 0 6800bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: xori a0, a0, 1 6801bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6802bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: addi sp, sp, 16 6803bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-ZBKB-NEXT: ret 6804bad0f98bSCraig Topper; 6805bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-LABEL: memcmp_ge_zero: 6806bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V: # %bb.0: # %entry 6807bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, -16 6808bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6809bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: li a2, 4 6810bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: call memcmp 6811bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: slti a0, a0, 0 6812bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: xori a0, a0, 1 6813bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6814bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: addi sp, sp, 16 6815bad0f98bSCraig Topper; CHECK-ALIGNED-RV32-V-NEXT: ret 6816bad0f98bSCraig Topper; 6817bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-LABEL: memcmp_ge_zero: 6818bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V: # %bb.0: # %entry 6819bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, -16 6820bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6821bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: li a2, 4 6822bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: call memcmp 6823bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: slti a0, a0, 0 6824bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: xori a0, a0, 1 6825bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6826bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: addi sp, sp, 16 6827bad0f98bSCraig Topper; CHECK-ALIGNED-RV64-V-NEXT: ret 6828bad0f98bSCraig Topper; 6829bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-LABEL: memcmp_ge_zero: 6830bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32: # %bb.0: # %entry 6831bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, -16 6832bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6833bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: li a2, 4 6834bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: call memcmp 6835bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: slti a0, a0, 0 6836bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: xori a0, a0, 1 6837bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6838bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: addi sp, sp, 16 6839bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-NEXT: ret 6840bad0f98bSCraig Topper; 6841bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-LABEL: memcmp_ge_zero: 6842bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64: # %bb.0: # %entry 6843bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, -16 6844bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6845bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: li a2, 4 6846bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: call memcmp 6847bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: slti a0, a0, 0 6848bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: xori a0, a0, 1 6849bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6850bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: addi sp, sp, 16 6851bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-NEXT: ret 6852bad0f98bSCraig Topper; 6853bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_ge_zero: 6854bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB: # %bb.0: # %entry 6855bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a0, 0(a0) 6856bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: lw a1, 0(a1) 6857bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a0, a0 6858bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: rev8 a1, a1 6859*a4e47586SCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: sltu a0, a0, a1 6860bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: xori a0, a0, 1 6861bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBB-NEXT: ret 6862bad0f98bSCraig Topper; 6863bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_ge_zero: 6864bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB: # %bb.0: # %entry 6865bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a0, 0(a0) 6866bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: lw a1, 0(a1) 6867bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a0, a0 6868bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: rev8 a1, a1 6869bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a0, a0, 32 6870bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: srli a1, a1, 32 6871*a4e47586SCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: sltu a0, a0, a1 6872bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: xori a0, a0, 1 6873bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBB-NEXT: ret 6874bad0f98bSCraig Topper; 6875bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_ge_zero: 6876bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB: # %bb.0: # %entry 6877bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a0, 0(a0) 6878bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: lw a1, 0(a1) 6879bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a0, a0 6880bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: rev8 a1, a1 6881*a4e47586SCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: sltu a0, a0, a1 6882bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: xori a0, a0, 1 6883bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-ZBKB-NEXT: ret 6884bad0f98bSCraig Topper; 6885bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_ge_zero: 6886bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB: # %bb.0: # %entry 6887bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a0, 0(a0) 6888bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: lw a1, 0(a1) 6889bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a0, a0 6890bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: rev8 a1, a1 6891bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a0, a0, 32 6892bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: srli a1, a1, 32 6893*a4e47586SCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: sltu a0, a0, a1 6894bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: xori a0, a0, 1 6895bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-ZBKB-NEXT: ret 6896bad0f98bSCraig Topper; 6897bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_ge_zero: 6898bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V: # %bb.0: # %entry 6899bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, -16 6900bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: sw ra, 12(sp) # 4-byte Folded Spill 6901bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: li a2, 4 6902bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: call memcmp 6903bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: slti a0, a0, 0 6904bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: xori a0, a0, 1 6905bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: lw ra, 12(sp) # 4-byte Folded Reload 6906bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: addi sp, sp, 16 6907bad0f98bSCraig Topper; CHECK-UNALIGNED-RV32-V-NEXT: ret 6908bad0f98bSCraig Topper; 6909bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_ge_zero: 6910bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V: # %bb.0: # %entry 6911bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, -16 6912bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: sd ra, 8(sp) # 8-byte Folded Spill 6913bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: li a2, 4 6914bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: call memcmp 6915bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: slti a0, a0, 0 6916bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: xori a0, a0, 1 6917bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: ld ra, 8(sp) # 8-byte Folded Reload 6918bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: addi sp, sp, 16 6919bad0f98bSCraig Topper; CHECK-UNALIGNED-RV64-V-NEXT: ret 6920bad0f98bSCraig Topperentry: 6921bad0f98bSCraig Topper %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4) 6922bad0f98bSCraig Topper %ret = icmp sgt i32 %memcmp, -1 6923bad0f98bSCraig Topper ret i1 %ret 6924bad0f98bSCraig Topper} 69255adb5c05SPengcheng Wang;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: 69265adb5c05SPengcheng Wang; CHECK-ALIGNED: {{.*}} 6927