brintos

brintos / llvm-project-archived public Read only

0
0
Text · 335.9 KiB · c737edb Raw
7557 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -O2  \3; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-ALIGNED,CHECK-ALIGNED-RV324; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -O2  \5; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-ALIGNED,CHECK-ALIGNED-RV646; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+zbb -O2  \7; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-ALIGNED,CHECK-ALIGNED-RV32-ZBB8; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+zbb -O2  \9; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-ALIGNED,CHECK-ALIGNED-RV64-ZBB10; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+zbkb -O2  \11; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-ALIGNED,CHECK-ALIGNED-RV32-ZBKB12; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+zbkb -O2  \13; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-ALIGNED,CHECK-ALIGNED-RV64-ZBKB14; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v -O2  \15; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-ALIGNED,CHECK-ALIGNED-RV32-V16; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v -O2  \17; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-ALIGNED,CHECK-ALIGNED-RV64-V18; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+unaligned-scalar-mem -O2 \19; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-UNALIGNED,CHECK-UNALIGNED-RV3220; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+unaligned-scalar-mem -O2 \21; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-UNALIGNED,CHECK-UNALIGNED-RV6422; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+zbb,+unaligned-scalar-mem -O2 \23; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-UNALIGNED,CHECK-UNALIGNED-RV32-ZBB24; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+zbb,+unaligned-scalar-mem -O2 \25; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-UNALIGNED,CHECK-UNALIGNED-RV64-ZBB26; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+zbkb,+unaligned-scalar-mem -O2 \27; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-UNALIGNED,CHECK-UNALIGNED-RV32-ZBKB28; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+zbkb,+unaligned-scalar-mem -O2 \29; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-UNALIGNED,CHECK-UNALIGNED-RV64-ZBKB30; RUN: sed 's/iXLen/i32/g' %s | llc -mtriple=riscv32 -mattr=+v,+unaligned-scalar-mem,+unaligned-vector-mem -O2 \31; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV32,CHECK-UNALIGNED,CHECK-UNALIGNED-RV32-V32; RUN: sed 's/iXLen/i64/g' %s | llc -mtriple=riscv64 -mattr=+v,+unaligned-scalar-mem,+unaligned-vector-mem -O2 \33; RUN:   | FileCheck %s --check-prefixes=CHECK,CHECK-RV64,CHECK-UNALIGNED,CHECK-UNALIGNED-RV64-V34 35declare i32 @bcmp(ptr, ptr, iXLen) nounwind readonly36declare i32 @memcmp(ptr, ptr, iXLen) nounwind readonly37 38define i32 @bcmp_size_0(ptr %s1, ptr %s2) nounwind {39; CHECK-RV32-LABEL: bcmp_size_0:40; CHECK-RV32:       # %bb.0: # %entry41; CHECK-RV32-NEXT:    addi sp, sp, -1642; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill43; CHECK-RV32-NEXT:    li a2, 044; CHECK-RV32-NEXT:    call bcmp45; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload46; CHECK-RV32-NEXT:    addi sp, sp, 1647; CHECK-RV32-NEXT:    ret48;49; CHECK-RV64-LABEL: bcmp_size_0:50; CHECK-RV64:       # %bb.0: # %entry51; CHECK-RV64-NEXT:    addi sp, sp, -1652; CHECK-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill53; CHECK-RV64-NEXT:    li a2, 054; CHECK-RV64-NEXT:    call bcmp55; CHECK-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload56; CHECK-RV64-NEXT:    addi sp, sp, 1657; CHECK-RV64-NEXT:    ret58entry:59  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 0)60  ret i32 %bcmp61}62 63define i32 @bcmp_size_1(ptr %s1, ptr %s2) nounwind {64; CHECK-ALIGNED-RV32-LABEL: bcmp_size_1:65; CHECK-ALIGNED-RV32:       # %bb.0: # %entry66; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -1667; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill68; CHECK-ALIGNED-RV32-NEXT:    li a2, 169; CHECK-ALIGNED-RV32-NEXT:    call bcmp70; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload71; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 1672; CHECK-ALIGNED-RV32-NEXT:    ret73;74; CHECK-ALIGNED-RV64-LABEL: bcmp_size_1:75; CHECK-ALIGNED-RV64:       # %bb.0: # %entry76; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -1677; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill78; CHECK-ALIGNED-RV64-NEXT:    li a2, 179; CHECK-ALIGNED-RV64-NEXT:    call bcmp80; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload81; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 1682; CHECK-ALIGNED-RV64-NEXT:    ret83;84; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_1:85; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry86; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -1687; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill88; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 189; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp90; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload91; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 1692; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret93;94; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_1:95; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry96; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -1697; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill98; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 199; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp100; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload101; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 16102; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret103;104; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_1:105; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry106; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -16107; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill108; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 1109; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp110; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload111; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 16112; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret113;114; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_1:115; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry116; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -16117; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill118; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 1119; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp120; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload121; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 16122; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret123;124; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_1:125; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry126; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -16127; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill128; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 1129; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp130; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload131; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 16132; CHECK-ALIGNED-RV32-V-NEXT:    ret133;134; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_1:135; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry136; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -16137; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill138; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 1139; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp140; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload141; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 16142; CHECK-ALIGNED-RV64-V-NEXT:    ret143;144; CHECK-UNALIGNED-LABEL: bcmp_size_1:145; CHECK-UNALIGNED:       # %bb.0: # %entry146; CHECK-UNALIGNED-NEXT:    lbu a0, 0(a0)147; CHECK-UNALIGNED-NEXT:    lbu a1, 0(a1)148; CHECK-UNALIGNED-NEXT:    xor a0, a0, a1149; CHECK-UNALIGNED-NEXT:    snez a0, a0150; CHECK-UNALIGNED-NEXT:    ret151entry:152  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 1)153  ret i32 %bcmp154}155 156define i32 @bcmp_size_2(ptr %s1, ptr %s2) nounwind {157; CHECK-ALIGNED-RV32-LABEL: bcmp_size_2:158; CHECK-ALIGNED-RV32:       # %bb.0: # %entry159; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -16160; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill161; CHECK-ALIGNED-RV32-NEXT:    li a2, 2162; CHECK-ALIGNED-RV32-NEXT:    call bcmp163; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload164; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 16165; CHECK-ALIGNED-RV32-NEXT:    ret166;167; CHECK-ALIGNED-RV64-LABEL: bcmp_size_2:168; CHECK-ALIGNED-RV64:       # %bb.0: # %entry169; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -16170; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill171; CHECK-ALIGNED-RV64-NEXT:    li a2, 2172; CHECK-ALIGNED-RV64-NEXT:    call bcmp173; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload174; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 16175; CHECK-ALIGNED-RV64-NEXT:    ret176;177; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_2:178; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry179; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -16180; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill181; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 2182; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp183; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload184; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 16185; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret186;187; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_2:188; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry189; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -16190; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill191; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 2192; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp193; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload194; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 16195; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret196;197; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_2:198; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry199; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -16200; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill201; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 2202; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp203; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload204; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 16205; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret206;207; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_2:208; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry209; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -16210; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill211; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 2212; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp213; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload214; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 16215; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret216;217; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_2:218; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry219; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -16220; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill221; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 2222; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp223; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload224; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 16225; CHECK-ALIGNED-RV32-V-NEXT:    ret226;227; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_2:228; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry229; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -16230; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill231; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 2232; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp233; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload234; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 16235; CHECK-ALIGNED-RV64-V-NEXT:    ret236;237; CHECK-UNALIGNED-LABEL: bcmp_size_2:238; CHECK-UNALIGNED:       # %bb.0: # %entry239; CHECK-UNALIGNED-NEXT:    lhu a0, 0(a0)240; CHECK-UNALIGNED-NEXT:    lhu a1, 0(a1)241; CHECK-UNALIGNED-NEXT:    xor a0, a0, a1242; CHECK-UNALIGNED-NEXT:    snez a0, a0243; CHECK-UNALIGNED-NEXT:    ret244entry:245  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 2)246  ret i32 %bcmp247}248 249define i32 @bcmp_size_3(ptr %s1, ptr %s2) nounwind {250; CHECK-ALIGNED-RV32-LABEL: bcmp_size_3:251; CHECK-ALIGNED-RV32:       # %bb.0: # %entry252; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -16253; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill254; CHECK-ALIGNED-RV32-NEXT:    li a2, 3255; CHECK-ALIGNED-RV32-NEXT:    call bcmp256; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload257; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 16258; CHECK-ALIGNED-RV32-NEXT:    ret259;260; CHECK-ALIGNED-RV64-LABEL: bcmp_size_3:261; CHECK-ALIGNED-RV64:       # %bb.0: # %entry262; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -16263; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill264; CHECK-ALIGNED-RV64-NEXT:    li a2, 3265; CHECK-ALIGNED-RV64-NEXT:    call bcmp266; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload267; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 16268; CHECK-ALIGNED-RV64-NEXT:    ret269;270; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_3:271; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry272; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -16273; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill274; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 3275; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp276; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload277; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 16278; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret279;280; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_3:281; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry282; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -16283; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill284; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 3285; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp286; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload287; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 16288; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret289;290; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_3:291; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry292; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -16293; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill294; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 3295; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp296; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload297; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 16298; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret299;300; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_3:301; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry302; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -16303; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill304; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 3305; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp306; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload307; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 16308; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret309;310; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_3:311; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry312; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -16313; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill314; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 3315; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp316; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload317; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 16318; CHECK-ALIGNED-RV32-V-NEXT:    ret319;320; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_3:321; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry322; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -16323; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill324; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 3325; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp326; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload327; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 16328; CHECK-ALIGNED-RV64-V-NEXT:    ret329;330; CHECK-UNALIGNED-LABEL: bcmp_size_3:331; CHECK-UNALIGNED:       # %bb.0: # %entry332; CHECK-UNALIGNED-NEXT:    lhu a2, 0(a0)333; CHECK-UNALIGNED-NEXT:    lbu a0, 2(a0)334; CHECK-UNALIGNED-NEXT:    lhu a3, 0(a1)335; CHECK-UNALIGNED-NEXT:    lbu a1, 2(a1)336; CHECK-UNALIGNED-NEXT:    xor a2, a2, a3337; CHECK-UNALIGNED-NEXT:    xor a0, a0, a1338; CHECK-UNALIGNED-NEXT:    or a0, a2, a0339; CHECK-UNALIGNED-NEXT:    snez a0, a0340; CHECK-UNALIGNED-NEXT:    ret341entry:342  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 3)343  ret i32 %bcmp344}345 346define i32 @bcmp_size_4(ptr %s1, ptr %s2) nounwind {347; CHECK-ALIGNED-RV32-LABEL: bcmp_size_4:348; CHECK-ALIGNED-RV32:       # %bb.0: # %entry349; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -16350; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill351; CHECK-ALIGNED-RV32-NEXT:    li a2, 4352; CHECK-ALIGNED-RV32-NEXT:    call bcmp353; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload354; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 16355; CHECK-ALIGNED-RV32-NEXT:    ret356;357; CHECK-ALIGNED-RV64-LABEL: bcmp_size_4:358; CHECK-ALIGNED-RV64:       # %bb.0: # %entry359; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -16360; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill361; CHECK-ALIGNED-RV64-NEXT:    li a2, 4362; CHECK-ALIGNED-RV64-NEXT:    call bcmp363; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload364; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 16365; CHECK-ALIGNED-RV64-NEXT:    ret366;367; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_4:368; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry369; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -16370; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill371; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 4372; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp373; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload374; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 16375; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret376;377; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_4:378; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry379; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -16380; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill381; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 4382; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp383; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload384; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 16385; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret386;387; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_4:388; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry389; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -16390; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill391; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 4392; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp393; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload394; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 16395; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret396;397; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_4:398; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry399; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -16400; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill401; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 4402; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp403; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload404; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 16405; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret406;407; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_4:408; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry409; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -16410; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill411; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 4412; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp413; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload414; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 16415; CHECK-ALIGNED-RV32-V-NEXT:    ret416;417; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_4:418; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry419; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -16420; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill421; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 4422; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp423; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload424; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 16425; CHECK-ALIGNED-RV64-V-NEXT:    ret426;427; CHECK-UNALIGNED-LABEL: bcmp_size_4:428; CHECK-UNALIGNED:       # %bb.0: # %entry429; CHECK-UNALIGNED-NEXT:    lw a0, 0(a0)430; CHECK-UNALIGNED-NEXT:    lw a1, 0(a1)431; CHECK-UNALIGNED-NEXT:    xor a0, a0, a1432; CHECK-UNALIGNED-NEXT:    snez a0, a0433; CHECK-UNALIGNED-NEXT:    ret434entry:435  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4)436  ret i32 %bcmp437}438 439define i32 @bcmp_size_5(ptr %s1, ptr %s2) nounwind {440; CHECK-ALIGNED-RV32-LABEL: bcmp_size_5:441; CHECK-ALIGNED-RV32:       # %bb.0: # %entry442; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -16443; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill444; CHECK-ALIGNED-RV32-NEXT:    li a2, 5445; CHECK-ALIGNED-RV32-NEXT:    call bcmp446; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload447; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 16448; CHECK-ALIGNED-RV32-NEXT:    ret449;450; CHECK-ALIGNED-RV64-LABEL: bcmp_size_5:451; CHECK-ALIGNED-RV64:       # %bb.0: # %entry452; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -16453; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill454; CHECK-ALIGNED-RV64-NEXT:    li a2, 5455; CHECK-ALIGNED-RV64-NEXT:    call bcmp456; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload457; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 16458; CHECK-ALIGNED-RV64-NEXT:    ret459;460; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_5:461; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry462; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -16463; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill464; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 5465; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp466; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload467; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 16468; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret469;470; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_5:471; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry472; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -16473; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill474; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 5475; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp476; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload477; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 16478; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret479;480; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_5:481; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry482; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -16483; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill484; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 5485; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp486; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload487; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 16488; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret489;490; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_5:491; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry492; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -16493; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill494; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 5495; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp496; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload497; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 16498; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret499;500; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_5:501; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry502; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -16503; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill504; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 5505; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp506; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload507; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 16508; CHECK-ALIGNED-RV32-V-NEXT:    ret509;510; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_5:511; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry512; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -16513; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill514; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 5515; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp516; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload517; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 16518; CHECK-ALIGNED-RV64-V-NEXT:    ret519;520; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_5:521; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry522; CHECK-UNALIGNED-RV32-NEXT:    lw a2, 0(a0)523; CHECK-UNALIGNED-RV32-NEXT:    lbu a0, 4(a0)524; CHECK-UNALIGNED-RV32-NEXT:    lw a3, 0(a1)525; CHECK-UNALIGNED-RV32-NEXT:    lbu a1, 4(a1)526; CHECK-UNALIGNED-RV32-NEXT:    xor a2, a2, a3527; CHECK-UNALIGNED-RV32-NEXT:    xor a0, a0, a1528; CHECK-UNALIGNED-RV32-NEXT:    or a0, a2, a0529; CHECK-UNALIGNED-RV32-NEXT:    snez a0, a0530; CHECK-UNALIGNED-RV32-NEXT:    ret531;532; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_5:533; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry534; CHECK-UNALIGNED-RV64-NEXT:    lw a2, 0(a0)535; CHECK-UNALIGNED-RV64-NEXT:    lbu a0, 4(a0)536; CHECK-UNALIGNED-RV64-NEXT:    lw a3, 0(a1)537; CHECK-UNALIGNED-RV64-NEXT:    lbu a1, 4(a1)538; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a3539; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a1540; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a0541; CHECK-UNALIGNED-RV64-NEXT:    snez a0, a0542; CHECK-UNALIGNED-RV64-NEXT:    ret543;544; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_5:545; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry546; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)547; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a0, 4(a0)548; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)549; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a1, 4(a1)550; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a2, a2, a3551; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a0, a0, a1552; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a2, a0553; CHECK-UNALIGNED-RV32-ZBB-NEXT:    snez a0, a0554; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret555;556; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_5:557; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry558; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a2, 0(a0)559; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a0, 4(a0)560; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a3, 0(a1)561; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a1, 4(a1)562; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a3563; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a1564; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a0565; CHECK-UNALIGNED-RV64-ZBB-NEXT:    snez a0, a0566; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret567;568; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_5:569; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry570; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)571; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a0, 4(a0)572; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)573; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a1, 4(a1)574; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a2, a2, a3575; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a0, a0, a1576; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a2, a0577; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    snez a0, a0578; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret579;580; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_5:581; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry582; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a2, 0(a0)583; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a0, 4(a0)584; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a3, 0(a1)585; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a1, 4(a1)586; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a3587; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a1588; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a0589; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    snez a0, a0590; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret591;592; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_5:593; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry594; CHECK-UNALIGNED-RV32-V-NEXT:    vsetivli zero, 5, e8, mf2, ta, ma595; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)596; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v9, (a1)597; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v8, v8, v9598; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v8599; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a0600; CHECK-UNALIGNED-RV32-V-NEXT:    ret601;602; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_5:603; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry604; CHECK-UNALIGNED-RV64-V-NEXT:    lw a2, 0(a0)605; CHECK-UNALIGNED-RV64-V-NEXT:    lbu a0, 4(a0)606; CHECK-UNALIGNED-RV64-V-NEXT:    lw a3, 0(a1)607; CHECK-UNALIGNED-RV64-V-NEXT:    lbu a1, 4(a1)608; CHECK-UNALIGNED-RV64-V-NEXT:    xor a2, a2, a3609; CHECK-UNALIGNED-RV64-V-NEXT:    xor a0, a0, a1610; CHECK-UNALIGNED-RV64-V-NEXT:    or a0, a2, a0611; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a0612; CHECK-UNALIGNED-RV64-V-NEXT:    ret613entry:614  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 5)615  ret i32 %bcmp616}617 618define i32 @bcmp_size_6(ptr %s1, ptr %s2) nounwind {619; CHECK-ALIGNED-RV32-LABEL: bcmp_size_6:620; CHECK-ALIGNED-RV32:       # %bb.0: # %entry621; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -16622; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill623; CHECK-ALIGNED-RV32-NEXT:    li a2, 6624; CHECK-ALIGNED-RV32-NEXT:    call bcmp625; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload626; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 16627; CHECK-ALIGNED-RV32-NEXT:    ret628;629; CHECK-ALIGNED-RV64-LABEL: bcmp_size_6:630; CHECK-ALIGNED-RV64:       # %bb.0: # %entry631; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -16632; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill633; CHECK-ALIGNED-RV64-NEXT:    li a2, 6634; CHECK-ALIGNED-RV64-NEXT:    call bcmp635; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload636; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 16637; CHECK-ALIGNED-RV64-NEXT:    ret638;639; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_6:640; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry641; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -16642; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill643; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 6644; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp645; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload646; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 16647; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret648;649; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_6:650; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry651; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -16652; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill653; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 6654; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp655; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload656; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 16657; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret658;659; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_6:660; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry661; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -16662; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill663; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 6664; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp665; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload666; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 16667; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret668;669; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_6:670; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry671; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -16672; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill673; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 6674; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp675; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload676; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 16677; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret678;679; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_6:680; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry681; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -16682; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill683; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 6684; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp685; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload686; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 16687; CHECK-ALIGNED-RV32-V-NEXT:    ret688;689; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_6:690; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry691; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -16692; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill693; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 6694; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp695; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload696; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 16697; CHECK-ALIGNED-RV64-V-NEXT:    ret698;699; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_6:700; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry701; CHECK-UNALIGNED-RV32-NEXT:    lw a2, 0(a0)702; CHECK-UNALIGNED-RV32-NEXT:    lhu a0, 4(a0)703; CHECK-UNALIGNED-RV32-NEXT:    lw a3, 0(a1)704; CHECK-UNALIGNED-RV32-NEXT:    lhu a1, 4(a1)705; CHECK-UNALIGNED-RV32-NEXT:    xor a2, a2, a3706; CHECK-UNALIGNED-RV32-NEXT:    xor a0, a0, a1707; CHECK-UNALIGNED-RV32-NEXT:    or a0, a2, a0708; CHECK-UNALIGNED-RV32-NEXT:    snez a0, a0709; CHECK-UNALIGNED-RV32-NEXT:    ret710;711; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_6:712; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry713; CHECK-UNALIGNED-RV64-NEXT:    lw a2, 0(a0)714; CHECK-UNALIGNED-RV64-NEXT:    lhu a0, 4(a0)715; CHECK-UNALIGNED-RV64-NEXT:    lw a3, 0(a1)716; CHECK-UNALIGNED-RV64-NEXT:    lhu a1, 4(a1)717; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a3718; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a1719; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a0720; CHECK-UNALIGNED-RV64-NEXT:    snez a0, a0721; CHECK-UNALIGNED-RV64-NEXT:    ret722;723; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_6:724; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry725; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)726; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lhu a0, 4(a0)727; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)728; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lhu a1, 4(a1)729; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a2, a2, a3730; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a0, a0, a1731; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a2, a0732; CHECK-UNALIGNED-RV32-ZBB-NEXT:    snez a0, a0733; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret734;735; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_6:736; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry737; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a2, 0(a0)738; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lhu a0, 4(a0)739; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a3, 0(a1)740; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lhu a1, 4(a1)741; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a3742; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a1743; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a0744; CHECK-UNALIGNED-RV64-ZBB-NEXT:    snez a0, a0745; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret746;747; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_6:748; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry749; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)750; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lhu a0, 4(a0)751; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)752; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lhu a1, 4(a1)753; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a2, a2, a3754; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a0, a0, a1755; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a2, a0756; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    snez a0, a0757; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret758;759; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_6:760; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry761; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a2, 0(a0)762; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lhu a0, 4(a0)763; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a3, 0(a1)764; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lhu a1, 4(a1)765; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a3766; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a1767; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a0768; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    snez a0, a0769; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret770;771; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_6:772; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry773; CHECK-UNALIGNED-RV32-V-NEXT:    vsetivli zero, 6, e8, mf2, ta, ma774; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)775; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v9, (a1)776; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v8, v8, v9777; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v8778; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a0779; CHECK-UNALIGNED-RV32-V-NEXT:    ret780;781; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_6:782; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry783; CHECK-UNALIGNED-RV64-V-NEXT:    lw a2, 0(a0)784; CHECK-UNALIGNED-RV64-V-NEXT:    lhu a0, 4(a0)785; CHECK-UNALIGNED-RV64-V-NEXT:    lw a3, 0(a1)786; CHECK-UNALIGNED-RV64-V-NEXT:    lhu a1, 4(a1)787; CHECK-UNALIGNED-RV64-V-NEXT:    xor a2, a2, a3788; CHECK-UNALIGNED-RV64-V-NEXT:    xor a0, a0, a1789; CHECK-UNALIGNED-RV64-V-NEXT:    or a0, a2, a0790; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a0791; CHECK-UNALIGNED-RV64-V-NEXT:    ret792entry:793  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 6)794  ret i32 %bcmp795}796 797define i32 @bcmp_size_7(ptr %s1, ptr %s2) nounwind {798; CHECK-ALIGNED-RV32-LABEL: bcmp_size_7:799; CHECK-ALIGNED-RV32:       # %bb.0: # %entry800; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -16801; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill802; CHECK-ALIGNED-RV32-NEXT:    li a2, 7803; CHECK-ALIGNED-RV32-NEXT:    call bcmp804; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload805; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 16806; CHECK-ALIGNED-RV32-NEXT:    ret807;808; CHECK-ALIGNED-RV64-LABEL: bcmp_size_7:809; CHECK-ALIGNED-RV64:       # %bb.0: # %entry810; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -16811; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill812; CHECK-ALIGNED-RV64-NEXT:    li a2, 7813; CHECK-ALIGNED-RV64-NEXT:    call bcmp814; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload815; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 16816; CHECK-ALIGNED-RV64-NEXT:    ret817;818; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_7:819; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry820; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -16821; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill822; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 7823; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp824; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload825; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 16826; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret827;828; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_7:829; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry830; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -16831; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill832; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 7833; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp834; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload835; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 16836; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret837;838; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_7:839; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry840; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -16841; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill842; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 7843; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp844; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload845; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 16846; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret847;848; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_7:849; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry850; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -16851; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill852; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 7853; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp854; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload855; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 16856; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret857;858; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_7:859; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry860; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -16861; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill862; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 7863; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp864; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload865; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 16866; CHECK-ALIGNED-RV32-V-NEXT:    ret867;868; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_7:869; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry870; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -16871; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill872; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 7873; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp874; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload875; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 16876; CHECK-ALIGNED-RV64-V-NEXT:    ret877;878; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_7:879; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry880; CHECK-UNALIGNED-RV32-NEXT:    lw a2, 0(a0)881; CHECK-UNALIGNED-RV32-NEXT:    lw a0, 3(a0)882; CHECK-UNALIGNED-RV32-NEXT:    lw a3, 0(a1)883; CHECK-UNALIGNED-RV32-NEXT:    lw a1, 3(a1)884; CHECK-UNALIGNED-RV32-NEXT:    xor a2, a2, a3885; CHECK-UNALIGNED-RV32-NEXT:    xor a0, a0, a1886; CHECK-UNALIGNED-RV32-NEXT:    or a0, a2, a0887; CHECK-UNALIGNED-RV32-NEXT:    snez a0, a0888; CHECK-UNALIGNED-RV32-NEXT:    ret889;890; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_7:891; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry892; CHECK-UNALIGNED-RV64-NEXT:    lw a2, 0(a0)893; CHECK-UNALIGNED-RV64-NEXT:    lw a0, 3(a0)894; CHECK-UNALIGNED-RV64-NEXT:    lw a3, 0(a1)895; CHECK-UNALIGNED-RV64-NEXT:    lw a1, 3(a1)896; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a3897; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a1898; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a0899; CHECK-UNALIGNED-RV64-NEXT:    snez a0, a0900; CHECK-UNALIGNED-RV64-NEXT:    ret901;902; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_7:903; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry904; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)905; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 3(a0)906; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)907; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 3(a1)908; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a2, a2, a3909; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a0, a0, a1910; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a2, a0911; CHECK-UNALIGNED-RV32-ZBB-NEXT:    snez a0, a0912; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret913;914; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_7:915; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry916; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a2, 0(a0)917; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a0, 3(a0)918; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a3, 0(a1)919; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a1, 3(a1)920; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a3921; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a1922; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a0923; CHECK-UNALIGNED-RV64-ZBB-NEXT:    snez a0, a0924; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret925;926; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_7:927; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry928; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)929; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 3(a0)930; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)931; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 3(a1)932; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a2, a2, a3933; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a0, a0, a1934; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a2, a0935; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    snez a0, a0936; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret937;938; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_7:939; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry940; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a2, 0(a0)941; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a0, 3(a0)942; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a3, 0(a1)943; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a1, 3(a1)944; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a3945; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a1946; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a0947; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    snez a0, a0948; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret949;950; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_7:951; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry952; CHECK-UNALIGNED-RV32-V-NEXT:    vsetivli zero, 7, e8, mf2, ta, ma953; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)954; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v9, (a1)955; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v8, v8, v9956; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v8957; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a0958; CHECK-UNALIGNED-RV32-V-NEXT:    ret959;960; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_7:961; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry962; CHECK-UNALIGNED-RV64-V-NEXT:    lw a2, 0(a0)963; CHECK-UNALIGNED-RV64-V-NEXT:    lw a0, 3(a0)964; CHECK-UNALIGNED-RV64-V-NEXT:    lw a3, 0(a1)965; CHECK-UNALIGNED-RV64-V-NEXT:    lw a1, 3(a1)966; CHECK-UNALIGNED-RV64-V-NEXT:    xor a2, a2, a3967; CHECK-UNALIGNED-RV64-V-NEXT:    xor a0, a0, a1968; CHECK-UNALIGNED-RV64-V-NEXT:    or a0, a2, a0969; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a0970; CHECK-UNALIGNED-RV64-V-NEXT:    ret971entry:972  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 7)973  ret i32 %bcmp974}975 976define i32 @bcmp_size_8(ptr %s1, ptr %s2) nounwind {977; CHECK-ALIGNED-RV32-LABEL: bcmp_size_8:978; CHECK-ALIGNED-RV32:       # %bb.0: # %entry979; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -16980; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill981; CHECK-ALIGNED-RV32-NEXT:    li a2, 8982; CHECK-ALIGNED-RV32-NEXT:    call bcmp983; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload984; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 16985; CHECK-ALIGNED-RV32-NEXT:    ret986;987; CHECK-ALIGNED-RV64-LABEL: bcmp_size_8:988; CHECK-ALIGNED-RV64:       # %bb.0: # %entry989; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -16990; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill991; CHECK-ALIGNED-RV64-NEXT:    li a2, 8992; CHECK-ALIGNED-RV64-NEXT:    call bcmp993; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload994; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 16995; CHECK-ALIGNED-RV64-NEXT:    ret996;997; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_8:998; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry999; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -161000; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1001; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 81002; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp1003; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1004; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 161005; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret1006;1007; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_8:1008; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry1009; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -161010; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1011; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 81012; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp1013; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1014; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 161015; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret1016;1017; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_8:1018; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry1019; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -161020; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1021; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 81022; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp1023; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1024; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 161025; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret1026;1027; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_8:1028; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry1029; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -161030; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1031; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 81032; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp1033; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1034; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 161035; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret1036;1037; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_8:1038; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry1039; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -161040; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1041; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 81042; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp1043; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1044; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 161045; CHECK-ALIGNED-RV32-V-NEXT:    ret1046;1047; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_8:1048; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry1049; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -161050; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1051; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 81052; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp1053; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1054; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 161055; CHECK-ALIGNED-RV64-V-NEXT:    ret1056;1057; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_8:1058; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry1059; CHECK-UNALIGNED-RV32-NEXT:    lw a2, 0(a0)1060; CHECK-UNALIGNED-RV32-NEXT:    lw a0, 4(a0)1061; CHECK-UNALIGNED-RV32-NEXT:    lw a3, 0(a1)1062; CHECK-UNALIGNED-RV32-NEXT:    lw a1, 4(a1)1063; CHECK-UNALIGNED-RV32-NEXT:    xor a2, a2, a31064; CHECK-UNALIGNED-RV32-NEXT:    xor a0, a0, a11065; CHECK-UNALIGNED-RV32-NEXT:    or a0, a2, a01066; CHECK-UNALIGNED-RV32-NEXT:    snez a0, a01067; CHECK-UNALIGNED-RV32-NEXT:    ret1068;1069; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_8:1070; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry1071; CHECK-UNALIGNED-RV64-NEXT:    ld a0, 0(a0)1072; CHECK-UNALIGNED-RV64-NEXT:    ld a1, 0(a1)1073; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a11074; CHECK-UNALIGNED-RV64-NEXT:    snez a0, a01075; CHECK-UNALIGNED-RV64-NEXT:    ret1076;1077; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_8:1078; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry1079; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)1080; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 4(a0)1081; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)1082; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 4(a1)1083; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a2, a2, a31084; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a0, a0, a11085; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a2, a01086; CHECK-UNALIGNED-RV32-ZBB-NEXT:    snez a0, a01087; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret1088;1089; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_8:1090; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry1091; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 0(a0)1092; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 0(a1)1093; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a11094; CHECK-UNALIGNED-RV64-ZBB-NEXT:    snez a0, a01095; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret1096;1097; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_8:1098; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry1099; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)1100; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 4(a0)1101; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)1102; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 4(a1)1103; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a2, a2, a31104; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a0, a0, a11105; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a2, a01106; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    snez a0, a01107; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret1108;1109; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_8:1110; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry1111; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 0(a0)1112; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 0(a1)1113; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a11114; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    snez a0, a01115; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret1116;1117; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_8:1118; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry1119; CHECK-UNALIGNED-RV32-V-NEXT:    vsetivli zero, 8, e8, mf2, ta, ma1120; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)1121; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v9, (a1)1122; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v8, v8, v91123; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v81124; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a01125; CHECK-UNALIGNED-RV32-V-NEXT:    ret1126;1127; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_8:1128; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry1129; CHECK-UNALIGNED-RV64-V-NEXT:    ld a0, 0(a0)1130; CHECK-UNALIGNED-RV64-V-NEXT:    ld a1, 0(a1)1131; CHECK-UNALIGNED-RV64-V-NEXT:    xor a0, a0, a11132; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a01133; CHECK-UNALIGNED-RV64-V-NEXT:    ret1134entry:1135  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 8)1136  ret i32 %bcmp1137}1138 1139define i32 @bcmp_size_15(ptr %s1, ptr %s2) nounwind {1140; CHECK-ALIGNED-RV32-LABEL: bcmp_size_15:1141; CHECK-ALIGNED-RV32:       # %bb.0: # %entry1142; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -161143; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1144; CHECK-ALIGNED-RV32-NEXT:    li a2, 151145; CHECK-ALIGNED-RV32-NEXT:    call bcmp1146; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1147; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 161148; CHECK-ALIGNED-RV32-NEXT:    ret1149;1150; CHECK-ALIGNED-RV64-LABEL: bcmp_size_15:1151; CHECK-ALIGNED-RV64:       # %bb.0: # %entry1152; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -161153; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1154; CHECK-ALIGNED-RV64-NEXT:    li a2, 151155; CHECK-ALIGNED-RV64-NEXT:    call bcmp1156; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1157; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 161158; CHECK-ALIGNED-RV64-NEXT:    ret1159;1160; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_15:1161; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry1162; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -161163; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1164; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 151165; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp1166; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1167; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 161168; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret1169;1170; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_15:1171; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry1172; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -161173; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1174; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 151175; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp1176; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1177; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 161178; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret1179;1180; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_15:1181; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry1182; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -161183; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1184; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 151185; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp1186; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1187; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 161188; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret1189;1190; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_15:1191; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry1192; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -161193; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1194; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 151195; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp1196; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1197; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 161198; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret1199;1200; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_15:1201; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry1202; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -161203; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1204; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 151205; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp1206; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1207; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 161208; CHECK-ALIGNED-RV32-V-NEXT:    ret1209;1210; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_15:1211; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry1212; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -161213; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1214; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 151215; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp1216; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1217; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 161218; CHECK-ALIGNED-RV64-V-NEXT:    ret1219;1220; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_15:1221; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry1222; CHECK-UNALIGNED-RV32-NEXT:    lw a2, 0(a0)1223; CHECK-UNALIGNED-RV32-NEXT:    lw a3, 4(a0)1224; CHECK-UNALIGNED-RV32-NEXT:    lw a4, 8(a0)1225; CHECK-UNALIGNED-RV32-NEXT:    lw a0, 11(a0)1226; CHECK-UNALIGNED-RV32-NEXT:    lw a5, 0(a1)1227; CHECK-UNALIGNED-RV32-NEXT:    lw a6, 4(a1)1228; CHECK-UNALIGNED-RV32-NEXT:    lw a7, 8(a1)1229; CHECK-UNALIGNED-RV32-NEXT:    lw a1, 11(a1)1230; CHECK-UNALIGNED-RV32-NEXT:    xor a2, a2, a51231; CHECK-UNALIGNED-RV32-NEXT:    xor a3, a3, a61232; CHECK-UNALIGNED-RV32-NEXT:    xor a4, a4, a71233; CHECK-UNALIGNED-RV32-NEXT:    xor a0, a0, a11234; CHECK-UNALIGNED-RV32-NEXT:    or a2, a2, a31235; CHECK-UNALIGNED-RV32-NEXT:    or a0, a4, a01236; CHECK-UNALIGNED-RV32-NEXT:    or a0, a2, a01237; CHECK-UNALIGNED-RV32-NEXT:    snez a0, a01238; CHECK-UNALIGNED-RV32-NEXT:    ret1239;1240; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_15:1241; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry1242; CHECK-UNALIGNED-RV64-NEXT:    ld a2, 0(a0)1243; CHECK-UNALIGNED-RV64-NEXT:    ld a0, 7(a0)1244; CHECK-UNALIGNED-RV64-NEXT:    ld a3, 0(a1)1245; CHECK-UNALIGNED-RV64-NEXT:    ld a1, 7(a1)1246; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a31247; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a11248; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a01249; CHECK-UNALIGNED-RV64-NEXT:    snez a0, a01250; CHECK-UNALIGNED-RV64-NEXT:    ret1251;1252; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_15:1253; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry1254; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)1255; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 4(a0)1256; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a4, 8(a0)1257; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 11(a0)1258; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a5, 0(a1)1259; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a6, 4(a1)1260; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a7, 8(a1)1261; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 11(a1)1262; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a2, a2, a51263; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a3, a3, a61264; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a4, a4, a71265; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a0, a0, a11266; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a2, a2, a31267; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a4, a01268; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a2, a01269; CHECK-UNALIGNED-RV32-ZBB-NEXT:    snez a0, a01270; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret1271;1272; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_15:1273; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry1274; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)1275; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 7(a0)1276; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)1277; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 7(a1)1278; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a31279; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a11280; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a01281; CHECK-UNALIGNED-RV64-ZBB-NEXT:    snez a0, a01282; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret1283;1284; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_15:1285; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry1286; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)1287; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 4(a0)1288; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a4, 8(a0)1289; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 11(a0)1290; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a5, 0(a1)1291; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a6, 4(a1)1292; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a7, 8(a1)1293; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 11(a1)1294; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a2, a2, a51295; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a3, a3, a61296; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a4, a4, a71297; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a0, a0, a11298; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a2, a2, a31299; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a4, a01300; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a2, a01301; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    snez a0, a01302; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret1303;1304; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_15:1305; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry1306; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)1307; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 7(a0)1308; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)1309; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 7(a1)1310; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a31311; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a11312; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a01313; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    snez a0, a01314; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret1315;1316; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_15:1317; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry1318; CHECK-UNALIGNED-RV32-V-NEXT:    vsetivli zero, 15, e8, m1, ta, ma1319; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)1320; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v9, (a1)1321; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v8, v8, v91322; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v81323; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a01324; CHECK-UNALIGNED-RV32-V-NEXT:    ret1325;1326; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_15:1327; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry1328; CHECK-UNALIGNED-RV64-V-NEXT:    vsetivli zero, 15, e8, m1, ta, ma1329; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)1330; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v9, (a1)1331; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v8, v8, v91332; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v81333; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a01334; CHECK-UNALIGNED-RV64-V-NEXT:    ret1335entry:1336  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 15)1337  ret i32 %bcmp1338}1339 1340define i32 @bcmp_size_16(ptr %s1, ptr %s2) nounwind {1341; CHECK-ALIGNED-RV32-LABEL: bcmp_size_16:1342; CHECK-ALIGNED-RV32:       # %bb.0: # %entry1343; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -161344; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1345; CHECK-ALIGNED-RV32-NEXT:    li a2, 161346; CHECK-ALIGNED-RV32-NEXT:    call bcmp1347; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1348; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 161349; CHECK-ALIGNED-RV32-NEXT:    ret1350;1351; CHECK-ALIGNED-RV64-LABEL: bcmp_size_16:1352; CHECK-ALIGNED-RV64:       # %bb.0: # %entry1353; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -161354; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1355; CHECK-ALIGNED-RV64-NEXT:    li a2, 161356; CHECK-ALIGNED-RV64-NEXT:    call bcmp1357; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1358; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 161359; CHECK-ALIGNED-RV64-NEXT:    ret1360;1361; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_16:1362; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry1363; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -161364; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1365; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 161366; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp1367; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1368; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 161369; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret1370;1371; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_16:1372; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry1373; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -161374; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1375; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 161376; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp1377; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1378; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 161379; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret1380;1381; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_16:1382; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry1383; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -161384; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1385; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 161386; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp1387; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1388; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 161389; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret1390;1391; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_16:1392; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry1393; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -161394; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1395; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 161396; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp1397; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1398; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 161399; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret1400;1401; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_16:1402; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry1403; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -161404; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1405; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 161406; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp1407; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1408; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 161409; CHECK-ALIGNED-RV32-V-NEXT:    ret1410;1411; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_16:1412; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry1413; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -161414; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1415; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 161416; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp1417; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1418; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 161419; CHECK-ALIGNED-RV64-V-NEXT:    ret1420;1421; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_16:1422; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry1423; CHECK-UNALIGNED-RV32-NEXT:    lw a2, 0(a0)1424; CHECK-UNALIGNED-RV32-NEXT:    lw a3, 4(a0)1425; CHECK-UNALIGNED-RV32-NEXT:    lw a4, 8(a0)1426; CHECK-UNALIGNED-RV32-NEXT:    lw a0, 12(a0)1427; CHECK-UNALIGNED-RV32-NEXT:    lw a5, 0(a1)1428; CHECK-UNALIGNED-RV32-NEXT:    lw a6, 4(a1)1429; CHECK-UNALIGNED-RV32-NEXT:    lw a7, 8(a1)1430; CHECK-UNALIGNED-RV32-NEXT:    lw a1, 12(a1)1431; CHECK-UNALIGNED-RV32-NEXT:    xor a2, a2, a51432; CHECK-UNALIGNED-RV32-NEXT:    xor a3, a3, a61433; CHECK-UNALIGNED-RV32-NEXT:    xor a4, a4, a71434; CHECK-UNALIGNED-RV32-NEXT:    xor a0, a0, a11435; CHECK-UNALIGNED-RV32-NEXT:    or a2, a2, a31436; CHECK-UNALIGNED-RV32-NEXT:    or a0, a4, a01437; CHECK-UNALIGNED-RV32-NEXT:    or a0, a2, a01438; CHECK-UNALIGNED-RV32-NEXT:    snez a0, a01439; CHECK-UNALIGNED-RV32-NEXT:    ret1440;1441; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_16:1442; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry1443; CHECK-UNALIGNED-RV64-NEXT:    ld a2, 0(a0)1444; CHECK-UNALIGNED-RV64-NEXT:    ld a0, 8(a0)1445; CHECK-UNALIGNED-RV64-NEXT:    ld a3, 0(a1)1446; CHECK-UNALIGNED-RV64-NEXT:    ld a1, 8(a1)1447; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a31448; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a11449; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a01450; CHECK-UNALIGNED-RV64-NEXT:    snez a0, a01451; CHECK-UNALIGNED-RV64-NEXT:    ret1452;1453; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_16:1454; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry1455; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)1456; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 4(a0)1457; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a4, 8(a0)1458; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 12(a0)1459; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a5, 0(a1)1460; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a6, 4(a1)1461; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a7, 8(a1)1462; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 12(a1)1463; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a2, a2, a51464; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a3, a3, a61465; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a4, a4, a71466; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a0, a0, a11467; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a2, a2, a31468; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a4, a01469; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a2, a01470; CHECK-UNALIGNED-RV32-ZBB-NEXT:    snez a0, a01471; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret1472;1473; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_16:1474; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry1475; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)1476; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 8(a0)1477; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)1478; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 8(a1)1479; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a31480; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a11481; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a01482; CHECK-UNALIGNED-RV64-ZBB-NEXT:    snez a0, a01483; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret1484;1485; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_16:1486; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry1487; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)1488; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 4(a0)1489; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a4, 8(a0)1490; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 12(a0)1491; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a5, 0(a1)1492; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a6, 4(a1)1493; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a7, 8(a1)1494; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 12(a1)1495; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a2, a2, a51496; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a3, a3, a61497; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a4, a4, a71498; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a0, a0, a11499; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a2, a2, a31500; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a4, a01501; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a2, a01502; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    snez a0, a01503; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret1504;1505; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_16:1506; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry1507; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)1508; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 8(a0)1509; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)1510; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 8(a1)1511; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a31512; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a11513; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a01514; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    snez a0, a01515; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret1516;1517; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_16:1518; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry1519; CHECK-UNALIGNED-RV32-V-NEXT:    vsetivli zero, 16, e8, m1, ta, ma1520; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)1521; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v9, (a1)1522; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v8, v8, v91523; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v81524; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a01525; CHECK-UNALIGNED-RV32-V-NEXT:    ret1526;1527; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_16:1528; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry1529; CHECK-UNALIGNED-RV64-V-NEXT:    vsetivli zero, 16, e8, m1, ta, ma1530; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)1531; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v9, (a1)1532; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v8, v8, v91533; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v81534; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a01535; CHECK-UNALIGNED-RV64-V-NEXT:    ret1536entry:1537  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 16)1538  ret i32 %bcmp1539}1540 1541define i32 @bcmp_size_31(ptr %s1, ptr %s2) nounwind {1542; CHECK-ALIGNED-RV32-LABEL: bcmp_size_31:1543; CHECK-ALIGNED-RV32:       # %bb.0: # %entry1544; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -161545; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1546; CHECK-ALIGNED-RV32-NEXT:    li a2, 311547; CHECK-ALIGNED-RV32-NEXT:    call bcmp1548; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1549; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 161550; CHECK-ALIGNED-RV32-NEXT:    ret1551;1552; CHECK-ALIGNED-RV64-LABEL: bcmp_size_31:1553; CHECK-ALIGNED-RV64:       # %bb.0: # %entry1554; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -161555; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1556; CHECK-ALIGNED-RV64-NEXT:    li a2, 311557; CHECK-ALIGNED-RV64-NEXT:    call bcmp1558; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1559; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 161560; CHECK-ALIGNED-RV64-NEXT:    ret1561;1562; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_31:1563; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry1564; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -161565; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1566; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 311567; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp1568; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1569; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 161570; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret1571;1572; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_31:1573; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry1574; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -161575; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1576; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 311577; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp1578; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1579; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 161580; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret1581;1582; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_31:1583; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry1584; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -161585; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1586; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 311587; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp1588; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1589; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 161590; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret1591;1592; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_31:1593; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry1594; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -161595; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1596; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 311597; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp1598; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1599; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 161600; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret1601;1602; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_31:1603; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry1604; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -161605; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1606; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 311607; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp1608; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1609; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 161610; CHECK-ALIGNED-RV32-V-NEXT:    ret1611;1612; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_31:1613; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry1614; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -161615; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1616; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 311617; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp1618; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1619; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 161620; CHECK-ALIGNED-RV64-V-NEXT:    ret1621;1622; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_31:1623; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry1624; CHECK-UNALIGNED-RV32-NEXT:    lw a2, 0(a0)1625; CHECK-UNALIGNED-RV32-NEXT:    lw a3, 4(a0)1626; CHECK-UNALIGNED-RV32-NEXT:    lw a4, 8(a0)1627; CHECK-UNALIGNED-RV32-NEXT:    lw a5, 12(a0)1628; CHECK-UNALIGNED-RV32-NEXT:    lw a6, 0(a1)1629; CHECK-UNALIGNED-RV32-NEXT:    lw a7, 4(a1)1630; CHECK-UNALIGNED-RV32-NEXT:    lw t0, 8(a1)1631; CHECK-UNALIGNED-RV32-NEXT:    lw t1, 12(a1)1632; CHECK-UNALIGNED-RV32-NEXT:    xor a2, a2, a61633; CHECK-UNALIGNED-RV32-NEXT:    lw a6, 16(a0)1634; CHECK-UNALIGNED-RV32-NEXT:    lw t2, 20(a0)1635; CHECK-UNALIGNED-RV32-NEXT:    lw t3, 24(a0)1636; CHECK-UNALIGNED-RV32-NEXT:    lw a0, 27(a0)1637; CHECK-UNALIGNED-RV32-NEXT:    xor a3, a3, a71638; CHECK-UNALIGNED-RV32-NEXT:    xor a4, a4, t01639; CHECK-UNALIGNED-RV32-NEXT:    xor a5, a5, t11640; CHECK-UNALIGNED-RV32-NEXT:    lw a7, 16(a1)1641; CHECK-UNALIGNED-RV32-NEXT:    lw t0, 20(a1)1642; CHECK-UNALIGNED-RV32-NEXT:    lw t1, 24(a1)1643; CHECK-UNALIGNED-RV32-NEXT:    lw a1, 27(a1)1644; CHECK-UNALIGNED-RV32-NEXT:    xor a6, a6, a71645; CHECK-UNALIGNED-RV32-NEXT:    xor a7, t2, t01646; CHECK-UNALIGNED-RV32-NEXT:    xor t0, t3, t11647; CHECK-UNALIGNED-RV32-NEXT:    xor a0, a0, a11648; CHECK-UNALIGNED-RV32-NEXT:    or a2, a2, a31649; CHECK-UNALIGNED-RV32-NEXT:    or a4, a4, a51650; CHECK-UNALIGNED-RV32-NEXT:    or a1, a6, a71651; CHECK-UNALIGNED-RV32-NEXT:    or a0, t0, a01652; CHECK-UNALIGNED-RV32-NEXT:    or a2, a2, a41653; CHECK-UNALIGNED-RV32-NEXT:    or a0, a1, a01654; CHECK-UNALIGNED-RV32-NEXT:    or a0, a2, a01655; CHECK-UNALIGNED-RV32-NEXT:    snez a0, a01656; CHECK-UNALIGNED-RV32-NEXT:    ret1657;1658; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_31:1659; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry1660; CHECK-UNALIGNED-RV64-NEXT:    ld a2, 0(a0)1661; CHECK-UNALIGNED-RV64-NEXT:    ld a3, 8(a0)1662; CHECK-UNALIGNED-RV64-NEXT:    ld a4, 16(a0)1663; CHECK-UNALIGNED-RV64-NEXT:    ld a0, 23(a0)1664; CHECK-UNALIGNED-RV64-NEXT:    ld a5, 0(a1)1665; CHECK-UNALIGNED-RV64-NEXT:    ld a6, 8(a1)1666; CHECK-UNALIGNED-RV64-NEXT:    ld a7, 16(a1)1667; CHECK-UNALIGNED-RV64-NEXT:    ld a1, 23(a1)1668; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a51669; CHECK-UNALIGNED-RV64-NEXT:    xor a3, a3, a61670; CHECK-UNALIGNED-RV64-NEXT:    xor a4, a4, a71671; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a11672; CHECK-UNALIGNED-RV64-NEXT:    or a2, a2, a31673; CHECK-UNALIGNED-RV64-NEXT:    or a0, a4, a01674; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a01675; CHECK-UNALIGNED-RV64-NEXT:    snez a0, a01676; CHECK-UNALIGNED-RV64-NEXT:    ret1677;1678; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_31:1679; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry1680; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)1681; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 4(a0)1682; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a4, 8(a0)1683; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a5, 12(a0)1684; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a6, 0(a1)1685; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a7, 4(a1)1686; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw t0, 8(a1)1687; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw t1, 12(a1)1688; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a2, a2, a61689; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a6, 16(a0)1690; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw t2, 20(a0)1691; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw t3, 24(a0)1692; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 27(a0)1693; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a3, a3, a71694; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a4, a4, t01695; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a5, a5, t11696; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a7, 16(a1)1697; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw t0, 20(a1)1698; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw t1, 24(a1)1699; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 27(a1)1700; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a6, a6, a71701; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a7, t2, t01702; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor t0, t3, t11703; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a0, a0, a11704; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a2, a2, a31705; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a4, a4, a51706; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a1, a6, a71707; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, t0, a01708; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a2, a2, a41709; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a1, a01710; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a2, a01711; CHECK-UNALIGNED-RV32-ZBB-NEXT:    snez a0, a01712; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret1713;1714; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_31:1715; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry1716; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)1717; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 8(a0)1718; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a4, 16(a0)1719; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 23(a0)1720; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a5, 0(a1)1721; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a6, 8(a1)1722; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a7, 16(a1)1723; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 23(a1)1724; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a51725; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a3, a3, a61726; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a4, a4, a71727; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a11728; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a2, a2, a31729; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a4, a01730; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a01731; CHECK-UNALIGNED-RV64-ZBB-NEXT:    snez a0, a01732; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret1733;1734; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_31:1735; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry1736; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)1737; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 4(a0)1738; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a4, 8(a0)1739; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a5, 12(a0)1740; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a6, 0(a1)1741; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a7, 4(a1)1742; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw t0, 8(a1)1743; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw t1, 12(a1)1744; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a2, a2, a61745; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a6, 16(a0)1746; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw t2, 20(a0)1747; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw t3, 24(a0)1748; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 27(a0)1749; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a3, a3, a71750; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a4, a4, t01751; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a5, a5, t11752; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a7, 16(a1)1753; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw t0, 20(a1)1754; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw t1, 24(a1)1755; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 27(a1)1756; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a6, a6, a71757; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a7, t2, t01758; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor t0, t3, t11759; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a0, a0, a11760; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a2, a2, a31761; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a4, a4, a51762; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a1, a6, a71763; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, t0, a01764; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a2, a2, a41765; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a1, a01766; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a2, a01767; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    snez a0, a01768; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret1769;1770; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_31:1771; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry1772; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)1773; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 8(a0)1774; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a4, 16(a0)1775; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 23(a0)1776; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a5, 0(a1)1777; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a6, 8(a1)1778; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a7, 16(a1)1779; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 23(a1)1780; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a51781; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a3, a3, a61782; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a4, a4, a71783; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a11784; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a2, a2, a31785; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a4, a01786; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a01787; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    snez a0, a01788; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret1789;1790; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_31:1791; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry1792; CHECK-UNALIGNED-RV32-V-NEXT:    vsetivli zero, 31, e8, m2, ta, ma1793; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)1794; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v10, (a1)1795; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v12, v8, v101796; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v121797; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a01798; CHECK-UNALIGNED-RV32-V-NEXT:    ret1799;1800; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_31:1801; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry1802; CHECK-UNALIGNED-RV64-V-NEXT:    vsetivli zero, 31, e8, m2, ta, ma1803; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)1804; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v10, (a1)1805; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v12, v8, v101806; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v121807; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a01808; CHECK-UNALIGNED-RV64-V-NEXT:    ret1809entry:1810  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 31)1811  ret i32 %bcmp1812}1813 1814define i32 @bcmp_size_32(ptr %s1, ptr %s2) nounwind {1815; CHECK-ALIGNED-RV32-LABEL: bcmp_size_32:1816; CHECK-ALIGNED-RV32:       # %bb.0: # %entry1817; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -161818; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1819; CHECK-ALIGNED-RV32-NEXT:    li a2, 321820; CHECK-ALIGNED-RV32-NEXT:    call bcmp1821; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1822; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 161823; CHECK-ALIGNED-RV32-NEXT:    ret1824;1825; CHECK-ALIGNED-RV64-LABEL: bcmp_size_32:1826; CHECK-ALIGNED-RV64:       # %bb.0: # %entry1827; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -161828; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1829; CHECK-ALIGNED-RV64-NEXT:    li a2, 321830; CHECK-ALIGNED-RV64-NEXT:    call bcmp1831; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1832; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 161833; CHECK-ALIGNED-RV64-NEXT:    ret1834;1835; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_32:1836; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry1837; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -161838; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1839; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 321840; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp1841; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1842; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 161843; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret1844;1845; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_32:1846; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry1847; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -161848; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1849; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 321850; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp1851; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1852; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 161853; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret1854;1855; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_32:1856; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry1857; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -161858; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1859; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 321860; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp1861; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1862; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 161863; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret1864;1865; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_32:1866; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry1867; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -161868; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1869; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 321870; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp1871; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1872; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 161873; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret1874;1875; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_32:1876; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry1877; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -161878; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1879; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 321880; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp1881; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1882; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 161883; CHECK-ALIGNED-RV32-V-NEXT:    ret1884;1885; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_32:1886; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry1887; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -161888; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1889; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 321890; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp1891; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1892; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 161893; CHECK-ALIGNED-RV64-V-NEXT:    ret1894;1895; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_32:1896; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry1897; CHECK-UNALIGNED-RV32-NEXT:    lw a2, 0(a0)1898; CHECK-UNALIGNED-RV32-NEXT:    lw a3, 4(a0)1899; CHECK-UNALIGNED-RV32-NEXT:    lw a4, 8(a0)1900; CHECK-UNALIGNED-RV32-NEXT:    lw a5, 12(a0)1901; CHECK-UNALIGNED-RV32-NEXT:    lw a6, 0(a1)1902; CHECK-UNALIGNED-RV32-NEXT:    lw a7, 4(a1)1903; CHECK-UNALIGNED-RV32-NEXT:    lw t0, 8(a1)1904; CHECK-UNALIGNED-RV32-NEXT:    lw t1, 12(a1)1905; CHECK-UNALIGNED-RV32-NEXT:    xor a2, a2, a61906; CHECK-UNALIGNED-RV32-NEXT:    lw a6, 16(a0)1907; CHECK-UNALIGNED-RV32-NEXT:    lw t2, 20(a0)1908; CHECK-UNALIGNED-RV32-NEXT:    lw t3, 24(a0)1909; CHECK-UNALIGNED-RV32-NEXT:    lw a0, 28(a0)1910; CHECK-UNALIGNED-RV32-NEXT:    xor a3, a3, a71911; CHECK-UNALIGNED-RV32-NEXT:    xor a4, a4, t01912; CHECK-UNALIGNED-RV32-NEXT:    xor a5, a5, t11913; CHECK-UNALIGNED-RV32-NEXT:    lw a7, 16(a1)1914; CHECK-UNALIGNED-RV32-NEXT:    lw t0, 20(a1)1915; CHECK-UNALIGNED-RV32-NEXT:    lw t1, 24(a1)1916; CHECK-UNALIGNED-RV32-NEXT:    lw a1, 28(a1)1917; CHECK-UNALIGNED-RV32-NEXT:    xor a6, a6, a71918; CHECK-UNALIGNED-RV32-NEXT:    xor a7, t2, t01919; CHECK-UNALIGNED-RV32-NEXT:    xor t0, t3, t11920; CHECK-UNALIGNED-RV32-NEXT:    xor a0, a0, a11921; CHECK-UNALIGNED-RV32-NEXT:    or a2, a2, a31922; CHECK-UNALIGNED-RV32-NEXT:    or a4, a4, a51923; CHECK-UNALIGNED-RV32-NEXT:    or a1, a6, a71924; CHECK-UNALIGNED-RV32-NEXT:    or a0, t0, a01925; CHECK-UNALIGNED-RV32-NEXT:    or a2, a2, a41926; CHECK-UNALIGNED-RV32-NEXT:    or a0, a1, a01927; CHECK-UNALIGNED-RV32-NEXT:    or a0, a2, a01928; CHECK-UNALIGNED-RV32-NEXT:    snez a0, a01929; CHECK-UNALIGNED-RV32-NEXT:    ret1930;1931; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_32:1932; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry1933; CHECK-UNALIGNED-RV64-NEXT:    ld a2, 0(a0)1934; CHECK-UNALIGNED-RV64-NEXT:    ld a3, 8(a0)1935; CHECK-UNALIGNED-RV64-NEXT:    ld a4, 16(a0)1936; CHECK-UNALIGNED-RV64-NEXT:    ld a0, 24(a0)1937; CHECK-UNALIGNED-RV64-NEXT:    ld a5, 0(a1)1938; CHECK-UNALIGNED-RV64-NEXT:    ld a6, 8(a1)1939; CHECK-UNALIGNED-RV64-NEXT:    ld a7, 16(a1)1940; CHECK-UNALIGNED-RV64-NEXT:    ld a1, 24(a1)1941; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a51942; CHECK-UNALIGNED-RV64-NEXT:    xor a3, a3, a61943; CHECK-UNALIGNED-RV64-NEXT:    xor a4, a4, a71944; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a11945; CHECK-UNALIGNED-RV64-NEXT:    or a2, a2, a31946; CHECK-UNALIGNED-RV64-NEXT:    or a0, a4, a01947; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a01948; CHECK-UNALIGNED-RV64-NEXT:    snez a0, a01949; CHECK-UNALIGNED-RV64-NEXT:    ret1950;1951; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_32:1952; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry1953; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)1954; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 4(a0)1955; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a4, 8(a0)1956; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a5, 12(a0)1957; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a6, 0(a1)1958; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a7, 4(a1)1959; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw t0, 8(a1)1960; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw t1, 12(a1)1961; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a2, a2, a61962; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a6, 16(a0)1963; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw t2, 20(a0)1964; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw t3, 24(a0)1965; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 28(a0)1966; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a3, a3, a71967; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a4, a4, t01968; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a5, a5, t11969; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a7, 16(a1)1970; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw t0, 20(a1)1971; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw t1, 24(a1)1972; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 28(a1)1973; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a6, a6, a71974; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a7, t2, t01975; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor t0, t3, t11976; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a0, a0, a11977; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a2, a2, a31978; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a4, a4, a51979; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a1, a6, a71980; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, t0, a01981; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a2, a2, a41982; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a1, a01983; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a2, a01984; CHECK-UNALIGNED-RV32-ZBB-NEXT:    snez a0, a01985; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret1986;1987; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_32:1988; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry1989; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)1990; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 8(a0)1991; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a4, 16(a0)1992; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 24(a0)1993; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a5, 0(a1)1994; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a6, 8(a1)1995; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a7, 16(a1)1996; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 24(a1)1997; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a51998; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a3, a3, a61999; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a4, a4, a72000; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a12001; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a2, a2, a32002; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a4, a02003; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a02004; CHECK-UNALIGNED-RV64-ZBB-NEXT:    snez a0, a02005; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret2006;2007; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_32:2008; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry2009; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)2010; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 4(a0)2011; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a4, 8(a0)2012; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a5, 12(a0)2013; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a6, 0(a1)2014; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a7, 4(a1)2015; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw t0, 8(a1)2016; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw t1, 12(a1)2017; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a2, a2, a62018; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a6, 16(a0)2019; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw t2, 20(a0)2020; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw t3, 24(a0)2021; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 28(a0)2022; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a3, a3, a72023; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a4, a4, t02024; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a5, a5, t12025; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a7, 16(a1)2026; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw t0, 20(a1)2027; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw t1, 24(a1)2028; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 28(a1)2029; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a6, a6, a72030; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a7, t2, t02031; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor t0, t3, t12032; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a0, a0, a12033; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a2, a2, a32034; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a4, a4, a52035; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a1, a6, a72036; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, t0, a02037; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a2, a2, a42038; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a1, a02039; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a2, a02040; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    snez a0, a02041; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret2042;2043; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_32:2044; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry2045; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)2046; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 8(a0)2047; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a4, 16(a0)2048; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 24(a0)2049; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a5, 0(a1)2050; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a6, 8(a1)2051; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a7, 16(a1)2052; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 24(a1)2053; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a52054; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a3, a3, a62055; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a4, a4, a72056; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a12057; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a2, a2, a32058; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a4, a02059; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a02060; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    snez a0, a02061; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret2062;2063; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_32:2064; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry2065; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 322066; CHECK-UNALIGNED-RV32-V-NEXT:    vsetvli zero, a2, e8, m2, ta, ma2067; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)2068; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v10, (a1)2069; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v12, v8, v102070; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v122071; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a02072; CHECK-UNALIGNED-RV32-V-NEXT:    ret2073;2074; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_32:2075; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry2076; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 322077; CHECK-UNALIGNED-RV64-V-NEXT:    vsetvli zero, a2, e8, m2, ta, ma2078; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)2079; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v10, (a1)2080; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v12, v8, v102081; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v122082; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a02083; CHECK-UNALIGNED-RV64-V-NEXT:    ret2084entry:2085  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 32)2086  ret i32 %bcmp2087}2088 2089define i32 @bcmp_size_63(ptr %s1, ptr %s2) nounwind {2090; CHECK-ALIGNED-RV32-LABEL: bcmp_size_63:2091; CHECK-ALIGNED-RV32:       # %bb.0: # %entry2092; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -162093; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2094; CHECK-ALIGNED-RV32-NEXT:    li a2, 632095; CHECK-ALIGNED-RV32-NEXT:    call bcmp2096; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2097; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 162098; CHECK-ALIGNED-RV32-NEXT:    ret2099;2100; CHECK-ALIGNED-RV64-LABEL: bcmp_size_63:2101; CHECK-ALIGNED-RV64:       # %bb.0: # %entry2102; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -162103; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2104; CHECK-ALIGNED-RV64-NEXT:    li a2, 632105; CHECK-ALIGNED-RV64-NEXT:    call bcmp2106; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2107; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 162108; CHECK-ALIGNED-RV64-NEXT:    ret2109;2110; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_63:2111; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry2112; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162113; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2114; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 632115; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp2116; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2117; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162118; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret2119;2120; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_63:2121; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry2122; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162123; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2124; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 632125; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp2126; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2127; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162128; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret2129;2130; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_63:2131; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry2132; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162133; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2134; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 632135; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp2136; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2137; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162138; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret2139;2140; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_63:2141; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry2142; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162143; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2144; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 632145; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp2146; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2147; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162148; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret2149;2150; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_63:2151; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry2152; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -162153; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2154; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 632155; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp2156; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2157; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 162158; CHECK-ALIGNED-RV32-V-NEXT:    ret2159;2160; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_63:2161; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry2162; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -162163; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2164; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 632165; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp2166; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2167; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 162168; CHECK-ALIGNED-RV64-V-NEXT:    ret2169;2170; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_63:2171; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry2172; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -162173; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2174; CHECK-UNALIGNED-RV32-NEXT:    li a2, 632175; CHECK-UNALIGNED-RV32-NEXT:    call bcmp2176; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2177; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 162178; CHECK-UNALIGNED-RV32-NEXT:    ret2179;2180; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_63:2181; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry2182; CHECK-UNALIGNED-RV64-NEXT:    ld a2, 0(a0)2183; CHECK-UNALIGNED-RV64-NEXT:    ld a3, 8(a0)2184; CHECK-UNALIGNED-RV64-NEXT:    ld a4, 16(a0)2185; CHECK-UNALIGNED-RV64-NEXT:    ld a5, 24(a0)2186; CHECK-UNALIGNED-RV64-NEXT:    ld a6, 0(a1)2187; CHECK-UNALIGNED-RV64-NEXT:    ld a7, 8(a1)2188; CHECK-UNALIGNED-RV64-NEXT:    ld t0, 16(a1)2189; CHECK-UNALIGNED-RV64-NEXT:    ld t1, 24(a1)2190; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a62191; CHECK-UNALIGNED-RV64-NEXT:    ld a6, 32(a0)2192; CHECK-UNALIGNED-RV64-NEXT:    ld t2, 40(a0)2193; CHECK-UNALIGNED-RV64-NEXT:    ld t3, 48(a0)2194; CHECK-UNALIGNED-RV64-NEXT:    ld a0, 55(a0)2195; CHECK-UNALIGNED-RV64-NEXT:    xor a3, a3, a72196; CHECK-UNALIGNED-RV64-NEXT:    xor a4, a4, t02197; CHECK-UNALIGNED-RV64-NEXT:    xor a5, a5, t12198; CHECK-UNALIGNED-RV64-NEXT:    ld a7, 32(a1)2199; CHECK-UNALIGNED-RV64-NEXT:    ld t0, 40(a1)2200; CHECK-UNALIGNED-RV64-NEXT:    ld t1, 48(a1)2201; CHECK-UNALIGNED-RV64-NEXT:    ld a1, 55(a1)2202; CHECK-UNALIGNED-RV64-NEXT:    xor a6, a6, a72203; CHECK-UNALIGNED-RV64-NEXT:    xor a7, t2, t02204; CHECK-UNALIGNED-RV64-NEXT:    xor t0, t3, t12205; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a12206; CHECK-UNALIGNED-RV64-NEXT:    or a2, a2, a32207; CHECK-UNALIGNED-RV64-NEXT:    or a4, a4, a52208; CHECK-UNALIGNED-RV64-NEXT:    or a1, a6, a72209; CHECK-UNALIGNED-RV64-NEXT:    or a0, t0, a02210; CHECK-UNALIGNED-RV64-NEXT:    or a2, a2, a42211; CHECK-UNALIGNED-RV64-NEXT:    or a0, a1, a02212; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a02213; CHECK-UNALIGNED-RV64-NEXT:    snez a0, a02214; CHECK-UNALIGNED-RV64-NEXT:    ret2215;2216; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_63:2217; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry2218; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162219; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2220; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a2, 632221; CHECK-UNALIGNED-RV32-ZBB-NEXT:    call bcmp2222; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2223; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162224; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret2225;2226; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_63:2227; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry2228; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)2229; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 8(a0)2230; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a4, 16(a0)2231; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a5, 24(a0)2232; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a6, 0(a1)2233; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a7, 8(a1)2234; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld t0, 16(a1)2235; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld t1, 24(a1)2236; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a62237; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a6, 32(a0)2238; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld t2, 40(a0)2239; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld t3, 48(a0)2240; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 55(a0)2241; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a3, a3, a72242; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a4, a4, t02243; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a5, a5, t12244; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a7, 32(a1)2245; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld t0, 40(a1)2246; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld t1, 48(a1)2247; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 55(a1)2248; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a6, a6, a72249; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a7, t2, t02250; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor t0, t3, t12251; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a12252; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a2, a2, a32253; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a4, a4, a52254; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a1, a6, a72255; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, t0, a02256; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a2, a2, a42257; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a1, a02258; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a02259; CHECK-UNALIGNED-RV64-ZBB-NEXT:    snez a0, a02260; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret2261;2262; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_63:2263; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry2264; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162265; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2266; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a2, 632267; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    call bcmp2268; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2269; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162270; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret2271;2272; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_63:2273; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry2274; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)2275; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 8(a0)2276; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a4, 16(a0)2277; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a5, 24(a0)2278; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a6, 0(a1)2279; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a7, 8(a1)2280; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld t0, 16(a1)2281; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld t1, 24(a1)2282; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a62283; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a6, 32(a0)2284; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld t2, 40(a0)2285; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld t3, 48(a0)2286; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 55(a0)2287; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a3, a3, a72288; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a4, a4, t02289; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a5, a5, t12290; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a7, 32(a1)2291; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld t0, 40(a1)2292; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld t1, 48(a1)2293; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 55(a1)2294; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a6, a6, a72295; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a7, t2, t02296; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor t0, t3, t12297; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a12298; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a2, a2, a32299; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a4, a4, a52300; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a1, a6, a72301; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, t0, a02302; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a2, a2, a42303; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a1, a02304; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a02305; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    snez a0, a02306; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret2307;2308; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_63:2309; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry2310; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 632311; CHECK-UNALIGNED-RV32-V-NEXT:    vsetvli zero, a2, e8, m4, ta, ma2312; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)2313; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v12, (a1)2314; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v16, v8, v122315; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v162316; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a02317; CHECK-UNALIGNED-RV32-V-NEXT:    ret2318;2319; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_63:2320; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry2321; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 632322; CHECK-UNALIGNED-RV64-V-NEXT:    vsetvli zero, a2, e8, m4, ta, ma2323; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)2324; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v12, (a1)2325; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v16, v8, v122326; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v162327; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a02328; CHECK-UNALIGNED-RV64-V-NEXT:    ret2329entry:2330  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 63)2331  ret i32 %bcmp2332}2333 2334define i32 @bcmp_size_64(ptr %s1, ptr %s2) nounwind {2335; CHECK-ALIGNED-RV32-LABEL: bcmp_size_64:2336; CHECK-ALIGNED-RV32:       # %bb.0: # %entry2337; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -162338; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2339; CHECK-ALIGNED-RV32-NEXT:    li a2, 642340; CHECK-ALIGNED-RV32-NEXT:    call bcmp2341; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2342; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 162343; CHECK-ALIGNED-RV32-NEXT:    ret2344;2345; CHECK-ALIGNED-RV64-LABEL: bcmp_size_64:2346; CHECK-ALIGNED-RV64:       # %bb.0: # %entry2347; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -162348; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2349; CHECK-ALIGNED-RV64-NEXT:    li a2, 642350; CHECK-ALIGNED-RV64-NEXT:    call bcmp2351; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2352; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 162353; CHECK-ALIGNED-RV64-NEXT:    ret2354;2355; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_64:2356; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry2357; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162358; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2359; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 642360; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp2361; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2362; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162363; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret2364;2365; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_64:2366; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry2367; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162368; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2369; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 642370; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp2371; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2372; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162373; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret2374;2375; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_64:2376; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry2377; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162378; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2379; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 642380; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp2381; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2382; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162383; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret2384;2385; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_64:2386; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry2387; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162388; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2389; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 642390; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp2391; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2392; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162393; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret2394;2395; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_64:2396; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry2397; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -162398; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2399; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 642400; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp2401; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2402; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 162403; CHECK-ALIGNED-RV32-V-NEXT:    ret2404;2405; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_64:2406; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry2407; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -162408; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2409; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 642410; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp2411; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2412; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 162413; CHECK-ALIGNED-RV64-V-NEXT:    ret2414;2415; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_64:2416; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry2417; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -162418; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2419; CHECK-UNALIGNED-RV32-NEXT:    li a2, 642420; CHECK-UNALIGNED-RV32-NEXT:    call bcmp2421; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2422; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 162423; CHECK-UNALIGNED-RV32-NEXT:    ret2424;2425; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_64:2426; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry2427; CHECK-UNALIGNED-RV64-NEXT:    ld a2, 0(a0)2428; CHECK-UNALIGNED-RV64-NEXT:    ld a3, 8(a0)2429; CHECK-UNALIGNED-RV64-NEXT:    ld a4, 16(a0)2430; CHECK-UNALIGNED-RV64-NEXT:    ld a5, 24(a0)2431; CHECK-UNALIGNED-RV64-NEXT:    ld a6, 0(a1)2432; CHECK-UNALIGNED-RV64-NEXT:    ld a7, 8(a1)2433; CHECK-UNALIGNED-RV64-NEXT:    ld t0, 16(a1)2434; CHECK-UNALIGNED-RV64-NEXT:    ld t1, 24(a1)2435; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a62436; CHECK-UNALIGNED-RV64-NEXT:    ld a6, 32(a0)2437; CHECK-UNALIGNED-RV64-NEXT:    ld t2, 40(a0)2438; CHECK-UNALIGNED-RV64-NEXT:    ld t3, 48(a0)2439; CHECK-UNALIGNED-RV64-NEXT:    ld a0, 56(a0)2440; CHECK-UNALIGNED-RV64-NEXT:    xor a3, a3, a72441; CHECK-UNALIGNED-RV64-NEXT:    xor a4, a4, t02442; CHECK-UNALIGNED-RV64-NEXT:    xor a5, a5, t12443; CHECK-UNALIGNED-RV64-NEXT:    ld a7, 32(a1)2444; CHECK-UNALIGNED-RV64-NEXT:    ld t0, 40(a1)2445; CHECK-UNALIGNED-RV64-NEXT:    ld t1, 48(a1)2446; CHECK-UNALIGNED-RV64-NEXT:    ld a1, 56(a1)2447; CHECK-UNALIGNED-RV64-NEXT:    xor a6, a6, a72448; CHECK-UNALIGNED-RV64-NEXT:    xor a7, t2, t02449; CHECK-UNALIGNED-RV64-NEXT:    xor t0, t3, t12450; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a12451; CHECK-UNALIGNED-RV64-NEXT:    or a2, a2, a32452; CHECK-UNALIGNED-RV64-NEXT:    or a4, a4, a52453; CHECK-UNALIGNED-RV64-NEXT:    or a1, a6, a72454; CHECK-UNALIGNED-RV64-NEXT:    or a0, t0, a02455; CHECK-UNALIGNED-RV64-NEXT:    or a2, a2, a42456; CHECK-UNALIGNED-RV64-NEXT:    or a0, a1, a02457; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a02458; CHECK-UNALIGNED-RV64-NEXT:    snez a0, a02459; CHECK-UNALIGNED-RV64-NEXT:    ret2460;2461; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_64:2462; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry2463; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162464; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2465; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a2, 642466; CHECK-UNALIGNED-RV32-ZBB-NEXT:    call bcmp2467; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2468; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162469; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret2470;2471; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_64:2472; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry2473; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)2474; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 8(a0)2475; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a4, 16(a0)2476; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a5, 24(a0)2477; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a6, 0(a1)2478; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a7, 8(a1)2479; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld t0, 16(a1)2480; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld t1, 24(a1)2481; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a62482; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a6, 32(a0)2483; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld t2, 40(a0)2484; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld t3, 48(a0)2485; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 56(a0)2486; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a3, a3, a72487; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a4, a4, t02488; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a5, a5, t12489; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a7, 32(a1)2490; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld t0, 40(a1)2491; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld t1, 48(a1)2492; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 56(a1)2493; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a6, a6, a72494; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a7, t2, t02495; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor t0, t3, t12496; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a12497; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a2, a2, a32498; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a4, a4, a52499; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a1, a6, a72500; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, t0, a02501; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a2, a2, a42502; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a1, a02503; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a02504; CHECK-UNALIGNED-RV64-ZBB-NEXT:    snez a0, a02505; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret2506;2507; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_64:2508; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry2509; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162510; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2511; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a2, 642512; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    call bcmp2513; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2514; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162515; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret2516;2517; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_64:2518; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry2519; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)2520; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 8(a0)2521; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a4, 16(a0)2522; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a5, 24(a0)2523; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a6, 0(a1)2524; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a7, 8(a1)2525; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld t0, 16(a1)2526; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld t1, 24(a1)2527; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a62528; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a6, 32(a0)2529; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld t2, 40(a0)2530; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld t3, 48(a0)2531; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 56(a0)2532; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a3, a3, a72533; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a4, a4, t02534; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a5, a5, t12535; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a7, 32(a1)2536; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld t0, 40(a1)2537; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld t1, 48(a1)2538; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 56(a1)2539; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a6, a6, a72540; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a7, t2, t02541; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor t0, t3, t12542; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a12543; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a2, a2, a32544; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a4, a4, a52545; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a1, a6, a72546; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, t0, a02547; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a2, a2, a42548; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a1, a02549; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a02550; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    snez a0, a02551; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret2552;2553; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_64:2554; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry2555; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 642556; CHECK-UNALIGNED-RV32-V-NEXT:    vsetvli zero, a2, e8, m4, ta, ma2557; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)2558; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v12, (a1)2559; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v16, v8, v122560; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v162561; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a02562; CHECK-UNALIGNED-RV32-V-NEXT:    ret2563;2564; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_64:2565; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry2566; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 642567; CHECK-UNALIGNED-RV64-V-NEXT:    vsetvli zero, a2, e8, m4, ta, ma2568; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)2569; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v12, (a1)2570; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v16, v8, v122571; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v162572; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a02573; CHECK-UNALIGNED-RV64-V-NEXT:    ret2574entry:2575  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 64)2576  ret i32 %bcmp2577}2578 2579define i32 @bcmp_size_127(ptr %s1, ptr %s2) nounwind {2580; CHECK-ALIGNED-RV32-LABEL: bcmp_size_127:2581; CHECK-ALIGNED-RV32:       # %bb.0: # %entry2582; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -162583; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2584; CHECK-ALIGNED-RV32-NEXT:    li a2, 1272585; CHECK-ALIGNED-RV32-NEXT:    call bcmp2586; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2587; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 162588; CHECK-ALIGNED-RV32-NEXT:    ret2589;2590; CHECK-ALIGNED-RV64-LABEL: bcmp_size_127:2591; CHECK-ALIGNED-RV64:       # %bb.0: # %entry2592; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -162593; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2594; CHECK-ALIGNED-RV64-NEXT:    li a2, 1272595; CHECK-ALIGNED-RV64-NEXT:    call bcmp2596; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2597; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 162598; CHECK-ALIGNED-RV64-NEXT:    ret2599;2600; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_127:2601; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry2602; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162603; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2604; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 1272605; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp2606; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2607; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162608; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret2609;2610; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_127:2611; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry2612; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162613; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2614; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 1272615; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp2616; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2617; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162618; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret2619;2620; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_127:2621; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry2622; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162623; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2624; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 1272625; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp2626; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2627; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162628; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret2629;2630; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_127:2631; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry2632; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162633; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2634; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 1272635; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp2636; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2637; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162638; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret2639;2640; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_127:2641; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry2642; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -162643; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2644; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 1272645; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp2646; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2647; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 162648; CHECK-ALIGNED-RV32-V-NEXT:    ret2649;2650; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_127:2651; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry2652; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -162653; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2654; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 1272655; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp2656; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2657; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 162658; CHECK-ALIGNED-RV64-V-NEXT:    ret2659;2660; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_127:2661; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry2662; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -162663; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2664; CHECK-UNALIGNED-RV32-NEXT:    li a2, 1272665; CHECK-UNALIGNED-RV32-NEXT:    call bcmp2666; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2667; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 162668; CHECK-UNALIGNED-RV32-NEXT:    ret2669;2670; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_127:2671; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry2672; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -162673; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2674; CHECK-UNALIGNED-RV64-NEXT:    li a2, 1272675; CHECK-UNALIGNED-RV64-NEXT:    call bcmp2676; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2677; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 162678; CHECK-UNALIGNED-RV64-NEXT:    ret2679;2680; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_127:2681; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry2682; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162683; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2684; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a2, 1272685; CHECK-UNALIGNED-RV32-ZBB-NEXT:    call bcmp2686; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2687; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162688; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret2689;2690; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_127:2691; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry2692; CHECK-UNALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162693; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2694; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a2, 1272695; CHECK-UNALIGNED-RV64-ZBB-NEXT:    call bcmp2696; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2697; CHECK-UNALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162698; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret2699;2700; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_127:2701; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry2702; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162703; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2704; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a2, 1272705; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    call bcmp2706; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2707; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162708; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret2709;2710; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_127:2711; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry2712; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162713; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2714; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a2, 1272715; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    call bcmp2716; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2717; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162718; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret2719;2720; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_127:2721; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry2722; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 1272723; CHECK-UNALIGNED-RV32-V-NEXT:    vsetvli zero, a2, e8, m8, ta, ma2724; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)2725; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v16, (a1)2726; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v24, v8, v162727; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v242728; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a02729; CHECK-UNALIGNED-RV32-V-NEXT:    ret2730;2731; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_127:2732; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry2733; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 1272734; CHECK-UNALIGNED-RV64-V-NEXT:    vsetvli zero, a2, e8, m8, ta, ma2735; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)2736; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v16, (a1)2737; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v24, v8, v162738; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v242739; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a02740; CHECK-UNALIGNED-RV64-V-NEXT:    ret2741entry:2742  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 127)2743  ret i32 %bcmp2744}2745 2746define i32 @bcmp_size_128(ptr %s1, ptr %s2) nounwind {2747; CHECK-ALIGNED-RV32-LABEL: bcmp_size_128:2748; CHECK-ALIGNED-RV32:       # %bb.0: # %entry2749; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -162750; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2751; CHECK-ALIGNED-RV32-NEXT:    li a2, 1282752; CHECK-ALIGNED-RV32-NEXT:    call bcmp2753; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2754; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 162755; CHECK-ALIGNED-RV32-NEXT:    ret2756;2757; CHECK-ALIGNED-RV64-LABEL: bcmp_size_128:2758; CHECK-ALIGNED-RV64:       # %bb.0: # %entry2759; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -162760; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2761; CHECK-ALIGNED-RV64-NEXT:    li a2, 1282762; CHECK-ALIGNED-RV64-NEXT:    call bcmp2763; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2764; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 162765; CHECK-ALIGNED-RV64-NEXT:    ret2766;2767; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_128:2768; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry2769; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162770; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2771; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 1282772; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp2773; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2774; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162775; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret2776;2777; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_128:2778; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry2779; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162780; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2781; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 1282782; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp2783; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2784; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162785; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret2786;2787; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_128:2788; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry2789; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162790; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2791; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 1282792; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp2793; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2794; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162795; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret2796;2797; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_128:2798; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry2799; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162800; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2801; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 1282802; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp2803; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2804; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162805; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret2806;2807; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_128:2808; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry2809; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -162810; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2811; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 1282812; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp2813; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2814; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 162815; CHECK-ALIGNED-RV32-V-NEXT:    ret2816;2817; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_128:2818; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry2819; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -162820; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2821; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 1282822; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp2823; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2824; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 162825; CHECK-ALIGNED-RV64-V-NEXT:    ret2826;2827; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_128:2828; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry2829; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -162830; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2831; CHECK-UNALIGNED-RV32-NEXT:    li a2, 1282832; CHECK-UNALIGNED-RV32-NEXT:    call bcmp2833; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2834; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 162835; CHECK-UNALIGNED-RV32-NEXT:    ret2836;2837; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_128:2838; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry2839; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -162840; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2841; CHECK-UNALIGNED-RV64-NEXT:    li a2, 1282842; CHECK-UNALIGNED-RV64-NEXT:    call bcmp2843; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2844; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 162845; CHECK-UNALIGNED-RV64-NEXT:    ret2846;2847; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_128:2848; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry2849; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162850; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2851; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a2, 1282852; CHECK-UNALIGNED-RV32-ZBB-NEXT:    call bcmp2853; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2854; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162855; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret2856;2857; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_128:2858; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry2859; CHECK-UNALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162860; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2861; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a2, 1282862; CHECK-UNALIGNED-RV64-ZBB-NEXT:    call bcmp2863; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2864; CHECK-UNALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162865; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret2866;2867; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_128:2868; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry2869; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162870; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2871; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a2, 1282872; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    call bcmp2873; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2874; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162875; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret2876;2877; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_128:2878; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry2879; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162880; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2881; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a2, 1282882; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    call bcmp2883; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2884; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162885; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret2886;2887; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_128:2888; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry2889; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 1282890; CHECK-UNALIGNED-RV32-V-NEXT:    vsetvli zero, a2, e8, m8, ta, ma2891; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)2892; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v16, (a1)2893; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v24, v8, v162894; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v242895; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a02896; CHECK-UNALIGNED-RV32-V-NEXT:    ret2897;2898; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_128:2899; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry2900; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 1282901; CHECK-UNALIGNED-RV64-V-NEXT:    vsetvli zero, a2, e8, m8, ta, ma2902; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)2903; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v16, (a1)2904; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v24, v8, v162905; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v242906; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a02907; CHECK-UNALIGNED-RV64-V-NEXT:    ret2908entry:2909  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 128)2910  ret i32 %bcmp2911}2912 2913define i32 @bcmp_size_runtime(ptr %s1, ptr %s2, iXLen %len) nounwind {2914; CHECK-RV32-LABEL: bcmp_size_runtime:2915; CHECK-RV32:       # %bb.0: # %entry2916; CHECK-RV32-NEXT:    addi sp, sp, -162917; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2918; CHECK-RV32-NEXT:    call bcmp2919; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2920; CHECK-RV32-NEXT:    addi sp, sp, 162921; CHECK-RV32-NEXT:    ret2922;2923; CHECK-RV64-LABEL: bcmp_size_runtime:2924; CHECK-RV64:       # %bb.0: # %entry2925; CHECK-RV64-NEXT:    addi sp, sp, -162926; CHECK-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2927; CHECK-RV64-NEXT:    call bcmp2928; CHECK-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2929; CHECK-RV64-NEXT:    addi sp, sp, 162930; CHECK-RV64-NEXT:    ret2931entry:2932  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen %len)2933  ret i32 %bcmp2934}2935 2936define i1 @bcmp_eq_zero(ptr %s1, ptr %s2) nounwind {2937; CHECK-ALIGNED-RV32-LABEL: bcmp_eq_zero:2938; CHECK-ALIGNED-RV32:       # %bb.0: # %entry2939; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -162940; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2941; CHECK-ALIGNED-RV32-NEXT:    li a2, 162942; CHECK-ALIGNED-RV32-NEXT:    call bcmp2943; CHECK-ALIGNED-RV32-NEXT:    seqz a0, a02944; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2945; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 162946; CHECK-ALIGNED-RV32-NEXT:    ret2947;2948; CHECK-ALIGNED-RV64-LABEL: bcmp_eq_zero:2949; CHECK-ALIGNED-RV64:       # %bb.0: # %entry2950; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -162951; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2952; CHECK-ALIGNED-RV64-NEXT:    li a2, 162953; CHECK-ALIGNED-RV64-NEXT:    call bcmp2954; CHECK-ALIGNED-RV64-NEXT:    seqz a0, a02955; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2956; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 162957; CHECK-ALIGNED-RV64-NEXT:    ret2958;2959; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_eq_zero:2960; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry2961; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162962; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2963; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 162964; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp2965; CHECK-ALIGNED-RV32-ZBB-NEXT:    seqz a0, a02966; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2967; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162968; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret2969;2970; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_eq_zero:2971; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry2972; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162973; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2974; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 162975; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp2976; CHECK-ALIGNED-RV64-ZBB-NEXT:    seqz a0, a02977; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2978; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162979; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret2980;2981; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_eq_zero:2982; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry2983; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162984; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2985; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 162986; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp2987; CHECK-ALIGNED-RV32-ZBKB-NEXT:    seqz a0, a02988; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2989; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162990; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret2991;2992; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_eq_zero:2993; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry2994; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162995; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2996; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 162997; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp2998; CHECK-ALIGNED-RV64-ZBKB-NEXT:    seqz a0, a02999; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3000; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163001; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3002;3003; CHECK-ALIGNED-RV32-V-LABEL: bcmp_eq_zero:3004; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3005; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163006; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3007; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 163008; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp3009; CHECK-ALIGNED-RV32-V-NEXT:    seqz a0, a03010; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3011; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163012; CHECK-ALIGNED-RV32-V-NEXT:    ret3013;3014; CHECK-ALIGNED-RV64-V-LABEL: bcmp_eq_zero:3015; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3016; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163017; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3018; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 163019; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp3020; CHECK-ALIGNED-RV64-V-NEXT:    seqz a0, a03021; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3022; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163023; CHECK-ALIGNED-RV64-V-NEXT:    ret3024;3025; CHECK-UNALIGNED-RV32-LABEL: bcmp_eq_zero:3026; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry3027; CHECK-UNALIGNED-RV32-NEXT:    lw a2, 0(a0)3028; CHECK-UNALIGNED-RV32-NEXT:    lw a3, 4(a0)3029; CHECK-UNALIGNED-RV32-NEXT:    lw a4, 8(a0)3030; CHECK-UNALIGNED-RV32-NEXT:    lw a0, 12(a0)3031; CHECK-UNALIGNED-RV32-NEXT:    lw a5, 0(a1)3032; CHECK-UNALIGNED-RV32-NEXT:    lw a6, 4(a1)3033; CHECK-UNALIGNED-RV32-NEXT:    lw a7, 8(a1)3034; CHECK-UNALIGNED-RV32-NEXT:    lw a1, 12(a1)3035; CHECK-UNALIGNED-RV32-NEXT:    xor a2, a2, a53036; CHECK-UNALIGNED-RV32-NEXT:    xor a3, a3, a63037; CHECK-UNALIGNED-RV32-NEXT:    xor a4, a4, a73038; CHECK-UNALIGNED-RV32-NEXT:    xor a0, a0, a13039; CHECK-UNALIGNED-RV32-NEXT:    or a2, a2, a33040; CHECK-UNALIGNED-RV32-NEXT:    or a0, a4, a03041; CHECK-UNALIGNED-RV32-NEXT:    or a0, a2, a03042; CHECK-UNALIGNED-RV32-NEXT:    seqz a0, a03043; CHECK-UNALIGNED-RV32-NEXT:    ret3044;3045; CHECK-UNALIGNED-RV64-LABEL: bcmp_eq_zero:3046; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry3047; CHECK-UNALIGNED-RV64-NEXT:    ld a2, 0(a0)3048; CHECK-UNALIGNED-RV64-NEXT:    ld a0, 8(a0)3049; CHECK-UNALIGNED-RV64-NEXT:    ld a3, 0(a1)3050; CHECK-UNALIGNED-RV64-NEXT:    ld a1, 8(a1)3051; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a33052; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a13053; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a03054; CHECK-UNALIGNED-RV64-NEXT:    seqz a0, a03055; CHECK-UNALIGNED-RV64-NEXT:    ret3056;3057; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_eq_zero:3058; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry3059; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)3060; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 4(a0)3061; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a4, 8(a0)3062; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 12(a0)3063; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a5, 0(a1)3064; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a6, 4(a1)3065; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a7, 8(a1)3066; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 12(a1)3067; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a2, a2, a53068; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a3, a3, a63069; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a4, a4, a73070; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a0, a0, a13071; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a2, a2, a33072; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a4, a03073; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a2, a03074; CHECK-UNALIGNED-RV32-ZBB-NEXT:    seqz a0, a03075; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret3076;3077; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_eq_zero:3078; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry3079; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)3080; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 8(a0)3081; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)3082; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 8(a1)3083; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a33084; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a13085; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a03086; CHECK-UNALIGNED-RV64-ZBB-NEXT:    seqz a0, a03087; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret3088;3089; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_eq_zero:3090; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry3091; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)3092; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 4(a0)3093; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a4, 8(a0)3094; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 12(a0)3095; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a5, 0(a1)3096; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a6, 4(a1)3097; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a7, 8(a1)3098; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 12(a1)3099; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a2, a2, a53100; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a3, a3, a63101; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a4, a4, a73102; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a0, a0, a13103; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a2, a2, a33104; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a4, a03105; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a2, a03106; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    seqz a0, a03107; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret3108;3109; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_eq_zero:3110; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry3111; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)3112; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 8(a0)3113; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)3114; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 8(a1)3115; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a33116; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a13117; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a03118; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    seqz a0, a03119; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret3120;3121; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_eq_zero:3122; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry3123; CHECK-UNALIGNED-RV32-V-NEXT:    vsetivli zero, 16, e8, m1, ta, ma3124; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)3125; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v9, (a1)3126; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v8, v8, v93127; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v83128; CHECK-UNALIGNED-RV32-V-NEXT:    seqz a0, a03129; CHECK-UNALIGNED-RV32-V-NEXT:    ret3130;3131; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_eq_zero:3132; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry3133; CHECK-UNALIGNED-RV64-V-NEXT:    vsetivli zero, 16, e8, m1, ta, ma3134; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)3135; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v9, (a1)3136; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v8, v8, v93137; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v83138; CHECK-UNALIGNED-RV64-V-NEXT:    seqz a0, a03139; CHECK-UNALIGNED-RV64-V-NEXT:    ret3140entry:3141  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 16)3142  %ret = icmp eq i32 %bcmp, 03143  ret i1 %ret3144}3145 3146define i1 @bcmp_lt_zero(ptr %s1, ptr %s2) nounwind {3147; CHECK-ALIGNED-RV32-LABEL: bcmp_lt_zero:3148; CHECK-ALIGNED-RV32:       # %bb.0: # %entry3149; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -163150; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3151; CHECK-ALIGNED-RV32-NEXT:    li a2, 43152; CHECK-ALIGNED-RV32-NEXT:    call bcmp3153; CHECK-ALIGNED-RV32-NEXT:    srli a0, a0, 313154; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3155; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 163156; CHECK-ALIGNED-RV32-NEXT:    ret3157;3158; CHECK-ALIGNED-RV64-LABEL: bcmp_lt_zero:3159; CHECK-ALIGNED-RV64:       # %bb.0: # %entry3160; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -163161; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3162; CHECK-ALIGNED-RV64-NEXT:    li a2, 43163; CHECK-ALIGNED-RV64-NEXT:    call bcmp3164; CHECK-ALIGNED-RV64-NEXT:    srli a0, a0, 633165; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3166; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 163167; CHECK-ALIGNED-RV64-NEXT:    ret3168;3169; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_lt_zero:3170; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry3171; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -163172; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3173; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 43174; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp3175; CHECK-ALIGNED-RV32-ZBB-NEXT:    srli a0, a0, 313176; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3177; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 163178; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret3179;3180; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_lt_zero:3181; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry3182; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -163183; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3184; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 43185; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp3186; CHECK-ALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 633187; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3188; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 163189; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret3190;3191; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_lt_zero:3192; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry3193; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -163194; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3195; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 43196; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp3197; CHECK-ALIGNED-RV32-ZBKB-NEXT:    srli a0, a0, 313198; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3199; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 163200; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret3201;3202; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_lt_zero:3203; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry3204; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -163205; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3206; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 43207; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp3208; CHECK-ALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 633209; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3210; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163211; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3212;3213; CHECK-ALIGNED-RV32-V-LABEL: bcmp_lt_zero:3214; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3215; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163216; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3217; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 43218; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp3219; CHECK-ALIGNED-RV32-V-NEXT:    srli a0, a0, 313220; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3221; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163222; CHECK-ALIGNED-RV32-V-NEXT:    ret3223;3224; CHECK-ALIGNED-RV64-V-LABEL: bcmp_lt_zero:3225; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3226; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163227; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3228; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 43229; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp3230; CHECK-ALIGNED-RV64-V-NEXT:    srli a0, a0, 633231; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3232; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163233; CHECK-ALIGNED-RV64-V-NEXT:    ret3234;3235; CHECK-UNALIGNED-LABEL: bcmp_lt_zero:3236; CHECK-UNALIGNED:       # %bb.0: # %entry3237; CHECK-UNALIGNED-NEXT:    li a0, 03238; CHECK-UNALIGNED-NEXT:    ret3239entry:3240  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4)3241  %ret = icmp slt i32 %bcmp, 03242  ret i1 %ret3243}3244 3245define i1 @bcmp_gt_zero(ptr %s1, ptr %s2) nounwind {3246; CHECK-ALIGNED-RV32-LABEL: bcmp_gt_zero:3247; CHECK-ALIGNED-RV32:       # %bb.0: # %entry3248; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -163249; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3250; CHECK-ALIGNED-RV32-NEXT:    li a2, 43251; CHECK-ALIGNED-RV32-NEXT:    call bcmp3252; CHECK-ALIGNED-RV32-NEXT:    sgtz a0, a03253; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3254; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 163255; CHECK-ALIGNED-RV32-NEXT:    ret3256;3257; CHECK-ALIGNED-RV64-LABEL: bcmp_gt_zero:3258; CHECK-ALIGNED-RV64:       # %bb.0: # %entry3259; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -163260; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3261; CHECK-ALIGNED-RV64-NEXT:    li a2, 43262; CHECK-ALIGNED-RV64-NEXT:    call bcmp3263; CHECK-ALIGNED-RV64-NEXT:    sgtz a0, a03264; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3265; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 163266; CHECK-ALIGNED-RV64-NEXT:    ret3267;3268; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_gt_zero:3269; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry3270; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -163271; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3272; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 43273; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp3274; CHECK-ALIGNED-RV32-ZBB-NEXT:    sgtz a0, a03275; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3276; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 163277; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret3278;3279; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_gt_zero:3280; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry3281; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -163282; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3283; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 43284; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp3285; CHECK-ALIGNED-RV64-ZBB-NEXT:    sgtz a0, a03286; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3287; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 163288; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret3289;3290; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_gt_zero:3291; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry3292; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -163293; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3294; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 43295; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp3296; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sgtz a0, a03297; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3298; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 163299; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret3300;3301; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_gt_zero:3302; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry3303; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -163304; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3305; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 43306; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp3307; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sgtz a0, a03308; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3309; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163310; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3311;3312; CHECK-ALIGNED-RV32-V-LABEL: bcmp_gt_zero:3313; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3314; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163315; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3316; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 43317; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp3318; CHECK-ALIGNED-RV32-V-NEXT:    sgtz a0, a03319; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3320; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163321; CHECK-ALIGNED-RV32-V-NEXT:    ret3322;3323; CHECK-ALIGNED-RV64-V-LABEL: bcmp_gt_zero:3324; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3325; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163326; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3327; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 43328; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp3329; CHECK-ALIGNED-RV64-V-NEXT:    sgtz a0, a03330; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3331; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163332; CHECK-ALIGNED-RV64-V-NEXT:    ret3333;3334; CHECK-UNALIGNED-LABEL: bcmp_gt_zero:3335; CHECK-UNALIGNED:       # %bb.0: # %entry3336; CHECK-UNALIGNED-NEXT:    lw a0, 0(a0)3337; CHECK-UNALIGNED-NEXT:    lw a1, 0(a1)3338; CHECK-UNALIGNED-NEXT:    xor a0, a0, a13339; CHECK-UNALIGNED-NEXT:    snez a0, a03340; CHECK-UNALIGNED-NEXT:    ret3341entry:3342  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4)3343  %ret = icmp sgt i32 %bcmp, 03344  ret i1 %ret3345}3346 3347define i1 @bcmp_le_zero(ptr %s1, ptr %s2) nounwind {3348; CHECK-ALIGNED-RV32-LABEL: bcmp_le_zero:3349; CHECK-ALIGNED-RV32:       # %bb.0: # %entry3350; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -163351; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3352; CHECK-ALIGNED-RV32-NEXT:    li a2, 43353; CHECK-ALIGNED-RV32-NEXT:    call bcmp3354; CHECK-ALIGNED-RV32-NEXT:    slti a0, a0, 13355; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3356; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 163357; CHECK-ALIGNED-RV32-NEXT:    ret3358;3359; CHECK-ALIGNED-RV64-LABEL: bcmp_le_zero:3360; CHECK-ALIGNED-RV64:       # %bb.0: # %entry3361; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -163362; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3363; CHECK-ALIGNED-RV64-NEXT:    li a2, 43364; CHECK-ALIGNED-RV64-NEXT:    call bcmp3365; CHECK-ALIGNED-RV64-NEXT:    slti a0, a0, 13366; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3367; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 163368; CHECK-ALIGNED-RV64-NEXT:    ret3369;3370; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_le_zero:3371; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry3372; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -163373; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3374; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 43375; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp3376; CHECK-ALIGNED-RV32-ZBB-NEXT:    slti a0, a0, 13377; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3378; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 163379; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret3380;3381; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_le_zero:3382; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry3383; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -163384; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3385; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 43386; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp3387; CHECK-ALIGNED-RV64-ZBB-NEXT:    slti a0, a0, 13388; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3389; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 163390; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret3391;3392; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_le_zero:3393; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry3394; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -163395; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3396; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 43397; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp3398; CHECK-ALIGNED-RV32-ZBKB-NEXT:    slti a0, a0, 13399; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3400; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 163401; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret3402;3403; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_le_zero:3404; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry3405; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -163406; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3407; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 43408; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp3409; CHECK-ALIGNED-RV64-ZBKB-NEXT:    slti a0, a0, 13410; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3411; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163412; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3413;3414; CHECK-ALIGNED-RV32-V-LABEL: bcmp_le_zero:3415; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3416; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163417; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3418; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 43419; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp3420; CHECK-ALIGNED-RV32-V-NEXT:    slti a0, a0, 13421; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3422; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163423; CHECK-ALIGNED-RV32-V-NEXT:    ret3424;3425; CHECK-ALIGNED-RV64-V-LABEL: bcmp_le_zero:3426; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3427; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163428; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3429; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 43430; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp3431; CHECK-ALIGNED-RV64-V-NEXT:    slti a0, a0, 13432; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3433; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163434; CHECK-ALIGNED-RV64-V-NEXT:    ret3435;3436; CHECK-UNALIGNED-LABEL: bcmp_le_zero:3437; CHECK-UNALIGNED:       # %bb.0: # %entry3438; CHECK-UNALIGNED-NEXT:    lw a0, 0(a0)3439; CHECK-UNALIGNED-NEXT:    lw a1, 0(a1)3440; CHECK-UNALIGNED-NEXT:    xor a0, a0, a13441; CHECK-UNALIGNED-NEXT:    snez a0, a03442; CHECK-UNALIGNED-NEXT:    slti a0, a0, 13443; CHECK-UNALIGNED-NEXT:    ret3444entry:3445  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4)3446  %ret = icmp slt i32 %bcmp, 13447  ret i1 %ret3448}3449 3450define i1 @bcmp_ge_zero(ptr %s1, ptr %s2) nounwind {3451; CHECK-ALIGNED-RV32-LABEL: bcmp_ge_zero:3452; CHECK-ALIGNED-RV32:       # %bb.0: # %entry3453; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -163454; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3455; CHECK-ALIGNED-RV32-NEXT:    li a2, 43456; CHECK-ALIGNED-RV32-NEXT:    call bcmp3457; CHECK-ALIGNED-RV32-NEXT:    srli a0, a0, 313458; CHECK-ALIGNED-RV32-NEXT:    xori a0, a0, 13459; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3460; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 163461; CHECK-ALIGNED-RV32-NEXT:    ret3462;3463; CHECK-ALIGNED-RV64-LABEL: bcmp_ge_zero:3464; CHECK-ALIGNED-RV64:       # %bb.0: # %entry3465; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -163466; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3467; CHECK-ALIGNED-RV64-NEXT:    li a2, 43468; CHECK-ALIGNED-RV64-NEXT:    call bcmp3469; CHECK-ALIGNED-RV64-NEXT:    srli a0, a0, 633470; CHECK-ALIGNED-RV64-NEXT:    xori a0, a0, 13471; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3472; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 163473; CHECK-ALIGNED-RV64-NEXT:    ret3474;3475; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_ge_zero:3476; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry3477; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -163478; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3479; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 43480; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp3481; CHECK-ALIGNED-RV32-ZBB-NEXT:    srli a0, a0, 313482; CHECK-ALIGNED-RV32-ZBB-NEXT:    xori a0, a0, 13483; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3484; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 163485; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret3486;3487; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_ge_zero:3488; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry3489; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -163490; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3491; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 43492; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp3493; CHECK-ALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 633494; CHECK-ALIGNED-RV64-ZBB-NEXT:    xori a0, a0, 13495; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3496; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 163497; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret3498;3499; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_ge_zero:3500; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry3501; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -163502; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3503; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 43504; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp3505; CHECK-ALIGNED-RV32-ZBKB-NEXT:    srli a0, a0, 313506; CHECK-ALIGNED-RV32-ZBKB-NEXT:    xori a0, a0, 13507; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3508; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 163509; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret3510;3511; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_ge_zero:3512; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry3513; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -163514; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3515; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 43516; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp3517; CHECK-ALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 633518; CHECK-ALIGNED-RV64-ZBKB-NEXT:    xori a0, a0, 13519; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3520; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163521; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3522;3523; CHECK-ALIGNED-RV32-V-LABEL: bcmp_ge_zero:3524; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3525; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163526; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3527; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 43528; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp3529; CHECK-ALIGNED-RV32-V-NEXT:    srli a0, a0, 313530; CHECK-ALIGNED-RV32-V-NEXT:    xori a0, a0, 13531; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3532; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163533; CHECK-ALIGNED-RV32-V-NEXT:    ret3534;3535; CHECK-ALIGNED-RV64-V-LABEL: bcmp_ge_zero:3536; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3537; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163538; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3539; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 43540; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp3541; CHECK-ALIGNED-RV64-V-NEXT:    srli a0, a0, 633542; CHECK-ALIGNED-RV64-V-NEXT:    xori a0, a0, 13543; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3544; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163545; CHECK-ALIGNED-RV64-V-NEXT:    ret3546;3547; CHECK-UNALIGNED-LABEL: bcmp_ge_zero:3548; CHECK-UNALIGNED:       # %bb.0: # %entry3549; CHECK-UNALIGNED-NEXT:    li a0, 13550; CHECK-UNALIGNED-NEXT:    ret3551entry:3552  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4)3553  %ret = icmp sgt i32 %bcmp, -13554  ret i1 %ret3555}3556 3557define i32 @memcmp_size_0(ptr %s1, ptr %s2) nounwind {3558; CHECK-LABEL: memcmp_size_0:3559; CHECK:       # %bb.0: # %entry3560; CHECK-NEXT:    li a0, 03561; CHECK-NEXT:    ret3562entry:3563  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 0)3564  ret i32 %memcmp3565}3566 3567define i32 @memcmp_size_1(ptr %s1, ptr %s2) nounwind {3568; CHECK-ALIGNED-RV32-LABEL: memcmp_size_1:3569; CHECK-ALIGNED-RV32:       # %bb.0: # %entry3570; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -163571; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3572; CHECK-ALIGNED-RV32-NEXT:    li a2, 13573; CHECK-ALIGNED-RV32-NEXT:    call memcmp3574; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3575; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 163576; CHECK-ALIGNED-RV32-NEXT:    ret3577;3578; CHECK-ALIGNED-RV64-LABEL: memcmp_size_1:3579; CHECK-ALIGNED-RV64:       # %bb.0: # %entry3580; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -163581; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3582; CHECK-ALIGNED-RV64-NEXT:    li a2, 13583; CHECK-ALIGNED-RV64-NEXT:    call memcmp3584; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3585; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 163586; CHECK-ALIGNED-RV64-NEXT:    ret3587;3588; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_1:3589; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry3590; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -163591; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3592; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 13593; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp3594; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3595; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 163596; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret3597;3598; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_1:3599; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry3600; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -163601; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3602; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 13603; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp3604; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3605; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 163606; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret3607;3608; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_1:3609; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry3610; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -163611; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3612; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 13613; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp3614; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3615; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 163616; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret3617;3618; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_1:3619; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry3620; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -163621; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3622; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 13623; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp3624; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3625; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163626; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3627;3628; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_1:3629; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3630; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163631; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3632; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 13633; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp3634; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3635; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163636; CHECK-ALIGNED-RV32-V-NEXT:    ret3637;3638; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_1:3639; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3640; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163641; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3642; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 13643; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp3644; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3645; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163646; CHECK-ALIGNED-RV64-V-NEXT:    ret3647;3648; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_1:3649; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry3650; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -163651; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3652; CHECK-UNALIGNED-RV32-NEXT:    li a2, 13653; CHECK-UNALIGNED-RV32-NEXT:    call memcmp3654; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3655; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 163656; CHECK-UNALIGNED-RV32-NEXT:    ret3657;3658; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_1:3659; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry3660; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -163661; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3662; CHECK-UNALIGNED-RV64-NEXT:    li a2, 13663; CHECK-UNALIGNED-RV64-NEXT:    call memcmp3664; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3665; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 163666; CHECK-UNALIGNED-RV64-NEXT:    ret3667;3668; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_1:3669; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry3670; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a0, 0(a0)3671; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a1, 0(a1)3672; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sub a0, a0, a13673; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret3674;3675; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_1:3676; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry3677; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a0, 0(a0)3678; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a1, 0(a1)3679; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a13680; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret3681;3682; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_1:3683; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry3684; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a0, 0(a0)3685; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a1, 0(a1)3686; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sub a0, a0, a13687; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret3688;3689; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_1:3690; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry3691; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a0, 0(a0)3692; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a1, 0(a1)3693; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a13694; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret3695;3696; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_1:3697; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry3698; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -163699; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3700; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 13701; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp3702; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3703; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 163704; CHECK-UNALIGNED-RV32-V-NEXT:    ret3705;3706; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_1:3707; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry3708; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -163709; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3710; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 13711; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp3712; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3713; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 163714; CHECK-UNALIGNED-RV64-V-NEXT:    ret3715entry:3716  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 1)3717  ret i32 %memcmp3718}3719 3720define i32 @memcmp_size_2(ptr %s1, ptr %s2) nounwind {3721; CHECK-ALIGNED-RV32-LABEL: memcmp_size_2:3722; CHECK-ALIGNED-RV32:       # %bb.0: # %entry3723; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -163724; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3725; CHECK-ALIGNED-RV32-NEXT:    li a2, 23726; CHECK-ALIGNED-RV32-NEXT:    call memcmp3727; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3728; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 163729; CHECK-ALIGNED-RV32-NEXT:    ret3730;3731; CHECK-ALIGNED-RV64-LABEL: memcmp_size_2:3732; CHECK-ALIGNED-RV64:       # %bb.0: # %entry3733; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -163734; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3735; CHECK-ALIGNED-RV64-NEXT:    li a2, 23736; CHECK-ALIGNED-RV64-NEXT:    call memcmp3737; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3738; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 163739; CHECK-ALIGNED-RV64-NEXT:    ret3740;3741; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_2:3742; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry3743; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -163744; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3745; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 23746; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp3747; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3748; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 163749; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret3750;3751; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_2:3752; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry3753; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -163754; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3755; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 23756; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp3757; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3758; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 163759; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret3760;3761; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_2:3762; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry3763; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -163764; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3765; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 23766; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp3767; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3768; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 163769; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret3770;3771; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_2:3772; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry3773; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -163774; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3775; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 23776; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp3777; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3778; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163779; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3780;3781; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_2:3782; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3783; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163784; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3785; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 23786; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp3787; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3788; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163789; CHECK-ALIGNED-RV32-V-NEXT:    ret3790;3791; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_2:3792; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3793; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163794; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3795; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 23796; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp3797; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3798; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163799; CHECK-ALIGNED-RV64-V-NEXT:    ret3800;3801; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_2:3802; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry3803; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -163804; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3805; CHECK-UNALIGNED-RV32-NEXT:    li a2, 23806; CHECK-UNALIGNED-RV32-NEXT:    call memcmp3807; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3808; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 163809; CHECK-UNALIGNED-RV32-NEXT:    ret3810;3811; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_2:3812; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry3813; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -163814; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3815; CHECK-UNALIGNED-RV64-NEXT:    li a2, 23816; CHECK-UNALIGNED-RV64-NEXT:    call memcmp3817; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3818; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 163819; CHECK-UNALIGNED-RV64-NEXT:    ret3820;3821; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_2:3822; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry3823; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lh a0, 0(a0)3824; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lh a1, 0(a1)3825; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a0, a03826; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a1, a13827; CHECK-UNALIGNED-RV32-ZBB-NEXT:    srli a0, a0, 163828; CHECK-UNALIGNED-RV32-ZBB-NEXT:    srli a1, a1, 163829; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sub a0, a0, a13830; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret3831;3832; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_2:3833; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry3834; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lh a0, 0(a0)3835; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lh a1, 0(a1)3836; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a03837; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a13838; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 483839; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a1, a1, 483840; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a13841; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret3842;3843; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_2:3844; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry3845; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lh a0, 0(a0)3846; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lh a1, 0(a1)3847; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a0, a03848; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a1, a13849; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    srli a0, a0, 163850; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    srli a1, a1, 163851; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sub a0, a0, a13852; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret3853;3854; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_2:3855; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry3856; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lh a0, 0(a0)3857; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lh a1, 0(a1)3858; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a03859; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a13860; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 483861; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a1, a1, 483862; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a13863; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret3864;3865; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_2:3866; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry3867; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -163868; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3869; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 23870; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp3871; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3872; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 163873; CHECK-UNALIGNED-RV32-V-NEXT:    ret3874;3875; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_2:3876; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry3877; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -163878; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3879; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 23880; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp3881; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3882; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 163883; CHECK-UNALIGNED-RV64-V-NEXT:    ret3884entry:3885  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 2)3886  ret i32 %memcmp3887}3888 3889define i32 @memcmp_size_3(ptr %s1, ptr %s2) nounwind {3890; CHECK-ALIGNED-RV32-LABEL: memcmp_size_3:3891; CHECK-ALIGNED-RV32:       # %bb.0: # %entry3892; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -163893; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3894; CHECK-ALIGNED-RV32-NEXT:    li a2, 33895; CHECK-ALIGNED-RV32-NEXT:    call memcmp3896; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3897; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 163898; CHECK-ALIGNED-RV32-NEXT:    ret3899;3900; CHECK-ALIGNED-RV64-LABEL: memcmp_size_3:3901; CHECK-ALIGNED-RV64:       # %bb.0: # %entry3902; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -163903; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3904; CHECK-ALIGNED-RV64-NEXT:    li a2, 33905; CHECK-ALIGNED-RV64-NEXT:    call memcmp3906; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3907; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 163908; CHECK-ALIGNED-RV64-NEXT:    ret3909;3910; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_3:3911; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry3912; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -163913; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3914; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 33915; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp3916; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3917; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 163918; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret3919;3920; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_3:3921; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry3922; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -163923; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3924; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 33925; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp3926; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3927; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 163928; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret3929;3930; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_3:3931; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry3932; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -163933; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3934; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 33935; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp3936; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3937; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 163938; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret3939;3940; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_3:3941; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry3942; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -163943; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3944; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 33945; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp3946; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3947; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163948; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3949;3950; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_3:3951; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3952; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163953; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3954; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 33955; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp3956; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3957; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163958; CHECK-ALIGNED-RV32-V-NEXT:    ret3959;3960; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_3:3961; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3962; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163963; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3964; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 33965; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp3966; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3967; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163968; CHECK-ALIGNED-RV64-V-NEXT:    ret3969;3970; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_3:3971; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry3972; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -163973; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3974; CHECK-UNALIGNED-RV32-NEXT:    li a2, 33975; CHECK-UNALIGNED-RV32-NEXT:    call memcmp3976; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3977; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 163978; CHECK-UNALIGNED-RV32-NEXT:    ret3979;3980; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_3:3981; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry3982; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -163983; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3984; CHECK-UNALIGNED-RV64-NEXT:    li a2, 33985; CHECK-UNALIGNED-RV64-NEXT:    call memcmp3986; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3987; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 163988; CHECK-UNALIGNED-RV64-NEXT:    ret3989;3990; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_3:3991; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry3992; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a2, 2(a0)3993; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lhu a0, 0(a0)3994; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a3, 2(a1)3995; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lhu a1, 0(a1)3996; CHECK-UNALIGNED-RV32-ZBB-NEXT:    slli a2, a2, 163997; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a0, a23998; CHECK-UNALIGNED-RV32-ZBB-NEXT:    slli a3, a3, 163999; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a1, a1, a34000; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a0, a04001; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a1, a14002; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a2, a0, a14003; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a1, a04004; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sub a0, a0, a24005; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4006;4007; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_3:4008; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry4009; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a2, 2(a0)4010; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lhu a0, 0(a0)4011; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a3, 2(a1)4012; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lhu a1, 0(a1)4013; CHECK-UNALIGNED-RV64-ZBB-NEXT:    slli a2, a2, 164014; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a0, a24015; CHECK-UNALIGNED-RV64-ZBB-NEXT:    slli a3, a3, 164016; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a1, a1, a34017; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a04018; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a14019; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 324020; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a1, a1, 324021; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a2, a0, a14022; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a04023; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a24024; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4025;4026; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_3:4027; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry4028; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lhu a2, 0(a0)4029; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a0, 2(a0)4030; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lhu a3, 0(a1)4031; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a1, 2(a1)4032; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    pack a0, a2, a04033; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    pack a1, a3, a14034; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a0, a04035; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a1, a14036; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a2, a0, a14037; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a1, a04038; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sub a0, a0, a24039; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4040;4041; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_3:4042; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry4043; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a2, 2(a0)4044; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lhu a0, 0(a0)4045; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a3, 2(a1)4046; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lhu a1, 0(a1)4047; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    slli a2, a2, 164048; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a0, a24049; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    slli a3, a3, 164050; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a1, a1, a34051; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a04052; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a14053; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 324054; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a1, a1, 324055; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a2, a0, a14056; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a04057; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a24058; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4059;4060; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_3:4061; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry4062; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -164063; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4064; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 34065; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp4066; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4067; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 164068; CHECK-UNALIGNED-RV32-V-NEXT:    ret4069;4070; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_3:4071; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry4072; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -164073; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4074; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 34075; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp4076; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4077; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 164078; CHECK-UNALIGNED-RV64-V-NEXT:    ret4079entry:4080  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 3)4081  ret i32 %memcmp4082}4083 4084define i32 @memcmp_size_4(ptr %s1, ptr %s2) nounwind {4085; CHECK-ALIGNED-RV32-LABEL: memcmp_size_4:4086; CHECK-ALIGNED-RV32:       # %bb.0: # %entry4087; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -164088; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4089; CHECK-ALIGNED-RV32-NEXT:    li a2, 44090; CHECK-ALIGNED-RV32-NEXT:    call memcmp4091; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4092; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 164093; CHECK-ALIGNED-RV32-NEXT:    ret4094;4095; CHECK-ALIGNED-RV64-LABEL: memcmp_size_4:4096; CHECK-ALIGNED-RV64:       # %bb.0: # %entry4097; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -164098; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4099; CHECK-ALIGNED-RV64-NEXT:    li a2, 44100; CHECK-ALIGNED-RV64-NEXT:    call memcmp4101; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4102; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 164103; CHECK-ALIGNED-RV64-NEXT:    ret4104;4105; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_4:4106; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry4107; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -164108; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4109; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 44110; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp4111; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4112; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 164113; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret4114;4115; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_4:4116; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry4117; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -164118; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4119; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 44120; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp4121; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4122; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 164123; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret4124;4125; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_4:4126; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry4127; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -164128; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4129; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 44130; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp4131; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4132; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 164133; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret4134;4135; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_4:4136; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry4137; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -164138; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4139; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 44140; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp4141; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4142; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 164143; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret4144;4145; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_4:4146; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry4147; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -164148; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4149; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 44150; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp4151; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4152; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 164153; CHECK-ALIGNED-RV32-V-NEXT:    ret4154;4155; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_4:4156; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry4157; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -164158; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4159; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 44160; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp4161; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4162; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 164163; CHECK-ALIGNED-RV64-V-NEXT:    ret4164;4165; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_4:4166; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry4167; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -164168; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4169; CHECK-UNALIGNED-RV32-NEXT:    li a2, 44170; CHECK-UNALIGNED-RV32-NEXT:    call memcmp4171; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4172; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 164173; CHECK-UNALIGNED-RV32-NEXT:    ret4174;4175; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_4:4176; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry4177; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -164178; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4179; CHECK-UNALIGNED-RV64-NEXT:    li a2, 44180; CHECK-UNALIGNED-RV64-NEXT:    call memcmp4181; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4182; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 164183; CHECK-UNALIGNED-RV64-NEXT:    ret4184;4185; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_4:4186; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry4187; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 0(a0)4188; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 0(a1)4189; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a0, a04190; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a1, a14191; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a2, a0, a14192; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a1, a04193; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sub a0, a0, a24194; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4195;4196; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_4:4197; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry4198; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a0, 0(a0)4199; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a1, 0(a1)4200; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a04201; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a14202; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 324203; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a1, a1, 324204; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a2, a0, a14205; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a04206; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a24207; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4208;4209; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_4:4210; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry4211; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 0(a0)4212; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 0(a1)4213; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a0, a04214; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a1, a14215; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a2, a0, a14216; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a1, a04217; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sub a0, a0, a24218; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4219;4220; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_4:4221; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry4222; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a0, 0(a0)4223; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a1, 0(a1)4224; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a04225; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a14226; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 324227; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a1, a1, 324228; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a2, a0, a14229; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a04230; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a24231; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4232;4233; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_4:4234; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry4235; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -164236; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4237; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 44238; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp4239; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4240; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 164241; CHECK-UNALIGNED-RV32-V-NEXT:    ret4242;4243; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_4:4244; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry4245; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -164246; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4247; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 44248; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp4249; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4250; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 164251; CHECK-UNALIGNED-RV64-V-NEXT:    ret4252entry:4253  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4)4254  ret i32 %memcmp4255}4256 4257define i32 @memcmp_size_5(ptr %s1, ptr %s2) nounwind {4258; CHECK-ALIGNED-RV32-LABEL: memcmp_size_5:4259; CHECK-ALIGNED-RV32:       # %bb.0: # %entry4260; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -164261; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4262; CHECK-ALIGNED-RV32-NEXT:    li a2, 54263; CHECK-ALIGNED-RV32-NEXT:    call memcmp4264; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4265; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 164266; CHECK-ALIGNED-RV32-NEXT:    ret4267;4268; CHECK-ALIGNED-RV64-LABEL: memcmp_size_5:4269; CHECK-ALIGNED-RV64:       # %bb.0: # %entry4270; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -164271; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4272; CHECK-ALIGNED-RV64-NEXT:    li a2, 54273; CHECK-ALIGNED-RV64-NEXT:    call memcmp4274; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4275; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 164276; CHECK-ALIGNED-RV64-NEXT:    ret4277;4278; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_5:4279; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry4280; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -164281; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4282; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 54283; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp4284; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4285; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 164286; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret4287;4288; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_5:4289; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry4290; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -164291; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4292; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 54293; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp4294; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4295; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 164296; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret4297;4298; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_5:4299; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry4300; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -164301; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4302; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 54303; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp4304; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4305; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 164306; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret4307;4308; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_5:4309; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry4310; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -164311; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4312; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 54313; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp4314; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4315; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 164316; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret4317;4318; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_5:4319; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry4320; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -164321; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4322; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 54323; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp4324; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4325; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 164326; CHECK-ALIGNED-RV32-V-NEXT:    ret4327;4328; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_5:4329; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry4330; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -164331; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4332; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 54333; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp4334; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4335; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 164336; CHECK-ALIGNED-RV64-V-NEXT:    ret4337;4338; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_5:4339; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry4340; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -164341; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4342; CHECK-UNALIGNED-RV32-NEXT:    li a2, 54343; CHECK-UNALIGNED-RV32-NEXT:    call memcmp4344; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4345; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 164346; CHECK-UNALIGNED-RV32-NEXT:    ret4347;4348; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_5:4349; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry4350; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -164351; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4352; CHECK-UNALIGNED-RV64-NEXT:    li a2, 54353; CHECK-UNALIGNED-RV64-NEXT:    call memcmp4354; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4355; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 164356; CHECK-UNALIGNED-RV64-NEXT:    ret4357;4358; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_5:4359; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry4360; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)4361; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)4362; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a24363; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a34364; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB28_24365; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb14366; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a0, 4(a0)4367; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a1, 4(a1)4368; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sub a0, a0, a14369; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4370; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB28_2: # %res_block4371; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a34372; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a04373; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 14374; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4375;4376; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_5:4377; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry4378; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a2, 4(a0)4379; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lwu a0, 0(a0)4380; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a3, 4(a1)4381; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lwu a1, 0(a1)4382; CHECK-UNALIGNED-RV64-ZBB-NEXT:    slli a2, a2, 324383; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a0, a24384; CHECK-UNALIGNED-RV64-ZBB-NEXT:    slli a3, a3, 324385; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a1, a1, a34386; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a04387; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a14388; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a2, a0, a14389; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a04390; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a24391; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4392;4393; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_5:4394; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry4395; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)4396; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)4397; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a24398; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a34399; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB28_24400; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb14401; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a0, 4(a0)4402; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a1, 4(a1)4403; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sub a0, a0, a14404; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4405; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB28_2: # %res_block4406; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a34407; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a04408; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 14409; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4410;4411; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_5:4412; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry4413; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a2, 0(a0)4414; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a0, 4(a0)4415; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a3, 0(a1)4416; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a1, 4(a1)4417; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    pack a0, a2, a04418; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    pack a1, a3, a14419; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a04420; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a14421; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a2, a0, a14422; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a04423; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a24424; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4425;4426; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_5:4427; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry4428; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -164429; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4430; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 54431; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp4432; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4433; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 164434; CHECK-UNALIGNED-RV32-V-NEXT:    ret4435;4436; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_5:4437; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry4438; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -164439; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4440; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 54441; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp4442; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4443; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 164444; CHECK-UNALIGNED-RV64-V-NEXT:    ret4445entry:4446  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 5)4447  ret i32 %memcmp4448}4449 4450define i32 @memcmp_size_6(ptr %s1, ptr %s2) nounwind {4451; CHECK-ALIGNED-RV32-LABEL: memcmp_size_6:4452; CHECK-ALIGNED-RV32:       # %bb.0: # %entry4453; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -164454; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4455; CHECK-ALIGNED-RV32-NEXT:    li a2, 64456; CHECK-ALIGNED-RV32-NEXT:    call memcmp4457; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4458; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 164459; CHECK-ALIGNED-RV32-NEXT:    ret4460;4461; CHECK-ALIGNED-RV64-LABEL: memcmp_size_6:4462; CHECK-ALIGNED-RV64:       # %bb.0: # %entry4463; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -164464; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4465; CHECK-ALIGNED-RV64-NEXT:    li a2, 64466; CHECK-ALIGNED-RV64-NEXT:    call memcmp4467; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4468; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 164469; CHECK-ALIGNED-RV64-NEXT:    ret4470;4471; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_6:4472; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry4473; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -164474; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4475; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 64476; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp4477; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4478; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 164479; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret4480;4481; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_6:4482; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry4483; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -164484; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4485; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 64486; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp4487; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4488; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 164489; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret4490;4491; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_6:4492; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry4493; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -164494; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4495; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 64496; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp4497; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4498; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 164499; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret4500;4501; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_6:4502; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry4503; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -164504; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4505; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 64506; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp4507; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4508; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 164509; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret4510;4511; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_6:4512; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry4513; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -164514; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4515; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 64516; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp4517; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4518; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 164519; CHECK-ALIGNED-RV32-V-NEXT:    ret4520;4521; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_6:4522; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry4523; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -164524; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4525; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 64526; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp4527; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4528; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 164529; CHECK-ALIGNED-RV64-V-NEXT:    ret4530;4531; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_6:4532; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry4533; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -164534; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4535; CHECK-UNALIGNED-RV32-NEXT:    li a2, 64536; CHECK-UNALIGNED-RV32-NEXT:    call memcmp4537; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4538; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 164539; CHECK-UNALIGNED-RV32-NEXT:    ret4540;4541; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_6:4542; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry4543; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -164544; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4545; CHECK-UNALIGNED-RV64-NEXT:    li a2, 64546; CHECK-UNALIGNED-RV64-NEXT:    call memcmp4547; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4548; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 164549; CHECK-UNALIGNED-RV64-NEXT:    ret4550;4551; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_6:4552; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry4553; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)4554; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)4555; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a24556; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a34557; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB29_34558; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb14559; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lh a0, 4(a0)4560; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lh a1, 4(a1)4561; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a04562; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a14563; CHECK-UNALIGNED-RV32-ZBB-NEXT:    srli a2, a2, 164564; CHECK-UNALIGNED-RV32-ZBB-NEXT:    srli a3, a3, 164565; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB29_34566; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.2:4567; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a0, 04568; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4569; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB29_3: # %res_block4570; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a34571; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a04572; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 14573; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4574;4575; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_6:4576; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry4577; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lhu a2, 4(a0)4578; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lwu a0, 0(a0)4579; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lhu a3, 4(a1)4580; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lwu a1, 0(a1)4581; CHECK-UNALIGNED-RV64-ZBB-NEXT:    slli a2, a2, 324582; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a0, a24583; CHECK-UNALIGNED-RV64-ZBB-NEXT:    slli a3, a3, 324584; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a1, a1, a34585; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a04586; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a14587; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a2, a0, a14588; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a04589; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a24590; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4591;4592; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_6:4593; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry4594; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)4595; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)4596; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a24597; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a34598; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB29_34599; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb14600; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lh a0, 4(a0)4601; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lh a1, 4(a1)4602; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a04603; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a14604; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    srli a2, a2, 164605; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    srli a3, a3, 164606; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB29_34607; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.2:4608; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a0, 04609; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4610; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB29_3: # %res_block4611; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a34612; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a04613; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 14614; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4615;4616; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_6:4617; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry4618; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a2, 0(a0)4619; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lhu a0, 4(a0)4620; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a3, 0(a1)4621; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lhu a1, 4(a1)4622; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    pack a0, a2, a04623; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    pack a1, a3, a14624; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a04625; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a14626; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a2, a0, a14627; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a04628; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a24629; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4630;4631; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_6:4632; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry4633; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -164634; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4635; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 64636; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp4637; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4638; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 164639; CHECK-UNALIGNED-RV32-V-NEXT:    ret4640;4641; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_6:4642; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry4643; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -164644; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4645; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 64646; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp4647; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4648; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 164649; CHECK-UNALIGNED-RV64-V-NEXT:    ret4650entry:4651  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 6)4652  ret i32 %memcmp4653}4654 4655define i32 @memcmp_size_7(ptr %s1, ptr %s2) nounwind {4656; CHECK-ALIGNED-RV32-LABEL: memcmp_size_7:4657; CHECK-ALIGNED-RV32:       # %bb.0: # %entry4658; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -164659; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4660; CHECK-ALIGNED-RV32-NEXT:    li a2, 74661; CHECK-ALIGNED-RV32-NEXT:    call memcmp4662; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4663; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 164664; CHECK-ALIGNED-RV32-NEXT:    ret4665;4666; CHECK-ALIGNED-RV64-LABEL: memcmp_size_7:4667; CHECK-ALIGNED-RV64:       # %bb.0: # %entry4668; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -164669; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4670; CHECK-ALIGNED-RV64-NEXT:    li a2, 74671; CHECK-ALIGNED-RV64-NEXT:    call memcmp4672; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4673; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 164674; CHECK-ALIGNED-RV64-NEXT:    ret4675;4676; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_7:4677; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry4678; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -164679; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4680; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 74681; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp4682; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4683; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 164684; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret4685;4686; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_7:4687; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry4688; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -164689; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4690; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 74691; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp4692; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4693; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 164694; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret4695;4696; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_7:4697; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry4698; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -164699; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4700; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 74701; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp4702; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4703; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 164704; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret4705;4706; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_7:4707; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry4708; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -164709; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4710; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 74711; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp4712; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4713; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 164714; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret4715;4716; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_7:4717; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry4718; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -164719; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4720; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 74721; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp4722; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4723; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 164724; CHECK-ALIGNED-RV32-V-NEXT:    ret4725;4726; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_7:4727; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry4728; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -164729; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4730; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 74731; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp4732; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4733; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 164734; CHECK-ALIGNED-RV64-V-NEXT:    ret4735;4736; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_7:4737; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry4738; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -164739; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4740; CHECK-UNALIGNED-RV32-NEXT:    li a2, 74741; CHECK-UNALIGNED-RV32-NEXT:    call memcmp4742; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4743; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 164744; CHECK-UNALIGNED-RV32-NEXT:    ret4745;4746; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_7:4747; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry4748; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -164749; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4750; CHECK-UNALIGNED-RV64-NEXT:    li a2, 74751; CHECK-UNALIGNED-RV64-NEXT:    call memcmp4752; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4753; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 164754; CHECK-UNALIGNED-RV64-NEXT:    ret4755;4756; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_7:4757; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry4758; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)4759; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)4760; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a24761; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a34762; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB30_34763; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb14764; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 3(a0)4765; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 3(a1)4766; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a04767; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a14768; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB30_34769; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.2:4770; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a0, 04771; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4772; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB30_3: # %res_block4773; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a34774; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a04775; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 14776; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4777;4778; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_7:4779; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry4780; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a2, 0(a0)4781; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a3, 0(a1)4782; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a24783; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a34784; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a2, a2, 324785; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a3, a3, 324786; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB30_34787; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.1: # %loadbb14788; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a0, 3(a0)4789; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a1, 3(a1)4790; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a04791; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a14792; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a2, a2, 324793; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a3, a3, 324794; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB30_34795; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.2:4796; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a0, 04797; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4798; CHECK-UNALIGNED-RV64-ZBB-NEXT:  .LBB30_3: # %res_block4799; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a2, a34800; CHECK-UNALIGNED-RV64-ZBB-NEXT:    neg a0, a04801; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ori a0, a0, 14802; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4803;4804; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_7:4805; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry4806; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)4807; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)4808; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a24809; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a34810; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB30_34811; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb14812; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 3(a0)4813; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 3(a1)4814; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a04815; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a14816; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB30_34817; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.2:4818; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a0, 04819; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4820; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB30_3: # %res_block4821; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a34822; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a04823; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 14824; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4825;4826; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_7:4827; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry4828; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a2, 0(a0)4829; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a3, 0(a1)4830; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a24831; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a34832; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a2, a2, 324833; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a3, a3, 324834; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB30_34835; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.1: # %loadbb14836; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a0, 3(a0)4837; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a1, 3(a1)4838; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a04839; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a14840; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a2, a2, 324841; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a3, a3, 324842; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB30_34843; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.2:4844; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a0, 04845; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4846; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  .LBB30_3: # %res_block4847; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a2, a34848; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    neg a0, a04849; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ori a0, a0, 14850; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4851;4852; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_7:4853; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry4854; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -164855; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4856; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 74857; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp4858; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4859; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 164860; CHECK-UNALIGNED-RV32-V-NEXT:    ret4861;4862; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_7:4863; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry4864; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -164865; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4866; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 74867; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp4868; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4869; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 164870; CHECK-UNALIGNED-RV64-V-NEXT:    ret4871entry:4872  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 7)4873  ret i32 %memcmp4874}4875 4876define i32 @memcmp_size_8(ptr %s1, ptr %s2) nounwind {4877; CHECK-ALIGNED-RV32-LABEL: memcmp_size_8:4878; CHECK-ALIGNED-RV32:       # %bb.0: # %entry4879; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -164880; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4881; CHECK-ALIGNED-RV32-NEXT:    li a2, 84882; CHECK-ALIGNED-RV32-NEXT:    call memcmp4883; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4884; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 164885; CHECK-ALIGNED-RV32-NEXT:    ret4886;4887; CHECK-ALIGNED-RV64-LABEL: memcmp_size_8:4888; CHECK-ALIGNED-RV64:       # %bb.0: # %entry4889; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -164890; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4891; CHECK-ALIGNED-RV64-NEXT:    li a2, 84892; CHECK-ALIGNED-RV64-NEXT:    call memcmp4893; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4894; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 164895; CHECK-ALIGNED-RV64-NEXT:    ret4896;4897; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_8:4898; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry4899; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -164900; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4901; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 84902; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp4903; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4904; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 164905; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret4906;4907; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_8:4908; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry4909; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -164910; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4911; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 84912; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp4913; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4914; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 164915; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret4916;4917; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_8:4918; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry4919; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -164920; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4921; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 84922; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp4923; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4924; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 164925; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret4926;4927; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_8:4928; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry4929; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -164930; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4931; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 84932; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp4933; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4934; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 164935; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret4936;4937; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_8:4938; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry4939; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -164940; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4941; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 84942; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp4943; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4944; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 164945; CHECK-ALIGNED-RV32-V-NEXT:    ret4946;4947; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_8:4948; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry4949; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -164950; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4951; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 84952; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp4953; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4954; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 164955; CHECK-ALIGNED-RV64-V-NEXT:    ret4956;4957; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_8:4958; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry4959; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -164960; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4961; CHECK-UNALIGNED-RV32-NEXT:    li a2, 84962; CHECK-UNALIGNED-RV32-NEXT:    call memcmp4963; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4964; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 164965; CHECK-UNALIGNED-RV32-NEXT:    ret4966;4967; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_8:4968; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry4969; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -164970; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4971; CHECK-UNALIGNED-RV64-NEXT:    li a2, 84972; CHECK-UNALIGNED-RV64-NEXT:    call memcmp4973; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4974; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 164975; CHECK-UNALIGNED-RV64-NEXT:    ret4976;4977; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_8:4978; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry4979; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)4980; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)4981; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a24982; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a34983; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB31_34984; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb14985; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 4(a0)4986; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 4(a1)4987; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a04988; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a14989; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB31_34990; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.2:4991; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a0, 04992; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4993; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB31_3: # %res_block4994; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a34995; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a04996; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 14997; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4998;4999; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_8:5000; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry5001; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 0(a0)5002; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 0(a1)5003; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a05004; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a15005; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a2, a0, a15006; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a05007; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a25008; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5009;5010; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_8:5011; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry5012; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)5013; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)5014; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25015; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35016; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB31_35017; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb15018; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 4(a0)5019; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 4(a1)5020; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a05021; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a15022; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB31_35023; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.2:5024; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a0, 05025; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret5026; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB31_3: # %res_block5027; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a35028; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a05029; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 15030; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret5031;5032; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_8:5033; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry5034; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 0(a0)5035; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 0(a1)5036; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a05037; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a15038; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a2, a0, a15039; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a05040; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a25041; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5042;5043; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_8:5044; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry5045; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -165046; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5047; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 85048; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp5049; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5050; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 165051; CHECK-UNALIGNED-RV32-V-NEXT:    ret5052;5053; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_8:5054; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry5055; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -165056; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5057; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 85058; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp5059; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5060; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 165061; CHECK-UNALIGNED-RV64-V-NEXT:    ret5062entry:5063  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 8)5064  ret i32 %memcmp5065}5066 5067define i32 @memcmp_size_15(ptr %s1, ptr %s2) nounwind {5068; CHECK-ALIGNED-RV32-LABEL: memcmp_size_15:5069; CHECK-ALIGNED-RV32:       # %bb.0: # %entry5070; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -165071; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5072; CHECK-ALIGNED-RV32-NEXT:    li a2, 155073; CHECK-ALIGNED-RV32-NEXT:    call memcmp5074; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5075; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 165076; CHECK-ALIGNED-RV32-NEXT:    ret5077;5078; CHECK-ALIGNED-RV64-LABEL: memcmp_size_15:5079; CHECK-ALIGNED-RV64:       # %bb.0: # %entry5080; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -165081; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5082; CHECK-ALIGNED-RV64-NEXT:    li a2, 155083; CHECK-ALIGNED-RV64-NEXT:    call memcmp5084; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5085; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 165086; CHECK-ALIGNED-RV64-NEXT:    ret5087;5088; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_15:5089; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry5090; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -165091; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5092; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 155093; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp5094; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5095; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 165096; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret5097;5098; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_15:5099; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry5100; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -165101; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5102; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 155103; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp5104; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5105; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 165106; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret5107;5108; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_15:5109; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry5110; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -165111; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5112; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 155113; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp5114; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5115; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 165116; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret5117;5118; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_15:5119; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry5120; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -165121; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5122; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 155123; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp5124; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5125; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 165126; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret5127;5128; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_15:5129; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry5130; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -165131; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5132; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 155133; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp5134; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5135; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 165136; CHECK-ALIGNED-RV32-V-NEXT:    ret5137;5138; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_15:5139; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry5140; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -165141; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5142; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 155143; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp5144; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5145; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 165146; CHECK-ALIGNED-RV64-V-NEXT:    ret5147;5148; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_15:5149; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry5150; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -165151; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5152; CHECK-UNALIGNED-RV32-NEXT:    li a2, 155153; CHECK-UNALIGNED-RV32-NEXT:    call memcmp5154; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5155; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 165156; CHECK-UNALIGNED-RV32-NEXT:    ret5157;5158; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_15:5159; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry5160; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -165161; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5162; CHECK-UNALIGNED-RV64-NEXT:    li a2, 155163; CHECK-UNALIGNED-RV64-NEXT:    call memcmp5164; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5165; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 165166; CHECK-UNALIGNED-RV64-NEXT:    ret5167;5168; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_15:5169; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry5170; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)5171; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)5172; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25173; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35174; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB32_55175; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb15176; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 4(a0)5177; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 4(a1)5178; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25179; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35180; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB32_55181; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.2: # %loadbb25182; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 8(a0)5183; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 8(a1)5184; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25185; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35186; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB32_55187; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.3: # %loadbb35188; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 11(a0)5189; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 11(a1)5190; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a05191; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a15192; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB32_55193; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.4:5194; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a0, 05195; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret5196; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB32_5: # %res_block5197; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a35198; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a05199; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 15200; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret5201;5202; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_15:5203; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry5204; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)5205; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)5206; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a25207; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a35208; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB32_35209; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.1: # %loadbb15210; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 7(a0)5211; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 7(a1)5212; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a05213; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a15214; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB32_35215; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.2:5216; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a0, 05217; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5218; CHECK-UNALIGNED-RV64-ZBB-NEXT:  .LBB32_3: # %res_block5219; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a2, a35220; CHECK-UNALIGNED-RV64-ZBB-NEXT:    neg a0, a05221; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ori a0, a0, 15222; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5223;5224; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_15:5225; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry5226; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)5227; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)5228; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25229; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35230; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB32_55231; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb15232; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 4(a0)5233; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 4(a1)5234; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25235; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35236; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB32_55237; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.2: # %loadbb25238; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 8(a0)5239; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 8(a1)5240; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25241; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35242; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB32_55243; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.3: # %loadbb35244; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 11(a0)5245; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 11(a1)5246; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a05247; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a15248; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB32_55249; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.4:5250; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a0, 05251; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret5252; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB32_5: # %res_block5253; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a35254; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a05255; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 15256; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret5257;5258; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_15:5259; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry5260; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)5261; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)5262; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a25263; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a35264; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB32_35265; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.1: # %loadbb15266; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 7(a0)5267; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 7(a1)5268; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a05269; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a15270; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB32_35271; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.2:5272; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a0, 05273; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5274; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  .LBB32_3: # %res_block5275; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a2, a35276; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    neg a0, a05277; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ori a0, a0, 15278; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5279;5280; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_15:5281; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry5282; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -165283; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5284; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 155285; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp5286; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5287; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 165288; CHECK-UNALIGNED-RV32-V-NEXT:    ret5289;5290; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_15:5291; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry5292; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -165293; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5294; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 155295; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp5296; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5297; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 165298; CHECK-UNALIGNED-RV64-V-NEXT:    ret5299entry:5300  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 15)5301  ret i32 %memcmp5302}5303 5304define i32 @memcmp_size_16(ptr %s1, ptr %s2) nounwind {5305; CHECK-ALIGNED-RV32-LABEL: memcmp_size_16:5306; CHECK-ALIGNED-RV32:       # %bb.0: # %entry5307; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -165308; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5309; CHECK-ALIGNED-RV32-NEXT:    li a2, 165310; CHECK-ALIGNED-RV32-NEXT:    call memcmp5311; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5312; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 165313; CHECK-ALIGNED-RV32-NEXT:    ret5314;5315; CHECK-ALIGNED-RV64-LABEL: memcmp_size_16:5316; CHECK-ALIGNED-RV64:       # %bb.0: # %entry5317; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -165318; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5319; CHECK-ALIGNED-RV64-NEXT:    li a2, 165320; CHECK-ALIGNED-RV64-NEXT:    call memcmp5321; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5322; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 165323; CHECK-ALIGNED-RV64-NEXT:    ret5324;5325; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_16:5326; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry5327; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -165328; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5329; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 165330; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp5331; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5332; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 165333; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret5334;5335; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_16:5336; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry5337; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -165338; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5339; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 165340; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp5341; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5342; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 165343; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret5344;5345; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_16:5346; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry5347; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -165348; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5349; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 165350; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp5351; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5352; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 165353; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret5354;5355; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_16:5356; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry5357; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -165358; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5359; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 165360; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp5361; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5362; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 165363; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret5364;5365; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_16:5366; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry5367; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -165368; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5369; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 165370; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp5371; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5372; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 165373; CHECK-ALIGNED-RV32-V-NEXT:    ret5374;5375; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_16:5376; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry5377; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -165378; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5379; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 165380; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp5381; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5382; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 165383; CHECK-ALIGNED-RV64-V-NEXT:    ret5384;5385; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_16:5386; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry5387; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -165388; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5389; CHECK-UNALIGNED-RV32-NEXT:    li a2, 165390; CHECK-UNALIGNED-RV32-NEXT:    call memcmp5391; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5392; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 165393; CHECK-UNALIGNED-RV32-NEXT:    ret5394;5395; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_16:5396; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry5397; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -165398; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5399; CHECK-UNALIGNED-RV64-NEXT:    li a2, 165400; CHECK-UNALIGNED-RV64-NEXT:    call memcmp5401; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5402; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 165403; CHECK-UNALIGNED-RV64-NEXT:    ret5404;5405; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_16:5406; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry5407; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)5408; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)5409; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25410; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35411; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB33_55412; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb15413; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 4(a0)5414; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 4(a1)5415; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25416; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35417; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB33_55418; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.2: # %loadbb25419; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 8(a0)5420; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 8(a1)5421; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25422; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35423; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB33_55424; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.3: # %loadbb35425; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 12(a0)5426; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 12(a1)5427; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a05428; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a15429; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB33_55430; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.4:5431; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a0, 05432; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret5433; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB33_5: # %res_block5434; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a35435; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a05436; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 15437; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret5438;5439; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_16:5440; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry5441; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)5442; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)5443; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a25444; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a35445; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB33_35446; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.1: # %loadbb15447; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 8(a0)5448; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 8(a1)5449; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a05450; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a15451; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB33_35452; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.2:5453; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a0, 05454; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5455; CHECK-UNALIGNED-RV64-ZBB-NEXT:  .LBB33_3: # %res_block5456; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a2, a35457; CHECK-UNALIGNED-RV64-ZBB-NEXT:    neg a0, a05458; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ori a0, a0, 15459; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5460;5461; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_16:5462; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry5463; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)5464; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)5465; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25466; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35467; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB33_55468; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb15469; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 4(a0)5470; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 4(a1)5471; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25472; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35473; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB33_55474; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.2: # %loadbb25475; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 8(a0)5476; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 8(a1)5477; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25478; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35479; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB33_55480; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.3: # %loadbb35481; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 12(a0)5482; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 12(a1)5483; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a05484; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a15485; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB33_55486; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.4:5487; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a0, 05488; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret5489; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB33_5: # %res_block5490; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a35491; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a05492; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 15493; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret5494;5495; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_16:5496; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry5497; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)5498; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)5499; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a25500; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a35501; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB33_35502; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.1: # %loadbb15503; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 8(a0)5504; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 8(a1)5505; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a05506; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a15507; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB33_35508; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.2:5509; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a0, 05510; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5511; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  .LBB33_3: # %res_block5512; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a2, a35513; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    neg a0, a05514; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ori a0, a0, 15515; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5516;5517; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_16:5518; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry5519; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -165520; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5521; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 165522; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp5523; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5524; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 165525; CHECK-UNALIGNED-RV32-V-NEXT:    ret5526;5527; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_16:5528; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry5529; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -165530; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5531; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 165532; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp5533; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5534; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 165535; CHECK-UNALIGNED-RV64-V-NEXT:    ret5536entry:5537  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 16)5538  ret i32 %memcmp5539}5540 5541define i32 @memcmp_size_31(ptr %s1, ptr %s2) nounwind {5542; CHECK-ALIGNED-RV32-LABEL: memcmp_size_31:5543; CHECK-ALIGNED-RV32:       # %bb.0: # %entry5544; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -165545; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5546; CHECK-ALIGNED-RV32-NEXT:    li a2, 315547; CHECK-ALIGNED-RV32-NEXT:    call memcmp5548; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5549; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 165550; CHECK-ALIGNED-RV32-NEXT:    ret5551;5552; CHECK-ALIGNED-RV64-LABEL: memcmp_size_31:5553; CHECK-ALIGNED-RV64:       # %bb.0: # %entry5554; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -165555; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5556; CHECK-ALIGNED-RV64-NEXT:    li a2, 315557; CHECK-ALIGNED-RV64-NEXT:    call memcmp5558; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5559; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 165560; CHECK-ALIGNED-RV64-NEXT:    ret5561;5562; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_31:5563; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry5564; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -165565; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5566; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 315567; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp5568; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5569; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 165570; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret5571;5572; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_31:5573; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry5574; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -165575; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5576; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 315577; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp5578; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5579; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 165580; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret5581;5582; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_31:5583; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry5584; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -165585; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5586; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 315587; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp5588; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5589; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 165590; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret5591;5592; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_31:5593; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry5594; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -165595; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5596; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 315597; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp5598; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5599; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 165600; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret5601;5602; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_31:5603; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry5604; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -165605; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5606; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 315607; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp5608; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5609; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 165610; CHECK-ALIGNED-RV32-V-NEXT:    ret5611;5612; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_31:5613; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry5614; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -165615; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5616; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 315617; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp5618; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5619; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 165620; CHECK-ALIGNED-RV64-V-NEXT:    ret5621;5622; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_31:5623; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry5624; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -165625; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5626; CHECK-UNALIGNED-RV32-NEXT:    li a2, 315627; CHECK-UNALIGNED-RV32-NEXT:    call memcmp5628; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5629; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 165630; CHECK-UNALIGNED-RV32-NEXT:    ret5631;5632; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_31:5633; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry5634; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -165635; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5636; CHECK-UNALIGNED-RV64-NEXT:    li a2, 315637; CHECK-UNALIGNED-RV64-NEXT:    call memcmp5638; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5639; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 165640; CHECK-UNALIGNED-RV64-NEXT:    ret5641;5642; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_31:5643; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry5644; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)5645; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)5646; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25647; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35648; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB34_95649; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb15650; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 4(a0)5651; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 4(a1)5652; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25653; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35654; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB34_95655; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.2: # %loadbb25656; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 8(a0)5657; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 8(a1)5658; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25659; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35660; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB34_95661; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.3: # %loadbb35662; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 12(a0)5663; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 12(a1)5664; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25665; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35666; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB34_95667; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.4: # %loadbb45668; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 16(a0)5669; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 16(a1)5670; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25671; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35672; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB34_95673; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.5: # %loadbb55674; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 20(a0)5675; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 20(a1)5676; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25677; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35678; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB34_95679; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.6: # %loadbb65680; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 24(a0)5681; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 24(a1)5682; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25683; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35684; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB34_95685; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.7: # %loadbb75686; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 27(a0)5687; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 27(a1)5688; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a05689; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a15690; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB34_95691; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.8:5692; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a0, 05693; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret5694; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB34_9: # %res_block5695; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a35696; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a05697; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 15698; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret5699;5700; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_31:5701; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry5702; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)5703; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)5704; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a25705; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a35706; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB34_55707; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.1: # %loadbb15708; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 8(a0)5709; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 8(a1)5710; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a25711; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a35712; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB34_55713; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.2: # %loadbb25714; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 16(a0)5715; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 16(a1)5716; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a25717; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a35718; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB34_55719; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.3: # %loadbb35720; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 23(a0)5721; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 23(a1)5722; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a05723; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a15724; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB34_55725; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.4:5726; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a0, 05727; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5728; CHECK-UNALIGNED-RV64-ZBB-NEXT:  .LBB34_5: # %res_block5729; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a2, a35730; CHECK-UNALIGNED-RV64-ZBB-NEXT:    neg a0, a05731; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ori a0, a0, 15732; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5733;5734; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_31:5735; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry5736; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)5737; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)5738; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25739; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35740; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB34_95741; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb15742; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 4(a0)5743; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 4(a1)5744; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25745; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35746; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB34_95747; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.2: # %loadbb25748; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 8(a0)5749; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 8(a1)5750; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25751; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35752; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB34_95753; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.3: # %loadbb35754; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 12(a0)5755; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 12(a1)5756; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25757; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35758; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB34_95759; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.4: # %loadbb45760; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 16(a0)5761; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 16(a1)5762; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25763; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35764; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB34_95765; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.5: # %loadbb55766; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 20(a0)5767; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 20(a1)5768; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25769; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35770; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB34_95771; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.6: # %loadbb65772; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 24(a0)5773; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 24(a1)5774; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a25775; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a35776; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB34_95777; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.7: # %loadbb75778; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 27(a0)5779; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 27(a1)5780; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a05781; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a15782; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB34_95783; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.8:5784; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a0, 05785; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret5786; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB34_9: # %res_block5787; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a35788; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a05789; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 15790; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret5791;5792; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_31:5793; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry5794; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)5795; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)5796; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a25797; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a35798; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB34_55799; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.1: # %loadbb15800; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 8(a0)5801; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 8(a1)5802; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a25803; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a35804; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB34_55805; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.2: # %loadbb25806; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 16(a0)5807; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 16(a1)5808; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a25809; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a35810; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB34_55811; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.3: # %loadbb35812; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 23(a0)5813; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 23(a1)5814; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a05815; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a15816; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB34_55817; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.4:5818; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a0, 05819; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5820; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  .LBB34_5: # %res_block5821; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a2, a35822; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    neg a0, a05823; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ori a0, a0, 15824; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5825;5826; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_31:5827; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry5828; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -165829; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5830; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 315831; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp5832; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5833; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 165834; CHECK-UNALIGNED-RV32-V-NEXT:    ret5835;5836; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_31:5837; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry5838; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -165839; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5840; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 315841; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp5842; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5843; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 165844; CHECK-UNALIGNED-RV64-V-NEXT:    ret5845entry:5846  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 31)5847  ret i32 %memcmp5848}5849 5850define i32 @memcmp_size_32(ptr %s1, ptr %s2) nounwind {5851; CHECK-ALIGNED-RV32-LABEL: memcmp_size_32:5852; CHECK-ALIGNED-RV32:       # %bb.0: # %entry5853; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -165854; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5855; CHECK-ALIGNED-RV32-NEXT:    li a2, 325856; CHECK-ALIGNED-RV32-NEXT:    call memcmp5857; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5858; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 165859; CHECK-ALIGNED-RV32-NEXT:    ret5860;5861; CHECK-ALIGNED-RV64-LABEL: memcmp_size_32:5862; CHECK-ALIGNED-RV64:       # %bb.0: # %entry5863; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -165864; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5865; CHECK-ALIGNED-RV64-NEXT:    li a2, 325866; CHECK-ALIGNED-RV64-NEXT:    call memcmp5867; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5868; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 165869; CHECK-ALIGNED-RV64-NEXT:    ret5870;5871; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_32:5872; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry5873; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -165874; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5875; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 325876; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp5877; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5878; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 165879; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret5880;5881; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_32:5882; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry5883; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -165884; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5885; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 325886; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp5887; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5888; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 165889; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret5890;5891; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_32:5892; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry5893; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -165894; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5895; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 325896; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp5897; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5898; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 165899; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret5900;5901; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_32:5902; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry5903; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -165904; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5905; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 325906; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp5907; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5908; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 165909; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret5910;5911; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_32:5912; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry5913; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -165914; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5915; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 325916; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp5917; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5918; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 165919; CHECK-ALIGNED-RV32-V-NEXT:    ret5920;5921; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_32:5922; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry5923; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -165924; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5925; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 325926; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp5927; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5928; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 165929; CHECK-ALIGNED-RV64-V-NEXT:    ret5930;5931; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_32:5932; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry5933; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -165934; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5935; CHECK-UNALIGNED-RV32-NEXT:    li a2, 325936; CHECK-UNALIGNED-RV32-NEXT:    call memcmp5937; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5938; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 165939; CHECK-UNALIGNED-RV32-NEXT:    ret5940;5941; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_32:5942; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry5943; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -165944; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5945; CHECK-UNALIGNED-RV64-NEXT:    li a2, 325946; CHECK-UNALIGNED-RV64-NEXT:    call memcmp5947; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5948; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 165949; CHECK-UNALIGNED-RV64-NEXT:    ret5950;5951; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_32:5952; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry5953; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)5954; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)5955; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25956; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35957; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB35_95958; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb15959; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 4(a0)5960; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 4(a1)5961; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25962; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35963; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB35_95964; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.2: # %loadbb25965; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 8(a0)5966; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 8(a1)5967; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25968; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35969; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB35_95970; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.3: # %loadbb35971; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 12(a0)5972; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 12(a1)5973; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25974; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35975; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB35_95976; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.4: # %loadbb45977; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 16(a0)5978; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 16(a1)5979; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25980; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35981; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB35_95982; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.5: # %loadbb55983; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 20(a0)5984; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 20(a1)5985; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25986; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35987; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB35_95988; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.6: # %loadbb65989; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 24(a0)5990; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 24(a1)5991; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a25992; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a35993; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB35_95994; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.7: # %loadbb75995; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 28(a0)5996; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 28(a1)5997; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a05998; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a15999; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB35_96000; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.8:6001; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a0, 06002; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret6003; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB35_9: # %res_block6004; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a36005; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a06006; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 16007; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret6008;6009; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_32:6010; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry6011; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)6012; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)6013; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26014; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36015; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB35_56016; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.1: # %loadbb16017; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 8(a0)6018; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 8(a1)6019; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26020; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36021; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB35_56022; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.2: # %loadbb26023; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 16(a0)6024; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 16(a1)6025; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26026; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36027; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB35_56028; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.3: # %loadbb36029; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 24(a0)6030; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 24(a1)6031; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a06032; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a16033; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB35_56034; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.4:6035; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a0, 06036; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret6037; CHECK-UNALIGNED-RV64-ZBB-NEXT:  .LBB35_5: # %res_block6038; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a2, a36039; CHECK-UNALIGNED-RV64-ZBB-NEXT:    neg a0, a06040; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ori a0, a0, 16041; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret6042;6043; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_32:6044; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry6045; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)6046; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)6047; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a26048; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a36049; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB35_96050; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb16051; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 4(a0)6052; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 4(a1)6053; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a26054; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a36055; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB35_96056; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.2: # %loadbb26057; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 8(a0)6058; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 8(a1)6059; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a26060; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a36061; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB35_96062; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.3: # %loadbb36063; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 12(a0)6064; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 12(a1)6065; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a26066; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a36067; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB35_96068; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.4: # %loadbb46069; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 16(a0)6070; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 16(a1)6071; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a26072; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a36073; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB35_96074; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.5: # %loadbb56075; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 20(a0)6076; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 20(a1)6077; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a26078; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a36079; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB35_96080; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.6: # %loadbb66081; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 24(a0)6082; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 24(a1)6083; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a26084; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a36085; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB35_96086; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.7: # %loadbb76087; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 28(a0)6088; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 28(a1)6089; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a06090; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a16091; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB35_96092; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.8:6093; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a0, 06094; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret6095; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB35_9: # %res_block6096; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a36097; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a06098; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 16099; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret6100;6101; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_32:6102; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry6103; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)6104; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)6105; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26106; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36107; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB35_56108; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.1: # %loadbb16109; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 8(a0)6110; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 8(a1)6111; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26112; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36113; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB35_56114; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.2: # %loadbb26115; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 16(a0)6116; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 16(a1)6117; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26118; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36119; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB35_56120; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.3: # %loadbb36121; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 24(a0)6122; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 24(a1)6123; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a06124; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a16125; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB35_56126; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.4:6127; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a0, 06128; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret6129; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  .LBB35_5: # %res_block6130; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a2, a36131; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    neg a0, a06132; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ori a0, a0, 16133; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret6134;6135; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_32:6136; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry6137; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -166138; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6139; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 326140; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp6141; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6142; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 166143; CHECK-UNALIGNED-RV32-V-NEXT:    ret6144;6145; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_32:6146; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry6147; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -166148; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6149; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 326150; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp6151; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6152; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 166153; CHECK-UNALIGNED-RV64-V-NEXT:    ret6154entry:6155  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 32)6156  ret i32 %memcmp6157}6158 6159define i32 @memcmp_size_63(ptr %s1, ptr %s2) nounwind {6160; CHECK-RV32-LABEL: memcmp_size_63:6161; CHECK-RV32:       # %bb.0: # %entry6162; CHECK-RV32-NEXT:    addi sp, sp, -166163; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6164; CHECK-RV32-NEXT:    li a2, 636165; CHECK-RV32-NEXT:    call memcmp6166; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6167; CHECK-RV32-NEXT:    addi sp, sp, 166168; CHECK-RV32-NEXT:    ret6169;6170; CHECK-ALIGNED-RV64-LABEL: memcmp_size_63:6171; CHECK-ALIGNED-RV64:       # %bb.0: # %entry6172; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -166173; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6174; CHECK-ALIGNED-RV64-NEXT:    li a2, 636175; CHECK-ALIGNED-RV64-NEXT:    call memcmp6176; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6177; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 166178; CHECK-ALIGNED-RV64-NEXT:    ret6179;6180; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_63:6181; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry6182; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -166183; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6184; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 636185; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp6186; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6187; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 166188; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret6189;6190; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_63:6191; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry6192; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -166193; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6194; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 636195; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp6196; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6197; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 166198; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret6199;6200; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_63:6201; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry6202; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -166203; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6204; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 636205; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp6206; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6207; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 166208; CHECK-ALIGNED-RV64-V-NEXT:    ret6209;6210; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_63:6211; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry6212; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -166213; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6214; CHECK-UNALIGNED-RV64-NEXT:    li a2, 636215; CHECK-UNALIGNED-RV64-NEXT:    call memcmp6216; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6217; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 166218; CHECK-UNALIGNED-RV64-NEXT:    ret6219;6220; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_63:6221; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry6222; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)6223; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)6224; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26225; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36226; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB36_96227; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.1: # %loadbb16228; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 8(a0)6229; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 8(a1)6230; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26231; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36232; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB36_96233; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.2: # %loadbb26234; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 16(a0)6235; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 16(a1)6236; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26237; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36238; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB36_96239; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.3: # %loadbb36240; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 24(a0)6241; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 24(a1)6242; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26243; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36244; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB36_96245; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.4: # %loadbb46246; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 32(a0)6247; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 32(a1)6248; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26249; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36250; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB36_96251; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.5: # %loadbb56252; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 40(a0)6253; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 40(a1)6254; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26255; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36256; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB36_96257; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.6: # %loadbb66258; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 48(a0)6259; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 48(a1)6260; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26261; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36262; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB36_96263; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.7: # %loadbb76264; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 55(a0)6265; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 55(a1)6266; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a06267; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a16268; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB36_96269; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.8:6270; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a0, 06271; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret6272; CHECK-UNALIGNED-RV64-ZBB-NEXT:  .LBB36_9: # %res_block6273; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a2, a36274; CHECK-UNALIGNED-RV64-ZBB-NEXT:    neg a0, a06275; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ori a0, a0, 16276; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret6277;6278; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_63:6279; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry6280; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)6281; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)6282; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26283; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36284; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB36_96285; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.1: # %loadbb16286; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 8(a0)6287; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 8(a1)6288; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26289; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36290; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB36_96291; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.2: # %loadbb26292; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 16(a0)6293; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 16(a1)6294; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26295; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36296; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB36_96297; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.3: # %loadbb36298; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 24(a0)6299; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 24(a1)6300; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26301; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36302; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB36_96303; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.4: # %loadbb46304; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 32(a0)6305; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 32(a1)6306; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26307; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36308; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB36_96309; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.5: # %loadbb56310; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 40(a0)6311; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 40(a1)6312; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26313; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36314; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB36_96315; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.6: # %loadbb66316; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 48(a0)6317; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 48(a1)6318; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26319; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36320; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB36_96321; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.7: # %loadbb76322; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 55(a0)6323; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 55(a1)6324; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a06325; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a16326; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB36_96327; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.8:6328; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a0, 06329; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret6330; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  .LBB36_9: # %res_block6331; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a2, a36332; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    neg a0, a06333; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ori a0, a0, 16334; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret6335;6336; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_63:6337; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry6338; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -166339; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6340; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 636341; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp6342; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6343; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 166344; CHECK-UNALIGNED-RV64-V-NEXT:    ret6345entry:6346  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 63)6347  ret i32 %memcmp6348}6349 6350define i32 @memcmp_size_64(ptr %s1, ptr %s2) nounwind {6351; CHECK-RV32-LABEL: memcmp_size_64:6352; CHECK-RV32:       # %bb.0: # %entry6353; CHECK-RV32-NEXT:    addi sp, sp, -166354; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6355; CHECK-RV32-NEXT:    li a2, 646356; CHECK-RV32-NEXT:    call memcmp6357; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6358; CHECK-RV32-NEXT:    addi sp, sp, 166359; CHECK-RV32-NEXT:    ret6360;6361; CHECK-ALIGNED-RV64-LABEL: memcmp_size_64:6362; CHECK-ALIGNED-RV64:       # %bb.0: # %entry6363; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -166364; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6365; CHECK-ALIGNED-RV64-NEXT:    li a2, 646366; CHECK-ALIGNED-RV64-NEXT:    call memcmp6367; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6368; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 166369; CHECK-ALIGNED-RV64-NEXT:    ret6370;6371; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_64:6372; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry6373; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -166374; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6375; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 646376; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp6377; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6378; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 166379; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret6380;6381; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_64:6382; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry6383; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -166384; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6385; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 646386; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp6387; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6388; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 166389; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret6390;6391; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_64:6392; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry6393; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -166394; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6395; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 646396; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp6397; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6398; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 166399; CHECK-ALIGNED-RV64-V-NEXT:    ret6400;6401; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_64:6402; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry6403; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -166404; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6405; CHECK-UNALIGNED-RV64-NEXT:    li a2, 646406; CHECK-UNALIGNED-RV64-NEXT:    call memcmp6407; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6408; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 166409; CHECK-UNALIGNED-RV64-NEXT:    ret6410;6411; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_64:6412; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry6413; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)6414; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)6415; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26416; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36417; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB37_96418; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.1: # %loadbb16419; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 8(a0)6420; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 8(a1)6421; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26422; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36423; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB37_96424; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.2: # %loadbb26425; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 16(a0)6426; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 16(a1)6427; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26428; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36429; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB37_96430; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.3: # %loadbb36431; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 24(a0)6432; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 24(a1)6433; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26434; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36435; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB37_96436; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.4: # %loadbb46437; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 32(a0)6438; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 32(a1)6439; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26440; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36441; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB37_96442; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.5: # %loadbb56443; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 40(a0)6444; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 40(a1)6445; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26446; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36447; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB37_96448; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.6: # %loadbb66449; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 48(a0)6450; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 48(a1)6451; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a26452; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a36453; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB37_96454; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.7: # %loadbb76455; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 56(a0)6456; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 56(a1)6457; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a06458; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a16459; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB37_96460; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.8:6461; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a0, 06462; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret6463; CHECK-UNALIGNED-RV64-ZBB-NEXT:  .LBB37_9: # %res_block6464; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a2, a36465; CHECK-UNALIGNED-RV64-ZBB-NEXT:    neg a0, a06466; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ori a0, a0, 16467; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret6468;6469; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_64:6470; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry6471; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)6472; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)6473; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26474; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36475; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB37_96476; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.1: # %loadbb16477; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 8(a0)6478; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 8(a1)6479; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26480; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36481; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB37_96482; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.2: # %loadbb26483; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 16(a0)6484; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 16(a1)6485; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26486; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36487; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB37_96488; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.3: # %loadbb36489; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 24(a0)6490; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 24(a1)6491; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26492; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36493; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB37_96494; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.4: # %loadbb46495; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 32(a0)6496; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 32(a1)6497; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26498; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36499; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB37_96500; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.5: # %loadbb56501; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 40(a0)6502; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 40(a1)6503; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26504; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36505; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB37_96506; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.6: # %loadbb66507; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 48(a0)6508; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 48(a1)6509; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a26510; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a36511; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB37_96512; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.7: # %loadbb76513; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 56(a0)6514; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 56(a1)6515; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a06516; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a16517; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB37_96518; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.8:6519; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a0, 06520; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret6521; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  .LBB37_9: # %res_block6522; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a2, a36523; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    neg a0, a06524; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ori a0, a0, 16525; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret6526;6527; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_64:6528; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry6529; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -166530; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6531; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 646532; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp6533; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6534; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 166535; CHECK-UNALIGNED-RV64-V-NEXT:    ret6536entry:6537  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 64)6538  ret i32 %memcmp6539}6540 6541define i32 @memcmp_size_127(ptr %s1, ptr %s2) nounwind {6542; CHECK-RV32-LABEL: memcmp_size_127:6543; CHECK-RV32:       # %bb.0: # %entry6544; CHECK-RV32-NEXT:    addi sp, sp, -166545; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6546; CHECK-RV32-NEXT:    li a2, 1276547; CHECK-RV32-NEXT:    call memcmp6548; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6549; CHECK-RV32-NEXT:    addi sp, sp, 166550; CHECK-RV32-NEXT:    ret6551;6552; CHECK-RV64-LABEL: memcmp_size_127:6553; CHECK-RV64:       # %bb.0: # %entry6554; CHECK-RV64-NEXT:    addi sp, sp, -166555; CHECK-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6556; CHECK-RV64-NEXT:    li a2, 1276557; CHECK-RV64-NEXT:    call memcmp6558; CHECK-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6559; CHECK-RV64-NEXT:    addi sp, sp, 166560; CHECK-RV64-NEXT:    ret6561entry:6562  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 127)6563  ret i32 %memcmp6564}6565 6566define i32 @memcmp_size_128(ptr %s1, ptr %s2) nounwind {6567; CHECK-RV32-LABEL: memcmp_size_128:6568; CHECK-RV32:       # %bb.0: # %entry6569; CHECK-RV32-NEXT:    addi sp, sp, -166570; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6571; CHECK-RV32-NEXT:    li a2, 1286572; CHECK-RV32-NEXT:    call memcmp6573; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6574; CHECK-RV32-NEXT:    addi sp, sp, 166575; CHECK-RV32-NEXT:    ret6576;6577; CHECK-RV64-LABEL: memcmp_size_128:6578; CHECK-RV64:       # %bb.0: # %entry6579; CHECK-RV64-NEXT:    addi sp, sp, -166580; CHECK-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6581; CHECK-RV64-NEXT:    li a2, 1286582; CHECK-RV64-NEXT:    call memcmp6583; CHECK-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6584; CHECK-RV64-NEXT:    addi sp, sp, 166585; CHECK-RV64-NEXT:    ret6586entry:6587  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 128)6588  ret i32 %memcmp6589}6590 6591define i32 @memcmp_size_runtime(ptr %s1, ptr %s2, iXLen %len) nounwind {6592; CHECK-RV32-LABEL: memcmp_size_runtime:6593; CHECK-RV32:       # %bb.0: # %entry6594; CHECK-RV32-NEXT:    addi sp, sp, -166595; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6596; CHECK-RV32-NEXT:    call memcmp6597; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6598; CHECK-RV32-NEXT:    addi sp, sp, 166599; CHECK-RV32-NEXT:    ret6600;6601; CHECK-RV64-LABEL: memcmp_size_runtime:6602; CHECK-RV64:       # %bb.0: # %entry6603; CHECK-RV64-NEXT:    addi sp, sp, -166604; CHECK-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6605; CHECK-RV64-NEXT:    call memcmp6606; CHECK-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6607; CHECK-RV64-NEXT:    addi sp, sp, 166608; CHECK-RV64-NEXT:    ret6609entry:6610  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen %len)6611  ret i32 %memcmp6612}6613 6614define i1 @memcmp_eq_zero(ptr %s1, ptr %s2) nounwind {6615; CHECK-ALIGNED-RV32-LABEL: memcmp_eq_zero:6616; CHECK-ALIGNED-RV32:       # %bb.0: # %entry6617; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -166618; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6619; CHECK-ALIGNED-RV32-NEXT:    li a2, 166620; CHECK-ALIGNED-RV32-NEXT:    call memcmp6621; CHECK-ALIGNED-RV32-NEXT:    seqz a0, a06622; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6623; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 166624; CHECK-ALIGNED-RV32-NEXT:    ret6625;6626; CHECK-ALIGNED-RV64-LABEL: memcmp_eq_zero:6627; CHECK-ALIGNED-RV64:       # %bb.0: # %entry6628; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -166629; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6630; CHECK-ALIGNED-RV64-NEXT:    li a2, 166631; CHECK-ALIGNED-RV64-NEXT:    call memcmp6632; CHECK-ALIGNED-RV64-NEXT:    seqz a0, a06633; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6634; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 166635; CHECK-ALIGNED-RV64-NEXT:    ret6636;6637; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_eq_zero:6638; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry6639; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -166640; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6641; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 166642; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp6643; CHECK-ALIGNED-RV32-ZBB-NEXT:    seqz a0, a06644; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6645; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 166646; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret6647;6648; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_eq_zero:6649; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry6650; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -166651; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6652; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 166653; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp6654; CHECK-ALIGNED-RV64-ZBB-NEXT:    seqz a0, a06655; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6656; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 166657; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret6658;6659; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_eq_zero:6660; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry6661; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -166662; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6663; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 166664; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp6665; CHECK-ALIGNED-RV32-ZBKB-NEXT:    seqz a0, a06666; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6667; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 166668; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret6669;6670; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_eq_zero:6671; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry6672; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -166673; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6674; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 166675; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp6676; CHECK-ALIGNED-RV64-ZBKB-NEXT:    seqz a0, a06677; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6678; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 166679; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret6680;6681; CHECK-ALIGNED-RV32-V-LABEL: memcmp_eq_zero:6682; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry6683; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -166684; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6685; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 166686; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp6687; CHECK-ALIGNED-RV32-V-NEXT:    seqz a0, a06688; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6689; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 166690; CHECK-ALIGNED-RV32-V-NEXT:    ret6691;6692; CHECK-ALIGNED-RV64-V-LABEL: memcmp_eq_zero:6693; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry6694; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -166695; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6696; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 166697; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp6698; CHECK-ALIGNED-RV64-V-NEXT:    seqz a0, a06699; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6700; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 166701; CHECK-ALIGNED-RV64-V-NEXT:    ret6702;6703; CHECK-UNALIGNED-RV32-LABEL: memcmp_eq_zero:6704; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry6705; CHECK-UNALIGNED-RV32-NEXT:    lw a2, 0(a0)6706; CHECK-UNALIGNED-RV32-NEXT:    lw a3, 4(a0)6707; CHECK-UNALIGNED-RV32-NEXT:    lw a4, 8(a0)6708; CHECK-UNALIGNED-RV32-NEXT:    lw a0, 12(a0)6709; CHECK-UNALIGNED-RV32-NEXT:    lw a5, 0(a1)6710; CHECK-UNALIGNED-RV32-NEXT:    lw a6, 4(a1)6711; CHECK-UNALIGNED-RV32-NEXT:    lw a7, 8(a1)6712; CHECK-UNALIGNED-RV32-NEXT:    lw a1, 12(a1)6713; CHECK-UNALIGNED-RV32-NEXT:    xor a2, a2, a56714; CHECK-UNALIGNED-RV32-NEXT:    xor a3, a3, a66715; CHECK-UNALIGNED-RV32-NEXT:    xor a4, a4, a76716; CHECK-UNALIGNED-RV32-NEXT:    xor a0, a0, a16717; CHECK-UNALIGNED-RV32-NEXT:    or a2, a2, a36718; CHECK-UNALIGNED-RV32-NEXT:    or a0, a4, a06719; CHECK-UNALIGNED-RV32-NEXT:    or a0, a2, a06720; CHECK-UNALIGNED-RV32-NEXT:    seqz a0, a06721; CHECK-UNALIGNED-RV32-NEXT:    ret6722;6723; CHECK-UNALIGNED-RV64-LABEL: memcmp_eq_zero:6724; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry6725; CHECK-UNALIGNED-RV64-NEXT:    ld a2, 0(a0)6726; CHECK-UNALIGNED-RV64-NEXT:    ld a0, 8(a0)6727; CHECK-UNALIGNED-RV64-NEXT:    ld a3, 0(a1)6728; CHECK-UNALIGNED-RV64-NEXT:    ld a1, 8(a1)6729; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a36730; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a16731; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a06732; CHECK-UNALIGNED-RV64-NEXT:    seqz a0, a06733; CHECK-UNALIGNED-RV64-NEXT:    ret6734;6735; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_eq_zero:6736; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry6737; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)6738; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 4(a0)6739; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a4, 8(a0)6740; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 12(a0)6741; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a5, 0(a1)6742; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a6, 4(a1)6743; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a7, 8(a1)6744; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 12(a1)6745; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a2, a2, a56746; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a3, a3, a66747; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a4, a4, a76748; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xor a0, a0, a16749; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a2, a2, a36750; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a4, a06751; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a2, a06752; CHECK-UNALIGNED-RV32-ZBB-NEXT:    seqz a0, a06753; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret6754;6755; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_eq_zero:6756; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry6757; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)6758; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 8(a0)6759; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)6760; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 8(a1)6761; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a36762; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a16763; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a06764; CHECK-UNALIGNED-RV64-ZBB-NEXT:    seqz a0, a06765; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret6766;6767; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_eq_zero:6768; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry6769; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)6770; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 4(a0)6771; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a4, 8(a0)6772; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 12(a0)6773; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a5, 0(a1)6774; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a6, 4(a1)6775; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a7, 8(a1)6776; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 12(a1)6777; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a2, a2, a56778; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a3, a3, a66779; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a4, a4, a76780; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xor a0, a0, a16781; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a2, a2, a36782; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a4, a06783; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    or a0, a2, a06784; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    seqz a0, a06785; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret6786;6787; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_eq_zero:6788; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry6789; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)6790; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 8(a0)6791; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)6792; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 8(a1)6793; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a36794; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a16795; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a06796; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    seqz a0, a06797; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret6798;6799; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_eq_zero:6800; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry6801; CHECK-UNALIGNED-RV32-V-NEXT:    vsetivli zero, 16, e8, m1, ta, ma6802; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)6803; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v9, (a1)6804; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v8, v8, v96805; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v86806; CHECK-UNALIGNED-RV32-V-NEXT:    seqz a0, a06807; CHECK-UNALIGNED-RV32-V-NEXT:    ret6808;6809; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_eq_zero:6810; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry6811; CHECK-UNALIGNED-RV64-V-NEXT:    vsetivli zero, 16, e8, m1, ta, ma6812; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)6813; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v9, (a1)6814; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v8, v8, v96815; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v86816; CHECK-UNALIGNED-RV64-V-NEXT:    seqz a0, a06817; CHECK-UNALIGNED-RV64-V-NEXT:    ret6818entry:6819  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 16)6820  %ret = icmp eq i32 %memcmp, 06821  ret i1 %ret6822}6823 6824define i1 @memcmp_lt_zero(ptr %s1, ptr %s2) nounwind {6825; CHECK-ALIGNED-RV32-LABEL: memcmp_lt_zero:6826; CHECK-ALIGNED-RV32:       # %bb.0: # %entry6827; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -166828; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6829; CHECK-ALIGNED-RV32-NEXT:    li a2, 46830; CHECK-ALIGNED-RV32-NEXT:    call memcmp6831; CHECK-ALIGNED-RV32-NEXT:    srli a0, a0, 316832; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6833; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 166834; CHECK-ALIGNED-RV32-NEXT:    ret6835;6836; CHECK-ALIGNED-RV64-LABEL: memcmp_lt_zero:6837; CHECK-ALIGNED-RV64:       # %bb.0: # %entry6838; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -166839; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6840; CHECK-ALIGNED-RV64-NEXT:    li a2, 46841; CHECK-ALIGNED-RV64-NEXT:    call memcmp6842; CHECK-ALIGNED-RV64-NEXT:    srli a0, a0, 636843; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6844; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 166845; CHECK-ALIGNED-RV64-NEXT:    ret6846;6847; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_lt_zero:6848; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry6849; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -166850; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6851; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 46852; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp6853; CHECK-ALIGNED-RV32-ZBB-NEXT:    srli a0, a0, 316854; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6855; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 166856; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret6857;6858; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_lt_zero:6859; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry6860; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -166861; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6862; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 46863; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp6864; CHECK-ALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 636865; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6866; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 166867; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret6868;6869; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_lt_zero:6870; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry6871; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -166872; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6873; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 46874; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp6875; CHECK-ALIGNED-RV32-ZBKB-NEXT:    srli a0, a0, 316876; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6877; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 166878; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret6879;6880; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_lt_zero:6881; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry6882; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -166883; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6884; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 46885; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp6886; CHECK-ALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 636887; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6888; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 166889; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret6890;6891; CHECK-ALIGNED-RV32-V-LABEL: memcmp_lt_zero:6892; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry6893; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -166894; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6895; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 46896; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp6897; CHECK-ALIGNED-RV32-V-NEXT:    srli a0, a0, 316898; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6899; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 166900; CHECK-ALIGNED-RV32-V-NEXT:    ret6901;6902; CHECK-ALIGNED-RV64-V-LABEL: memcmp_lt_zero:6903; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry6904; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -166905; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6906; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 46907; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp6908; CHECK-ALIGNED-RV64-V-NEXT:    srli a0, a0, 636909; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6910; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 166911; CHECK-ALIGNED-RV64-V-NEXT:    ret6912;6913; CHECK-UNALIGNED-RV32-LABEL: memcmp_lt_zero:6914; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry6915; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -166916; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6917; CHECK-UNALIGNED-RV32-NEXT:    li a2, 46918; CHECK-UNALIGNED-RV32-NEXT:    call memcmp6919; CHECK-UNALIGNED-RV32-NEXT:    srli a0, a0, 316920; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6921; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 166922; CHECK-UNALIGNED-RV32-NEXT:    ret6923;6924; CHECK-UNALIGNED-RV64-LABEL: memcmp_lt_zero:6925; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry6926; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -166927; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6928; CHECK-UNALIGNED-RV64-NEXT:    li a2, 46929; CHECK-UNALIGNED-RV64-NEXT:    call memcmp6930; CHECK-UNALIGNED-RV64-NEXT:    srli a0, a0, 636931; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6932; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 166933; CHECK-UNALIGNED-RV64-NEXT:    ret6934;6935; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_lt_zero:6936; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry6937; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 0(a0)6938; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 0(a1)6939; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a0, a06940; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a1, a16941; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a0, a16942; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret6943;6944; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_lt_zero:6945; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry6946; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a0, 0(a0)6947; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a1, 0(a1)6948; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a06949; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a16950; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 326951; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a1, a1, 326952; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a0, a16953; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret6954;6955; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_lt_zero:6956; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry6957; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 0(a0)6958; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 0(a1)6959; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a0, a06960; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a1, a16961; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a0, a16962; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret6963;6964; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_lt_zero:6965; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry6966; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a0, 0(a0)6967; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a1, 0(a1)6968; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a06969; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a16970; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 326971; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a1, a1, 326972; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a0, a16973; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret6974;6975; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_lt_zero:6976; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry6977; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -166978; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill6979; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 46980; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp6981; CHECK-UNALIGNED-RV32-V-NEXT:    srli a0, a0, 316982; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload6983; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 166984; CHECK-UNALIGNED-RV32-V-NEXT:    ret6985;6986; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_lt_zero:6987; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry6988; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -166989; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill6990; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 46991; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp6992; CHECK-UNALIGNED-RV64-V-NEXT:    srli a0, a0, 636993; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload6994; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 166995; CHECK-UNALIGNED-RV64-V-NEXT:    ret6996entry:6997  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4)6998  %ret = icmp slt i32 %memcmp, 06999  ret i1 %ret7000}7001 7002define i1 @memcmp_gt_zero(ptr %s1, ptr %s2) nounwind {7003; CHECK-ALIGNED-RV32-LABEL: memcmp_gt_zero:7004; CHECK-ALIGNED-RV32:       # %bb.0: # %entry7005; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -167006; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7007; CHECK-ALIGNED-RV32-NEXT:    li a2, 47008; CHECK-ALIGNED-RV32-NEXT:    call memcmp7009; CHECK-ALIGNED-RV32-NEXT:    sgtz a0, a07010; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7011; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 167012; CHECK-ALIGNED-RV32-NEXT:    ret7013;7014; CHECK-ALIGNED-RV64-LABEL: memcmp_gt_zero:7015; CHECK-ALIGNED-RV64:       # %bb.0: # %entry7016; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -167017; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7018; CHECK-ALIGNED-RV64-NEXT:    li a2, 47019; CHECK-ALIGNED-RV64-NEXT:    call memcmp7020; CHECK-ALIGNED-RV64-NEXT:    sgtz a0, a07021; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7022; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 167023; CHECK-ALIGNED-RV64-NEXT:    ret7024;7025; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_gt_zero:7026; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry7027; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -167028; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7029; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 47030; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp7031; CHECK-ALIGNED-RV32-ZBB-NEXT:    sgtz a0, a07032; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7033; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 167034; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret7035;7036; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_gt_zero:7037; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry7038; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -167039; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7040; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 47041; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp7042; CHECK-ALIGNED-RV64-ZBB-NEXT:    sgtz a0, a07043; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7044; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 167045; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret7046;7047; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_gt_zero:7048; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry7049; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -167050; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7051; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 47052; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp7053; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sgtz a0, a07054; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7055; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 167056; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret7057;7058; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_gt_zero:7059; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry7060; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -167061; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7062; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 47063; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp7064; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sgtz a0, a07065; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7066; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 167067; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret7068;7069; CHECK-ALIGNED-RV32-V-LABEL: memcmp_gt_zero:7070; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry7071; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -167072; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7073; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 47074; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp7075; CHECK-ALIGNED-RV32-V-NEXT:    sgtz a0, a07076; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7077; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 167078; CHECK-ALIGNED-RV32-V-NEXT:    ret7079;7080; CHECK-ALIGNED-RV64-V-LABEL: memcmp_gt_zero:7081; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry7082; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -167083; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7084; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 47085; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp7086; CHECK-ALIGNED-RV64-V-NEXT:    sgtz a0, a07087; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7088; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 167089; CHECK-ALIGNED-RV64-V-NEXT:    ret7090;7091; CHECK-UNALIGNED-RV32-LABEL: memcmp_gt_zero:7092; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry7093; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -167094; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7095; CHECK-UNALIGNED-RV32-NEXT:    li a2, 47096; CHECK-UNALIGNED-RV32-NEXT:    call memcmp7097; CHECK-UNALIGNED-RV32-NEXT:    sgtz a0, a07098; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7099; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 167100; CHECK-UNALIGNED-RV32-NEXT:    ret7101;7102; CHECK-UNALIGNED-RV64-LABEL: memcmp_gt_zero:7103; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry7104; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -167105; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7106; CHECK-UNALIGNED-RV64-NEXT:    li a2, 47107; CHECK-UNALIGNED-RV64-NEXT:    call memcmp7108; CHECK-UNALIGNED-RV64-NEXT:    sgtz a0, a07109; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7110; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 167111; CHECK-UNALIGNED-RV64-NEXT:    ret7112;7113; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_gt_zero:7114; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry7115; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 0(a0)7116; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 0(a1)7117; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a0, a07118; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a1, a17119; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a1, a07120; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret7121;7122; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_gt_zero:7123; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry7124; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a0, 0(a0)7125; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a1, 0(a1)7126; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a07127; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a17128; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 327129; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a1, a1, 327130; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a07131; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret7132;7133; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_gt_zero:7134; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry7135; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 0(a0)7136; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 0(a1)7137; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a0, a07138; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a1, a17139; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a1, a07140; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret7141;7142; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_gt_zero:7143; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry7144; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a0, 0(a0)7145; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a1, 0(a1)7146; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a07147; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a17148; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 327149; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a1, a1, 327150; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a07151; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret7152;7153; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_gt_zero:7154; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry7155; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -167156; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7157; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 47158; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp7159; CHECK-UNALIGNED-RV32-V-NEXT:    sgtz a0, a07160; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7161; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 167162; CHECK-UNALIGNED-RV32-V-NEXT:    ret7163;7164; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_gt_zero:7165; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry7166; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -167167; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7168; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 47169; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp7170; CHECK-UNALIGNED-RV64-V-NEXT:    sgtz a0, a07171; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7172; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 167173; CHECK-UNALIGNED-RV64-V-NEXT:    ret7174entry:7175  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4)7176  %ret = icmp sgt i32 %memcmp, 07177  ret i1 %ret7178}7179 7180define i1 @memcmp_le_zero(ptr %s1, ptr %s2) nounwind {7181; CHECK-ALIGNED-RV32-LABEL: memcmp_le_zero:7182; CHECK-ALIGNED-RV32:       # %bb.0: # %entry7183; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -167184; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7185; CHECK-ALIGNED-RV32-NEXT:    li a2, 47186; CHECK-ALIGNED-RV32-NEXT:    call memcmp7187; CHECK-ALIGNED-RV32-NEXT:    slti a0, a0, 17188; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7189; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 167190; CHECK-ALIGNED-RV32-NEXT:    ret7191;7192; CHECK-ALIGNED-RV64-LABEL: memcmp_le_zero:7193; CHECK-ALIGNED-RV64:       # %bb.0: # %entry7194; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -167195; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7196; CHECK-ALIGNED-RV64-NEXT:    li a2, 47197; CHECK-ALIGNED-RV64-NEXT:    call memcmp7198; CHECK-ALIGNED-RV64-NEXT:    slti a0, a0, 17199; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7200; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 167201; CHECK-ALIGNED-RV64-NEXT:    ret7202;7203; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_le_zero:7204; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry7205; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -167206; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7207; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 47208; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp7209; CHECK-ALIGNED-RV32-ZBB-NEXT:    slti a0, a0, 17210; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7211; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 167212; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret7213;7214; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_le_zero:7215; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry7216; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -167217; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7218; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 47219; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp7220; CHECK-ALIGNED-RV64-ZBB-NEXT:    slti a0, a0, 17221; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7222; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 167223; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret7224;7225; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_le_zero:7226; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry7227; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -167228; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7229; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 47230; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp7231; CHECK-ALIGNED-RV32-ZBKB-NEXT:    slti a0, a0, 17232; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7233; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 167234; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret7235;7236; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_le_zero:7237; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry7238; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -167239; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7240; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 47241; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp7242; CHECK-ALIGNED-RV64-ZBKB-NEXT:    slti a0, a0, 17243; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7244; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 167245; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret7246;7247; CHECK-ALIGNED-RV32-V-LABEL: memcmp_le_zero:7248; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry7249; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -167250; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7251; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 47252; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp7253; CHECK-ALIGNED-RV32-V-NEXT:    slti a0, a0, 17254; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7255; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 167256; CHECK-ALIGNED-RV32-V-NEXT:    ret7257;7258; CHECK-ALIGNED-RV64-V-LABEL: memcmp_le_zero:7259; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry7260; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -167261; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7262; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 47263; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp7264; CHECK-ALIGNED-RV64-V-NEXT:    slti a0, a0, 17265; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7266; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 167267; CHECK-ALIGNED-RV64-V-NEXT:    ret7268;7269; CHECK-UNALIGNED-RV32-LABEL: memcmp_le_zero:7270; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry7271; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -167272; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7273; CHECK-UNALIGNED-RV32-NEXT:    li a2, 47274; CHECK-UNALIGNED-RV32-NEXT:    call memcmp7275; CHECK-UNALIGNED-RV32-NEXT:    slti a0, a0, 17276; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7277; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 167278; CHECK-UNALIGNED-RV32-NEXT:    ret7279;7280; CHECK-UNALIGNED-RV64-LABEL: memcmp_le_zero:7281; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry7282; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -167283; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7284; CHECK-UNALIGNED-RV64-NEXT:    li a2, 47285; CHECK-UNALIGNED-RV64-NEXT:    call memcmp7286; CHECK-UNALIGNED-RV64-NEXT:    slti a0, a0, 17287; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7288; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 167289; CHECK-UNALIGNED-RV64-NEXT:    ret7290;7291; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_le_zero:7292; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry7293; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 0(a0)7294; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 0(a1)7295; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a0, a07296; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a1, a17297; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a1, a07298; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xori a0, a0, 17299; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret7300;7301; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_le_zero:7302; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry7303; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a0, 0(a0)7304; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a1, 0(a1)7305; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a07306; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a17307; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 327308; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a1, a1, 327309; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a07310; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xori a0, a0, 17311; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret7312;7313; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_le_zero:7314; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry7315; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 0(a0)7316; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 0(a1)7317; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a0, a07318; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a1, a17319; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a1, a07320; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xori a0, a0, 17321; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret7322;7323; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_le_zero:7324; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry7325; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a0, 0(a0)7326; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a1, 0(a1)7327; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a07328; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a17329; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 327330; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a1, a1, 327331; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a07332; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xori a0, a0, 17333; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret7334;7335; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_le_zero:7336; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry7337; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -167338; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7339; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 47340; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp7341; CHECK-UNALIGNED-RV32-V-NEXT:    slti a0, a0, 17342; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7343; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 167344; CHECK-UNALIGNED-RV32-V-NEXT:    ret7345;7346; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_le_zero:7347; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry7348; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -167349; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7350; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 47351; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp7352; CHECK-UNALIGNED-RV64-V-NEXT:    slti a0, a0, 17353; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7354; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 167355; CHECK-UNALIGNED-RV64-V-NEXT:    ret7356entry:7357  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4)7358  %ret = icmp slt i32 %memcmp, 17359  ret i1 %ret7360}7361 7362define i1 @memcmp_ge_zero(ptr %s1, ptr %s2) nounwind {7363; CHECK-ALIGNED-RV32-LABEL: memcmp_ge_zero:7364; CHECK-ALIGNED-RV32:       # %bb.0: # %entry7365; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -167366; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7367; CHECK-ALIGNED-RV32-NEXT:    li a2, 47368; CHECK-ALIGNED-RV32-NEXT:    call memcmp7369; CHECK-ALIGNED-RV32-NEXT:    srli a0, a0, 317370; CHECK-ALIGNED-RV32-NEXT:    xori a0, a0, 17371; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7372; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 167373; CHECK-ALIGNED-RV32-NEXT:    ret7374;7375; CHECK-ALIGNED-RV64-LABEL: memcmp_ge_zero:7376; CHECK-ALIGNED-RV64:       # %bb.0: # %entry7377; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -167378; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7379; CHECK-ALIGNED-RV64-NEXT:    li a2, 47380; CHECK-ALIGNED-RV64-NEXT:    call memcmp7381; CHECK-ALIGNED-RV64-NEXT:    srli a0, a0, 637382; CHECK-ALIGNED-RV64-NEXT:    xori a0, a0, 17383; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7384; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 167385; CHECK-ALIGNED-RV64-NEXT:    ret7386;7387; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_ge_zero:7388; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry7389; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -167390; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7391; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 47392; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp7393; CHECK-ALIGNED-RV32-ZBB-NEXT:    srli a0, a0, 317394; CHECK-ALIGNED-RV32-ZBB-NEXT:    xori a0, a0, 17395; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7396; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 167397; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret7398;7399; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_ge_zero:7400; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry7401; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -167402; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7403; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 47404; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp7405; CHECK-ALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 637406; CHECK-ALIGNED-RV64-ZBB-NEXT:    xori a0, a0, 17407; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7408; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 167409; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret7410;7411; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_ge_zero:7412; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry7413; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -167414; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7415; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 47416; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp7417; CHECK-ALIGNED-RV32-ZBKB-NEXT:    srli a0, a0, 317418; CHECK-ALIGNED-RV32-ZBKB-NEXT:    xori a0, a0, 17419; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7420; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 167421; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret7422;7423; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_ge_zero:7424; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry7425; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -167426; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7427; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 47428; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp7429; CHECK-ALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 637430; CHECK-ALIGNED-RV64-ZBKB-NEXT:    xori a0, a0, 17431; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7432; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 167433; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret7434;7435; CHECK-ALIGNED-RV32-V-LABEL: memcmp_ge_zero:7436; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry7437; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -167438; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7439; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 47440; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp7441; CHECK-ALIGNED-RV32-V-NEXT:    srli a0, a0, 317442; CHECK-ALIGNED-RV32-V-NEXT:    xori a0, a0, 17443; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7444; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 167445; CHECK-ALIGNED-RV32-V-NEXT:    ret7446;7447; CHECK-ALIGNED-RV64-V-LABEL: memcmp_ge_zero:7448; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry7449; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -167450; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7451; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 47452; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp7453; CHECK-ALIGNED-RV64-V-NEXT:    srli a0, a0, 637454; CHECK-ALIGNED-RV64-V-NEXT:    xori a0, a0, 17455; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7456; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 167457; CHECK-ALIGNED-RV64-V-NEXT:    ret7458;7459; CHECK-UNALIGNED-RV32-LABEL: memcmp_ge_zero:7460; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry7461; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -167462; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7463; CHECK-UNALIGNED-RV32-NEXT:    li a2, 47464; CHECK-UNALIGNED-RV32-NEXT:    call memcmp7465; CHECK-UNALIGNED-RV32-NEXT:    srli a0, a0, 317466; CHECK-UNALIGNED-RV32-NEXT:    xori a0, a0, 17467; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7468; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 167469; CHECK-UNALIGNED-RV32-NEXT:    ret7470;7471; CHECK-UNALIGNED-RV64-LABEL: memcmp_ge_zero:7472; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry7473; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -167474; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7475; CHECK-UNALIGNED-RV64-NEXT:    li a2, 47476; CHECK-UNALIGNED-RV64-NEXT:    call memcmp7477; CHECK-UNALIGNED-RV64-NEXT:    srli a0, a0, 637478; CHECK-UNALIGNED-RV64-NEXT:    xori a0, a0, 17479; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7480; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 167481; CHECK-UNALIGNED-RV64-NEXT:    ret7482;7483; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_ge_zero:7484; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry7485; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 0(a0)7486; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 0(a1)7487; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a0, a07488; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a1, a17489; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a0, a17490; CHECK-UNALIGNED-RV32-ZBB-NEXT:    xori a0, a0, 17491; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret7492;7493; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_ge_zero:7494; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry7495; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a0, 0(a0)7496; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a1, 0(a1)7497; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a07498; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a17499; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 327500; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a1, a1, 327501; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a0, a17502; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xori a0, a0, 17503; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret7504;7505; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_ge_zero:7506; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry7507; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 0(a0)7508; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 0(a1)7509; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a0, a07510; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a1, a17511; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a0, a17512; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    xori a0, a0, 17513; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret7514;7515; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_ge_zero:7516; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry7517; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a0, 0(a0)7518; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a1, 0(a1)7519; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a07520; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a17521; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 327522; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a1, a1, 327523; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a0, a17524; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xori a0, a0, 17525; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret7526;7527; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_ge_zero:7528; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry7529; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -167530; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill7531; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 47532; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp7533; CHECK-UNALIGNED-RV32-V-NEXT:    srli a0, a0, 317534; CHECK-UNALIGNED-RV32-V-NEXT:    xori a0, a0, 17535; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload7536; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 167537; CHECK-UNALIGNED-RV32-V-NEXT:    ret7538;7539; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_ge_zero:7540; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry7541; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -167542; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill7543; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 47544; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp7545; CHECK-UNALIGNED-RV64-V-NEXT:    srli a0, a0, 637546; CHECK-UNALIGNED-RV64-V-NEXT:    xori a0, a0, 17547; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload7548; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 167549; CHECK-UNALIGNED-RV64-V-NEXT:    ret7550entry:7551  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4)7552  %ret = icmp sgt i32 %memcmp, -17553  ret i1 %ret7554}7555;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:7556; CHECK-ALIGNED: {{.*}}7557