brintos

brintos / llvm-project-archived public Read only

0
0
Text · 259.3 KiB · afc8e35 Raw
5891 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 optsize {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 optsize {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 optsize {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 optsize {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 optsize {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 optsize {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 optsize {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 optsize {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 optsize {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 optsize {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 optsize {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 optsize {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:    addi sp, sp, -161625; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1626; CHECK-UNALIGNED-RV32-NEXT:    li a2, 311627; CHECK-UNALIGNED-RV32-NEXT:    call bcmp1628; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1629; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 161630; CHECK-UNALIGNED-RV32-NEXT:    ret1631;1632; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_31:1633; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry1634; CHECK-UNALIGNED-RV64-NEXT:    ld a2, 0(a0)1635; CHECK-UNALIGNED-RV64-NEXT:    ld a3, 8(a0)1636; CHECK-UNALIGNED-RV64-NEXT:    ld a4, 16(a0)1637; CHECK-UNALIGNED-RV64-NEXT:    ld a0, 23(a0)1638; CHECK-UNALIGNED-RV64-NEXT:    ld a5, 0(a1)1639; CHECK-UNALIGNED-RV64-NEXT:    ld a6, 8(a1)1640; CHECK-UNALIGNED-RV64-NEXT:    ld a7, 16(a1)1641; CHECK-UNALIGNED-RV64-NEXT:    ld a1, 23(a1)1642; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a51643; CHECK-UNALIGNED-RV64-NEXT:    xor a3, a3, a61644; CHECK-UNALIGNED-RV64-NEXT:    xor a4, a4, a71645; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a11646; CHECK-UNALIGNED-RV64-NEXT:    or a2, a2, a31647; CHECK-UNALIGNED-RV64-NEXT:    or a0, a4, a01648; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a01649; CHECK-UNALIGNED-RV64-NEXT:    snez a0, a01650; CHECK-UNALIGNED-RV64-NEXT:    ret1651;1652; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_31:1653; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry1654; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -161655; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1656; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a2, 311657; CHECK-UNALIGNED-RV32-ZBB-NEXT:    call bcmp1658; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1659; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 161660; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret1661;1662; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_31:1663; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry1664; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)1665; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 8(a0)1666; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a4, 16(a0)1667; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 23(a0)1668; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a5, 0(a1)1669; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a6, 8(a1)1670; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a7, 16(a1)1671; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 23(a1)1672; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a51673; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a3, a3, a61674; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a4, a4, a71675; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a11676; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a2, a2, a31677; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a4, a01678; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a01679; CHECK-UNALIGNED-RV64-ZBB-NEXT:    snez a0, a01680; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret1681;1682; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_31:1683; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry1684; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -161685; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1686; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a2, 311687; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    call bcmp1688; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1689; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 161690; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret1691;1692; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_31:1693; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry1694; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)1695; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 8(a0)1696; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a4, 16(a0)1697; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 23(a0)1698; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a5, 0(a1)1699; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a6, 8(a1)1700; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a7, 16(a1)1701; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 23(a1)1702; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a51703; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a3, a3, a61704; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a4, a4, a71705; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a11706; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a2, a2, a31707; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a4, a01708; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a01709; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    snez a0, a01710; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret1711;1712; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_31:1713; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry1714; CHECK-UNALIGNED-RV32-V-NEXT:    vsetivli zero, 31, e8, m2, ta, ma1715; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)1716; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v10, (a1)1717; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v12, v8, v101718; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v121719; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a01720; CHECK-UNALIGNED-RV32-V-NEXT:    ret1721;1722; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_31:1723; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry1724; CHECK-UNALIGNED-RV64-V-NEXT:    vsetivli zero, 31, e8, m2, ta, ma1725; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)1726; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v10, (a1)1727; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v12, v8, v101728; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v121729; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a01730; CHECK-UNALIGNED-RV64-V-NEXT:    ret1731entry:1732  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 31)1733  ret i32 %bcmp1734}1735 1736define i32 @bcmp_size_32(ptr %s1, ptr %s2) nounwind optsize {1737; CHECK-ALIGNED-RV32-LABEL: bcmp_size_32:1738; CHECK-ALIGNED-RV32:       # %bb.0: # %entry1739; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -161740; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1741; CHECK-ALIGNED-RV32-NEXT:    li a2, 321742; CHECK-ALIGNED-RV32-NEXT:    call bcmp1743; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1744; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 161745; CHECK-ALIGNED-RV32-NEXT:    ret1746;1747; CHECK-ALIGNED-RV64-LABEL: bcmp_size_32:1748; CHECK-ALIGNED-RV64:       # %bb.0: # %entry1749; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -161750; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1751; CHECK-ALIGNED-RV64-NEXT:    li a2, 321752; CHECK-ALIGNED-RV64-NEXT:    call bcmp1753; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1754; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 161755; CHECK-ALIGNED-RV64-NEXT:    ret1756;1757; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_32:1758; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry1759; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -161760; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1761; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 321762; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp1763; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1764; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 161765; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret1766;1767; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_32:1768; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry1769; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -161770; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1771; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 321772; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp1773; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1774; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 161775; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret1776;1777; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_32:1778; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry1779; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -161780; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1781; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 321782; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp1783; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1784; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 161785; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret1786;1787; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_32:1788; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry1789; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -161790; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1791; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 321792; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp1793; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1794; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 161795; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret1796;1797; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_32:1798; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry1799; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -161800; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1801; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 321802; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp1803; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1804; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 161805; CHECK-ALIGNED-RV32-V-NEXT:    ret1806;1807; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_32:1808; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry1809; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -161810; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1811; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 321812; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp1813; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1814; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 161815; CHECK-ALIGNED-RV64-V-NEXT:    ret1816;1817; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_32:1818; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry1819; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -161820; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1821; CHECK-UNALIGNED-RV32-NEXT:    li a2, 321822; CHECK-UNALIGNED-RV32-NEXT:    call bcmp1823; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1824; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 161825; CHECK-UNALIGNED-RV32-NEXT:    ret1826;1827; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_32:1828; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry1829; CHECK-UNALIGNED-RV64-NEXT:    ld a2, 0(a0)1830; CHECK-UNALIGNED-RV64-NEXT:    ld a3, 8(a0)1831; CHECK-UNALIGNED-RV64-NEXT:    ld a4, 16(a0)1832; CHECK-UNALIGNED-RV64-NEXT:    ld a0, 24(a0)1833; CHECK-UNALIGNED-RV64-NEXT:    ld a5, 0(a1)1834; CHECK-UNALIGNED-RV64-NEXT:    ld a6, 8(a1)1835; CHECK-UNALIGNED-RV64-NEXT:    ld a7, 16(a1)1836; CHECK-UNALIGNED-RV64-NEXT:    ld a1, 24(a1)1837; CHECK-UNALIGNED-RV64-NEXT:    xor a2, a2, a51838; CHECK-UNALIGNED-RV64-NEXT:    xor a3, a3, a61839; CHECK-UNALIGNED-RV64-NEXT:    xor a4, a4, a71840; CHECK-UNALIGNED-RV64-NEXT:    xor a0, a0, a11841; CHECK-UNALIGNED-RV64-NEXT:    or a2, a2, a31842; CHECK-UNALIGNED-RV64-NEXT:    or a0, a4, a01843; CHECK-UNALIGNED-RV64-NEXT:    or a0, a2, a01844; CHECK-UNALIGNED-RV64-NEXT:    snez a0, a01845; CHECK-UNALIGNED-RV64-NEXT:    ret1846;1847; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_32:1848; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry1849; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -161850; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1851; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a2, 321852; CHECK-UNALIGNED-RV32-ZBB-NEXT:    call bcmp1853; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1854; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 161855; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret1856;1857; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_32:1858; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry1859; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)1860; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 8(a0)1861; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a4, 16(a0)1862; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 24(a0)1863; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a5, 0(a1)1864; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a6, 8(a1)1865; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a7, 16(a1)1866; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 24(a1)1867; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a2, a2, a51868; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a3, a3, a61869; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a4, a4, a71870; CHECK-UNALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a11871; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a2, a2, a31872; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a4, a01873; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a2, a01874; CHECK-UNALIGNED-RV64-ZBB-NEXT:    snez a0, a01875; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret1876;1877; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_32:1878; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry1879; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -161880; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1881; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a2, 321882; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    call bcmp1883; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1884; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 161885; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret1886;1887; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_32:1888; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry1889; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)1890; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 8(a0)1891; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a4, 16(a0)1892; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 24(a0)1893; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a5, 0(a1)1894; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a6, 8(a1)1895; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a7, 16(a1)1896; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 24(a1)1897; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a2, a2, a51898; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a3, a3, a61899; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a4, a4, a71900; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a11901; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a2, a2, a31902; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a4, a01903; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a2, a01904; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    snez a0, a01905; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret1906;1907; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_32:1908; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry1909; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 321910; CHECK-UNALIGNED-RV32-V-NEXT:    vsetvli zero, a2, e8, m2, ta, ma1911; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)1912; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v10, (a1)1913; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v12, v8, v101914; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v121915; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a01916; CHECK-UNALIGNED-RV32-V-NEXT:    ret1917;1918; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_32:1919; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry1920; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 321921; CHECK-UNALIGNED-RV64-V-NEXT:    vsetvli zero, a2, e8, m2, ta, ma1922; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)1923; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v10, (a1)1924; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v12, v8, v101925; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v121926; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a01927; CHECK-UNALIGNED-RV64-V-NEXT:    ret1928entry:1929  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 32)1930  ret i32 %bcmp1931}1932 1933define i32 @bcmp_size_63(ptr %s1, ptr %s2) nounwind optsize {1934; CHECK-ALIGNED-RV32-LABEL: bcmp_size_63:1935; CHECK-ALIGNED-RV32:       # %bb.0: # %entry1936; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -161937; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1938; CHECK-ALIGNED-RV32-NEXT:    li a2, 631939; CHECK-ALIGNED-RV32-NEXT:    call bcmp1940; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1941; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 161942; CHECK-ALIGNED-RV32-NEXT:    ret1943;1944; CHECK-ALIGNED-RV64-LABEL: bcmp_size_63:1945; CHECK-ALIGNED-RV64:       # %bb.0: # %entry1946; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -161947; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1948; CHECK-ALIGNED-RV64-NEXT:    li a2, 631949; CHECK-ALIGNED-RV64-NEXT:    call bcmp1950; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1951; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 161952; CHECK-ALIGNED-RV64-NEXT:    ret1953;1954; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_63:1955; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry1956; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -161957; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1958; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 631959; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp1960; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1961; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 161962; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret1963;1964; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_63:1965; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry1966; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -161967; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1968; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 631969; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp1970; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1971; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 161972; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret1973;1974; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_63:1975; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry1976; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -161977; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1978; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 631979; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp1980; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload1981; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 161982; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret1983;1984; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_63:1985; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry1986; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -161987; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill1988; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 631989; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp1990; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload1991; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 161992; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret1993;1994; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_63:1995; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry1996; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -161997; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill1998; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 631999; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp2000; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2001; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 162002; CHECK-ALIGNED-RV32-V-NEXT:    ret2003;2004; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_63:2005; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry2006; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -162007; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2008; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 632009; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp2010; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2011; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 162012; CHECK-ALIGNED-RV64-V-NEXT:    ret2013;2014; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_63:2015; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry2016; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -162017; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2018; CHECK-UNALIGNED-RV32-NEXT:    li a2, 632019; CHECK-UNALIGNED-RV32-NEXT:    call bcmp2020; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2021; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 162022; CHECK-UNALIGNED-RV32-NEXT:    ret2023;2024; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_63:2025; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry2026; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -162027; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2028; CHECK-UNALIGNED-RV64-NEXT:    li a2, 632029; CHECK-UNALIGNED-RV64-NEXT:    call bcmp2030; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2031; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 162032; CHECK-UNALIGNED-RV64-NEXT:    ret2033;2034; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_63:2035; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry2036; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162037; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2038; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a2, 632039; CHECK-UNALIGNED-RV32-ZBB-NEXT:    call bcmp2040; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2041; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162042; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret2043;2044; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_63:2045; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry2046; CHECK-UNALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162047; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2048; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a2, 632049; CHECK-UNALIGNED-RV64-ZBB-NEXT:    call bcmp2050; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2051; CHECK-UNALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162052; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret2053;2054; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_63:2055; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry2056; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162057; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2058; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a2, 632059; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    call bcmp2060; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2061; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162062; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret2063;2064; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_63:2065; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry2066; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162067; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2068; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a2, 632069; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    call bcmp2070; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2071; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162072; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret2073;2074; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_63:2075; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry2076; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 632077; CHECK-UNALIGNED-RV32-V-NEXT:    vsetvli zero, a2, e8, m4, ta, ma2078; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)2079; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v12, (a1)2080; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v16, v8, v122081; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v162082; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a02083; CHECK-UNALIGNED-RV32-V-NEXT:    ret2084;2085; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_63:2086; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry2087; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 632088; CHECK-UNALIGNED-RV64-V-NEXT:    vsetvli zero, a2, e8, m4, ta, ma2089; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)2090; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v12, (a1)2091; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v16, v8, v122092; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v162093; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a02094; CHECK-UNALIGNED-RV64-V-NEXT:    ret2095entry:2096  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 63)2097  ret i32 %bcmp2098}2099 2100define i32 @bcmp_size_64(ptr %s1, ptr %s2) nounwind optsize {2101; CHECK-ALIGNED-RV32-LABEL: bcmp_size_64:2102; CHECK-ALIGNED-RV32:       # %bb.0: # %entry2103; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -162104; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2105; CHECK-ALIGNED-RV32-NEXT:    li a2, 642106; CHECK-ALIGNED-RV32-NEXT:    call bcmp2107; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2108; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 162109; CHECK-ALIGNED-RV32-NEXT:    ret2110;2111; CHECK-ALIGNED-RV64-LABEL: bcmp_size_64:2112; CHECK-ALIGNED-RV64:       # %bb.0: # %entry2113; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -162114; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2115; CHECK-ALIGNED-RV64-NEXT:    li a2, 642116; CHECK-ALIGNED-RV64-NEXT:    call bcmp2117; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2118; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 162119; CHECK-ALIGNED-RV64-NEXT:    ret2120;2121; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_64:2122; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry2123; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162124; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2125; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 642126; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp2127; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2128; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162129; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret2130;2131; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_64:2132; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry2133; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162134; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2135; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 642136; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp2137; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2138; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162139; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret2140;2141; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_64:2142; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry2143; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162144; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2145; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 642146; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp2147; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2148; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162149; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret2150;2151; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_64:2152; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry2153; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162154; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2155; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 642156; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp2157; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2158; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162159; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret2160;2161; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_64:2162; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry2163; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -162164; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2165; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 642166; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp2167; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2168; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 162169; CHECK-ALIGNED-RV32-V-NEXT:    ret2170;2171; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_64:2172; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry2173; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -162174; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2175; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 642176; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp2177; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2178; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 162179; CHECK-ALIGNED-RV64-V-NEXT:    ret2180;2181; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_64:2182; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry2183; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -162184; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2185; CHECK-UNALIGNED-RV32-NEXT:    li a2, 642186; CHECK-UNALIGNED-RV32-NEXT:    call bcmp2187; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2188; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 162189; CHECK-UNALIGNED-RV32-NEXT:    ret2190;2191; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_64:2192; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry2193; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -162194; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2195; CHECK-UNALIGNED-RV64-NEXT:    li a2, 642196; CHECK-UNALIGNED-RV64-NEXT:    call bcmp2197; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2198; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 162199; CHECK-UNALIGNED-RV64-NEXT:    ret2200;2201; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_64:2202; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry2203; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162204; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2205; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a2, 642206; CHECK-UNALIGNED-RV32-ZBB-NEXT:    call bcmp2207; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2208; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162209; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret2210;2211; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_64:2212; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry2213; CHECK-UNALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162214; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2215; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a2, 642216; CHECK-UNALIGNED-RV64-ZBB-NEXT:    call bcmp2217; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2218; CHECK-UNALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162219; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret2220;2221; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_64:2222; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry2223; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162224; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2225; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a2, 642226; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    call bcmp2227; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2228; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162229; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret2230;2231; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_64:2232; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry2233; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162234; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2235; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a2, 642236; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    call bcmp2237; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2238; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162239; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret2240;2241; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_64:2242; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry2243; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 642244; CHECK-UNALIGNED-RV32-V-NEXT:    vsetvli zero, a2, e8, m4, ta, ma2245; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)2246; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v12, (a1)2247; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v16, v8, v122248; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v162249; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a02250; CHECK-UNALIGNED-RV32-V-NEXT:    ret2251;2252; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_64:2253; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry2254; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 642255; CHECK-UNALIGNED-RV64-V-NEXT:    vsetvli zero, a2, e8, m4, ta, ma2256; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)2257; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v12, (a1)2258; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v16, v8, v122259; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v162260; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a02261; CHECK-UNALIGNED-RV64-V-NEXT:    ret2262entry:2263  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 64)2264  ret i32 %bcmp2265}2266 2267define i32 @bcmp_size_127(ptr %s1, ptr %s2) nounwind optsize {2268; CHECK-ALIGNED-RV32-LABEL: bcmp_size_127:2269; CHECK-ALIGNED-RV32:       # %bb.0: # %entry2270; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -162271; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2272; CHECK-ALIGNED-RV32-NEXT:    li a2, 1272273; CHECK-ALIGNED-RV32-NEXT:    call bcmp2274; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2275; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 162276; CHECK-ALIGNED-RV32-NEXT:    ret2277;2278; CHECK-ALIGNED-RV64-LABEL: bcmp_size_127:2279; CHECK-ALIGNED-RV64:       # %bb.0: # %entry2280; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -162281; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2282; CHECK-ALIGNED-RV64-NEXT:    li a2, 1272283; CHECK-ALIGNED-RV64-NEXT:    call bcmp2284; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2285; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 162286; CHECK-ALIGNED-RV64-NEXT:    ret2287;2288; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_127:2289; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry2290; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162291; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2292; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 1272293; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp2294; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2295; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162296; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret2297;2298; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_127:2299; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry2300; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162301; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2302; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 1272303; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp2304; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2305; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162306; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret2307;2308; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_127:2309; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry2310; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162311; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2312; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 1272313; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp2314; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2315; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162316; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret2317;2318; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_127:2319; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry2320; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162321; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2322; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 1272323; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp2324; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2325; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162326; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret2327;2328; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_127:2329; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry2330; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -162331; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2332; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 1272333; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp2334; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2335; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 162336; CHECK-ALIGNED-RV32-V-NEXT:    ret2337;2338; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_127:2339; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry2340; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -162341; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2342; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 1272343; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp2344; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2345; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 162346; CHECK-ALIGNED-RV64-V-NEXT:    ret2347;2348; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_127:2349; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry2350; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -162351; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2352; CHECK-UNALIGNED-RV32-NEXT:    li a2, 1272353; CHECK-UNALIGNED-RV32-NEXT:    call bcmp2354; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2355; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 162356; CHECK-UNALIGNED-RV32-NEXT:    ret2357;2358; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_127:2359; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry2360; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -162361; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2362; CHECK-UNALIGNED-RV64-NEXT:    li a2, 1272363; CHECK-UNALIGNED-RV64-NEXT:    call bcmp2364; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2365; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 162366; CHECK-UNALIGNED-RV64-NEXT:    ret2367;2368; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_127:2369; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry2370; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162371; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2372; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a2, 1272373; CHECK-UNALIGNED-RV32-ZBB-NEXT:    call bcmp2374; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2375; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162376; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret2377;2378; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_127:2379; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry2380; CHECK-UNALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162381; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2382; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a2, 1272383; CHECK-UNALIGNED-RV64-ZBB-NEXT:    call bcmp2384; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2385; CHECK-UNALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162386; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret2387;2388; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_127:2389; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry2390; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162391; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2392; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a2, 1272393; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    call bcmp2394; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2395; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162396; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret2397;2398; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_127:2399; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry2400; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162401; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2402; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a2, 1272403; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    call bcmp2404; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2405; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162406; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret2407;2408; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_127:2409; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry2410; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 1272411; CHECK-UNALIGNED-RV32-V-NEXT:    vsetvli zero, a2, e8, m8, ta, ma2412; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)2413; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v16, (a1)2414; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v24, v8, v162415; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v242416; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a02417; CHECK-UNALIGNED-RV32-V-NEXT:    ret2418;2419; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_127:2420; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry2421; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 1272422; CHECK-UNALIGNED-RV64-V-NEXT:    vsetvli zero, a2, e8, m8, ta, ma2423; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)2424; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v16, (a1)2425; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v24, v8, v162426; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v242427; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a02428; CHECK-UNALIGNED-RV64-V-NEXT:    ret2429entry:2430  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 127)2431  ret i32 %bcmp2432}2433 2434define i32 @bcmp_size_128(ptr %s1, ptr %s2) nounwind optsize {2435; CHECK-ALIGNED-RV32-LABEL: bcmp_size_128:2436; CHECK-ALIGNED-RV32:       # %bb.0: # %entry2437; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -162438; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2439; CHECK-ALIGNED-RV32-NEXT:    li a2, 1282440; CHECK-ALIGNED-RV32-NEXT:    call bcmp2441; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2442; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 162443; CHECK-ALIGNED-RV32-NEXT:    ret2444;2445; CHECK-ALIGNED-RV64-LABEL: bcmp_size_128:2446; CHECK-ALIGNED-RV64:       # %bb.0: # %entry2447; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -162448; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2449; CHECK-ALIGNED-RV64-NEXT:    li a2, 1282450; CHECK-ALIGNED-RV64-NEXT:    call bcmp2451; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2452; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 162453; CHECK-ALIGNED-RV64-NEXT:    ret2454;2455; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_size_128:2456; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry2457; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162458; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2459; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 1282460; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp2461; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2462; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162463; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret2464;2465; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_size_128:2466; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry2467; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162468; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2469; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 1282470; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp2471; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2472; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162473; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret2474;2475; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_size_128:2476; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry2477; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162478; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2479; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 1282480; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp2481; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2482; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162483; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret2484;2485; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_size_128:2486; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry2487; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162488; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2489; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 1282490; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp2491; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2492; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162493; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret2494;2495; CHECK-ALIGNED-RV32-V-LABEL: bcmp_size_128:2496; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry2497; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -162498; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2499; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 1282500; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp2501; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2502; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 162503; CHECK-ALIGNED-RV32-V-NEXT:    ret2504;2505; CHECK-ALIGNED-RV64-V-LABEL: bcmp_size_128:2506; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry2507; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -162508; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2509; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 1282510; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp2511; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2512; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 162513; CHECK-ALIGNED-RV64-V-NEXT:    ret2514;2515; CHECK-UNALIGNED-RV32-LABEL: bcmp_size_128:2516; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry2517; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -162518; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2519; CHECK-UNALIGNED-RV32-NEXT:    li a2, 1282520; CHECK-UNALIGNED-RV32-NEXT:    call bcmp2521; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2522; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 162523; CHECK-UNALIGNED-RV32-NEXT:    ret2524;2525; CHECK-UNALIGNED-RV64-LABEL: bcmp_size_128:2526; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry2527; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -162528; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2529; CHECK-UNALIGNED-RV64-NEXT:    li a2, 1282530; CHECK-UNALIGNED-RV64-NEXT:    call bcmp2531; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2532; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 162533; CHECK-UNALIGNED-RV64-NEXT:    ret2534;2535; CHECK-UNALIGNED-RV32-ZBB-LABEL: bcmp_size_128:2536; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry2537; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162538; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2539; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a2, 1282540; CHECK-UNALIGNED-RV32-ZBB-NEXT:    call bcmp2541; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2542; CHECK-UNALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162543; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret2544;2545; CHECK-UNALIGNED-RV64-ZBB-LABEL: bcmp_size_128:2546; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry2547; CHECK-UNALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162548; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2549; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a2, 1282550; CHECK-UNALIGNED-RV64-ZBB-NEXT:    call bcmp2551; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2552; CHECK-UNALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162553; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret2554;2555; CHECK-UNALIGNED-RV32-ZBKB-LABEL: bcmp_size_128:2556; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry2557; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162558; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2559; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a2, 1282560; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    call bcmp2561; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2562; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162563; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret2564;2565; CHECK-UNALIGNED-RV64-ZBKB-LABEL: bcmp_size_128:2566; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry2567; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162568; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2569; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a2, 1282570; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    call bcmp2571; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2572; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162573; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret2574;2575; CHECK-UNALIGNED-RV32-V-LABEL: bcmp_size_128:2576; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry2577; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 1282578; CHECK-UNALIGNED-RV32-V-NEXT:    vsetvli zero, a2, e8, m8, ta, ma2579; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v8, (a0)2580; CHECK-UNALIGNED-RV32-V-NEXT:    vle8.v v16, (a1)2581; CHECK-UNALIGNED-RV32-V-NEXT:    vmsne.vv v24, v8, v162582; CHECK-UNALIGNED-RV32-V-NEXT:    vcpop.m a0, v242583; CHECK-UNALIGNED-RV32-V-NEXT:    snez a0, a02584; CHECK-UNALIGNED-RV32-V-NEXT:    ret2585;2586; CHECK-UNALIGNED-RV64-V-LABEL: bcmp_size_128:2587; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry2588; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 1282589; CHECK-UNALIGNED-RV64-V-NEXT:    vsetvli zero, a2, e8, m8, ta, ma2590; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v8, (a0)2591; CHECK-UNALIGNED-RV64-V-NEXT:    vle8.v v16, (a1)2592; CHECK-UNALIGNED-RV64-V-NEXT:    vmsne.vv v24, v8, v162593; CHECK-UNALIGNED-RV64-V-NEXT:    vcpop.m a0, v242594; CHECK-UNALIGNED-RV64-V-NEXT:    snez a0, a02595; CHECK-UNALIGNED-RV64-V-NEXT:    ret2596entry:2597  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 128)2598  ret i32 %bcmp2599}2600 2601define i32 @bcmp_size_runtime(ptr %s1, ptr %s2, iXLen %len) nounwind optsize {2602; CHECK-RV32-LABEL: bcmp_size_runtime:2603; CHECK-RV32:       # %bb.0: # %entry2604; CHECK-RV32-NEXT:    addi sp, sp, -162605; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2606; CHECK-RV32-NEXT:    call bcmp2607; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2608; CHECK-RV32-NEXT:    addi sp, sp, 162609; CHECK-RV32-NEXT:    ret2610;2611; CHECK-RV64-LABEL: bcmp_size_runtime:2612; CHECK-RV64:       # %bb.0: # %entry2613; CHECK-RV64-NEXT:    addi sp, sp, -162614; CHECK-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2615; CHECK-RV64-NEXT:    call bcmp2616; CHECK-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2617; CHECK-RV64-NEXT:    addi sp, sp, 162618; CHECK-RV64-NEXT:    ret2619entry:2620  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen %len)2621  ret i32 %bcmp2622}2623 2624define i1 @bcmp_eq_zero(ptr %s1, ptr %s2) nounwind optsize {2625; CHECK-ALIGNED-RV32-LABEL: bcmp_eq_zero:2626; CHECK-ALIGNED-RV32:       # %bb.0: # %entry2627; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -162628; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2629; CHECK-ALIGNED-RV32-NEXT:    li a2, 42630; CHECK-ALIGNED-RV32-NEXT:    call bcmp2631; CHECK-ALIGNED-RV32-NEXT:    seqz a0, a02632; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2633; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 162634; CHECK-ALIGNED-RV32-NEXT:    ret2635;2636; CHECK-ALIGNED-RV64-LABEL: bcmp_eq_zero:2637; CHECK-ALIGNED-RV64:       # %bb.0: # %entry2638; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -162639; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2640; CHECK-ALIGNED-RV64-NEXT:    li a2, 42641; CHECK-ALIGNED-RV64-NEXT:    call bcmp2642; CHECK-ALIGNED-RV64-NEXT:    seqz a0, a02643; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2644; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 162645; CHECK-ALIGNED-RV64-NEXT:    ret2646;2647; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_eq_zero:2648; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry2649; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162650; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2651; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 42652; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp2653; CHECK-ALIGNED-RV32-ZBB-NEXT:    seqz a0, a02654; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2655; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162656; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret2657;2658; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_eq_zero:2659; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry2660; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162661; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2662; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 42663; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp2664; CHECK-ALIGNED-RV64-ZBB-NEXT:    seqz a0, a02665; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2666; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162667; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret2668;2669; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_eq_zero:2670; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry2671; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162672; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2673; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 42674; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp2675; CHECK-ALIGNED-RV32-ZBKB-NEXT:    seqz a0, a02676; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2677; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162678; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret2679;2680; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_eq_zero:2681; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry2682; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162683; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2684; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 42685; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp2686; CHECK-ALIGNED-RV64-ZBKB-NEXT:    seqz a0, a02687; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2688; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162689; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret2690;2691; CHECK-ALIGNED-RV32-V-LABEL: bcmp_eq_zero:2692; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry2693; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -162694; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2695; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 42696; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp2697; CHECK-ALIGNED-RV32-V-NEXT:    seqz a0, a02698; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2699; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 162700; CHECK-ALIGNED-RV32-V-NEXT:    ret2701;2702; CHECK-ALIGNED-RV64-V-LABEL: bcmp_eq_zero:2703; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry2704; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -162705; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2706; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 42707; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp2708; CHECK-ALIGNED-RV64-V-NEXT:    seqz a0, a02709; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2710; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 162711; CHECK-ALIGNED-RV64-V-NEXT:    ret2712;2713; CHECK-UNALIGNED-LABEL: bcmp_eq_zero:2714; CHECK-UNALIGNED:       # %bb.0: # %entry2715; CHECK-UNALIGNED-NEXT:    lw a0, 0(a0)2716; CHECK-UNALIGNED-NEXT:    lw a1, 0(a1)2717; CHECK-UNALIGNED-NEXT:    xor a0, a0, a12718; CHECK-UNALIGNED-NEXT:    seqz a0, a02719; CHECK-UNALIGNED-NEXT:    ret2720entry:2721  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4)2722  %ret = icmp eq i32 %bcmp, 02723  ret i1 %ret2724}2725 2726define i1 @bcmp_lt_zero(ptr %s1, ptr %s2) nounwind optsize {2727; CHECK-ALIGNED-RV32-LABEL: bcmp_lt_zero:2728; CHECK-ALIGNED-RV32:       # %bb.0: # %entry2729; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -162730; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2731; CHECK-ALIGNED-RV32-NEXT:    li a2, 42732; CHECK-ALIGNED-RV32-NEXT:    call bcmp2733; CHECK-ALIGNED-RV32-NEXT:    srli a0, a0, 312734; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2735; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 162736; CHECK-ALIGNED-RV32-NEXT:    ret2737;2738; CHECK-ALIGNED-RV64-LABEL: bcmp_lt_zero:2739; CHECK-ALIGNED-RV64:       # %bb.0: # %entry2740; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -162741; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2742; CHECK-ALIGNED-RV64-NEXT:    li a2, 42743; CHECK-ALIGNED-RV64-NEXT:    call bcmp2744; CHECK-ALIGNED-RV64-NEXT:    srli a0, a0, 632745; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2746; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 162747; CHECK-ALIGNED-RV64-NEXT:    ret2748;2749; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_lt_zero:2750; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry2751; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162752; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2753; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 42754; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp2755; CHECK-ALIGNED-RV32-ZBB-NEXT:    srli a0, a0, 312756; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2757; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162758; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret2759;2760; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_lt_zero:2761; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry2762; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162763; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2764; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 42765; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp2766; CHECK-ALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 632767; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2768; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162769; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret2770;2771; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_lt_zero:2772; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry2773; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162774; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2775; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 42776; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp2777; CHECK-ALIGNED-RV32-ZBKB-NEXT:    srli a0, a0, 312778; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2779; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162780; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret2781;2782; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_lt_zero:2783; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry2784; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162785; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2786; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 42787; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp2788; CHECK-ALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 632789; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2790; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162791; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret2792;2793; CHECK-ALIGNED-RV32-V-LABEL: bcmp_lt_zero:2794; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry2795; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -162796; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2797; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 42798; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp2799; CHECK-ALIGNED-RV32-V-NEXT:    srli a0, a0, 312800; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2801; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 162802; CHECK-ALIGNED-RV32-V-NEXT:    ret2803;2804; CHECK-ALIGNED-RV64-V-LABEL: bcmp_lt_zero:2805; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry2806; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -162807; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2808; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 42809; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp2810; CHECK-ALIGNED-RV64-V-NEXT:    srli a0, a0, 632811; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2812; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 162813; CHECK-ALIGNED-RV64-V-NEXT:    ret2814;2815; CHECK-UNALIGNED-LABEL: bcmp_lt_zero:2816; CHECK-UNALIGNED:       # %bb.0: # %entry2817; CHECK-UNALIGNED-NEXT:    li a0, 02818; CHECK-UNALIGNED-NEXT:    ret2819entry:2820  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4)2821  %ret = icmp slt i32 %bcmp, 02822  ret i1 %ret2823}2824 2825define i1 @bcmp_gt_zero(ptr %s1, ptr %s2) nounwind optsize {2826; CHECK-ALIGNED-RV32-LABEL: bcmp_gt_zero:2827; CHECK-ALIGNED-RV32:       # %bb.0: # %entry2828; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -162829; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2830; CHECK-ALIGNED-RV32-NEXT:    li a2, 42831; CHECK-ALIGNED-RV32-NEXT:    call bcmp2832; CHECK-ALIGNED-RV32-NEXT:    sgtz a0, a02833; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2834; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 162835; CHECK-ALIGNED-RV32-NEXT:    ret2836;2837; CHECK-ALIGNED-RV64-LABEL: bcmp_gt_zero:2838; CHECK-ALIGNED-RV64:       # %bb.0: # %entry2839; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -162840; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2841; CHECK-ALIGNED-RV64-NEXT:    li a2, 42842; CHECK-ALIGNED-RV64-NEXT:    call bcmp2843; CHECK-ALIGNED-RV64-NEXT:    sgtz a0, a02844; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2845; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 162846; CHECK-ALIGNED-RV64-NEXT:    ret2847;2848; CHECK-ALIGNED-RV32-ZBB-LABEL: bcmp_gt_zero:2849; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry2850; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162851; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2852; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 42853; CHECK-ALIGNED-RV32-ZBB-NEXT:    call bcmp2854; CHECK-ALIGNED-RV32-ZBB-NEXT:    sgtz a0, a02855; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2856; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162857; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret2858;2859; CHECK-ALIGNED-RV64-ZBB-LABEL: bcmp_gt_zero:2860; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry2861; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162862; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2863; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 42864; CHECK-ALIGNED-RV64-ZBB-NEXT:    call bcmp2865; CHECK-ALIGNED-RV64-ZBB-NEXT:    sgtz a0, a02866; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2867; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162868; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret2869;2870; CHECK-ALIGNED-RV32-ZBKB-LABEL: bcmp_gt_zero:2871; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry2872; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162873; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2874; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 42875; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call bcmp2876; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sgtz a0, a02877; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2878; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162879; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret2880;2881; CHECK-ALIGNED-RV64-ZBKB-LABEL: bcmp_gt_zero:2882; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry2883; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162884; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2885; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 42886; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call bcmp2887; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sgtz a0, a02888; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2889; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162890; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret2891;2892; CHECK-ALIGNED-RV32-V-LABEL: bcmp_gt_zero:2893; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry2894; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -162895; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2896; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 42897; CHECK-ALIGNED-RV32-V-NEXT:    call bcmp2898; CHECK-ALIGNED-RV32-V-NEXT:    sgtz a0, a02899; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2900; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 162901; CHECK-ALIGNED-RV32-V-NEXT:    ret2902;2903; CHECK-ALIGNED-RV64-V-LABEL: bcmp_gt_zero:2904; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry2905; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -162906; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2907; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 42908; CHECK-ALIGNED-RV64-V-NEXT:    call bcmp2909; CHECK-ALIGNED-RV64-V-NEXT:    sgtz a0, a02910; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2911; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 162912; CHECK-ALIGNED-RV64-V-NEXT:    ret2913;2914; CHECK-UNALIGNED-LABEL: bcmp_gt_zero:2915; CHECK-UNALIGNED:       # %bb.0: # %entry2916; CHECK-UNALIGNED-NEXT:    lw a0, 0(a0)2917; CHECK-UNALIGNED-NEXT:    lw a1, 0(a1)2918; CHECK-UNALIGNED-NEXT:    xor a0, a0, a12919; CHECK-UNALIGNED-NEXT:    snez a0, a02920; CHECK-UNALIGNED-NEXT:    ret2921entry:2922  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iXLen 4)2923  %ret = icmp sgt i32 %bcmp, 02924  ret i1 %ret2925}2926 2927define i32 @memcmp_size_0(ptr %s1, ptr %s2) nounwind optsize {2928; CHECK-LABEL: memcmp_size_0:2929; CHECK:       # %bb.0: # %entry2930; CHECK-NEXT:    li a0, 02931; CHECK-NEXT:    ret2932entry:2933  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 0)2934  ret i32 %memcmp2935}2936 2937define i32 @memcmp_size_1(ptr %s1, ptr %s2) nounwind optsize {2938; CHECK-ALIGNED-RV32-LABEL: memcmp_size_1:2939; CHECK-ALIGNED-RV32:       # %bb.0: # %entry2940; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -162941; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2942; CHECK-ALIGNED-RV32-NEXT:    li a2, 12943; CHECK-ALIGNED-RV32-NEXT:    call memcmp2944; 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: memcmp_size_1: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, 12953; CHECK-ALIGNED-RV64-NEXT:    call memcmp2954; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2955; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 162956; CHECK-ALIGNED-RV64-NEXT:    ret2957;2958; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_1:2959; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry2960; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -162961; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2962; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 12963; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp2964; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2965; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 162966; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret2967;2968; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_1:2969; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry2970; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -162971; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2972; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 12973; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp2974; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2975; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 162976; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret2977;2978; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_1:2979; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry2980; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -162981; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill2982; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 12983; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp2984; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload2985; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 162986; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret2987;2988; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_1:2989; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry2990; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -162991; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill2992; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 12993; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp2994; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload2995; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 162996; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret2997;2998; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_1:2999; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3000; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163001; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3002; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 13003; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp3004; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3005; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163006; CHECK-ALIGNED-RV32-V-NEXT:    ret3007;3008; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_1:3009; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3010; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163011; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3012; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 13013; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp3014; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3015; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163016; CHECK-ALIGNED-RV64-V-NEXT:    ret3017;3018; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_1:3019; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry3020; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -163021; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3022; CHECK-UNALIGNED-RV32-NEXT:    li a2, 13023; CHECK-UNALIGNED-RV32-NEXT:    call memcmp3024; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3025; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 163026; CHECK-UNALIGNED-RV32-NEXT:    ret3027;3028; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_1:3029; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry3030; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -163031; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3032; CHECK-UNALIGNED-RV64-NEXT:    li a2, 13033; CHECK-UNALIGNED-RV64-NEXT:    call memcmp3034; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3035; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 163036; CHECK-UNALIGNED-RV64-NEXT:    ret3037;3038; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_1:3039; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry3040; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a0, 0(a0)3041; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a1, 0(a1)3042; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sub a0, a0, a13043; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret3044;3045; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_1:3046; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry3047; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a0, 0(a0)3048; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a1, 0(a1)3049; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a13050; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret3051;3052; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_1:3053; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry3054; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a0, 0(a0)3055; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a1, 0(a1)3056; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sub a0, a0, a13057; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret3058;3059; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_1:3060; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry3061; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a0, 0(a0)3062; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a1, 0(a1)3063; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a13064; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret3065;3066; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_1:3067; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry3068; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -163069; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3070; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 13071; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp3072; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3073; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 163074; CHECK-UNALIGNED-RV32-V-NEXT:    ret3075;3076; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_1:3077; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry3078; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -163079; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3080; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 13081; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp3082; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3083; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 163084; CHECK-UNALIGNED-RV64-V-NEXT:    ret3085entry:3086  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 1)3087  ret i32 %memcmp3088}3089 3090define i32 @memcmp_size_2(ptr %s1, ptr %s2) nounwind optsize {3091; CHECK-ALIGNED-RV32-LABEL: memcmp_size_2:3092; CHECK-ALIGNED-RV32:       # %bb.0: # %entry3093; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -163094; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3095; CHECK-ALIGNED-RV32-NEXT:    li a2, 23096; CHECK-ALIGNED-RV32-NEXT:    call memcmp3097; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3098; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 163099; CHECK-ALIGNED-RV32-NEXT:    ret3100;3101; CHECK-ALIGNED-RV64-LABEL: memcmp_size_2:3102; CHECK-ALIGNED-RV64:       # %bb.0: # %entry3103; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -163104; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3105; CHECK-ALIGNED-RV64-NEXT:    li a2, 23106; CHECK-ALIGNED-RV64-NEXT:    call memcmp3107; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3108; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 163109; CHECK-ALIGNED-RV64-NEXT:    ret3110;3111; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_2:3112; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry3113; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -163114; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3115; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 23116; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp3117; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3118; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 163119; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret3120;3121; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_2:3122; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry3123; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -163124; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3125; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 23126; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp3127; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3128; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 163129; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret3130;3131; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_2:3132; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry3133; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -163134; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3135; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 23136; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp3137; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3138; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 163139; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret3140;3141; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_2:3142; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry3143; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -163144; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3145; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 23146; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp3147; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3148; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163149; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3150;3151; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_2:3152; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3153; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163154; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3155; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 23156; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp3157; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3158; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163159; CHECK-ALIGNED-RV32-V-NEXT:    ret3160;3161; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_2:3162; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3163; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163164; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3165; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 23166; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp3167; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3168; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163169; CHECK-ALIGNED-RV64-V-NEXT:    ret3170;3171; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_2:3172; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry3173; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -163174; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3175; CHECK-UNALIGNED-RV32-NEXT:    li a2, 23176; CHECK-UNALIGNED-RV32-NEXT:    call memcmp3177; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3178; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 163179; CHECK-UNALIGNED-RV32-NEXT:    ret3180;3181; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_2:3182; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry3183; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -163184; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3185; CHECK-UNALIGNED-RV64-NEXT:    li a2, 23186; CHECK-UNALIGNED-RV64-NEXT:    call memcmp3187; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3188; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 163189; CHECK-UNALIGNED-RV64-NEXT:    ret3190;3191; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_2:3192; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry3193; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lh a0, 0(a0)3194; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lh a1, 0(a1)3195; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a0, a03196; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a1, a13197; CHECK-UNALIGNED-RV32-ZBB-NEXT:    srli a0, a0, 163198; CHECK-UNALIGNED-RV32-ZBB-NEXT:    srli a1, a1, 163199; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sub a0, a0, a13200; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret3201;3202; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_2:3203; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry3204; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lh a0, 0(a0)3205; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lh a1, 0(a1)3206; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a03207; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a13208; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 483209; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a1, a1, 483210; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a13211; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret3212;3213; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_2:3214; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry3215; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lh a0, 0(a0)3216; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lh a1, 0(a1)3217; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a0, a03218; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a1, a13219; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    srli a0, a0, 163220; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    srli a1, a1, 163221; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sub a0, a0, a13222; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret3223;3224; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_2:3225; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry3226; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lh a0, 0(a0)3227; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lh a1, 0(a1)3228; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a03229; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a13230; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 483231; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a1, a1, 483232; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a13233; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret3234;3235; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_2:3236; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry3237; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -163238; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3239; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 23240; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp3241; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3242; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 163243; CHECK-UNALIGNED-RV32-V-NEXT:    ret3244;3245; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_2:3246; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry3247; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -163248; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3249; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 23250; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp3251; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3252; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 163253; CHECK-UNALIGNED-RV64-V-NEXT:    ret3254entry:3255  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 2)3256  ret i32 %memcmp3257}3258 3259define i32 @memcmp_size_3(ptr %s1, ptr %s2) nounwind optsize {3260; CHECK-ALIGNED-RV32-LABEL: memcmp_size_3:3261; CHECK-ALIGNED-RV32:       # %bb.0: # %entry3262; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -163263; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3264; CHECK-ALIGNED-RV32-NEXT:    li a2, 33265; CHECK-ALIGNED-RV32-NEXT:    call memcmp3266; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3267; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 163268; CHECK-ALIGNED-RV32-NEXT:    ret3269;3270; CHECK-ALIGNED-RV64-LABEL: memcmp_size_3:3271; CHECK-ALIGNED-RV64:       # %bb.0: # %entry3272; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -163273; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3274; CHECK-ALIGNED-RV64-NEXT:    li a2, 33275; CHECK-ALIGNED-RV64-NEXT:    call memcmp3276; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3277; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 163278; CHECK-ALIGNED-RV64-NEXT:    ret3279;3280; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_3:3281; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry3282; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -163283; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3284; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 33285; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp3286; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3287; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 163288; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret3289;3290; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_3:3291; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry3292; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -163293; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3294; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 33295; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp3296; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3297; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 163298; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret3299;3300; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_3:3301; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry3302; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -163303; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3304; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 33305; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp3306; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3307; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 163308; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret3309;3310; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_3:3311; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry3312; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -163313; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3314; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 33315; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp3316; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3317; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163318; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3319;3320; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_3:3321; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3322; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163323; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3324; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 33325; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp3326; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3327; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163328; CHECK-ALIGNED-RV32-V-NEXT:    ret3329;3330; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_3:3331; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3332; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163333; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3334; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 33335; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp3336; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3337; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163338; CHECK-ALIGNED-RV64-V-NEXT:    ret3339;3340; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_3:3341; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry3342; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -163343; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3344; CHECK-UNALIGNED-RV32-NEXT:    li a2, 33345; CHECK-UNALIGNED-RV32-NEXT:    call memcmp3346; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3347; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 163348; CHECK-UNALIGNED-RV32-NEXT:    ret3349;3350; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_3:3351; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry3352; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -163353; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3354; CHECK-UNALIGNED-RV64-NEXT:    li a2, 33355; CHECK-UNALIGNED-RV64-NEXT:    call memcmp3356; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3357; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 163358; CHECK-UNALIGNED-RV64-NEXT:    ret3359;3360; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_3:3361; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry3362; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a2, 2(a0)3363; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lhu a0, 0(a0)3364; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a3, 2(a1)3365; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lhu a1, 0(a1)3366; CHECK-UNALIGNED-RV32-ZBB-NEXT:    slli a2, a2, 163367; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a0, a0, a23368; CHECK-UNALIGNED-RV32-ZBB-NEXT:    slli a3, a3, 163369; CHECK-UNALIGNED-RV32-ZBB-NEXT:    or a1, a1, a33370; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a0, a03371; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a1, a13372; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a2, a0, a13373; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a1, a03374; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sub a0, a0, a23375; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret3376;3377; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_3:3378; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry3379; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a2, 2(a0)3380; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lhu a0, 0(a0)3381; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a3, 2(a1)3382; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lhu a1, 0(a1)3383; CHECK-UNALIGNED-RV64-ZBB-NEXT:    slli a2, a2, 163384; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a0, a23385; CHECK-UNALIGNED-RV64-ZBB-NEXT:    slli a3, a3, 163386; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a1, a1, a33387; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a03388; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a13389; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 323390; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a1, a1, 323391; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a2, a0, a13392; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a03393; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a23394; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret3395;3396; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_3:3397; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry3398; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lhu a2, 0(a0)3399; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a0, 2(a0)3400; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lhu a3, 0(a1)3401; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a1, 2(a1)3402; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    pack a0, a2, a03403; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    pack a1, a3, a13404; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a0, a03405; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a1, a13406; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a2, a0, a13407; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a1, a03408; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sub a0, a0, a23409; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret3410;3411; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_3:3412; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry3413; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a2, 2(a0)3414; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lhu a0, 0(a0)3415; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a3, 2(a1)3416; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lhu a1, 0(a1)3417; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    slli a2, a2, 163418; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a0, a0, a23419; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    slli a3, a3, 163420; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    or a1, a1, a33421; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a03422; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a13423; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 323424; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a1, a1, 323425; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a2, a0, a13426; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a03427; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a23428; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret3429;3430; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_3:3431; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry3432; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -163433; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3434; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 33435; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp3436; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3437; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 163438; CHECK-UNALIGNED-RV32-V-NEXT:    ret3439;3440; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_3:3441; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry3442; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -163443; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3444; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 33445; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp3446; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3447; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 163448; CHECK-UNALIGNED-RV64-V-NEXT:    ret3449entry:3450  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 3)3451  ret i32 %memcmp3452}3453 3454define i32 @memcmp_size_4(ptr %s1, ptr %s2) nounwind optsize {3455; CHECK-ALIGNED-RV32-LABEL: memcmp_size_4:3456; CHECK-ALIGNED-RV32:       # %bb.0: # %entry3457; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -163458; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3459; CHECK-ALIGNED-RV32-NEXT:    li a2, 43460; CHECK-ALIGNED-RV32-NEXT:    call memcmp3461; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3462; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 163463; CHECK-ALIGNED-RV32-NEXT:    ret3464;3465; CHECK-ALIGNED-RV64-LABEL: memcmp_size_4:3466; CHECK-ALIGNED-RV64:       # %bb.0: # %entry3467; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -163468; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3469; CHECK-ALIGNED-RV64-NEXT:    li a2, 43470; CHECK-ALIGNED-RV64-NEXT:    call memcmp3471; 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: memcmp_size_4: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 memcmp3481; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3482; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 163483; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret3484;3485; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_4:3486; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry3487; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -163488; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3489; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 43490; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp3491; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3492; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 163493; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret3494;3495; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_4:3496; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry3497; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -163498; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3499; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 43500; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp3501; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3502; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 163503; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret3504;3505; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_4:3506; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry3507; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -163508; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3509; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 43510; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp3511; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3512; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163513; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3514;3515; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_4:3516; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3517; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163518; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3519; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 43520; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp3521; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3522; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163523; CHECK-ALIGNED-RV32-V-NEXT:    ret3524;3525; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_4:3526; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3527; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163528; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3529; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 43530; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp3531; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3532; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163533; CHECK-ALIGNED-RV64-V-NEXT:    ret3534;3535; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_4:3536; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry3537; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -163538; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3539; CHECK-UNALIGNED-RV32-NEXT:    li a2, 43540; CHECK-UNALIGNED-RV32-NEXT:    call memcmp3541; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3542; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 163543; CHECK-UNALIGNED-RV32-NEXT:    ret3544;3545; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_4:3546; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry3547; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -163548; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3549; CHECK-UNALIGNED-RV64-NEXT:    li a2, 43550; CHECK-UNALIGNED-RV64-NEXT:    call memcmp3551; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3552; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 163553; CHECK-UNALIGNED-RV64-NEXT:    ret3554;3555; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_4:3556; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry3557; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 0(a0)3558; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 0(a1)3559; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a0, a03560; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a1, a13561; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a2, a0, a13562; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a1, a03563; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sub a0, a0, a23564; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret3565;3566; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_4:3567; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry3568; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a0, 0(a0)3569; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a1, 0(a1)3570; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a03571; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a13572; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 323573; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a1, a1, 323574; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a2, a0, a13575; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a03576; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a23577; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret3578;3579; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_4:3580; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry3581; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 0(a0)3582; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 0(a1)3583; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a0, a03584; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a1, a13585; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a2, a0, a13586; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a1, a03587; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sub a0, a0, a23588; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret3589;3590; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_4:3591; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry3592; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a0, 0(a0)3593; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a1, 0(a1)3594; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a03595; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a13596; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 323597; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a1, a1, 323598; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a2, a0, a13599; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a03600; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a23601; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret3602;3603; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_4:3604; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry3605; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -163606; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3607; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 43608; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp3609; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3610; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 163611; CHECK-UNALIGNED-RV32-V-NEXT:    ret3612;3613; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_4:3614; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry3615; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -163616; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3617; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 43618; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp3619; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3620; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 163621; CHECK-UNALIGNED-RV64-V-NEXT:    ret3622entry:3623  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4)3624  ret i32 %memcmp3625}3626 3627define i32 @memcmp_size_5(ptr %s1, ptr %s2) nounwind optsize {3628; CHECK-ALIGNED-RV32-LABEL: memcmp_size_5:3629; CHECK-ALIGNED-RV32:       # %bb.0: # %entry3630; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -163631; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3632; CHECK-ALIGNED-RV32-NEXT:    li a2, 53633; CHECK-ALIGNED-RV32-NEXT:    call memcmp3634; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3635; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 163636; CHECK-ALIGNED-RV32-NEXT:    ret3637;3638; CHECK-ALIGNED-RV64-LABEL: memcmp_size_5:3639; CHECK-ALIGNED-RV64:       # %bb.0: # %entry3640; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -163641; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3642; CHECK-ALIGNED-RV64-NEXT:    li a2, 53643; CHECK-ALIGNED-RV64-NEXT:    call memcmp3644; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3645; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 163646; CHECK-ALIGNED-RV64-NEXT:    ret3647;3648; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_5:3649; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry3650; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -163651; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3652; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 53653; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp3654; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3655; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 163656; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret3657;3658; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_5:3659; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry3660; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -163661; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3662; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 53663; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp3664; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3665; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 163666; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret3667;3668; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_5:3669; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry3670; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -163671; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3672; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 53673; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp3674; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3675; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 163676; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret3677;3678; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_5:3679; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry3680; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -163681; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3682; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 53683; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp3684; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3685; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163686; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3687;3688; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_5:3689; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3690; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163691; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3692; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 53693; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp3694; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3695; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163696; CHECK-ALIGNED-RV32-V-NEXT:    ret3697;3698; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_5:3699; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3700; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163701; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3702; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 53703; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp3704; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3705; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163706; CHECK-ALIGNED-RV64-V-NEXT:    ret3707;3708; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_5:3709; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry3710; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -163711; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3712; CHECK-UNALIGNED-RV32-NEXT:    li a2, 53713; CHECK-UNALIGNED-RV32-NEXT:    call memcmp3714; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3715; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 163716; CHECK-UNALIGNED-RV32-NEXT:    ret3717;3718; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_5:3719; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry3720; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -163721; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3722; CHECK-UNALIGNED-RV64-NEXT:    li a2, 53723; CHECK-UNALIGNED-RV64-NEXT:    call memcmp3724; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3725; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 163726; CHECK-UNALIGNED-RV64-NEXT:    ret3727;3728; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_5:3729; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry3730; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)3731; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)3732; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a23733; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a33734; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB26_23735; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb13736; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a0, 4(a0)3737; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lbu a1, 4(a1)3738; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sub a0, a0, a13739; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret3740; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB26_2: # %res_block3741; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a33742; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a03743; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 13744; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret3745;3746; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_5:3747; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry3748; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a2, 4(a0)3749; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lwu a0, 0(a0)3750; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lbu a3, 4(a1)3751; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lwu a1, 0(a1)3752; CHECK-UNALIGNED-RV64-ZBB-NEXT:    slli a2, a2, 323753; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a0, a23754; CHECK-UNALIGNED-RV64-ZBB-NEXT:    slli a3, a3, 323755; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a1, a1, a33756; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a03757; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a13758; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a2, a0, a13759; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a03760; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a23761; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret3762;3763; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_5:3764; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry3765; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)3766; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)3767; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a23768; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a33769; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB26_23770; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb13771; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a0, 4(a0)3772; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lbu a1, 4(a1)3773; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sub a0, a0, a13774; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret3775; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB26_2: # %res_block3776; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a33777; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a03778; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 13779; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret3780;3781; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_5:3782; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry3783; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a2, 0(a0)3784; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a0, 4(a0)3785; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a3, 0(a1)3786; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lbu a1, 4(a1)3787; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    pack a0, a2, a03788; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    pack a1, a3, a13789; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a03790; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a13791; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a2, a0, a13792; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a03793; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a23794; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret3795;3796; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_5:3797; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry3798; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -163799; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3800; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 53801; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp3802; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3803; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 163804; CHECK-UNALIGNED-RV32-V-NEXT:    ret3805;3806; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_5:3807; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry3808; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -163809; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3810; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 53811; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp3812; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3813; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 163814; CHECK-UNALIGNED-RV64-V-NEXT:    ret3815entry:3816  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 5)3817  ret i32 %memcmp3818}3819 3820define i32 @memcmp_size_6(ptr %s1, ptr %s2) nounwind optsize {3821; CHECK-ALIGNED-RV32-LABEL: memcmp_size_6:3822; CHECK-ALIGNED-RV32:       # %bb.0: # %entry3823; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -163824; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3825; CHECK-ALIGNED-RV32-NEXT:    li a2, 63826; CHECK-ALIGNED-RV32-NEXT:    call memcmp3827; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3828; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 163829; CHECK-ALIGNED-RV32-NEXT:    ret3830;3831; CHECK-ALIGNED-RV64-LABEL: memcmp_size_6:3832; CHECK-ALIGNED-RV64:       # %bb.0: # %entry3833; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -163834; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3835; CHECK-ALIGNED-RV64-NEXT:    li a2, 63836; CHECK-ALIGNED-RV64-NEXT:    call memcmp3837; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3838; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 163839; CHECK-ALIGNED-RV64-NEXT:    ret3840;3841; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_6:3842; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry3843; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -163844; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3845; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 63846; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp3847; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3848; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 163849; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret3850;3851; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_6:3852; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry3853; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -163854; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3855; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 63856; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp3857; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3858; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 163859; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret3860;3861; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_6:3862; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry3863; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -163864; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3865; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 63866; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp3867; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3868; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 163869; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret3870;3871; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_6:3872; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry3873; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -163874; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3875; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 63876; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp3877; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3878; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 163879; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret3880;3881; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_6:3882; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry3883; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -163884; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3885; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 63886; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp3887; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3888; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 163889; CHECK-ALIGNED-RV32-V-NEXT:    ret3890;3891; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_6:3892; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry3893; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -163894; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3895; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 63896; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp3897; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3898; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 163899; CHECK-ALIGNED-RV64-V-NEXT:    ret3900;3901; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_6:3902; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry3903; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -163904; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill3905; CHECK-UNALIGNED-RV32-NEXT:    li a2, 63906; CHECK-UNALIGNED-RV32-NEXT:    call memcmp3907; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload3908; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 163909; CHECK-UNALIGNED-RV32-NEXT:    ret3910;3911; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_6:3912; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry3913; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -163914; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill3915; CHECK-UNALIGNED-RV64-NEXT:    li a2, 63916; CHECK-UNALIGNED-RV64-NEXT:    call memcmp3917; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload3918; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 163919; CHECK-UNALIGNED-RV64-NEXT:    ret3920;3921; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_6:3922; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry3923; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)3924; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)3925; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a23926; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a33927; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB27_33928; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb13929; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lh a0, 4(a0)3930; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lh a1, 4(a1)3931; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a03932; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a13933; CHECK-UNALIGNED-RV32-ZBB-NEXT:    srli a2, a2, 163934; CHECK-UNALIGNED-RV32-ZBB-NEXT:    srli a3, a3, 163935; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB27_33936; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.2:3937; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a0, 03938; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret3939; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB27_3: # %res_block3940; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a33941; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a03942; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 13943; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret3944;3945; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_6:3946; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry3947; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lhu a2, 4(a0)3948; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lwu a0, 0(a0)3949; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lhu a3, 4(a1)3950; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lwu a1, 0(a1)3951; CHECK-UNALIGNED-RV64-ZBB-NEXT:    slli a2, a2, 323952; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a0, a0, a23953; CHECK-UNALIGNED-RV64-ZBB-NEXT:    slli a3, a3, 323954; CHECK-UNALIGNED-RV64-ZBB-NEXT:    or a1, a1, a33955; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a03956; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a13957; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a2, a0, a13958; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a03959; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a23960; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret3961;3962; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_6:3963; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry3964; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)3965; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)3966; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a23967; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a33968; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB27_33969; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb13970; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lh a0, 4(a0)3971; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lh a1, 4(a1)3972; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a03973; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a13974; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    srli a2, a2, 163975; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    srli a3, a3, 163976; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB27_33977; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.2:3978; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a0, 03979; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret3980; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB27_3: # %res_block3981; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a33982; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a03983; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 13984; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret3985;3986; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_6:3987; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry3988; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a2, 0(a0)3989; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lhu a0, 4(a0)3990; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a3, 0(a1)3991; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lhu a1, 4(a1)3992; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    pack a0, a2, a03993; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    pack a1, a3, a13994; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a03995; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a13996; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a2, a0, a13997; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a03998; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a23999; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4000;4001; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_6:4002; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry4003; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -164004; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4005; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 64006; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp4007; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4008; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 164009; CHECK-UNALIGNED-RV32-V-NEXT:    ret4010;4011; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_6:4012; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry4013; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -164014; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4015; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 64016; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp4017; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4018; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 164019; CHECK-UNALIGNED-RV64-V-NEXT:    ret4020entry:4021  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 6)4022  ret i32 %memcmp4023}4024 4025define i32 @memcmp_size_7(ptr %s1, ptr %s2) nounwind optsize {4026; CHECK-ALIGNED-RV32-LABEL: memcmp_size_7:4027; CHECK-ALIGNED-RV32:       # %bb.0: # %entry4028; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -164029; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4030; CHECK-ALIGNED-RV32-NEXT:    li a2, 74031; CHECK-ALIGNED-RV32-NEXT:    call memcmp4032; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4033; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 164034; CHECK-ALIGNED-RV32-NEXT:    ret4035;4036; CHECK-ALIGNED-RV64-LABEL: memcmp_size_7:4037; CHECK-ALIGNED-RV64:       # %bb.0: # %entry4038; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -164039; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4040; CHECK-ALIGNED-RV64-NEXT:    li a2, 74041; CHECK-ALIGNED-RV64-NEXT:    call memcmp4042; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4043; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 164044; CHECK-ALIGNED-RV64-NEXT:    ret4045;4046; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_7:4047; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry4048; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -164049; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4050; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 74051; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp4052; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4053; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 164054; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret4055;4056; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_7:4057; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry4058; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -164059; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4060; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 74061; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp4062; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4063; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 164064; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret4065;4066; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_7:4067; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry4068; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -164069; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4070; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 74071; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp4072; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4073; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 164074; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret4075;4076; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_7:4077; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry4078; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -164079; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4080; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 74081; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp4082; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4083; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 164084; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret4085;4086; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_7:4087; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry4088; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -164089; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4090; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 74091; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp4092; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4093; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 164094; CHECK-ALIGNED-RV32-V-NEXT:    ret4095;4096; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_7:4097; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry4098; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -164099; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4100; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 74101; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp4102; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4103; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 164104; CHECK-ALIGNED-RV64-V-NEXT:    ret4105;4106; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_7:4107; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry4108; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -164109; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4110; CHECK-UNALIGNED-RV32-NEXT:    li a2, 74111; CHECK-UNALIGNED-RV32-NEXT:    call memcmp4112; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4113; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 164114; CHECK-UNALIGNED-RV32-NEXT:    ret4115;4116; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_7:4117; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry4118; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -164119; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4120; CHECK-UNALIGNED-RV64-NEXT:    li a2, 74121; CHECK-UNALIGNED-RV64-NEXT:    call memcmp4122; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4123; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 164124; CHECK-UNALIGNED-RV64-NEXT:    ret4125;4126; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_7:4127; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry4128; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)4129; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)4130; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a24131; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a34132; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB28_34133; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb14134; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 3(a0)4135; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 3(a1)4136; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a04137; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a14138; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB28_34139; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.2:4140; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a0, 04141; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4142; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB28_3: # %res_block4143; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a34144; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a04145; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 14146; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4147;4148; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_7:4149; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry4150; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a2, 0(a0)4151; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a3, 0(a1)4152; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a24153; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a34154; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a2, a2, 324155; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a3, a3, 324156; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB28_34157; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.1: # %loadbb14158; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a0, 3(a0)4159; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a1, 3(a1)4160; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a04161; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a14162; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a2, a2, 324163; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a3, a3, 324164; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB28_34165; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.2:4166; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a0, 04167; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4168; CHECK-UNALIGNED-RV64-ZBB-NEXT:  .LBB28_3: # %res_block4169; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a2, a34170; CHECK-UNALIGNED-RV64-ZBB-NEXT:    neg a0, a04171; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ori a0, a0, 14172; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4173;4174; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_7:4175; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry4176; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)4177; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)4178; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a24179; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a34180; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB28_34181; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb14182; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 3(a0)4183; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 3(a1)4184; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a04185; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a14186; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB28_34187; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.2:4188; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a0, 04189; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4190; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB28_3: # %res_block4191; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a34192; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a04193; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 14194; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4195;4196; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_7:4197; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry4198; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a2, 0(a0)4199; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a3, 0(a1)4200; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a24201; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a34202; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a2, a2, 324203; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a3, a3, 324204; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB28_34205; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.1: # %loadbb14206; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a0, 3(a0)4207; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a1, 3(a1)4208; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a04209; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a14210; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a2, a2, 324211; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a3, a3, 324212; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB28_34213; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.2:4214; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a0, 04215; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4216; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  .LBB28_3: # %res_block4217; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a2, a34218; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    neg a0, a04219; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ori a0, a0, 14220; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4221;4222; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_7:4223; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry4224; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -164225; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4226; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 74227; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp4228; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4229; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 164230; CHECK-UNALIGNED-RV32-V-NEXT:    ret4231;4232; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_7:4233; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry4234; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -164235; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4236; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 74237; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp4238; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4239; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 164240; CHECK-UNALIGNED-RV64-V-NEXT:    ret4241entry:4242  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 7)4243  ret i32 %memcmp4244}4245 4246define i32 @memcmp_size_8(ptr %s1, ptr %s2) nounwind optsize {4247; CHECK-ALIGNED-RV32-LABEL: memcmp_size_8:4248; CHECK-ALIGNED-RV32:       # %bb.0: # %entry4249; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -164250; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4251; CHECK-ALIGNED-RV32-NEXT:    li a2, 84252; CHECK-ALIGNED-RV32-NEXT:    call memcmp4253; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4254; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 164255; CHECK-ALIGNED-RV32-NEXT:    ret4256;4257; CHECK-ALIGNED-RV64-LABEL: memcmp_size_8:4258; CHECK-ALIGNED-RV64:       # %bb.0: # %entry4259; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -164260; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4261; CHECK-ALIGNED-RV64-NEXT:    li a2, 84262; CHECK-ALIGNED-RV64-NEXT:    call memcmp4263; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4264; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 164265; CHECK-ALIGNED-RV64-NEXT:    ret4266;4267; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_8:4268; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry4269; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -164270; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4271; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 84272; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp4273; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4274; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 164275; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret4276;4277; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_8:4278; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry4279; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -164280; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4281; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 84282; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp4283; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4284; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 164285; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret4286;4287; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_8:4288; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry4289; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -164290; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4291; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 84292; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp4293; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4294; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 164295; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret4296;4297; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_8:4298; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry4299; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -164300; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4301; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 84302; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp4303; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4304; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 164305; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret4306;4307; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_8:4308; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry4309; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -164310; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4311; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 84312; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp4313; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4314; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 164315; CHECK-ALIGNED-RV32-V-NEXT:    ret4316;4317; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_8:4318; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry4319; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -164320; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4321; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 84322; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp4323; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4324; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 164325; CHECK-ALIGNED-RV64-V-NEXT:    ret4326;4327; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_8:4328; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry4329; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -164330; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4331; CHECK-UNALIGNED-RV32-NEXT:    li a2, 84332; CHECK-UNALIGNED-RV32-NEXT:    call memcmp4333; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4334; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 164335; CHECK-UNALIGNED-RV32-NEXT:    ret4336;4337; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_8:4338; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry4339; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -164340; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4341; CHECK-UNALIGNED-RV64-NEXT:    li a2, 84342; CHECK-UNALIGNED-RV64-NEXT:    call memcmp4343; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4344; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 164345; CHECK-UNALIGNED-RV64-NEXT:    ret4346;4347; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_8:4348; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry4349; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)4350; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)4351; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a24352; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a34353; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB29_34354; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb14355; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 4(a0)4356; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 4(a1)4357; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a04358; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a14359; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB29_34360; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.2:4361; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a0, 04362; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4363; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB29_3: # %res_block4364; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a34365; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a04366; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 14367; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4368;4369; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_8:4370; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry4371; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 0(a0)4372; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 0(a1)4373; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a04374; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a14375; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a2, a0, a14376; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a04377; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sub a0, a0, a24378; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4379;4380; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_8:4381; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry4382; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)4383; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)4384; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a24385; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a34386; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB29_34387; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb14388; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 4(a0)4389; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 4(a1)4390; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a04391; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a14392; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB29_34393; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.2:4394; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a0, 04395; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4396; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB29_3: # %res_block4397; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a34398; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a04399; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 14400; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4401;4402; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_8:4403; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry4404; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 0(a0)4405; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 0(a1)4406; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a04407; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a14408; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a2, a0, a14409; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a04410; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sub a0, a0, a24411; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4412;4413; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_8:4414; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry4415; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -164416; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4417; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 84418; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp4419; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4420; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 164421; CHECK-UNALIGNED-RV32-V-NEXT:    ret4422;4423; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_8:4424; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry4425; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -164426; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4427; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 84428; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp4429; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4430; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 164431; CHECK-UNALIGNED-RV64-V-NEXT:    ret4432entry:4433  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 8)4434  ret i32 %memcmp4435}4436 4437define i32 @memcmp_size_15(ptr %s1, ptr %s2) nounwind optsize {4438; CHECK-ALIGNED-RV32-LABEL: memcmp_size_15:4439; CHECK-ALIGNED-RV32:       # %bb.0: # %entry4440; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -164441; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4442; CHECK-ALIGNED-RV32-NEXT:    li a2, 154443; CHECK-ALIGNED-RV32-NEXT:    call memcmp4444; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4445; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 164446; CHECK-ALIGNED-RV32-NEXT:    ret4447;4448; CHECK-ALIGNED-RV64-LABEL: memcmp_size_15:4449; CHECK-ALIGNED-RV64:       # %bb.0: # %entry4450; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -164451; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4452; CHECK-ALIGNED-RV64-NEXT:    li a2, 154453; CHECK-ALIGNED-RV64-NEXT:    call memcmp4454; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4455; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 164456; CHECK-ALIGNED-RV64-NEXT:    ret4457;4458; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_15:4459; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry4460; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -164461; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4462; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 154463; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp4464; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4465; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 164466; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret4467;4468; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_15:4469; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry4470; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -164471; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4472; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 154473; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp4474; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4475; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 164476; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret4477;4478; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_15:4479; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry4480; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -164481; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4482; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 154483; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp4484; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4485; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 164486; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret4487;4488; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_15:4489; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry4490; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -164491; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4492; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 154493; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp4494; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4495; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 164496; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret4497;4498; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_15:4499; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry4500; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -164501; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4502; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 154503; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp4504; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4505; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 164506; CHECK-ALIGNED-RV32-V-NEXT:    ret4507;4508; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_15:4509; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry4510; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -164511; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4512; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 154513; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp4514; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4515; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 164516; CHECK-ALIGNED-RV64-V-NEXT:    ret4517;4518; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_15:4519; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry4520; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -164521; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4522; CHECK-UNALIGNED-RV32-NEXT:    li a2, 154523; CHECK-UNALIGNED-RV32-NEXT:    call memcmp4524; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4525; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 164526; CHECK-UNALIGNED-RV32-NEXT:    ret4527;4528; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_15:4529; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry4530; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -164531; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4532; CHECK-UNALIGNED-RV64-NEXT:    li a2, 154533; CHECK-UNALIGNED-RV64-NEXT:    call memcmp4534; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4535; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 164536; CHECK-UNALIGNED-RV64-NEXT:    ret4537;4538; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_15:4539; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry4540; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)4541; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)4542; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a24543; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a34544; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB30_54545; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb14546; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 4(a0)4547; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 4(a1)4548; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a24549; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a34550; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB30_54551; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.2: # %loadbb24552; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 8(a0)4553; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 8(a1)4554; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a24555; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a34556; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB30_54557; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.3: # %loadbb34558; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 11(a0)4559; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 11(a1)4560; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a04561; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a14562; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB30_54563; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.4:4564; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a0, 04565; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4566; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB30_5: # %res_block4567; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a34568; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a04569; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 14570; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4571;4572; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_15:4573; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry4574; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)4575; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)4576; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a24577; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a34578; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB30_34579; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.1: # %loadbb14580; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 7(a0)4581; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 7(a1)4582; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a04583; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a14584; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB30_34585; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.2:4586; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a0, 04587; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4588; CHECK-UNALIGNED-RV64-ZBB-NEXT:  .LBB30_3: # %res_block4589; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a2, a34590; CHECK-UNALIGNED-RV64-ZBB-NEXT:    neg a0, a04591; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ori a0, a0, 14592; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4593;4594; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_15:4595; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry4596; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)4597; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)4598; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a24599; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a34600; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB30_54601; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb14602; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 4(a0)4603; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 4(a1)4604; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a24605; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a34606; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB30_54607; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.2: # %loadbb24608; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 8(a0)4609; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 8(a1)4610; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a24611; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a34612; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB30_54613; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.3: # %loadbb34614; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 11(a0)4615; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 11(a1)4616; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a04617; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a14618; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB30_54619; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.4:4620; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a0, 04621; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4622; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB30_5: # %res_block4623; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a34624; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a04625; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 14626; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4627;4628; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_15:4629; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry4630; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)4631; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)4632; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a24633; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a34634; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB30_34635; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.1: # %loadbb14636; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 7(a0)4637; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 7(a1)4638; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a04639; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a14640; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB30_34641; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.2:4642; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a0, 04643; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4644; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  .LBB30_3: # %res_block4645; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a2, a34646; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    neg a0, a04647; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ori a0, a0, 14648; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4649;4650; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_15:4651; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry4652; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -164653; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4654; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 154655; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp4656; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4657; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 164658; CHECK-UNALIGNED-RV32-V-NEXT:    ret4659;4660; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_15:4661; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry4662; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -164663; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4664; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 154665; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp4666; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4667; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 164668; CHECK-UNALIGNED-RV64-V-NEXT:    ret4669entry:4670  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 15)4671  ret i32 %memcmp4672}4673 4674define i32 @memcmp_size_16(ptr %s1, ptr %s2) nounwind optsize {4675; CHECK-ALIGNED-RV32-LABEL: memcmp_size_16:4676; CHECK-ALIGNED-RV32:       # %bb.0: # %entry4677; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -164678; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4679; CHECK-ALIGNED-RV32-NEXT:    li a2, 164680; CHECK-ALIGNED-RV32-NEXT:    call memcmp4681; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4682; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 164683; CHECK-ALIGNED-RV32-NEXT:    ret4684;4685; CHECK-ALIGNED-RV64-LABEL: memcmp_size_16:4686; CHECK-ALIGNED-RV64:       # %bb.0: # %entry4687; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -164688; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4689; CHECK-ALIGNED-RV64-NEXT:    li a2, 164690; CHECK-ALIGNED-RV64-NEXT:    call memcmp4691; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4692; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 164693; CHECK-ALIGNED-RV64-NEXT:    ret4694;4695; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_size_16:4696; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry4697; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -164698; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4699; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 164700; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp4701; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4702; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 164703; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret4704;4705; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_16:4706; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry4707; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -164708; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4709; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 164710; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp4711; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4712; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 164713; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret4714;4715; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_size_16:4716; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry4717; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -164718; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4719; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 164720; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp4721; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4722; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 164723; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret4724;4725; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_16:4726; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry4727; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -164728; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4729; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 164730; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp4731; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4732; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 164733; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret4734;4735; CHECK-ALIGNED-RV32-V-LABEL: memcmp_size_16:4736; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry4737; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -164738; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4739; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 164740; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp4741; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4742; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 164743; CHECK-ALIGNED-RV32-V-NEXT:    ret4744;4745; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_16:4746; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry4747; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -164748; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4749; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 164750; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp4751; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4752; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 164753; CHECK-ALIGNED-RV64-V-NEXT:    ret4754;4755; CHECK-UNALIGNED-RV32-LABEL: memcmp_size_16:4756; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry4757; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -164758; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4759; CHECK-UNALIGNED-RV32-NEXT:    li a2, 164760; CHECK-UNALIGNED-RV32-NEXT:    call memcmp4761; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4762; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 164763; CHECK-UNALIGNED-RV32-NEXT:    ret4764;4765; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_16:4766; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry4767; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -164768; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4769; CHECK-UNALIGNED-RV64-NEXT:    li a2, 164770; CHECK-UNALIGNED-RV64-NEXT:    call memcmp4771; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4772; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 164773; CHECK-UNALIGNED-RV64-NEXT:    ret4774;4775; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_size_16:4776; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry4777; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 0(a0)4778; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 0(a1)4779; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a24780; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a34781; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB31_54782; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.1: # %loadbb14783; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 4(a0)4784; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 4(a1)4785; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a24786; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a34787; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB31_54788; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.2: # %loadbb24789; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a2, 8(a0)4790; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a3, 8(a1)4791; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a24792; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a34793; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB31_54794; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.3: # %loadbb34795; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 12(a0)4796; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 12(a1)4797; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a2, a04798; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a3, a14799; CHECK-UNALIGNED-RV32-ZBB-NEXT:    bne a2, a3, .LBB31_54800; CHECK-UNALIGNED-RV32-ZBB-NEXT:  # %bb.4:4801; CHECK-UNALIGNED-RV32-ZBB-NEXT:    li a0, 04802; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4803; CHECK-UNALIGNED-RV32-ZBB-NEXT:  .LBB31_5: # %res_block4804; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a2, a34805; CHECK-UNALIGNED-RV32-ZBB-NEXT:    neg a0, a04806; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ori a0, a0, 14807; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret4808;4809; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_16:4810; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry4811; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)4812; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)4813; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a24814; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a34815; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB31_34816; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.1: # %loadbb14817; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 8(a0)4818; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 8(a1)4819; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a04820; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a14821; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB31_34822; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.2:4823; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a0, 04824; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4825; CHECK-UNALIGNED-RV64-ZBB-NEXT:  .LBB31_3: # %res_block4826; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a2, a34827; CHECK-UNALIGNED-RV64-ZBB-NEXT:    neg a0, a04828; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ori a0, a0, 14829; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret4830;4831; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_size_16:4832; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry4833; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 0(a0)4834; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 0(a1)4835; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a24836; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a34837; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB31_54838; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.1: # %loadbb14839; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 4(a0)4840; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 4(a1)4841; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a24842; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a34843; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB31_54844; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.2: # %loadbb24845; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a2, 8(a0)4846; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a3, 8(a1)4847; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a24848; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a34849; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB31_54850; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.3: # %loadbb34851; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 12(a0)4852; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 12(a1)4853; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a2, a04854; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a3, a14855; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    bne a2, a3, .LBB31_54856; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  # %bb.4:4857; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    li a0, 04858; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4859; CHECK-UNALIGNED-RV32-ZBKB-NEXT:  .LBB31_5: # %res_block4860; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a2, a34861; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    neg a0, a04862; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ori a0, a0, 14863; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret4864;4865; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_16:4866; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry4867; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)4868; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)4869; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a24870; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a34871; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB31_34872; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.1: # %loadbb14873; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 8(a0)4874; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 8(a1)4875; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a04876; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a14877; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB31_34878; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.2:4879; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a0, 04880; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4881; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  .LBB31_3: # %res_block4882; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a2, a34883; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    neg a0, a04884; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ori a0, a0, 14885; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret4886;4887; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_size_16:4888; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry4889; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -164890; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4891; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 164892; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp4893; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4894; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 164895; CHECK-UNALIGNED-RV32-V-NEXT:    ret4896;4897; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_16:4898; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry4899; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -164900; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4901; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 164902; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp4903; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4904; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 164905; CHECK-UNALIGNED-RV64-V-NEXT:    ret4906entry:4907  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 16)4908  ret i32 %memcmp4909}4910 4911define i32 @memcmp_size_31(ptr %s1, ptr %s2) nounwind optsize {4912; CHECK-RV32-LABEL: memcmp_size_31:4913; CHECK-RV32:       # %bb.0: # %entry4914; CHECK-RV32-NEXT:    addi sp, sp, -164915; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill4916; CHECK-RV32-NEXT:    li a2, 314917; CHECK-RV32-NEXT:    call memcmp4918; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload4919; CHECK-RV32-NEXT:    addi sp, sp, 164920; CHECK-RV32-NEXT:    ret4921;4922; CHECK-ALIGNED-RV64-LABEL: memcmp_size_31:4923; CHECK-ALIGNED-RV64:       # %bb.0: # %entry4924; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -164925; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4926; CHECK-ALIGNED-RV64-NEXT:    li a2, 314927; CHECK-ALIGNED-RV64-NEXT:    call memcmp4928; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4929; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 164930; CHECK-ALIGNED-RV64-NEXT:    ret4931;4932; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_31:4933; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry4934; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -164935; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4936; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 314937; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp4938; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4939; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 164940; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret4941;4942; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_31:4943; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry4944; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -164945; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4946; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 314947; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp4948; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4949; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 164950; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret4951;4952; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_31:4953; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry4954; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -164955; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4956; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 314957; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp4958; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4959; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 164960; CHECK-ALIGNED-RV64-V-NEXT:    ret4961;4962; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_31:4963; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry4964; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -164965; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill4966; CHECK-UNALIGNED-RV64-NEXT:    li a2, 314967; CHECK-UNALIGNED-RV64-NEXT:    call memcmp4968; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload4969; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 164970; CHECK-UNALIGNED-RV64-NEXT:    ret4971;4972; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_31:4973; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry4974; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)4975; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)4976; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a24977; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a34978; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB32_54979; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.1: # %loadbb14980; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 8(a0)4981; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 8(a1)4982; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a24983; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a34984; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB32_54985; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.2: # %loadbb24986; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 16(a0)4987; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 16(a1)4988; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a24989; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a34990; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB32_54991; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.3: # %loadbb34992; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 23(a0)4993; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 23(a1)4994; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a04995; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a14996; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB32_54997; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.4:4998; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a0, 04999; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5000; CHECK-UNALIGNED-RV64-ZBB-NEXT:  .LBB32_5: # %res_block5001; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a2, a35002; CHECK-UNALIGNED-RV64-ZBB-NEXT:    neg a0, a05003; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ori a0, a0, 15004; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5005;5006; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_31:5007; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry5008; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)5009; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)5010; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a25011; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a35012; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB32_55013; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.1: # %loadbb15014; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 8(a0)5015; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 8(a1)5016; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a25017; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a35018; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB32_55019; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.2: # %loadbb25020; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 16(a0)5021; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 16(a1)5022; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a25023; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a35024; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB32_55025; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.3: # %loadbb35026; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 23(a0)5027; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 23(a1)5028; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a05029; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a15030; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB32_55031; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.4:5032; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a0, 05033; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5034; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  .LBB32_5: # %res_block5035; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a2, a35036; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    neg a0, a05037; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ori a0, a0, 15038; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5039;5040; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_31:5041; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry5042; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -165043; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5044; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 315045; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp5046; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5047; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 165048; CHECK-UNALIGNED-RV64-V-NEXT:    ret5049entry:5050  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 31)5051  ret i32 %memcmp5052}5053 5054define i32 @memcmp_size_32(ptr %s1, ptr %s2) nounwind optsize {5055; CHECK-RV32-LABEL: memcmp_size_32:5056; CHECK-RV32:       # %bb.0: # %entry5057; CHECK-RV32-NEXT:    addi sp, sp, -165058; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5059; CHECK-RV32-NEXT:    li a2, 325060; CHECK-RV32-NEXT:    call memcmp5061; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5062; CHECK-RV32-NEXT:    addi sp, sp, 165063; CHECK-RV32-NEXT:    ret5064;5065; CHECK-ALIGNED-RV64-LABEL: memcmp_size_32:5066; CHECK-ALIGNED-RV64:       # %bb.0: # %entry5067; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -165068; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5069; CHECK-ALIGNED-RV64-NEXT:    li a2, 325070; CHECK-ALIGNED-RV64-NEXT:    call memcmp5071; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5072; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 165073; CHECK-ALIGNED-RV64-NEXT:    ret5074;5075; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_size_32:5076; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry5077; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -165078; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5079; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 325080; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp5081; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5082; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 165083; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret5084;5085; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_size_32:5086; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry5087; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -165088; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5089; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 325090; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp5091; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5092; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 165093; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret5094;5095; CHECK-ALIGNED-RV64-V-LABEL: memcmp_size_32:5096; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry5097; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -165098; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5099; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 325100; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp5101; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5102; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 165103; CHECK-ALIGNED-RV64-V-NEXT:    ret5104;5105; CHECK-UNALIGNED-RV64-LABEL: memcmp_size_32:5106; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry5107; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -165108; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5109; CHECK-UNALIGNED-RV64-NEXT:    li a2, 325110; CHECK-UNALIGNED-RV64-NEXT:    call memcmp5111; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5112; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 165113; CHECK-UNALIGNED-RV64-NEXT:    ret5114;5115; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_size_32:5116; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry5117; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 0(a0)5118; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 0(a1)5119; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a25120; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a35121; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB33_55122; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.1: # %loadbb15123; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 8(a0)5124; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 8(a1)5125; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a25126; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a35127; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB33_55128; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.2: # %loadbb25129; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a2, 16(a0)5130; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a3, 16(a1)5131; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a25132; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a35133; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB33_55134; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.3: # %loadbb35135; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a0, 24(a0)5136; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ld a1, 24(a1)5137; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a2, a05138; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a3, a15139; CHECK-UNALIGNED-RV64-ZBB-NEXT:    bne a2, a3, .LBB33_55140; CHECK-UNALIGNED-RV64-ZBB-NEXT:  # %bb.4:5141; CHECK-UNALIGNED-RV64-ZBB-NEXT:    li a0, 05142; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5143; CHECK-UNALIGNED-RV64-ZBB-NEXT:  .LBB33_5: # %res_block5144; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a2, a35145; CHECK-UNALIGNED-RV64-ZBB-NEXT:    neg a0, a05146; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ori a0, a0, 15147; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5148;5149; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_size_32:5150; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry5151; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 0(a0)5152; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 0(a1)5153; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a25154; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a35155; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB33_55156; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.1: # %loadbb15157; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 8(a0)5158; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 8(a1)5159; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a25160; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a35161; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB33_55162; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.2: # %loadbb25163; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a2, 16(a0)5164; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a3, 16(a1)5165; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a25166; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a35167; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB33_55168; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.3: # %loadbb35169; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a0, 24(a0)5170; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ld a1, 24(a1)5171; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a2, a05172; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a3, a15173; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    bne a2, a3, .LBB33_55174; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  # %bb.4:5175; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    li a0, 05176; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5177; CHECK-UNALIGNED-RV64-ZBKB-NEXT:  .LBB33_5: # %res_block5178; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a2, a35179; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    neg a0, a05180; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ori a0, a0, 15181; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5182;5183; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_size_32:5184; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry5185; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -165186; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5187; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 325188; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp5189; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5190; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 165191; CHECK-UNALIGNED-RV64-V-NEXT:    ret5192entry:5193  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 32)5194  ret i32 %memcmp5195}5196 5197define i32 @memcmp_size_63(ptr %s1, ptr %s2) nounwind optsize {5198; CHECK-RV32-LABEL: memcmp_size_63:5199; CHECK-RV32:       # %bb.0: # %entry5200; CHECK-RV32-NEXT:    addi sp, sp, -165201; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5202; CHECK-RV32-NEXT:    li a2, 635203; CHECK-RV32-NEXT:    call memcmp5204; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5205; CHECK-RV32-NEXT:    addi sp, sp, 165206; CHECK-RV32-NEXT:    ret5207;5208; CHECK-RV64-LABEL: memcmp_size_63:5209; CHECK-RV64:       # %bb.0: # %entry5210; CHECK-RV64-NEXT:    addi sp, sp, -165211; CHECK-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5212; CHECK-RV64-NEXT:    li a2, 635213; CHECK-RV64-NEXT:    call memcmp5214; CHECK-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5215; CHECK-RV64-NEXT:    addi sp, sp, 165216; CHECK-RV64-NEXT:    ret5217entry:5218  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 63)5219  ret i32 %memcmp5220}5221 5222define i32 @memcmp_size_64(ptr %s1, ptr %s2) nounwind optsize {5223; CHECK-RV32-LABEL: memcmp_size_64:5224; CHECK-RV32:       # %bb.0: # %entry5225; CHECK-RV32-NEXT:    addi sp, sp, -165226; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5227; CHECK-RV32-NEXT:    li a2, 645228; CHECK-RV32-NEXT:    call memcmp5229; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5230; CHECK-RV32-NEXT:    addi sp, sp, 165231; CHECK-RV32-NEXT:    ret5232;5233; CHECK-RV64-LABEL: memcmp_size_64:5234; CHECK-RV64:       # %bb.0: # %entry5235; CHECK-RV64-NEXT:    addi sp, sp, -165236; CHECK-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5237; CHECK-RV64-NEXT:    li a2, 645238; CHECK-RV64-NEXT:    call memcmp5239; CHECK-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5240; CHECK-RV64-NEXT:    addi sp, sp, 165241; CHECK-RV64-NEXT:    ret5242entry:5243  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 64)5244  ret i32 %memcmp5245}5246 5247define i32 @memcmp_size_127(ptr %s1, ptr %s2) nounwind optsize {5248; CHECK-RV32-LABEL: memcmp_size_127:5249; CHECK-RV32:       # %bb.0: # %entry5250; CHECK-RV32-NEXT:    addi sp, sp, -165251; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5252; CHECK-RV32-NEXT:    li a2, 1275253; CHECK-RV32-NEXT:    call memcmp5254; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5255; CHECK-RV32-NEXT:    addi sp, sp, 165256; CHECK-RV32-NEXT:    ret5257;5258; CHECK-RV64-LABEL: memcmp_size_127:5259; CHECK-RV64:       # %bb.0: # %entry5260; CHECK-RV64-NEXT:    addi sp, sp, -165261; CHECK-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5262; CHECK-RV64-NEXT:    li a2, 1275263; CHECK-RV64-NEXT:    call memcmp5264; CHECK-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5265; CHECK-RV64-NEXT:    addi sp, sp, 165266; CHECK-RV64-NEXT:    ret5267entry:5268  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 127)5269  ret i32 %memcmp5270}5271 5272define i32 @memcmp_size_128(ptr %s1, ptr %s2) nounwind optsize {5273; CHECK-RV32-LABEL: memcmp_size_128:5274; CHECK-RV32:       # %bb.0: # %entry5275; CHECK-RV32-NEXT:    addi sp, sp, -165276; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5277; CHECK-RV32-NEXT:    li a2, 1285278; CHECK-RV32-NEXT:    call memcmp5279; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5280; CHECK-RV32-NEXT:    addi sp, sp, 165281; CHECK-RV32-NEXT:    ret5282;5283; CHECK-RV64-LABEL: memcmp_size_128:5284; CHECK-RV64:       # %bb.0: # %entry5285; CHECK-RV64-NEXT:    addi sp, sp, -165286; CHECK-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5287; CHECK-RV64-NEXT:    li a2, 1285288; CHECK-RV64-NEXT:    call memcmp5289; CHECK-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5290; CHECK-RV64-NEXT:    addi sp, sp, 165291; CHECK-RV64-NEXT:    ret5292entry:5293  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 128)5294  ret i32 %memcmp5295}5296 5297define i32 @memcmp_size_runtime(ptr %s1, ptr %s2, iXLen %len) nounwind optsize {5298; CHECK-RV32-LABEL: memcmp_size_runtime:5299; CHECK-RV32:       # %bb.0: # %entry5300; CHECK-RV32-NEXT:    addi sp, sp, -165301; CHECK-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5302; CHECK-RV32-NEXT:    call memcmp5303; CHECK-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5304; CHECK-RV32-NEXT:    addi sp, sp, 165305; CHECK-RV32-NEXT:    ret5306;5307; CHECK-RV64-LABEL: memcmp_size_runtime:5308; CHECK-RV64:       # %bb.0: # %entry5309; CHECK-RV64-NEXT:    addi sp, sp, -165310; CHECK-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5311; CHECK-RV64-NEXT:    call memcmp5312; CHECK-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5313; CHECK-RV64-NEXT:    addi sp, sp, 165314; CHECK-RV64-NEXT:    ret5315entry:5316  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen %len)5317  ret i32 %memcmp5318}5319 5320define i1 @memcmp_eq_zero(ptr %s1, ptr %s2) nounwind optsize {5321; CHECK-ALIGNED-RV32-LABEL: memcmp_eq_zero:5322; CHECK-ALIGNED-RV32:       # %bb.0: # %entry5323; CHECK-ALIGNED-RV32-NEXT:    lbu a2, 1(a1)5324; CHECK-ALIGNED-RV32-NEXT:    lbu a3, 2(a1)5325; CHECK-ALIGNED-RV32-NEXT:    lbu a4, 3(a1)5326; CHECK-ALIGNED-RV32-NEXT:    lbu a1, 0(a1)5327; CHECK-ALIGNED-RV32-NEXT:    slli a2, a2, 85328; CHECK-ALIGNED-RV32-NEXT:    slli a3, a3, 165329; CHECK-ALIGNED-RV32-NEXT:    slli a4, a4, 245330; CHECK-ALIGNED-RV32-NEXT:    or a1, a2, a15331; CHECK-ALIGNED-RV32-NEXT:    or a3, a4, a35332; CHECK-ALIGNED-RV32-NEXT:    lbu a2, 1(a0)5333; CHECK-ALIGNED-RV32-NEXT:    lbu a4, 0(a0)5334; CHECK-ALIGNED-RV32-NEXT:    lbu a5, 2(a0)5335; CHECK-ALIGNED-RV32-NEXT:    lbu a0, 3(a0)5336; CHECK-ALIGNED-RV32-NEXT:    slli a2, a2, 85337; CHECK-ALIGNED-RV32-NEXT:    or a2, a2, a45338; CHECK-ALIGNED-RV32-NEXT:    slli a5, a5, 165339; CHECK-ALIGNED-RV32-NEXT:    slli a0, a0, 245340; CHECK-ALIGNED-RV32-NEXT:    or a0, a0, a55341; CHECK-ALIGNED-RV32-NEXT:    or a1, a3, a15342; CHECK-ALIGNED-RV32-NEXT:    or a0, a0, a25343; CHECK-ALIGNED-RV32-NEXT:    xor a0, a0, a15344; CHECK-ALIGNED-RV32-NEXT:    seqz a0, a05345; CHECK-ALIGNED-RV32-NEXT:    ret5346;5347; CHECK-ALIGNED-RV64-LABEL: memcmp_eq_zero:5348; CHECK-ALIGNED-RV64:       # %bb.0: # %entry5349; CHECK-ALIGNED-RV64-NEXT:    lbu a2, 1(a1)5350; CHECK-ALIGNED-RV64-NEXT:    lbu a3, 2(a1)5351; CHECK-ALIGNED-RV64-NEXT:    lb a4, 3(a1)5352; CHECK-ALIGNED-RV64-NEXT:    lbu a1, 0(a1)5353; CHECK-ALIGNED-RV64-NEXT:    slli a2, a2, 85354; CHECK-ALIGNED-RV64-NEXT:    slli a3, a3, 165355; CHECK-ALIGNED-RV64-NEXT:    slli a4, a4, 245356; CHECK-ALIGNED-RV64-NEXT:    or a1, a2, a15357; CHECK-ALIGNED-RV64-NEXT:    or a3, a4, a35358; CHECK-ALIGNED-RV64-NEXT:    lbu a2, 1(a0)5359; CHECK-ALIGNED-RV64-NEXT:    lbu a4, 0(a0)5360; CHECK-ALIGNED-RV64-NEXT:    lbu a5, 2(a0)5361; CHECK-ALIGNED-RV64-NEXT:    lb a0, 3(a0)5362; CHECK-ALIGNED-RV64-NEXT:    slli a2, a2, 85363; CHECK-ALIGNED-RV64-NEXT:    or a2, a2, a45364; CHECK-ALIGNED-RV64-NEXT:    slli a5, a5, 165365; CHECK-ALIGNED-RV64-NEXT:    slli a0, a0, 245366; CHECK-ALIGNED-RV64-NEXT:    or a0, a0, a55367; CHECK-ALIGNED-RV64-NEXT:    or a1, a3, a15368; CHECK-ALIGNED-RV64-NEXT:    or a0, a0, a25369; CHECK-ALIGNED-RV64-NEXT:    xor a0, a0, a15370; CHECK-ALIGNED-RV64-NEXT:    seqz a0, a05371; CHECK-ALIGNED-RV64-NEXT:    ret5372;5373; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_eq_zero:5374; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry5375; CHECK-ALIGNED-RV32-ZBB-NEXT:    lbu a2, 1(a1)5376; CHECK-ALIGNED-RV32-ZBB-NEXT:    lbu a3, 2(a1)5377; CHECK-ALIGNED-RV32-ZBB-NEXT:    lbu a4, 3(a1)5378; CHECK-ALIGNED-RV32-ZBB-NEXT:    lbu a1, 0(a1)5379; CHECK-ALIGNED-RV32-ZBB-NEXT:    slli a2, a2, 85380; CHECK-ALIGNED-RV32-ZBB-NEXT:    slli a3, a3, 165381; CHECK-ALIGNED-RV32-ZBB-NEXT:    slli a4, a4, 245382; CHECK-ALIGNED-RV32-ZBB-NEXT:    or a1, a2, a15383; CHECK-ALIGNED-RV32-ZBB-NEXT:    or a3, a4, a35384; CHECK-ALIGNED-RV32-ZBB-NEXT:    lbu a2, 1(a0)5385; CHECK-ALIGNED-RV32-ZBB-NEXT:    lbu a4, 0(a0)5386; CHECK-ALIGNED-RV32-ZBB-NEXT:    lbu a5, 2(a0)5387; CHECK-ALIGNED-RV32-ZBB-NEXT:    lbu a0, 3(a0)5388; CHECK-ALIGNED-RV32-ZBB-NEXT:    slli a2, a2, 85389; CHECK-ALIGNED-RV32-ZBB-NEXT:    or a2, a2, a45390; CHECK-ALIGNED-RV32-ZBB-NEXT:    slli a5, a5, 165391; CHECK-ALIGNED-RV32-ZBB-NEXT:    slli a0, a0, 245392; CHECK-ALIGNED-RV32-ZBB-NEXT:    or a0, a0, a55393; CHECK-ALIGNED-RV32-ZBB-NEXT:    or a1, a3, a15394; CHECK-ALIGNED-RV32-ZBB-NEXT:    or a0, a0, a25395; CHECK-ALIGNED-RV32-ZBB-NEXT:    xor a0, a0, a15396; CHECK-ALIGNED-RV32-ZBB-NEXT:    seqz a0, a05397; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret5398;5399; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_eq_zero:5400; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry5401; CHECK-ALIGNED-RV64-ZBB-NEXT:    lbu a2, 1(a1)5402; CHECK-ALIGNED-RV64-ZBB-NEXT:    lbu a3, 2(a1)5403; CHECK-ALIGNED-RV64-ZBB-NEXT:    lb a4, 3(a1)5404; CHECK-ALIGNED-RV64-ZBB-NEXT:    lbu a1, 0(a1)5405; CHECK-ALIGNED-RV64-ZBB-NEXT:    slli a2, a2, 85406; CHECK-ALIGNED-RV64-ZBB-NEXT:    slli a3, a3, 165407; CHECK-ALIGNED-RV64-ZBB-NEXT:    slli a4, a4, 245408; CHECK-ALIGNED-RV64-ZBB-NEXT:    or a1, a2, a15409; CHECK-ALIGNED-RV64-ZBB-NEXT:    or a3, a4, a35410; CHECK-ALIGNED-RV64-ZBB-NEXT:    lbu a2, 1(a0)5411; CHECK-ALIGNED-RV64-ZBB-NEXT:    lbu a4, 0(a0)5412; CHECK-ALIGNED-RV64-ZBB-NEXT:    lbu a5, 2(a0)5413; CHECK-ALIGNED-RV64-ZBB-NEXT:    lb a0, 3(a0)5414; CHECK-ALIGNED-RV64-ZBB-NEXT:    slli a2, a2, 85415; CHECK-ALIGNED-RV64-ZBB-NEXT:    or a2, a2, a45416; CHECK-ALIGNED-RV64-ZBB-NEXT:    slli a5, a5, 165417; CHECK-ALIGNED-RV64-ZBB-NEXT:    slli a0, a0, 245418; CHECK-ALIGNED-RV64-ZBB-NEXT:    or a0, a0, a55419; CHECK-ALIGNED-RV64-ZBB-NEXT:    or a1, a3, a15420; CHECK-ALIGNED-RV64-ZBB-NEXT:    or a0, a0, a25421; CHECK-ALIGNED-RV64-ZBB-NEXT:    xor a0, a0, a15422; CHECK-ALIGNED-RV64-ZBB-NEXT:    seqz a0, a05423; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret5424;5425; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_eq_zero:5426; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry5427; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lbu a2, 0(a1)5428; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lbu a3, 1(a1)5429; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lbu a4, 2(a1)5430; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lbu a1, 3(a1)5431; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lbu a5, 1(a0)5432; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lbu a6, 2(a0)5433; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lbu a7, 3(a0)5434; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lbu a0, 0(a0)5435; CHECK-ALIGNED-RV32-ZBKB-NEXT:    packh a1, a4, a15436; CHECK-ALIGNED-RV32-ZBKB-NEXT:    packh a2, a2, a35437; CHECK-ALIGNED-RV32-ZBKB-NEXT:    packh a3, a6, a75438; CHECK-ALIGNED-RV32-ZBKB-NEXT:    packh a0, a0, a55439; CHECK-ALIGNED-RV32-ZBKB-NEXT:    pack a1, a2, a15440; CHECK-ALIGNED-RV32-ZBKB-NEXT:    pack a0, a0, a35441; CHECK-ALIGNED-RV32-ZBKB-NEXT:    xor a0, a0, a15442; CHECK-ALIGNED-RV32-ZBKB-NEXT:    seqz a0, a05443; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret5444;5445; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_eq_zero:5446; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry5447; CHECK-ALIGNED-RV64-ZBKB-NEXT:    lbu a2, 0(a1)5448; CHECK-ALIGNED-RV64-ZBKB-NEXT:    lbu a3, 1(a1)5449; CHECK-ALIGNED-RV64-ZBKB-NEXT:    lbu a4, 2(a1)5450; CHECK-ALIGNED-RV64-ZBKB-NEXT:    lb a1, 3(a1)5451; CHECK-ALIGNED-RV64-ZBKB-NEXT:    lbu a5, 0(a0)5452; CHECK-ALIGNED-RV64-ZBKB-NEXT:    lbu a6, 1(a0)5453; CHECK-ALIGNED-RV64-ZBKB-NEXT:    packh a2, a2, a35454; CHECK-ALIGNED-RV64-ZBKB-NEXT:    lbu a3, 2(a0)5455; CHECK-ALIGNED-RV64-ZBKB-NEXT:    lb a0, 3(a0)5456; CHECK-ALIGNED-RV64-ZBKB-NEXT:    packh a5, a5, a65457; CHECK-ALIGNED-RV64-ZBKB-NEXT:    slli a4, a4, 165458; CHECK-ALIGNED-RV64-ZBKB-NEXT:    slli a1, a1, 245459; CHECK-ALIGNED-RV64-ZBKB-NEXT:    or a1, a1, a45460; CHECK-ALIGNED-RV64-ZBKB-NEXT:    slli a3, a3, 165461; CHECK-ALIGNED-RV64-ZBKB-NEXT:    slli a0, a0, 245462; CHECK-ALIGNED-RV64-ZBKB-NEXT:    or a0, a0, a35463; CHECK-ALIGNED-RV64-ZBKB-NEXT:    or a1, a1, a25464; CHECK-ALIGNED-RV64-ZBKB-NEXT:    or a0, a0, a55465; CHECK-ALIGNED-RV64-ZBKB-NEXT:    xor a0, a0, a15466; CHECK-ALIGNED-RV64-ZBKB-NEXT:    seqz a0, a05467; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret5468;5469; CHECK-ALIGNED-RV32-V-LABEL: memcmp_eq_zero:5470; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry5471; CHECK-ALIGNED-RV32-V-NEXT:    lbu a2, 1(a1)5472; CHECK-ALIGNED-RV32-V-NEXT:    lbu a3, 2(a1)5473; CHECK-ALIGNED-RV32-V-NEXT:    lbu a4, 3(a1)5474; CHECK-ALIGNED-RV32-V-NEXT:    lbu a1, 0(a1)5475; CHECK-ALIGNED-RV32-V-NEXT:    slli a2, a2, 85476; CHECK-ALIGNED-RV32-V-NEXT:    slli a3, a3, 165477; CHECK-ALIGNED-RV32-V-NEXT:    slli a4, a4, 245478; CHECK-ALIGNED-RV32-V-NEXT:    or a1, a2, a15479; CHECK-ALIGNED-RV32-V-NEXT:    or a3, a4, a35480; CHECK-ALIGNED-RV32-V-NEXT:    lbu a2, 1(a0)5481; CHECK-ALIGNED-RV32-V-NEXT:    lbu a4, 0(a0)5482; CHECK-ALIGNED-RV32-V-NEXT:    lbu a5, 2(a0)5483; CHECK-ALIGNED-RV32-V-NEXT:    lbu a0, 3(a0)5484; CHECK-ALIGNED-RV32-V-NEXT:    slli a2, a2, 85485; CHECK-ALIGNED-RV32-V-NEXT:    or a2, a2, a45486; CHECK-ALIGNED-RV32-V-NEXT:    slli a5, a5, 165487; CHECK-ALIGNED-RV32-V-NEXT:    slli a0, a0, 245488; CHECK-ALIGNED-RV32-V-NEXT:    or a0, a0, a55489; CHECK-ALIGNED-RV32-V-NEXT:    or a1, a3, a15490; CHECK-ALIGNED-RV32-V-NEXT:    or a0, a0, a25491; CHECK-ALIGNED-RV32-V-NEXT:    xor a0, a0, a15492; CHECK-ALIGNED-RV32-V-NEXT:    seqz a0, a05493; CHECK-ALIGNED-RV32-V-NEXT:    ret5494;5495; CHECK-ALIGNED-RV64-V-LABEL: memcmp_eq_zero:5496; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry5497; CHECK-ALIGNED-RV64-V-NEXT:    lbu a2, 1(a1)5498; CHECK-ALIGNED-RV64-V-NEXT:    lbu a3, 2(a1)5499; CHECK-ALIGNED-RV64-V-NEXT:    lb a4, 3(a1)5500; CHECK-ALIGNED-RV64-V-NEXT:    lbu a1, 0(a1)5501; CHECK-ALIGNED-RV64-V-NEXT:    slli a2, a2, 85502; CHECK-ALIGNED-RV64-V-NEXT:    slli a3, a3, 165503; CHECK-ALIGNED-RV64-V-NEXT:    slli a4, a4, 245504; CHECK-ALIGNED-RV64-V-NEXT:    or a1, a2, a15505; CHECK-ALIGNED-RV64-V-NEXT:    or a3, a4, a35506; CHECK-ALIGNED-RV64-V-NEXT:    lbu a2, 1(a0)5507; CHECK-ALIGNED-RV64-V-NEXT:    lbu a4, 0(a0)5508; CHECK-ALIGNED-RV64-V-NEXT:    lbu a5, 2(a0)5509; CHECK-ALIGNED-RV64-V-NEXT:    lb a0, 3(a0)5510; CHECK-ALIGNED-RV64-V-NEXT:    slli a2, a2, 85511; CHECK-ALIGNED-RV64-V-NEXT:    or a2, a2, a45512; CHECK-ALIGNED-RV64-V-NEXT:    slli a5, a5, 165513; CHECK-ALIGNED-RV64-V-NEXT:    slli a0, a0, 245514; CHECK-ALIGNED-RV64-V-NEXT:    or a0, a0, a55515; CHECK-ALIGNED-RV64-V-NEXT:    or a1, a3, a15516; CHECK-ALIGNED-RV64-V-NEXT:    or a0, a0, a25517; CHECK-ALIGNED-RV64-V-NEXT:    xor a0, a0, a15518; CHECK-ALIGNED-RV64-V-NEXT:    seqz a0, a05519; CHECK-ALIGNED-RV64-V-NEXT:    ret5520;5521; CHECK-UNALIGNED-LABEL: memcmp_eq_zero:5522; CHECK-UNALIGNED:       # %bb.0: # %entry5523; CHECK-UNALIGNED-NEXT:    lw a0, 0(a0)5524; CHECK-UNALIGNED-NEXT:    lw a1, 0(a1)5525; CHECK-UNALIGNED-NEXT:    xor a0, a0, a15526; CHECK-UNALIGNED-NEXT:    seqz a0, a05527; CHECK-UNALIGNED-NEXT:    ret5528entry:5529  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4)5530  %ret = icmp eq i32 %memcmp, 05531  ret i1 %ret5532}5533 5534define i1 @memcmp_lt_zero(ptr %s1, ptr %s2) nounwind optsize {5535; CHECK-ALIGNED-RV32-LABEL: memcmp_lt_zero:5536; CHECK-ALIGNED-RV32:       # %bb.0: # %entry5537; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -165538; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5539; CHECK-ALIGNED-RV32-NEXT:    li a2, 45540; CHECK-ALIGNED-RV32-NEXT:    call memcmp5541; CHECK-ALIGNED-RV32-NEXT:    srli a0, a0, 315542; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5543; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 165544; CHECK-ALIGNED-RV32-NEXT:    ret5545;5546; CHECK-ALIGNED-RV64-LABEL: memcmp_lt_zero:5547; CHECK-ALIGNED-RV64:       # %bb.0: # %entry5548; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -165549; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5550; CHECK-ALIGNED-RV64-NEXT:    li a2, 45551; CHECK-ALIGNED-RV64-NEXT:    call memcmp5552; CHECK-ALIGNED-RV64-NEXT:    srli a0, a0, 635553; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5554; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 165555; CHECK-ALIGNED-RV64-NEXT:    ret5556;5557; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_lt_zero:5558; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry5559; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -165560; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5561; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 45562; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp5563; CHECK-ALIGNED-RV32-ZBB-NEXT:    srli a0, a0, 315564; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5565; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 165566; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret5567;5568; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_lt_zero:5569; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry5570; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -165571; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5572; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 45573; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp5574; CHECK-ALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 635575; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5576; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 165577; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret5578;5579; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_lt_zero:5580; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry5581; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -165582; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5583; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 45584; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp5585; CHECK-ALIGNED-RV32-ZBKB-NEXT:    srli a0, a0, 315586; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5587; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 165588; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret5589;5590; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_lt_zero:5591; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry5592; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -165593; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5594; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 45595; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp5596; CHECK-ALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 635597; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5598; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 165599; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret5600;5601; CHECK-ALIGNED-RV32-V-LABEL: memcmp_lt_zero:5602; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry5603; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -165604; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5605; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 45606; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp5607; CHECK-ALIGNED-RV32-V-NEXT:    srli a0, a0, 315608; 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_lt_zero: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, 45617; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp5618; CHECK-ALIGNED-RV64-V-NEXT:    srli a0, a0, 635619; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5620; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 165621; CHECK-ALIGNED-RV64-V-NEXT:    ret5622;5623; CHECK-UNALIGNED-RV32-LABEL: memcmp_lt_zero:5624; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry5625; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -165626; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5627; CHECK-UNALIGNED-RV32-NEXT:    li a2, 45628; CHECK-UNALIGNED-RV32-NEXT:    call memcmp5629; CHECK-UNALIGNED-RV32-NEXT:    srli a0, a0, 315630; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5631; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 165632; CHECK-UNALIGNED-RV32-NEXT:    ret5633;5634; CHECK-UNALIGNED-RV64-LABEL: memcmp_lt_zero:5635; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry5636; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -165637; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5638; CHECK-UNALIGNED-RV64-NEXT:    li a2, 45639; CHECK-UNALIGNED-RV64-NEXT:    call memcmp5640; CHECK-UNALIGNED-RV64-NEXT:    srli a0, a0, 635641; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5642; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 165643; CHECK-UNALIGNED-RV64-NEXT:    ret5644;5645; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_lt_zero:5646; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry5647; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 0(a0)5648; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 0(a1)5649; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a0, a05650; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a1, a15651; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a0, a15652; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret5653;5654; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_lt_zero:5655; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry5656; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a0, 0(a0)5657; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a1, 0(a1)5658; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a05659; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a15660; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 325661; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a1, a1, 325662; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a0, a15663; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5664;5665; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_lt_zero:5666; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry5667; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 0(a0)5668; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 0(a1)5669; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a0, a05670; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a1, a15671; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a0, a15672; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret5673;5674; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_lt_zero:5675; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry5676; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a0, 0(a0)5677; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a1, 0(a1)5678; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a05679; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a15680; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 325681; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a1, a1, 325682; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a0, a15683; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5684;5685; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_lt_zero:5686; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry5687; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -165688; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5689; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 45690; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp5691; CHECK-UNALIGNED-RV32-V-NEXT:    srli a0, a0, 315692; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5693; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 165694; CHECK-UNALIGNED-RV32-V-NEXT:    ret5695;5696; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_lt_zero:5697; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry5698; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -165699; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5700; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 45701; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp5702; CHECK-UNALIGNED-RV64-V-NEXT:    srli a0, a0, 635703; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5704; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 165705; CHECK-UNALIGNED-RV64-V-NEXT:    ret5706entry:5707  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4)5708  %ret = icmp slt i32 %memcmp, 05709  ret i1 %ret5710}5711 5712define i1 @memcmp_gt_zero(ptr %s1, ptr %s2) nounwind optsize {5713; CHECK-ALIGNED-RV32-LABEL: memcmp_gt_zero:5714; CHECK-ALIGNED-RV32:       # %bb.0: # %entry5715; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, -165716; CHECK-ALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5717; CHECK-ALIGNED-RV32-NEXT:    li a2, 45718; CHECK-ALIGNED-RV32-NEXT:    call memcmp5719; CHECK-ALIGNED-RV32-NEXT:    sgtz a0, a05720; CHECK-ALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5721; CHECK-ALIGNED-RV32-NEXT:    addi sp, sp, 165722; CHECK-ALIGNED-RV32-NEXT:    ret5723;5724; CHECK-ALIGNED-RV64-LABEL: memcmp_gt_zero:5725; CHECK-ALIGNED-RV64:       # %bb.0: # %entry5726; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, -165727; CHECK-ALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5728; CHECK-ALIGNED-RV64-NEXT:    li a2, 45729; CHECK-ALIGNED-RV64-NEXT:    call memcmp5730; CHECK-ALIGNED-RV64-NEXT:    sgtz a0, a05731; CHECK-ALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5732; CHECK-ALIGNED-RV64-NEXT:    addi sp, sp, 165733; CHECK-ALIGNED-RV64-NEXT:    ret5734;5735; CHECK-ALIGNED-RV32-ZBB-LABEL: memcmp_gt_zero:5736; CHECK-ALIGNED-RV32-ZBB:       # %bb.0: # %entry5737; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, -165738; CHECK-ALIGNED-RV32-ZBB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5739; CHECK-ALIGNED-RV32-ZBB-NEXT:    li a2, 45740; CHECK-ALIGNED-RV32-ZBB-NEXT:    call memcmp5741; CHECK-ALIGNED-RV32-ZBB-NEXT:    sgtz a0, a05742; CHECK-ALIGNED-RV32-ZBB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5743; CHECK-ALIGNED-RV32-ZBB-NEXT:    addi sp, sp, 165744; CHECK-ALIGNED-RV32-ZBB-NEXT:    ret5745;5746; CHECK-ALIGNED-RV64-ZBB-LABEL: memcmp_gt_zero:5747; CHECK-ALIGNED-RV64-ZBB:       # %bb.0: # %entry5748; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, -165749; CHECK-ALIGNED-RV64-ZBB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5750; CHECK-ALIGNED-RV64-ZBB-NEXT:    li a2, 45751; CHECK-ALIGNED-RV64-ZBB-NEXT:    call memcmp5752; CHECK-ALIGNED-RV64-ZBB-NEXT:    sgtz a0, a05753; CHECK-ALIGNED-RV64-ZBB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5754; CHECK-ALIGNED-RV64-ZBB-NEXT:    addi sp, sp, 165755; CHECK-ALIGNED-RV64-ZBB-NEXT:    ret5756;5757; CHECK-ALIGNED-RV32-ZBKB-LABEL: memcmp_gt_zero:5758; CHECK-ALIGNED-RV32-ZBKB:       # %bb.0: # %entry5759; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, -165760; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5761; CHECK-ALIGNED-RV32-ZBKB-NEXT:    li a2, 45762; CHECK-ALIGNED-RV32-ZBKB-NEXT:    call memcmp5763; CHECK-ALIGNED-RV32-ZBKB-NEXT:    sgtz a0, a05764; CHECK-ALIGNED-RV32-ZBKB-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5765; CHECK-ALIGNED-RV32-ZBKB-NEXT:    addi sp, sp, 165766; CHECK-ALIGNED-RV32-ZBKB-NEXT:    ret5767;5768; CHECK-ALIGNED-RV64-ZBKB-LABEL: memcmp_gt_zero:5769; CHECK-ALIGNED-RV64-ZBKB:       # %bb.0: # %entry5770; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, -165771; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5772; CHECK-ALIGNED-RV64-ZBKB-NEXT:    li a2, 45773; CHECK-ALIGNED-RV64-ZBKB-NEXT:    call memcmp5774; CHECK-ALIGNED-RV64-ZBKB-NEXT:    sgtz a0, a05775; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5776; CHECK-ALIGNED-RV64-ZBKB-NEXT:    addi sp, sp, 165777; CHECK-ALIGNED-RV64-ZBKB-NEXT:    ret5778;5779; CHECK-ALIGNED-RV32-V-LABEL: memcmp_gt_zero:5780; CHECK-ALIGNED-RV32-V:       # %bb.0: # %entry5781; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, -165782; CHECK-ALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5783; CHECK-ALIGNED-RV32-V-NEXT:    li a2, 45784; CHECK-ALIGNED-RV32-V-NEXT:    call memcmp5785; CHECK-ALIGNED-RV32-V-NEXT:    sgtz a0, a05786; CHECK-ALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5787; CHECK-ALIGNED-RV32-V-NEXT:    addi sp, sp, 165788; CHECK-ALIGNED-RV32-V-NEXT:    ret5789;5790; CHECK-ALIGNED-RV64-V-LABEL: memcmp_gt_zero:5791; CHECK-ALIGNED-RV64-V:       # %bb.0: # %entry5792; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, -165793; CHECK-ALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5794; CHECK-ALIGNED-RV64-V-NEXT:    li a2, 45795; CHECK-ALIGNED-RV64-V-NEXT:    call memcmp5796; CHECK-ALIGNED-RV64-V-NEXT:    sgtz a0, a05797; CHECK-ALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5798; CHECK-ALIGNED-RV64-V-NEXT:    addi sp, sp, 165799; CHECK-ALIGNED-RV64-V-NEXT:    ret5800;5801; CHECK-UNALIGNED-RV32-LABEL: memcmp_gt_zero:5802; CHECK-UNALIGNED-RV32:       # %bb.0: # %entry5803; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, -165804; CHECK-UNALIGNED-RV32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5805; CHECK-UNALIGNED-RV32-NEXT:    li a2, 45806; CHECK-UNALIGNED-RV32-NEXT:    call memcmp5807; CHECK-UNALIGNED-RV32-NEXT:    sgtz a0, a05808; CHECK-UNALIGNED-RV32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5809; CHECK-UNALIGNED-RV32-NEXT:    addi sp, sp, 165810; CHECK-UNALIGNED-RV32-NEXT:    ret5811;5812; CHECK-UNALIGNED-RV64-LABEL: memcmp_gt_zero:5813; CHECK-UNALIGNED-RV64:       # %bb.0: # %entry5814; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, -165815; CHECK-UNALIGNED-RV64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5816; CHECK-UNALIGNED-RV64-NEXT:    li a2, 45817; CHECK-UNALIGNED-RV64-NEXT:    call memcmp5818; CHECK-UNALIGNED-RV64-NEXT:    sgtz a0, a05819; CHECK-UNALIGNED-RV64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5820; CHECK-UNALIGNED-RV64-NEXT:    addi sp, sp, 165821; CHECK-UNALIGNED-RV64-NEXT:    ret5822;5823; CHECK-UNALIGNED-RV32-ZBB-LABEL: memcmp_gt_zero:5824; CHECK-UNALIGNED-RV32-ZBB:       # %bb.0: # %entry5825; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a0, 0(a0)5826; CHECK-UNALIGNED-RV32-ZBB-NEXT:    lw a1, 0(a1)5827; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a0, a05828; CHECK-UNALIGNED-RV32-ZBB-NEXT:    rev8 a1, a15829; CHECK-UNALIGNED-RV32-ZBB-NEXT:    sltu a0, a1, a05830; CHECK-UNALIGNED-RV32-ZBB-NEXT:    ret5831;5832; CHECK-UNALIGNED-RV64-ZBB-LABEL: memcmp_gt_zero:5833; CHECK-UNALIGNED-RV64-ZBB:       # %bb.0: # %entry5834; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a0, 0(a0)5835; CHECK-UNALIGNED-RV64-ZBB-NEXT:    lw a1, 0(a1)5836; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a0, a05837; CHECK-UNALIGNED-RV64-ZBB-NEXT:    rev8 a1, a15838; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a0, a0, 325839; CHECK-UNALIGNED-RV64-ZBB-NEXT:    srli a1, a1, 325840; CHECK-UNALIGNED-RV64-ZBB-NEXT:    sltu a0, a1, a05841; CHECK-UNALIGNED-RV64-ZBB-NEXT:    ret5842;5843; CHECK-UNALIGNED-RV32-ZBKB-LABEL: memcmp_gt_zero:5844; CHECK-UNALIGNED-RV32-ZBKB:       # %bb.0: # %entry5845; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a0, 0(a0)5846; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    lw a1, 0(a1)5847; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a0, a05848; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    rev8 a1, a15849; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    sltu a0, a1, a05850; CHECK-UNALIGNED-RV32-ZBKB-NEXT:    ret5851;5852; CHECK-UNALIGNED-RV64-ZBKB-LABEL: memcmp_gt_zero:5853; CHECK-UNALIGNED-RV64-ZBKB:       # %bb.0: # %entry5854; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a0, 0(a0)5855; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    lw a1, 0(a1)5856; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a0, a05857; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    rev8 a1, a15858; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a0, a0, 325859; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    srli a1, a1, 325860; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    sltu a0, a1, a05861; CHECK-UNALIGNED-RV64-ZBKB-NEXT:    ret5862;5863; CHECK-UNALIGNED-RV32-V-LABEL: memcmp_gt_zero:5864; CHECK-UNALIGNED-RV32-V:       # %bb.0: # %entry5865; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, -165866; CHECK-UNALIGNED-RV32-V-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill5867; CHECK-UNALIGNED-RV32-V-NEXT:    li a2, 45868; CHECK-UNALIGNED-RV32-V-NEXT:    call memcmp5869; CHECK-UNALIGNED-RV32-V-NEXT:    sgtz a0, a05870; CHECK-UNALIGNED-RV32-V-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload5871; CHECK-UNALIGNED-RV32-V-NEXT:    addi sp, sp, 165872; CHECK-UNALIGNED-RV32-V-NEXT:    ret5873;5874; CHECK-UNALIGNED-RV64-V-LABEL: memcmp_gt_zero:5875; CHECK-UNALIGNED-RV64-V:       # %bb.0: # %entry5876; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, -165877; CHECK-UNALIGNED-RV64-V-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill5878; CHECK-UNALIGNED-RV64-V-NEXT:    li a2, 45879; CHECK-UNALIGNED-RV64-V-NEXT:    call memcmp5880; CHECK-UNALIGNED-RV64-V-NEXT:    sgtz a0, a05881; CHECK-UNALIGNED-RV64-V-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload5882; CHECK-UNALIGNED-RV64-V-NEXT:    addi sp, sp, 165883; CHECK-UNALIGNED-RV64-V-NEXT:    ret5884entry:5885  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iXLen 4)5886  %ret = icmp sgt i32 %memcmp, 05887  ret i1 %ret5888}5889;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:5890; CHECK-ALIGNED: {{.*}}5891