brintos

brintos / llvm-project-archived public Read only

0
0
Text · 109.0 KiB · c1bf850 Raw
3107 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: sed 's/iGRLen/i32/g' %s | llc --mtriple=loongarch32 --mattr=+ual \3; RUN:   | FileCheck %s --check-prefixes=CHECK,LA32,LA32-UAL4; RUN: sed 's/iGRLen/i64/g' %s | llc --mtriple=loongarch64 --mattr=+ual \5; RUN:   | FileCheck %s --check-prefixes=CHECK,LA64,LA64-UAL6; RUN: sed 's/iGRLen/i32/g' %s | llc --mtriple=loongarch32 --mattr=-ual \7; RUN:   | FileCheck %s --check-prefixes=CHECK,LA32,LA32-NUAL8; RUN: sed 's/iGRLen/i64/g' %s | llc --mtriple=loongarch64 --mattr=-ual \9; RUN:   | FileCheck %s --check-prefixes=CHECK,LA64,LA64-NUAL10 11declare signext i32 @bcmp(ptr, ptr, iGRLen) nounwind readonly12declare signext i32 @memcmp(ptr, ptr, iGRLen) nounwind readonly13 14define signext i32 @bcmp_size_0(ptr %s1, ptr %s2) nounwind {15; LA32-LABEL: bcmp_size_0:16; LA32:       # %bb.0: # %entry17; LA32-NEXT:    addi.w $sp, $sp, -1618; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill19; LA32-NEXT:    move $a2, $zero20; LA32-NEXT:    bl bcmp21; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload22; LA32-NEXT:    addi.w $sp, $sp, 1623; LA32-NEXT:    ret24;25; LA64-LABEL: bcmp_size_0:26; LA64:       # %bb.0: # %entry27; LA64-NEXT:    addi.d $sp, $sp, -1628; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill29; LA64-NEXT:    move $a2, $zero30; LA64-NEXT:    pcaddu18i $ra, %call36(bcmp)31; LA64-NEXT:    jirl $ra, $ra, 032; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload33; LA64-NEXT:    addi.d $sp, $sp, 1634; LA64-NEXT:    ret35entry:36  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 0)37  ret i32 %bcmp38}39 40define signext i32 @bcmp_size_1(ptr %s1, ptr %s2) nounwind {41; LA32-UAL-LABEL: bcmp_size_1:42; LA32-UAL:       # %bb.0: # %entry43; LA32-UAL-NEXT:    ld.bu $a0, $a0, 044; LA32-UAL-NEXT:    ld.bu $a1, $a1, 045; LA32-UAL-NEXT:    xor $a0, $a0, $a146; LA32-UAL-NEXT:    sltu $a0, $zero, $a047; LA32-UAL-NEXT:    ret48;49; LA64-UAL-LABEL: bcmp_size_1:50; LA64-UAL:       # %bb.0: # %entry51; LA64-UAL-NEXT:    ld.bu $a0, $a0, 052; LA64-UAL-NEXT:    ld.bu $a1, $a1, 053; LA64-UAL-NEXT:    xor $a0, $a0, $a154; LA64-UAL-NEXT:    sltu $a0, $zero, $a055; LA64-UAL-NEXT:    ret56;57; LA32-NUAL-LABEL: bcmp_size_1:58; LA32-NUAL:       # %bb.0: # %entry59; LA32-NUAL-NEXT:    addi.w $sp, $sp, -1660; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill61; LA32-NUAL-NEXT:    ori $a2, $zero, 162; LA32-NUAL-NEXT:    bl bcmp63; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload64; LA32-NUAL-NEXT:    addi.w $sp, $sp, 1665; LA32-NUAL-NEXT:    ret66;67; LA64-NUAL-LABEL: bcmp_size_1:68; LA64-NUAL:       # %bb.0: # %entry69; LA64-NUAL-NEXT:    addi.d $sp, $sp, -1670; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill71; LA64-NUAL-NEXT:    ori $a2, $zero, 172; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)73; LA64-NUAL-NEXT:    jirl $ra, $ra, 074; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload75; LA64-NUAL-NEXT:    addi.d $sp, $sp, 1676; LA64-NUAL-NEXT:    ret77entry:78  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 1)79  ret i32 %bcmp80}81 82define signext i32 @bcmp_size_2(ptr %s1, ptr %s2) nounwind {83; LA32-UAL-LABEL: bcmp_size_2:84; LA32-UAL:       # %bb.0: # %entry85; LA32-UAL-NEXT:    ld.hu $a0, $a0, 086; LA32-UAL-NEXT:    ld.hu $a1, $a1, 087; LA32-UAL-NEXT:    xor $a0, $a0, $a188; LA32-UAL-NEXT:    sltu $a0, $zero, $a089; LA32-UAL-NEXT:    ret90;91; LA64-UAL-LABEL: bcmp_size_2:92; LA64-UAL:       # %bb.0: # %entry93; LA64-UAL-NEXT:    ld.hu $a0, $a0, 094; LA64-UAL-NEXT:    ld.hu $a1, $a1, 095; LA64-UAL-NEXT:    xor $a0, $a0, $a196; LA64-UAL-NEXT:    sltu $a0, $zero, $a097; LA64-UAL-NEXT:    ret98;99; LA32-NUAL-LABEL: bcmp_size_2:100; LA32-NUAL:       # %bb.0: # %entry101; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16102; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill103; LA32-NUAL-NEXT:    ori $a2, $zero, 2104; LA32-NUAL-NEXT:    bl bcmp105; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload106; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16107; LA32-NUAL-NEXT:    ret108;109; LA64-NUAL-LABEL: bcmp_size_2:110; LA64-NUAL:       # %bb.0: # %entry111; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16112; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill113; LA64-NUAL-NEXT:    ori $a2, $zero, 2114; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)115; LA64-NUAL-NEXT:    jirl $ra, $ra, 0116; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload117; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16118; LA64-NUAL-NEXT:    ret119entry:120  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 2)121  ret i32 %bcmp122}123 124define signext i32 @bcmp_size_3(ptr %s1, ptr %s2) nounwind {125; LA32-UAL-LABEL: bcmp_size_3:126; LA32-UAL:       # %bb.0: # %entry127; LA32-UAL-NEXT:    ld.hu $a2, $a0, 0128; LA32-UAL-NEXT:    ld.hu $a3, $a1, 0129; LA32-UAL-NEXT:    ld.bu $a0, $a0, 2130; LA32-UAL-NEXT:    ld.bu $a1, $a1, 2131; LA32-UAL-NEXT:    xor $a2, $a2, $a3132; LA32-UAL-NEXT:    xor $a0, $a0, $a1133; LA32-UAL-NEXT:    or $a0, $a2, $a0134; LA32-UAL-NEXT:    sltu $a0, $zero, $a0135; LA32-UAL-NEXT:    ret136;137; LA64-UAL-LABEL: bcmp_size_3:138; LA64-UAL:       # %bb.0: # %entry139; LA64-UAL-NEXT:    ld.hu $a2, $a0, 0140; LA64-UAL-NEXT:    ld.hu $a3, $a1, 0141; LA64-UAL-NEXT:    ld.bu $a0, $a0, 2142; LA64-UAL-NEXT:    ld.bu $a1, $a1, 2143; LA64-UAL-NEXT:    xor $a2, $a2, $a3144; LA64-UAL-NEXT:    xor $a0, $a0, $a1145; LA64-UAL-NEXT:    or $a0, $a2, $a0146; LA64-UAL-NEXT:    sltu $a0, $zero, $a0147; LA64-UAL-NEXT:    ret148;149; LA32-NUAL-LABEL: bcmp_size_3:150; LA32-NUAL:       # %bb.0: # %entry151; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16152; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill153; LA32-NUAL-NEXT:    ori $a2, $zero, 3154; LA32-NUAL-NEXT:    bl bcmp155; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload156; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16157; LA32-NUAL-NEXT:    ret158;159; LA64-NUAL-LABEL: bcmp_size_3:160; LA64-NUAL:       # %bb.0: # %entry161; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16162; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill163; LA64-NUAL-NEXT:    ori $a2, $zero, 3164; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)165; LA64-NUAL-NEXT:    jirl $ra, $ra, 0166; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload167; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16168; LA64-NUAL-NEXT:    ret169entry:170  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 3)171  ret i32 %bcmp172}173 174define signext i32 @bcmp_size_4(ptr %s1, ptr %s2) nounwind {175; LA32-UAL-LABEL: bcmp_size_4:176; LA32-UAL:       # %bb.0: # %entry177; LA32-UAL-NEXT:    ld.w $a0, $a0, 0178; LA32-UAL-NEXT:    ld.w $a1, $a1, 0179; LA32-UAL-NEXT:    xor $a0, $a0, $a1180; LA32-UAL-NEXT:    sltu $a0, $zero, $a0181; LA32-UAL-NEXT:    ret182;183; LA64-UAL-LABEL: bcmp_size_4:184; LA64-UAL:       # %bb.0: # %entry185; LA64-UAL-NEXT:    ld.w $a0, $a0, 0186; LA64-UAL-NEXT:    ld.w $a1, $a1, 0187; LA64-UAL-NEXT:    xor $a0, $a0, $a1188; LA64-UAL-NEXT:    sltu $a0, $zero, $a0189; LA64-UAL-NEXT:    ret190;191; LA32-NUAL-LABEL: bcmp_size_4:192; LA32-NUAL:       # %bb.0: # %entry193; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16194; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill195; LA32-NUAL-NEXT:    ori $a2, $zero, 4196; LA32-NUAL-NEXT:    bl bcmp197; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload198; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16199; LA32-NUAL-NEXT:    ret200;201; LA64-NUAL-LABEL: bcmp_size_4:202; LA64-NUAL:       # %bb.0: # %entry203; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16204; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill205; LA64-NUAL-NEXT:    ori $a2, $zero, 4206; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)207; LA64-NUAL-NEXT:    jirl $ra, $ra, 0208; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload209; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16210; LA64-NUAL-NEXT:    ret211entry:212  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 4)213  ret i32 %bcmp214}215 216define signext i32 @bcmp_size_5(ptr %s1, ptr %s2) nounwind {217; LA32-UAL-LABEL: bcmp_size_5:218; LA32-UAL:       # %bb.0: # %entry219; LA32-UAL-NEXT:    ld.w $a2, $a0, 0220; LA32-UAL-NEXT:    ld.w $a3, $a1, 0221; LA32-UAL-NEXT:    ld.bu $a0, $a0, 4222; LA32-UAL-NEXT:    ld.bu $a1, $a1, 4223; LA32-UAL-NEXT:    xor $a2, $a2, $a3224; LA32-UAL-NEXT:    xor $a0, $a0, $a1225; LA32-UAL-NEXT:    or $a0, $a2, $a0226; LA32-UAL-NEXT:    sltu $a0, $zero, $a0227; LA32-UAL-NEXT:    ret228;229; LA64-UAL-LABEL: bcmp_size_5:230; LA64-UAL:       # %bb.0: # %entry231; LA64-UAL-NEXT:    ld.w $a2, $a0, 0232; LA64-UAL-NEXT:    ld.w $a3, $a1, 0233; LA64-UAL-NEXT:    ld.bu $a0, $a0, 4234; LA64-UAL-NEXT:    ld.bu $a1, $a1, 4235; LA64-UAL-NEXT:    xor $a2, $a2, $a3236; LA64-UAL-NEXT:    xor $a0, $a0, $a1237; LA64-UAL-NEXT:    or $a0, $a2, $a0238; LA64-UAL-NEXT:    sltu $a0, $zero, $a0239; LA64-UAL-NEXT:    ret240;241; LA32-NUAL-LABEL: bcmp_size_5:242; LA32-NUAL:       # %bb.0: # %entry243; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16244; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill245; LA32-NUAL-NEXT:    ori $a2, $zero, 5246; LA32-NUAL-NEXT:    bl bcmp247; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload248; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16249; LA32-NUAL-NEXT:    ret250;251; LA64-NUAL-LABEL: bcmp_size_5:252; LA64-NUAL:       # %bb.0: # %entry253; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16254; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill255; LA64-NUAL-NEXT:    ori $a2, $zero, 5256; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)257; LA64-NUAL-NEXT:    jirl $ra, $ra, 0258; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload259; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16260; LA64-NUAL-NEXT:    ret261entry:262  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 5)263  ret i32 %bcmp264}265 266define signext i32 @bcmp_size_6(ptr %s1, ptr %s2) nounwind {267; LA32-UAL-LABEL: bcmp_size_6:268; LA32-UAL:       # %bb.0: # %entry269; LA32-UAL-NEXT:    ld.w $a2, $a0, 0270; LA32-UAL-NEXT:    ld.w $a3, $a1, 0271; LA32-UAL-NEXT:    ld.hu $a0, $a0, 4272; LA32-UAL-NEXT:    ld.hu $a1, $a1, 4273; LA32-UAL-NEXT:    xor $a2, $a2, $a3274; LA32-UAL-NEXT:    xor $a0, $a0, $a1275; LA32-UAL-NEXT:    or $a0, $a2, $a0276; LA32-UAL-NEXT:    sltu $a0, $zero, $a0277; LA32-UAL-NEXT:    ret278;279; LA64-UAL-LABEL: bcmp_size_6:280; LA64-UAL:       # %bb.0: # %entry281; LA64-UAL-NEXT:    ld.w $a2, $a0, 0282; LA64-UAL-NEXT:    ld.w $a3, $a1, 0283; LA64-UAL-NEXT:    ld.hu $a0, $a0, 4284; LA64-UAL-NEXT:    ld.hu $a1, $a1, 4285; LA64-UAL-NEXT:    xor $a2, $a2, $a3286; LA64-UAL-NEXT:    xor $a0, $a0, $a1287; LA64-UAL-NEXT:    or $a0, $a2, $a0288; LA64-UAL-NEXT:    sltu $a0, $zero, $a0289; LA64-UAL-NEXT:    ret290;291; LA32-NUAL-LABEL: bcmp_size_6:292; LA32-NUAL:       # %bb.0: # %entry293; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16294; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill295; LA32-NUAL-NEXT:    ori $a2, $zero, 6296; LA32-NUAL-NEXT:    bl bcmp297; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload298; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16299; LA32-NUAL-NEXT:    ret300;301; LA64-NUAL-LABEL: bcmp_size_6:302; LA64-NUAL:       # %bb.0: # %entry303; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16304; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill305; LA64-NUAL-NEXT:    ori $a2, $zero, 6306; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)307; LA64-NUAL-NEXT:    jirl $ra, $ra, 0308; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload309; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16310; LA64-NUAL-NEXT:    ret311entry:312  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 6)313  ret i32 %bcmp314}315 316define signext i32 @bcmp_size_7(ptr %s1, ptr %s2) nounwind {317; LA32-UAL-LABEL: bcmp_size_7:318; LA32-UAL:       # %bb.0: # %entry319; LA32-UAL-NEXT:    ld.w $a2, $a0, 0320; LA32-UAL-NEXT:    ld.w $a3, $a1, 0321; LA32-UAL-NEXT:    ld.w $a0, $a0, 3322; LA32-UAL-NEXT:    ld.w $a1, $a1, 3323; LA32-UAL-NEXT:    xor $a2, $a2, $a3324; LA32-UAL-NEXT:    xor $a0, $a0, $a1325; LA32-UAL-NEXT:    or $a0, $a2, $a0326; LA32-UAL-NEXT:    sltu $a0, $zero, $a0327; LA32-UAL-NEXT:    ret328;329; LA64-UAL-LABEL: bcmp_size_7:330; LA64-UAL:       # %bb.0: # %entry331; LA64-UAL-NEXT:    ld.w $a2, $a0, 0332; LA64-UAL-NEXT:    ld.w $a3, $a1, 0333; LA64-UAL-NEXT:    ld.w $a0, $a0, 3334; LA64-UAL-NEXT:    ld.w $a1, $a1, 3335; LA64-UAL-NEXT:    xor $a2, $a2, $a3336; LA64-UAL-NEXT:    xor $a0, $a0, $a1337; LA64-UAL-NEXT:    or $a0, $a2, $a0338; LA64-UAL-NEXT:    sltu $a0, $zero, $a0339; LA64-UAL-NEXT:    ret340;341; LA32-NUAL-LABEL: bcmp_size_7:342; LA32-NUAL:       # %bb.0: # %entry343; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16344; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill345; LA32-NUAL-NEXT:    ori $a2, $zero, 7346; LA32-NUAL-NEXT:    bl bcmp347; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload348; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16349; LA32-NUAL-NEXT:    ret350;351; LA64-NUAL-LABEL: bcmp_size_7:352; LA64-NUAL:       # %bb.0: # %entry353; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16354; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill355; LA64-NUAL-NEXT:    ori $a2, $zero, 7356; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)357; LA64-NUAL-NEXT:    jirl $ra, $ra, 0358; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload359; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16360; LA64-NUAL-NEXT:    ret361entry:362  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 7)363  ret i32 %bcmp364}365 366define signext i32 @bcmp_size_8(ptr %s1, ptr %s2) nounwind {367; LA32-UAL-LABEL: bcmp_size_8:368; LA32-UAL:       # %bb.0: # %entry369; LA32-UAL-NEXT:    ld.w $a2, $a0, 0370; LA32-UAL-NEXT:    ld.w $a3, $a1, 0371; LA32-UAL-NEXT:    ld.w $a0, $a0, 4372; LA32-UAL-NEXT:    ld.w $a1, $a1, 4373; LA32-UAL-NEXT:    xor $a2, $a2, $a3374; LA32-UAL-NEXT:    xor $a0, $a0, $a1375; LA32-UAL-NEXT:    or $a0, $a2, $a0376; LA32-UAL-NEXT:    sltu $a0, $zero, $a0377; LA32-UAL-NEXT:    ret378;379; LA64-UAL-LABEL: bcmp_size_8:380; LA64-UAL:       # %bb.0: # %entry381; LA64-UAL-NEXT:    ld.d $a0, $a0, 0382; LA64-UAL-NEXT:    ld.d $a1, $a1, 0383; LA64-UAL-NEXT:    xor $a0, $a0, $a1384; LA64-UAL-NEXT:    sltu $a0, $zero, $a0385; LA64-UAL-NEXT:    ret386;387; LA32-NUAL-LABEL: bcmp_size_8:388; LA32-NUAL:       # %bb.0: # %entry389; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16390; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill391; LA32-NUAL-NEXT:    ori $a2, $zero, 8392; LA32-NUAL-NEXT:    bl bcmp393; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload394; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16395; LA32-NUAL-NEXT:    ret396;397; LA64-NUAL-LABEL: bcmp_size_8:398; LA64-NUAL:       # %bb.0: # %entry399; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16400; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill401; LA64-NUAL-NEXT:    ori $a2, $zero, 8402; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)403; LA64-NUAL-NEXT:    jirl $ra, $ra, 0404; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload405; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16406; LA64-NUAL-NEXT:    ret407entry:408  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 8)409  ret i32 %bcmp410}411 412define signext i32 @bcmp_size_15(ptr %s1, ptr %s2) nounwind {413; LA32-UAL-LABEL: bcmp_size_15:414; LA32-UAL:       # %bb.0: # %entry415; LA32-UAL-NEXT:    ld.w $a2, $a0, 0416; LA32-UAL-NEXT:    ld.w $a3, $a1, 0417; LA32-UAL-NEXT:    ld.w $a4, $a0, 4418; LA32-UAL-NEXT:    ld.w $a5, $a1, 4419; LA32-UAL-NEXT:    ld.w $a6, $a0, 8420; LA32-UAL-NEXT:    ld.w $a7, $a1, 8421; LA32-UAL-NEXT:    ld.w $a0, $a0, 11422; LA32-UAL-NEXT:    ld.w $a1, $a1, 11423; LA32-UAL-NEXT:    xor $a2, $a2, $a3424; LA32-UAL-NEXT:    xor $a3, $a4, $a5425; LA32-UAL-NEXT:    xor $a4, $a6, $a7426; LA32-UAL-NEXT:    xor $a0, $a0, $a1427; LA32-UAL-NEXT:    or $a1, $a2, $a3428; LA32-UAL-NEXT:    or $a0, $a4, $a0429; LA32-UAL-NEXT:    or $a0, $a1, $a0430; LA32-UAL-NEXT:    sltu $a0, $zero, $a0431; LA32-UAL-NEXT:    ret432;433; LA64-UAL-LABEL: bcmp_size_15:434; LA64-UAL:       # %bb.0: # %entry435; LA64-UAL-NEXT:    ld.d $a2, $a0, 0436; LA64-UAL-NEXT:    ld.d $a3, $a1, 0437; LA64-UAL-NEXT:    ld.d $a0, $a0, 7438; LA64-UAL-NEXT:    ld.d $a1, $a1, 7439; LA64-UAL-NEXT:    xor $a2, $a2, $a3440; LA64-UAL-NEXT:    xor $a0, $a0, $a1441; LA64-UAL-NEXT:    or $a0, $a2, $a0442; LA64-UAL-NEXT:    sltu $a0, $zero, $a0443; LA64-UAL-NEXT:    ret444;445; LA32-NUAL-LABEL: bcmp_size_15:446; LA32-NUAL:       # %bb.0: # %entry447; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16448; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill449; LA32-NUAL-NEXT:    ori $a2, $zero, 15450; LA32-NUAL-NEXT:    bl bcmp451; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload452; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16453; LA32-NUAL-NEXT:    ret454;455; LA64-NUAL-LABEL: bcmp_size_15:456; LA64-NUAL:       # %bb.0: # %entry457; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16458; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill459; LA64-NUAL-NEXT:    ori $a2, $zero, 15460; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)461; LA64-NUAL-NEXT:    jirl $ra, $ra, 0462; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload463; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16464; LA64-NUAL-NEXT:    ret465entry:466  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 15)467  ret i32 %bcmp468}469 470define signext i32 @bcmp_size_16(ptr %s1, ptr %s2) nounwind {471; LA32-UAL-LABEL: bcmp_size_16:472; LA32-UAL:       # %bb.0: # %entry473; LA32-UAL-NEXT:    ld.w $a2, $a0, 0474; LA32-UAL-NEXT:    ld.w $a3, $a1, 0475; LA32-UAL-NEXT:    ld.w $a4, $a0, 4476; LA32-UAL-NEXT:    ld.w $a5, $a1, 4477; LA32-UAL-NEXT:    ld.w $a6, $a0, 8478; LA32-UAL-NEXT:    ld.w $a7, $a1, 8479; LA32-UAL-NEXT:    ld.w $a0, $a0, 12480; LA32-UAL-NEXT:    ld.w $a1, $a1, 12481; LA32-UAL-NEXT:    xor $a2, $a2, $a3482; LA32-UAL-NEXT:    xor $a3, $a4, $a5483; LA32-UAL-NEXT:    xor $a4, $a6, $a7484; LA32-UAL-NEXT:    xor $a0, $a0, $a1485; LA32-UAL-NEXT:    or $a1, $a2, $a3486; LA32-UAL-NEXT:    or $a0, $a4, $a0487; LA32-UAL-NEXT:    or $a0, $a1, $a0488; LA32-UAL-NEXT:    sltu $a0, $zero, $a0489; LA32-UAL-NEXT:    ret490;491; LA64-UAL-LABEL: bcmp_size_16:492; LA64-UAL:       # %bb.0: # %entry493; LA64-UAL-NEXT:    ld.d $a2, $a0, 0494; LA64-UAL-NEXT:    ld.d $a3, $a1, 0495; LA64-UAL-NEXT:    ld.d $a0, $a0, 8496; LA64-UAL-NEXT:    ld.d $a1, $a1, 8497; LA64-UAL-NEXT:    xor $a2, $a2, $a3498; LA64-UAL-NEXT:    xor $a0, $a0, $a1499; LA64-UAL-NEXT:    or $a0, $a2, $a0500; LA64-UAL-NEXT:    sltu $a0, $zero, $a0501; LA64-UAL-NEXT:    ret502;503; LA32-NUAL-LABEL: bcmp_size_16:504; LA32-NUAL:       # %bb.0: # %entry505; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16506; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill507; LA32-NUAL-NEXT:    ori $a2, $zero, 16508; LA32-NUAL-NEXT:    bl bcmp509; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload510; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16511; LA32-NUAL-NEXT:    ret512;513; LA64-NUAL-LABEL: bcmp_size_16:514; LA64-NUAL:       # %bb.0: # %entry515; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16516; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill517; LA64-NUAL-NEXT:    ori $a2, $zero, 16518; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)519; LA64-NUAL-NEXT:    jirl $ra, $ra, 0520; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload521; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16522; LA64-NUAL-NEXT:    ret523entry:524  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 16)525  ret i32 %bcmp526}527 528define signext i32 @bcmp_size_31(ptr %s1, ptr %s2) nounwind {529; LA32-UAL-LABEL: bcmp_size_31:530; LA32-UAL:       # %bb.0: # %entry531; LA32-UAL-NEXT:    ld.w $a2, $a0, 0532; LA32-UAL-NEXT:    ld.w $a3, $a1, 0533; LA32-UAL-NEXT:    ld.w $a4, $a0, 4534; LA32-UAL-NEXT:    ld.w $a5, $a1, 4535; LA32-UAL-NEXT:    ld.w $a6, $a0, 8536; LA32-UAL-NEXT:    ld.w $a7, $a1, 8537; LA32-UAL-NEXT:    ld.w $t0, $a0, 12538; LA32-UAL-NEXT:    ld.w $t1, $a1, 12539; LA32-UAL-NEXT:    xor $a2, $a2, $a3540; LA32-UAL-NEXT:    xor $a3, $a4, $a5541; LA32-UAL-NEXT:    xor $a4, $a6, $a7542; LA32-UAL-NEXT:    xor $a5, $t0, $t1543; LA32-UAL-NEXT:    ld.w $a6, $a0, 16544; LA32-UAL-NEXT:    ld.w $a7, $a1, 16545; LA32-UAL-NEXT:    ld.w $t0, $a0, 20546; LA32-UAL-NEXT:    ld.w $t1, $a1, 20547; LA32-UAL-NEXT:    ld.w $t2, $a0, 24548; LA32-UAL-NEXT:    ld.w $t3, $a1, 24549; LA32-UAL-NEXT:    ld.w $a0, $a0, 27550; LA32-UAL-NEXT:    ld.w $a1, $a1, 27551; LA32-UAL-NEXT:    xor $a6, $a6, $a7552; LA32-UAL-NEXT:    xor $a7, $t0, $t1553; LA32-UAL-NEXT:    xor $t0, $t2, $t3554; LA32-UAL-NEXT:    xor $a0, $a0, $a1555; LA32-UAL-NEXT:    or $a1, $a2, $a3556; LA32-UAL-NEXT:    or $a2, $a4, $a5557; LA32-UAL-NEXT:    or $a3, $a6, $a7558; LA32-UAL-NEXT:    or $a0, $t0, $a0559; LA32-UAL-NEXT:    or $a1, $a1, $a2560; LA32-UAL-NEXT:    or $a0, $a3, $a0561; LA32-UAL-NEXT:    or $a0, $a1, $a0562; LA32-UAL-NEXT:    sltu $a0, $zero, $a0563; LA32-UAL-NEXT:    ret564;565; LA64-UAL-LABEL: bcmp_size_31:566; LA64-UAL:       # %bb.0: # %entry567; LA64-UAL-NEXT:    ld.d $a2, $a0, 0568; LA64-UAL-NEXT:    ld.d $a3, $a1, 0569; LA64-UAL-NEXT:    ld.d $a4, $a0, 8570; LA64-UAL-NEXT:    ld.d $a5, $a1, 8571; LA64-UAL-NEXT:    ld.d $a6, $a0, 16572; LA64-UAL-NEXT:    ld.d $a7, $a1, 16573; LA64-UAL-NEXT:    ld.d $a0, $a0, 23574; LA64-UAL-NEXT:    ld.d $a1, $a1, 23575; LA64-UAL-NEXT:    xor $a2, $a2, $a3576; LA64-UAL-NEXT:    xor $a3, $a4, $a5577; LA64-UAL-NEXT:    xor $a4, $a6, $a7578; LA64-UAL-NEXT:    xor $a0, $a0, $a1579; LA64-UAL-NEXT:    or $a1, $a2, $a3580; LA64-UAL-NEXT:    or $a0, $a4, $a0581; LA64-UAL-NEXT:    or $a0, $a1, $a0582; LA64-UAL-NEXT:    sltu $a0, $zero, $a0583; LA64-UAL-NEXT:    ret584;585; LA32-NUAL-LABEL: bcmp_size_31:586; LA32-NUAL:       # %bb.0: # %entry587; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16588; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill589; LA32-NUAL-NEXT:    ori $a2, $zero, 31590; LA32-NUAL-NEXT:    bl bcmp591; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload592; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16593; LA32-NUAL-NEXT:    ret594;595; LA64-NUAL-LABEL: bcmp_size_31:596; LA64-NUAL:       # %bb.0: # %entry597; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16598; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill599; LA64-NUAL-NEXT:    ori $a2, $zero, 31600; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)601; LA64-NUAL-NEXT:    jirl $ra, $ra, 0602; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload603; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16604; LA64-NUAL-NEXT:    ret605entry:606  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 31)607  ret i32 %bcmp608}609 610define signext i32 @bcmp_size_32(ptr %s1, ptr %s2) nounwind {611; LA32-UAL-LABEL: bcmp_size_32:612; LA32-UAL:       # %bb.0: # %entry613; LA32-UAL-NEXT:    ld.w $a2, $a0, 0614; LA32-UAL-NEXT:    ld.w $a3, $a1, 0615; LA32-UAL-NEXT:    ld.w $a4, $a0, 4616; LA32-UAL-NEXT:    ld.w $a5, $a1, 4617; LA32-UAL-NEXT:    ld.w $a6, $a0, 8618; LA32-UAL-NEXT:    ld.w $a7, $a1, 8619; LA32-UAL-NEXT:    ld.w $t0, $a0, 12620; LA32-UAL-NEXT:    ld.w $t1, $a1, 12621; LA32-UAL-NEXT:    xor $a2, $a2, $a3622; LA32-UAL-NEXT:    xor $a3, $a4, $a5623; LA32-UAL-NEXT:    xor $a4, $a6, $a7624; LA32-UAL-NEXT:    xor $a5, $t0, $t1625; LA32-UAL-NEXT:    ld.w $a6, $a0, 16626; LA32-UAL-NEXT:    ld.w $a7, $a1, 16627; LA32-UAL-NEXT:    ld.w $t0, $a0, 20628; LA32-UAL-NEXT:    ld.w $t1, $a1, 20629; LA32-UAL-NEXT:    ld.w $t2, $a0, 24630; LA32-UAL-NEXT:    ld.w $t3, $a1, 24631; LA32-UAL-NEXT:    ld.w $a0, $a0, 28632; LA32-UAL-NEXT:    ld.w $a1, $a1, 28633; LA32-UAL-NEXT:    xor $a6, $a6, $a7634; LA32-UAL-NEXT:    xor $a7, $t0, $t1635; LA32-UAL-NEXT:    xor $t0, $t2, $t3636; LA32-UAL-NEXT:    xor $a0, $a0, $a1637; LA32-UAL-NEXT:    or $a1, $a2, $a3638; LA32-UAL-NEXT:    or $a2, $a4, $a5639; LA32-UAL-NEXT:    or $a3, $a6, $a7640; LA32-UAL-NEXT:    or $a0, $t0, $a0641; LA32-UAL-NEXT:    or $a1, $a1, $a2642; LA32-UAL-NEXT:    or $a0, $a3, $a0643; LA32-UAL-NEXT:    or $a0, $a1, $a0644; LA32-UAL-NEXT:    sltu $a0, $zero, $a0645; LA32-UAL-NEXT:    ret646;647; LA64-UAL-LABEL: bcmp_size_32:648; LA64-UAL:       # %bb.0: # %entry649; LA64-UAL-NEXT:    ld.d $a2, $a0, 0650; LA64-UAL-NEXT:    ld.d $a3, $a1, 0651; LA64-UAL-NEXT:    ld.d $a4, $a0, 8652; LA64-UAL-NEXT:    ld.d $a5, $a1, 8653; LA64-UAL-NEXT:    ld.d $a6, $a0, 16654; LA64-UAL-NEXT:    ld.d $a7, $a1, 16655; LA64-UAL-NEXT:    ld.d $a0, $a0, 24656; LA64-UAL-NEXT:    ld.d $a1, $a1, 24657; LA64-UAL-NEXT:    xor $a2, $a2, $a3658; LA64-UAL-NEXT:    xor $a3, $a4, $a5659; LA64-UAL-NEXT:    xor $a4, $a6, $a7660; LA64-UAL-NEXT:    xor $a0, $a0, $a1661; LA64-UAL-NEXT:    or $a1, $a2, $a3662; LA64-UAL-NEXT:    or $a0, $a4, $a0663; LA64-UAL-NEXT:    or $a0, $a1, $a0664; LA64-UAL-NEXT:    sltu $a0, $zero, $a0665; LA64-UAL-NEXT:    ret666;667; LA32-NUAL-LABEL: bcmp_size_32:668; LA32-NUAL:       # %bb.0: # %entry669; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16670; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill671; LA32-NUAL-NEXT:    ori $a2, $zero, 32672; LA32-NUAL-NEXT:    bl bcmp673; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload674; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16675; LA32-NUAL-NEXT:    ret676;677; LA64-NUAL-LABEL: bcmp_size_32:678; LA64-NUAL:       # %bb.0: # %entry679; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16680; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill681; LA64-NUAL-NEXT:    ori $a2, $zero, 32682; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)683; LA64-NUAL-NEXT:    jirl $ra, $ra, 0684; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload685; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16686; LA64-NUAL-NEXT:    ret687entry:688  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 32)689  ret i32 %bcmp690}691 692define signext i32 @bcmp_size_63(ptr %s1, ptr %s2) nounwind {693; LA32-LABEL: bcmp_size_63:694; LA32:       # %bb.0: # %entry695; LA32-NEXT:    addi.w $sp, $sp, -16696; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill697; LA32-NEXT:    ori $a2, $zero, 63698; LA32-NEXT:    bl bcmp699; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload700; LA32-NEXT:    addi.w $sp, $sp, 16701; LA32-NEXT:    ret702;703; LA64-UAL-LABEL: bcmp_size_63:704; LA64-UAL:       # %bb.0: # %entry705; LA64-UAL-NEXT:    ld.d $a2, $a0, 0706; LA64-UAL-NEXT:    ld.d $a3, $a1, 0707; LA64-UAL-NEXT:    ld.d $a4, $a0, 8708; LA64-UAL-NEXT:    ld.d $a5, $a1, 8709; LA64-UAL-NEXT:    ld.d $a6, $a0, 16710; LA64-UAL-NEXT:    ld.d $a7, $a1, 16711; LA64-UAL-NEXT:    ld.d $t0, $a0, 24712; LA64-UAL-NEXT:    ld.d $t1, $a1, 24713; LA64-UAL-NEXT:    xor $a2, $a2, $a3714; LA64-UAL-NEXT:    xor $a3, $a4, $a5715; LA64-UAL-NEXT:    xor $a4, $a6, $a7716; LA64-UAL-NEXT:    xor $a5, $t0, $t1717; LA64-UAL-NEXT:    ld.d $a6, $a0, 32718; LA64-UAL-NEXT:    ld.d $a7, $a1, 32719; LA64-UAL-NEXT:    ld.d $t0, $a0, 40720; LA64-UAL-NEXT:    ld.d $t1, $a1, 40721; LA64-UAL-NEXT:    ld.d $t2, $a0, 48722; LA64-UAL-NEXT:    ld.d $t3, $a1, 48723; LA64-UAL-NEXT:    ld.d $a0, $a0, 55724; LA64-UAL-NEXT:    ld.d $a1, $a1, 55725; LA64-UAL-NEXT:    xor $a6, $a6, $a7726; LA64-UAL-NEXT:    xor $a7, $t0, $t1727; LA64-UAL-NEXT:    xor $t0, $t2, $t3728; LA64-UAL-NEXT:    xor $a0, $a0, $a1729; LA64-UAL-NEXT:    or $a1, $a2, $a3730; LA64-UAL-NEXT:    or $a2, $a4, $a5731; LA64-UAL-NEXT:    or $a3, $a6, $a7732; LA64-UAL-NEXT:    or $a0, $t0, $a0733; LA64-UAL-NEXT:    or $a1, $a1, $a2734; LA64-UAL-NEXT:    or $a0, $a3, $a0735; LA64-UAL-NEXT:    or $a0, $a1, $a0736; LA64-UAL-NEXT:    sltu $a0, $zero, $a0737; LA64-UAL-NEXT:    ret738;739; LA64-NUAL-LABEL: bcmp_size_63:740; LA64-NUAL:       # %bb.0: # %entry741; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16742; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill743; LA64-NUAL-NEXT:    ori $a2, $zero, 63744; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)745; LA64-NUAL-NEXT:    jirl $ra, $ra, 0746; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload747; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16748; LA64-NUAL-NEXT:    ret749entry:750  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 63)751  ret i32 %bcmp752}753 754define signext i32 @bcmp_size_64(ptr %s1, ptr %s2) nounwind {755; LA32-LABEL: bcmp_size_64:756; LA32:       # %bb.0: # %entry757; LA32-NEXT:    addi.w $sp, $sp, -16758; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill759; LA32-NEXT:    ori $a2, $zero, 64760; LA32-NEXT:    bl bcmp761; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload762; LA32-NEXT:    addi.w $sp, $sp, 16763; LA32-NEXT:    ret764;765; LA64-UAL-LABEL: bcmp_size_64:766; LA64-UAL:       # %bb.0: # %entry767; LA64-UAL-NEXT:    ld.d $a2, $a0, 0768; LA64-UAL-NEXT:    ld.d $a3, $a1, 0769; LA64-UAL-NEXT:    ld.d $a4, $a0, 8770; LA64-UAL-NEXT:    ld.d $a5, $a1, 8771; LA64-UAL-NEXT:    ld.d $a6, $a0, 16772; LA64-UAL-NEXT:    ld.d $a7, $a1, 16773; LA64-UAL-NEXT:    ld.d $t0, $a0, 24774; LA64-UAL-NEXT:    ld.d $t1, $a1, 24775; LA64-UAL-NEXT:    xor $a2, $a2, $a3776; LA64-UAL-NEXT:    xor $a3, $a4, $a5777; LA64-UAL-NEXT:    xor $a4, $a6, $a7778; LA64-UAL-NEXT:    xor $a5, $t0, $t1779; LA64-UAL-NEXT:    ld.d $a6, $a0, 32780; LA64-UAL-NEXT:    ld.d $a7, $a1, 32781; LA64-UAL-NEXT:    ld.d $t0, $a0, 40782; LA64-UAL-NEXT:    ld.d $t1, $a1, 40783; LA64-UAL-NEXT:    ld.d $t2, $a0, 48784; LA64-UAL-NEXT:    ld.d $t3, $a1, 48785; LA64-UAL-NEXT:    ld.d $a0, $a0, 56786; LA64-UAL-NEXT:    ld.d $a1, $a1, 56787; LA64-UAL-NEXT:    xor $a6, $a6, $a7788; LA64-UAL-NEXT:    xor $a7, $t0, $t1789; LA64-UAL-NEXT:    xor $t0, $t2, $t3790; LA64-UAL-NEXT:    xor $a0, $a0, $a1791; LA64-UAL-NEXT:    or $a1, $a2, $a3792; LA64-UAL-NEXT:    or $a2, $a4, $a5793; LA64-UAL-NEXT:    or $a3, $a6, $a7794; LA64-UAL-NEXT:    or $a0, $t0, $a0795; LA64-UAL-NEXT:    or $a1, $a1, $a2796; LA64-UAL-NEXT:    or $a0, $a3, $a0797; LA64-UAL-NEXT:    or $a0, $a1, $a0798; LA64-UAL-NEXT:    sltu $a0, $zero, $a0799; LA64-UAL-NEXT:    ret800;801; LA64-NUAL-LABEL: bcmp_size_64:802; LA64-NUAL:       # %bb.0: # %entry803; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16804; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill805; LA64-NUAL-NEXT:    ori $a2, $zero, 64806; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)807; LA64-NUAL-NEXT:    jirl $ra, $ra, 0808; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload809; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16810; LA64-NUAL-NEXT:    ret811entry:812  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 64)813  ret i32 %bcmp814}815 816define signext i32 @bcmp_size_127(ptr %s1, ptr %s2) nounwind {817; LA32-LABEL: bcmp_size_127:818; LA32:       # %bb.0: # %entry819; LA32-NEXT:    addi.w $sp, $sp, -16820; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill821; LA32-NEXT:    ori $a2, $zero, 127822; LA32-NEXT:    bl bcmp823; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload824; LA32-NEXT:    addi.w $sp, $sp, 16825; LA32-NEXT:    ret826;827; LA64-LABEL: bcmp_size_127:828; LA64:       # %bb.0: # %entry829; LA64-NEXT:    addi.d $sp, $sp, -16830; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill831; LA64-NEXT:    ori $a2, $zero, 127832; LA64-NEXT:    pcaddu18i $ra, %call36(bcmp)833; LA64-NEXT:    jirl $ra, $ra, 0834; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload835; LA64-NEXT:    addi.d $sp, $sp, 16836; LA64-NEXT:    ret837entry:838  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 127)839  ret i32 %bcmp840}841 842define signext i32 @bcmp_size_128(ptr %s1, ptr %s2) nounwind {843; LA32-LABEL: bcmp_size_128:844; LA32:       # %bb.0: # %entry845; LA32-NEXT:    addi.w $sp, $sp, -16846; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill847; LA32-NEXT:    ori $a2, $zero, 128848; LA32-NEXT:    bl bcmp849; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload850; LA32-NEXT:    addi.w $sp, $sp, 16851; LA32-NEXT:    ret852;853; LA64-LABEL: bcmp_size_128:854; LA64:       # %bb.0: # %entry855; LA64-NEXT:    addi.d $sp, $sp, -16856; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill857; LA64-NEXT:    ori $a2, $zero, 128858; LA64-NEXT:    pcaddu18i $ra, %call36(bcmp)859; LA64-NEXT:    jirl $ra, $ra, 0860; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload861; LA64-NEXT:    addi.d $sp, $sp, 16862; LA64-NEXT:    ret863entry:864  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 128)865  ret i32 %bcmp866}867 868define signext i32 @bcmp_size_runtime(ptr %s1, ptr %s2, iGRLen %len) nounwind {869; LA32-LABEL: bcmp_size_runtime:870; LA32:       # %bb.0: # %entry871; LA32-NEXT:    addi.w $sp, $sp, -16872; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill873; LA32-NEXT:    bl bcmp874; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload875; LA32-NEXT:    addi.w $sp, $sp, 16876; LA32-NEXT:    ret877;878; LA64-LABEL: bcmp_size_runtime:879; LA64:       # %bb.0: # %entry880; LA64-NEXT:    addi.d $sp, $sp, -16881; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill882; LA64-NEXT:    pcaddu18i $ra, %call36(bcmp)883; LA64-NEXT:    jirl $ra, $ra, 0884; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload885; LA64-NEXT:    addi.d $sp, $sp, 16886; LA64-NEXT:    ret887entry:888  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen %len)889  ret i32 %bcmp890}891 892define i1 @bcmp_eq_zero(ptr %s1, ptr %s2) nounwind {893; LA32-UAL-LABEL: bcmp_eq_zero:894; LA32-UAL:       # %bb.0: # %entry895; LA32-UAL-NEXT:    ld.w $a2, $a0, 0896; LA32-UAL-NEXT:    ld.w $a3, $a1, 0897; LA32-UAL-NEXT:    ld.w $a4, $a0, 4898; LA32-UAL-NEXT:    ld.w $a5, $a1, 4899; LA32-UAL-NEXT:    ld.w $a6, $a0, 8900; LA32-UAL-NEXT:    ld.w $a7, $a1, 8901; LA32-UAL-NEXT:    ld.w $a0, $a0, 12902; LA32-UAL-NEXT:    ld.w $a1, $a1, 12903; LA32-UAL-NEXT:    xor $a2, $a2, $a3904; LA32-UAL-NEXT:    xor $a3, $a4, $a5905; LA32-UAL-NEXT:    xor $a4, $a6, $a7906; LA32-UAL-NEXT:    xor $a0, $a0, $a1907; LA32-UAL-NEXT:    or $a1, $a2, $a3908; LA32-UAL-NEXT:    or $a0, $a4, $a0909; LA32-UAL-NEXT:    or $a0, $a1, $a0910; LA32-UAL-NEXT:    sltui $a0, $a0, 1911; LA32-UAL-NEXT:    ret912;913; LA64-UAL-LABEL: bcmp_eq_zero:914; LA64-UAL:       # %bb.0: # %entry915; LA64-UAL-NEXT:    ld.d $a2, $a0, 0916; LA64-UAL-NEXT:    ld.d $a3, $a1, 0917; LA64-UAL-NEXT:    ld.d $a0, $a0, 8918; LA64-UAL-NEXT:    ld.d $a1, $a1, 8919; LA64-UAL-NEXT:    xor $a2, $a2, $a3920; LA64-UAL-NEXT:    xor $a0, $a0, $a1921; LA64-UAL-NEXT:    or $a0, $a2, $a0922; LA64-UAL-NEXT:    sltui $a0, $a0, 1923; LA64-UAL-NEXT:    ret924;925; LA32-NUAL-LABEL: bcmp_eq_zero:926; LA32-NUAL:       # %bb.0: # %entry927; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16928; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill929; LA32-NUAL-NEXT:    ori $a2, $zero, 16930; LA32-NUAL-NEXT:    bl bcmp931; LA32-NUAL-NEXT:    sltui $a0, $a0, 1932; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload933; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16934; LA32-NUAL-NEXT:    ret935;936; LA64-NUAL-LABEL: bcmp_eq_zero:937; LA64-NUAL:       # %bb.0: # %entry938; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16939; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill940; LA64-NUAL-NEXT:    ori $a2, $zero, 16941; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)942; LA64-NUAL-NEXT:    jirl $ra, $ra, 0943; LA64-NUAL-NEXT:    sltui $a0, $a0, 1944; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload945; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16946; LA64-NUAL-NEXT:    ret947entry:948  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 16)949  %ret = icmp eq i32 %bcmp, 0950  ret i1 %ret951}952 953define i1 @bcmp_lt_zero(ptr %s1, ptr %s2) nounwind {954; LA32-UAL-LABEL: bcmp_lt_zero:955; LA32-UAL:       # %bb.0: # %entry956; LA32-UAL-NEXT:    move $a0, $zero957; LA32-UAL-NEXT:    ret958;959; LA64-UAL-LABEL: bcmp_lt_zero:960; LA64-UAL:       # %bb.0: # %entry961; LA64-UAL-NEXT:    move $a0, $zero962; LA64-UAL-NEXT:    ret963;964; LA32-NUAL-LABEL: bcmp_lt_zero:965; LA32-NUAL:       # %bb.0: # %entry966; LA32-NUAL-NEXT:    addi.w $sp, $sp, -16967; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill968; LA32-NUAL-NEXT:    ori $a2, $zero, 4969; LA32-NUAL-NEXT:    bl bcmp970; LA32-NUAL-NEXT:    srli.w $a0, $a0, 31971; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload972; LA32-NUAL-NEXT:    addi.w $sp, $sp, 16973; LA32-NUAL-NEXT:    ret974;975; LA64-NUAL-LABEL: bcmp_lt_zero:976; LA64-NUAL:       # %bb.0: # %entry977; LA64-NUAL-NEXT:    addi.d $sp, $sp, -16978; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill979; LA64-NUAL-NEXT:    ori $a2, $zero, 4980; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)981; LA64-NUAL-NEXT:    jirl $ra, $ra, 0982; LA64-NUAL-NEXT:    slti $a0, $a0, 0983; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload984; LA64-NUAL-NEXT:    addi.d $sp, $sp, 16985; LA64-NUAL-NEXT:    ret986entry:987  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 4)988  %ret = icmp slt i32 %bcmp, 0989  ret i1 %ret990}991 992define i1 @bcmp_gt_zero(ptr %s1, ptr %s2) nounwind {993; LA32-UAL-LABEL: bcmp_gt_zero:994; LA32-UAL:       # %bb.0: # %entry995; LA32-UAL-NEXT:    ld.w $a0, $a0, 0996; LA32-UAL-NEXT:    ld.w $a1, $a1, 0997; LA32-UAL-NEXT:    xor $a0, $a0, $a1998; LA32-UAL-NEXT:    sltu $a0, $zero, $a0999; LA32-UAL-NEXT:    ret1000;1001; LA64-UAL-LABEL: bcmp_gt_zero:1002; LA64-UAL:       # %bb.0: # %entry1003; LA64-UAL-NEXT:    ld.w $a0, $a0, 01004; LA64-UAL-NEXT:    ld.w $a1, $a1, 01005; LA64-UAL-NEXT:    xor $a0, $a0, $a11006; LA64-UAL-NEXT:    sltu $a0, $zero, $a01007; LA64-UAL-NEXT:    ret1008;1009; LA32-NUAL-LABEL: bcmp_gt_zero:1010; LA32-NUAL:       # %bb.0: # %entry1011; LA32-NUAL-NEXT:    addi.w $sp, $sp, -161012; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill1013; LA32-NUAL-NEXT:    ori $a2, $zero, 41014; LA32-NUAL-NEXT:    bl bcmp1015; LA32-NUAL-NEXT:    slt $a0, $zero, $a01016; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload1017; LA32-NUAL-NEXT:    addi.w $sp, $sp, 161018; LA32-NUAL-NEXT:    ret1019;1020; LA64-NUAL-LABEL: bcmp_gt_zero:1021; LA64-NUAL:       # %bb.0: # %entry1022; LA64-NUAL-NEXT:    addi.d $sp, $sp, -161023; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill1024; LA64-NUAL-NEXT:    ori $a2, $zero, 41025; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)1026; LA64-NUAL-NEXT:    jirl $ra, $ra, 01027; LA64-NUAL-NEXT:    slt $a0, $zero, $a01028; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload1029; LA64-NUAL-NEXT:    addi.d $sp, $sp, 161030; LA64-NUAL-NEXT:    ret1031entry:1032  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 4)1033  %ret = icmp sgt i32 %bcmp, 01034  ret i1 %ret1035}1036 1037define i1 @bcmp_le_zero(ptr %s1, ptr %s2) nounwind {1038; LA32-UAL-LABEL: bcmp_le_zero:1039; LA32-UAL:       # %bb.0: # %entry1040; LA32-UAL-NEXT:    ld.w $a0, $a0, 01041; LA32-UAL-NEXT:    ld.w $a1, $a1, 01042; LA32-UAL-NEXT:    xor $a0, $a0, $a11043; LA32-UAL-NEXT:    sltu $a0, $zero, $a01044; LA32-UAL-NEXT:    slti $a0, $a0, 11045; LA32-UAL-NEXT:    ret1046;1047; LA64-UAL-LABEL: bcmp_le_zero:1048; LA64-UAL:       # %bb.0: # %entry1049; LA64-UAL-NEXT:    ld.w $a0, $a0, 01050; LA64-UAL-NEXT:    ld.w $a1, $a1, 01051; LA64-UAL-NEXT:    xor $a0, $a0, $a11052; LA64-UAL-NEXT:    sltu $a0, $zero, $a01053; LA64-UAL-NEXT:    slti $a0, $a0, 11054; LA64-UAL-NEXT:    ret1055;1056; LA32-NUAL-LABEL: bcmp_le_zero:1057; LA32-NUAL:       # %bb.0: # %entry1058; LA32-NUAL-NEXT:    addi.w $sp, $sp, -161059; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill1060; LA32-NUAL-NEXT:    ori $a2, $zero, 41061; LA32-NUAL-NEXT:    bl bcmp1062; LA32-NUAL-NEXT:    slti $a0, $a0, 11063; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload1064; LA32-NUAL-NEXT:    addi.w $sp, $sp, 161065; LA32-NUAL-NEXT:    ret1066;1067; LA64-NUAL-LABEL: bcmp_le_zero:1068; LA64-NUAL:       # %bb.0: # %entry1069; LA64-NUAL-NEXT:    addi.d $sp, $sp, -161070; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill1071; LA64-NUAL-NEXT:    ori $a2, $zero, 41072; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)1073; LA64-NUAL-NEXT:    jirl $ra, $ra, 01074; LA64-NUAL-NEXT:    slti $a0, $a0, 11075; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload1076; LA64-NUAL-NEXT:    addi.d $sp, $sp, 161077; LA64-NUAL-NEXT:    ret1078entry:1079  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 4)1080  %ret = icmp slt i32 %bcmp, 11081  ret i1 %ret1082}1083 1084define i1 @bcmp_ge_zero(ptr %s1, ptr %s2) nounwind {1085; LA32-UAL-LABEL: bcmp_ge_zero:1086; LA32-UAL:       # %bb.0: # %entry1087; LA32-UAL-NEXT:    ori $a0, $zero, 11088; LA32-UAL-NEXT:    ret1089;1090; LA64-UAL-LABEL: bcmp_ge_zero:1091; LA64-UAL:       # %bb.0: # %entry1092; LA64-UAL-NEXT:    ori $a0, $zero, 11093; LA64-UAL-NEXT:    ret1094;1095; LA32-NUAL-LABEL: bcmp_ge_zero:1096; LA32-NUAL:       # %bb.0: # %entry1097; LA32-NUAL-NEXT:    addi.w $sp, $sp, -161098; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill1099; LA32-NUAL-NEXT:    ori $a2, $zero, 41100; LA32-NUAL-NEXT:    bl bcmp1101; LA32-NUAL-NEXT:    addi.w $a1, $zero, -11102; LA32-NUAL-NEXT:    slt $a0, $a1, $a01103; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload1104; LA32-NUAL-NEXT:    addi.w $sp, $sp, 161105; LA32-NUAL-NEXT:    ret1106;1107; LA64-NUAL-LABEL: bcmp_ge_zero:1108; LA64-NUAL:       # %bb.0: # %entry1109; LA64-NUAL-NEXT:    addi.d $sp, $sp, -161110; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill1111; LA64-NUAL-NEXT:    ori $a2, $zero, 41112; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(bcmp)1113; LA64-NUAL-NEXT:    jirl $ra, $ra, 01114; LA64-NUAL-NEXT:    addi.w $a1, $zero, -11115; LA64-NUAL-NEXT:    slt $a0, $a1, $a01116; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload1117; LA64-NUAL-NEXT:    addi.d $sp, $sp, 161118; LA64-NUAL-NEXT:    ret1119entry:1120  %bcmp = call signext i32 @bcmp(ptr %s1, ptr %s2, iGRLen 4)1121  %ret = icmp sgt i32 %bcmp, -11122  ret i1 %ret1123}1124 1125define signext i32 @memcmp_size_0(ptr %s1, ptr %s2) nounwind {1126; CHECK-LABEL: memcmp_size_0:1127; CHECK:       # %bb.0: # %entry1128; CHECK-NEXT:    move $a0, $zero1129; CHECK-NEXT:    ret1130entry:1131  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 0)1132  ret i32 %memcmp1133}1134 1135define signext i32 @memcmp_size_1(ptr %s1, ptr %s2) nounwind {1136; LA32-UAL-LABEL: memcmp_size_1:1137; LA32-UAL:       # %bb.0: # %entry1138; LA32-UAL-NEXT:    ld.bu $a0, $a0, 01139; LA32-UAL-NEXT:    ld.bu $a1, $a1, 01140; LA32-UAL-NEXT:    sub.w $a0, $a0, $a11141; LA32-UAL-NEXT:    ret1142;1143; LA64-UAL-LABEL: memcmp_size_1:1144; LA64-UAL:       # %bb.0: # %entry1145; LA64-UAL-NEXT:    ld.bu $a0, $a0, 01146; LA64-UAL-NEXT:    ld.bu $a1, $a1, 01147; LA64-UAL-NEXT:    sub.d $a0, $a0, $a11148; LA64-UAL-NEXT:    ret1149;1150; LA32-NUAL-LABEL: memcmp_size_1:1151; LA32-NUAL:       # %bb.0: # %entry1152; LA32-NUAL-NEXT:    addi.w $sp, $sp, -161153; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill1154; LA32-NUAL-NEXT:    ori $a2, $zero, 11155; LA32-NUAL-NEXT:    bl memcmp1156; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload1157; LA32-NUAL-NEXT:    addi.w $sp, $sp, 161158; LA32-NUAL-NEXT:    ret1159;1160; LA64-NUAL-LABEL: memcmp_size_1:1161; LA64-NUAL:       # %bb.0: # %entry1162; LA64-NUAL-NEXT:    addi.d $sp, $sp, -161163; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill1164; LA64-NUAL-NEXT:    ori $a2, $zero, 11165; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)1166; LA64-NUAL-NEXT:    jirl $ra, $ra, 01167; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload1168; LA64-NUAL-NEXT:    addi.d $sp, $sp, 161169; LA64-NUAL-NEXT:    ret1170entry:1171  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 1)1172  ret i32 %memcmp1173}1174 1175define signext i32 @memcmp_size_2(ptr %s1, ptr %s2) nounwind {1176; LA32-UAL-LABEL: memcmp_size_2:1177; LA32-UAL:       # %bb.0: # %entry1178; LA32-UAL-NEXT:    ld.hu $a0, $a0, 01179; LA32-UAL-NEXT:    ld.hu $a1, $a1, 01180; LA32-UAL-NEXT:    srli.w $a2, $a0, 81181; LA32-UAL-NEXT:    slli.w $a0, $a0, 81182; LA32-UAL-NEXT:    or $a0, $a0, $a21183; LA32-UAL-NEXT:    srli.w $a2, $a1, 81184; LA32-UAL-NEXT:    slli.w $a1, $a1, 81185; LA32-UAL-NEXT:    or $a1, $a1, $a21186; LA32-UAL-NEXT:    lu12i.w $a2, 151187; LA32-UAL-NEXT:    ori $a2, $a2, 40951188; LA32-UAL-NEXT:    and $a0, $a0, $a21189; LA32-UAL-NEXT:    and $a1, $a1, $a21190; LA32-UAL-NEXT:    sub.w $a0, $a0, $a11191; LA32-UAL-NEXT:    ret1192;1193; LA64-UAL-LABEL: memcmp_size_2:1194; LA64-UAL:       # %bb.0: # %entry1195; LA64-UAL-NEXT:    ld.h $a0, $a0, 01196; LA64-UAL-NEXT:    ld.h $a1, $a1, 01197; LA64-UAL-NEXT:    revb.2h $a0, $a01198; LA64-UAL-NEXT:    revb.2h $a1, $a11199; LA64-UAL-NEXT:    bstrpick.d $a0, $a0, 15, 01200; LA64-UAL-NEXT:    bstrpick.d $a1, $a1, 15, 01201; LA64-UAL-NEXT:    sub.d $a0, $a0, $a11202; LA64-UAL-NEXT:    ret1203;1204; LA32-NUAL-LABEL: memcmp_size_2:1205; LA32-NUAL:       # %bb.0: # %entry1206; LA32-NUAL-NEXT:    addi.w $sp, $sp, -161207; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill1208; LA32-NUAL-NEXT:    ori $a2, $zero, 21209; LA32-NUAL-NEXT:    bl memcmp1210; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload1211; LA32-NUAL-NEXT:    addi.w $sp, $sp, 161212; LA32-NUAL-NEXT:    ret1213;1214; LA64-NUAL-LABEL: memcmp_size_2:1215; LA64-NUAL:       # %bb.0: # %entry1216; LA64-NUAL-NEXT:    addi.d $sp, $sp, -161217; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill1218; LA64-NUAL-NEXT:    ori $a2, $zero, 21219; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)1220; LA64-NUAL-NEXT:    jirl $ra, $ra, 01221; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload1222; LA64-NUAL-NEXT:    addi.d $sp, $sp, 161223; LA64-NUAL-NEXT:    ret1224entry:1225  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 2)1226  ret i32 %memcmp1227}1228 1229define signext i32 @memcmp_size_3(ptr %s1, ptr %s2) nounwind {1230; LA32-UAL-LABEL: memcmp_size_3:1231; LA32-UAL:       # %bb.0: # %entry1232; LA32-UAL-NEXT:    ld.bu $a2, $a0, 21233; LA32-UAL-NEXT:    ld.hu $a0, $a0, 01234; LA32-UAL-NEXT:    ld.bu $a3, $a1, 21235; LA32-UAL-NEXT:    ld.hu $a1, $a1, 01236; LA32-UAL-NEXT:    lu12i.w $a4, 151237; LA32-UAL-NEXT:    ori $a4, $a4, 38401238; LA32-UAL-NEXT:    and $a5, $a0, $a41239; LA32-UAL-NEXT:    or $a2, $a5, $a21240; LA32-UAL-NEXT:    slli.w $a2, $a2, 81241; LA32-UAL-NEXT:    slli.w $a0, $a0, 241242; LA32-UAL-NEXT:    or $a0, $a2, $a01243; LA32-UAL-NEXT:    and $a2, $a1, $a41244; LA32-UAL-NEXT:    or $a2, $a2, $a31245; LA32-UAL-NEXT:    slli.w $a2, $a2, 81246; LA32-UAL-NEXT:    slli.w $a1, $a1, 241247; LA32-UAL-NEXT:    or $a1, $a2, $a11248; LA32-UAL-NEXT:    sltu $a2, $a0, $a11249; LA32-UAL-NEXT:    sltu $a0, $a1, $a01250; LA32-UAL-NEXT:    sub.w $a0, $a0, $a21251; LA32-UAL-NEXT:    ret1252;1253; LA64-UAL-LABEL: memcmp_size_3:1254; LA64-UAL:       # %bb.0: # %entry1255; LA64-UAL-NEXT:    ld.bu $a2, $a0, 21256; LA64-UAL-NEXT:    ld.hu $a0, $a0, 01257; LA64-UAL-NEXT:    ld.bu $a3, $a1, 21258; LA64-UAL-NEXT:    ld.hu $a1, $a1, 01259; LA64-UAL-NEXT:    slli.d $a2, $a2, 161260; LA64-UAL-NEXT:    or $a0, $a0, $a21261; LA64-UAL-NEXT:    slli.d $a2, $a3, 161262; LA64-UAL-NEXT:    or $a1, $a1, $a21263; LA64-UAL-NEXT:    revb.2w $a0, $a01264; LA64-UAL-NEXT:    addi.w $a0, $a0, 01265; LA64-UAL-NEXT:    revb.2w $a1, $a11266; LA64-UAL-NEXT:    addi.w $a1, $a1, 01267; LA64-UAL-NEXT:    sltu $a2, $a0, $a11268; LA64-UAL-NEXT:    sltu $a0, $a1, $a01269; LA64-UAL-NEXT:    sub.d $a0, $a0, $a21270; LA64-UAL-NEXT:    ret1271;1272; LA32-NUAL-LABEL: memcmp_size_3:1273; LA32-NUAL:       # %bb.0: # %entry1274; LA32-NUAL-NEXT:    addi.w $sp, $sp, -161275; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill1276; LA32-NUAL-NEXT:    ori $a2, $zero, 31277; LA32-NUAL-NEXT:    bl memcmp1278; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload1279; LA32-NUAL-NEXT:    addi.w $sp, $sp, 161280; LA32-NUAL-NEXT:    ret1281;1282; LA64-NUAL-LABEL: memcmp_size_3:1283; LA64-NUAL:       # %bb.0: # %entry1284; LA64-NUAL-NEXT:    addi.d $sp, $sp, -161285; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill1286; LA64-NUAL-NEXT:    ori $a2, $zero, 31287; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)1288; LA64-NUAL-NEXT:    jirl $ra, $ra, 01289; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload1290; LA64-NUAL-NEXT:    addi.d $sp, $sp, 161291; LA64-NUAL-NEXT:    ret1292entry:1293  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 3)1294  ret i32 %memcmp1295}1296 1297define signext i32 @memcmp_size_4(ptr %s1, ptr %s2) nounwind {1298; LA32-UAL-LABEL: memcmp_size_4:1299; LA32-UAL:       # %bb.0: # %entry1300; LA32-UAL-NEXT:    ld.w $a0, $a0, 01301; LA32-UAL-NEXT:    ld.w $a1, $a1, 01302; LA32-UAL-NEXT:    srli.w $a2, $a0, 81303; LA32-UAL-NEXT:    lu12i.w $a3, 151304; LA32-UAL-NEXT:    ori $a3, $a3, 38401305; LA32-UAL-NEXT:    and $a2, $a2, $a31306; LA32-UAL-NEXT:    srli.w $a4, $a0, 241307; LA32-UAL-NEXT:    or $a2, $a2, $a41308; LA32-UAL-NEXT:    and $a4, $a0, $a31309; LA32-UAL-NEXT:    slli.w $a4, $a4, 81310; LA32-UAL-NEXT:    slli.w $a0, $a0, 241311; LA32-UAL-NEXT:    or $a0, $a0, $a41312; LA32-UAL-NEXT:    or $a0, $a0, $a21313; LA32-UAL-NEXT:    srli.w $a2, $a1, 81314; LA32-UAL-NEXT:    and $a2, $a2, $a31315; LA32-UAL-NEXT:    srli.w $a4, $a1, 241316; LA32-UAL-NEXT:    or $a2, $a2, $a41317; LA32-UAL-NEXT:    and $a3, $a1, $a31318; LA32-UAL-NEXT:    slli.w $a3, $a3, 81319; LA32-UAL-NEXT:    slli.w $a1, $a1, 241320; LA32-UAL-NEXT:    or $a1, $a1, $a31321; LA32-UAL-NEXT:    or $a1, $a1, $a21322; LA32-UAL-NEXT:    sltu $a2, $a0, $a11323; LA32-UAL-NEXT:    sltu $a0, $a1, $a01324; LA32-UAL-NEXT:    sub.w $a0, $a0, $a21325; LA32-UAL-NEXT:    ret1326;1327; LA64-UAL-LABEL: memcmp_size_4:1328; LA64-UAL:       # %bb.0: # %entry1329; LA64-UAL-NEXT:    ld.w $a0, $a0, 01330; LA64-UAL-NEXT:    ld.w $a1, $a1, 01331; LA64-UAL-NEXT:    revb.2w $a0, $a01332; LA64-UAL-NEXT:    addi.w $a0, $a0, 01333; LA64-UAL-NEXT:    revb.2w $a1, $a11334; LA64-UAL-NEXT:    addi.w $a1, $a1, 01335; LA64-UAL-NEXT:    sltu $a2, $a0, $a11336; LA64-UAL-NEXT:    sltu $a0, $a1, $a01337; LA64-UAL-NEXT:    sub.d $a0, $a0, $a21338; LA64-UAL-NEXT:    ret1339;1340; LA32-NUAL-LABEL: memcmp_size_4:1341; LA32-NUAL:       # %bb.0: # %entry1342; LA32-NUAL-NEXT:    addi.w $sp, $sp, -161343; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill1344; LA32-NUAL-NEXT:    ori $a2, $zero, 41345; LA32-NUAL-NEXT:    bl memcmp1346; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload1347; LA32-NUAL-NEXT:    addi.w $sp, $sp, 161348; LA32-NUAL-NEXT:    ret1349;1350; LA64-NUAL-LABEL: memcmp_size_4:1351; LA64-NUAL:       # %bb.0: # %entry1352; LA64-NUAL-NEXT:    addi.d $sp, $sp, -161353; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill1354; LA64-NUAL-NEXT:    ori $a2, $zero, 41355; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)1356; LA64-NUAL-NEXT:    jirl $ra, $ra, 01357; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload1358; LA64-NUAL-NEXT:    addi.d $sp, $sp, 161359; LA64-NUAL-NEXT:    ret1360entry:1361  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 4)1362  ret i32 %memcmp1363}1364 1365define signext i32 @memcmp_size_5(ptr %s1, ptr %s2) nounwind {1366; LA32-UAL-LABEL: memcmp_size_5:1367; LA32-UAL:       # %bb.0: # %entry1368; LA32-UAL-NEXT:    ld.w $a2, $a0, 01369; LA32-UAL-NEXT:    ld.w $a3, $a1, 01370; LA32-UAL-NEXT:    srli.w $a4, $a2, 81371; LA32-UAL-NEXT:    lu12i.w $a5, 151372; LA32-UAL-NEXT:    ori $a5, $a5, 38401373; LA32-UAL-NEXT:    and $a4, $a4, $a51374; LA32-UAL-NEXT:    srli.w $a6, $a2, 241375; LA32-UAL-NEXT:    or $a4, $a4, $a61376; LA32-UAL-NEXT:    and $a6, $a2, $a51377; LA32-UAL-NEXT:    slli.w $a6, $a6, 81378; LA32-UAL-NEXT:    slli.w $a2, $a2, 241379; LA32-UAL-NEXT:    or $a2, $a2, $a61380; LA32-UAL-NEXT:    or $a2, $a2, $a41381; LA32-UAL-NEXT:    srli.w $a4, $a3, 81382; LA32-UAL-NEXT:    and $a4, $a4, $a51383; LA32-UAL-NEXT:    srli.w $a6, $a3, 241384; LA32-UAL-NEXT:    or $a4, $a4, $a61385; LA32-UAL-NEXT:    and $a5, $a3, $a51386; LA32-UAL-NEXT:    slli.w $a5, $a5, 81387; LA32-UAL-NEXT:    slli.w $a3, $a3, 241388; LA32-UAL-NEXT:    or $a3, $a3, $a51389; LA32-UAL-NEXT:    or $a3, $a3, $a41390; LA32-UAL-NEXT:    bne $a2, $a3, .LBB28_21391; LA32-UAL-NEXT:  # %bb.1: # %loadbb11392; LA32-UAL-NEXT:    ld.bu $a0, $a0, 41393; LA32-UAL-NEXT:    ld.bu $a1, $a1, 41394; LA32-UAL-NEXT:    sub.w $a0, $a0, $a11395; LA32-UAL-NEXT:    ret1396; LA32-UAL-NEXT:  .LBB28_2: # %res_block1397; LA32-UAL-NEXT:    sltu $a0, $a2, $a31398; LA32-UAL-NEXT:    sub.w $a0, $zero, $a01399; LA32-UAL-NEXT:    ori $a0, $a0, 11400; LA32-UAL-NEXT:    ret1401;1402; LA64-UAL-LABEL: memcmp_size_5:1403; LA64-UAL:       # %bb.0: # %entry1404; LA64-UAL-NEXT:    ld.bu $a2, $a0, 41405; LA64-UAL-NEXT:    ld.wu $a0, $a0, 01406; LA64-UAL-NEXT:    ld.bu $a3, $a1, 41407; LA64-UAL-NEXT:    ld.wu $a1, $a1, 01408; LA64-UAL-NEXT:    slli.d $a2, $a2, 321409; LA64-UAL-NEXT:    or $a0, $a0, $a21410; LA64-UAL-NEXT:    slli.d $a2, $a3, 321411; LA64-UAL-NEXT:    or $a1, $a1, $a21412; LA64-UAL-NEXT:    revb.d $a0, $a01413; LA64-UAL-NEXT:    revb.d $a1, $a11414; LA64-UAL-NEXT:    sltu $a2, $a0, $a11415; LA64-UAL-NEXT:    sltu $a0, $a1, $a01416; LA64-UAL-NEXT:    sub.d $a0, $a0, $a21417; LA64-UAL-NEXT:    ret1418;1419; LA32-NUAL-LABEL: memcmp_size_5:1420; LA32-NUAL:       # %bb.0: # %entry1421; LA32-NUAL-NEXT:    addi.w $sp, $sp, -161422; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill1423; LA32-NUAL-NEXT:    ori $a2, $zero, 51424; LA32-NUAL-NEXT:    bl memcmp1425; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload1426; LA32-NUAL-NEXT:    addi.w $sp, $sp, 161427; LA32-NUAL-NEXT:    ret1428;1429; LA64-NUAL-LABEL: memcmp_size_5:1430; LA64-NUAL:       # %bb.0: # %entry1431; LA64-NUAL-NEXT:    addi.d $sp, $sp, -161432; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill1433; LA64-NUAL-NEXT:    ori $a2, $zero, 51434; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)1435; LA64-NUAL-NEXT:    jirl $ra, $ra, 01436; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload1437; LA64-NUAL-NEXT:    addi.d $sp, $sp, 161438; LA64-NUAL-NEXT:    ret1439entry:1440  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 5)1441  ret i32 %memcmp1442}1443 1444define signext i32 @memcmp_size_6(ptr %s1, ptr %s2) nounwind {1445; LA32-UAL-LABEL: memcmp_size_6:1446; LA32-UAL:       # %bb.0: # %entry1447; LA32-UAL-NEXT:    ld.w $a3, $a0, 01448; LA32-UAL-NEXT:    ld.w $a4, $a1, 01449; LA32-UAL-NEXT:    srli.w $a5, $a3, 81450; LA32-UAL-NEXT:    lu12i.w $a2, 151451; LA32-UAL-NEXT:    ori $a6, $a2, 38401452; LA32-UAL-NEXT:    and $a5, $a5, $a61453; LA32-UAL-NEXT:    srli.w $a7, $a3, 241454; LA32-UAL-NEXT:    or $a5, $a5, $a71455; LA32-UAL-NEXT:    and $a7, $a3, $a61456; LA32-UAL-NEXT:    slli.w $a7, $a7, 81457; LA32-UAL-NEXT:    slli.w $a3, $a3, 241458; LA32-UAL-NEXT:    or $a3, $a3, $a71459; LA32-UAL-NEXT:    or $a3, $a3, $a51460; LA32-UAL-NEXT:    srli.w $a5, $a4, 81461; LA32-UAL-NEXT:    and $a5, $a5, $a61462; LA32-UAL-NEXT:    srli.w $a7, $a4, 241463; LA32-UAL-NEXT:    or $a5, $a5, $a71464; LA32-UAL-NEXT:    and $a6, $a4, $a61465; LA32-UAL-NEXT:    slli.w $a6, $a6, 81466; LA32-UAL-NEXT:    slli.w $a4, $a4, 241467; LA32-UAL-NEXT:    or $a4, $a4, $a61468; LA32-UAL-NEXT:    or $a4, $a4, $a51469; LA32-UAL-NEXT:    bne $a3, $a4, .LBB29_31470; LA32-UAL-NEXT:  # %bb.1: # %loadbb11471; LA32-UAL-NEXT:    ld.hu $a0, $a0, 41472; LA32-UAL-NEXT:    ld.hu $a1, $a1, 41473; LA32-UAL-NEXT:    srli.w $a3, $a0, 81474; LA32-UAL-NEXT:    slli.w $a0, $a0, 81475; LA32-UAL-NEXT:    or $a0, $a0, $a31476; LA32-UAL-NEXT:    srli.w $a3, $a1, 81477; LA32-UAL-NEXT:    slli.w $a1, $a1, 81478; LA32-UAL-NEXT:    or $a1, $a1, $a31479; LA32-UAL-NEXT:    ori $a2, $a2, 40951480; LA32-UAL-NEXT:    and $a3, $a0, $a21481; LA32-UAL-NEXT:    and $a4, $a1, $a21482; LA32-UAL-NEXT:    bne $a3, $a4, .LBB29_31483; LA32-UAL-NEXT:  # %bb.2:1484; LA32-UAL-NEXT:    move $a0, $zero1485; LA32-UAL-NEXT:    ret1486; LA32-UAL-NEXT:  .LBB29_3: # %res_block1487; LA32-UAL-NEXT:    sltu $a0, $a3, $a41488; LA32-UAL-NEXT:    sub.w $a0, $zero, $a01489; LA32-UAL-NEXT:    ori $a0, $a0, 11490; LA32-UAL-NEXT:    ret1491;1492; LA64-UAL-LABEL: memcmp_size_6:1493; LA64-UAL:       # %bb.0: # %entry1494; LA64-UAL-NEXT:    ld.hu $a2, $a0, 41495; LA64-UAL-NEXT:    ld.wu $a0, $a0, 01496; LA64-UAL-NEXT:    ld.hu $a3, $a1, 41497; LA64-UAL-NEXT:    ld.wu $a1, $a1, 01498; LA64-UAL-NEXT:    slli.d $a2, $a2, 321499; LA64-UAL-NEXT:    or $a0, $a0, $a21500; LA64-UAL-NEXT:    slli.d $a2, $a3, 321501; LA64-UAL-NEXT:    or $a1, $a1, $a21502; LA64-UAL-NEXT:    revb.d $a0, $a01503; LA64-UAL-NEXT:    revb.d $a1, $a11504; LA64-UAL-NEXT:    sltu $a2, $a0, $a11505; LA64-UAL-NEXT:    sltu $a0, $a1, $a01506; LA64-UAL-NEXT:    sub.d $a0, $a0, $a21507; LA64-UAL-NEXT:    ret1508;1509; LA32-NUAL-LABEL: memcmp_size_6:1510; LA32-NUAL:       # %bb.0: # %entry1511; LA32-NUAL-NEXT:    addi.w $sp, $sp, -161512; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill1513; LA32-NUAL-NEXT:    ori $a2, $zero, 61514; LA32-NUAL-NEXT:    bl memcmp1515; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload1516; LA32-NUAL-NEXT:    addi.w $sp, $sp, 161517; LA32-NUAL-NEXT:    ret1518;1519; LA64-NUAL-LABEL: memcmp_size_6:1520; LA64-NUAL:       # %bb.0: # %entry1521; LA64-NUAL-NEXT:    addi.d $sp, $sp, -161522; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill1523; LA64-NUAL-NEXT:    ori $a2, $zero, 61524; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)1525; LA64-NUAL-NEXT:    jirl $ra, $ra, 01526; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload1527; LA64-NUAL-NEXT:    addi.d $sp, $sp, 161528; LA64-NUAL-NEXT:    ret1529entry:1530  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 6)1531  ret i32 %memcmp1532}1533 1534define signext i32 @memcmp_size_7(ptr %s1, ptr %s2) nounwind {1535; LA32-UAL-LABEL: memcmp_size_7:1536; LA32-UAL:       # %bb.0: # %entry1537; LA32-UAL-NEXT:    ld.w $a3, $a0, 01538; LA32-UAL-NEXT:    ld.w $a4, $a1, 01539; LA32-UAL-NEXT:    srli.w $a5, $a3, 81540; LA32-UAL-NEXT:    lu12i.w $a2, 151541; LA32-UAL-NEXT:    ori $a2, $a2, 38401542; LA32-UAL-NEXT:    and $a5, $a5, $a21543; LA32-UAL-NEXT:    srli.w $a6, $a3, 241544; LA32-UAL-NEXT:    or $a5, $a5, $a61545; LA32-UAL-NEXT:    and $a6, $a3, $a21546; LA32-UAL-NEXT:    slli.w $a6, $a6, 81547; LA32-UAL-NEXT:    slli.w $a3, $a3, 241548; LA32-UAL-NEXT:    or $a3, $a3, $a61549; LA32-UAL-NEXT:    or $a3, $a3, $a51550; LA32-UAL-NEXT:    srli.w $a5, $a4, 81551; LA32-UAL-NEXT:    and $a5, $a5, $a21552; LA32-UAL-NEXT:    srli.w $a6, $a4, 241553; LA32-UAL-NEXT:    or $a5, $a5, $a61554; LA32-UAL-NEXT:    and $a6, $a4, $a21555; LA32-UAL-NEXT:    slli.w $a6, $a6, 81556; LA32-UAL-NEXT:    slli.w $a4, $a4, 241557; LA32-UAL-NEXT:    or $a4, $a4, $a61558; LA32-UAL-NEXT:    or $a4, $a4, $a51559; LA32-UAL-NEXT:    bne $a3, $a4, .LBB30_31560; LA32-UAL-NEXT:  # %bb.1: # %loadbb11561; LA32-UAL-NEXT:    ld.w $a0, $a0, 31562; LA32-UAL-NEXT:    ld.w $a1, $a1, 31563; LA32-UAL-NEXT:    srli.w $a3, $a0, 81564; LA32-UAL-NEXT:    and $a3, $a3, $a21565; LA32-UAL-NEXT:    srli.w $a4, $a0, 241566; LA32-UAL-NEXT:    or $a3, $a3, $a41567; LA32-UAL-NEXT:    and $a4, $a0, $a21568; LA32-UAL-NEXT:    slli.w $a4, $a4, 81569; LA32-UAL-NEXT:    slli.w $a0, $a0, 241570; LA32-UAL-NEXT:    or $a0, $a0, $a41571; LA32-UAL-NEXT:    or $a3, $a0, $a31572; LA32-UAL-NEXT:    srli.w $a0, $a1, 81573; LA32-UAL-NEXT:    and $a0, $a0, $a21574; LA32-UAL-NEXT:    srli.w $a4, $a1, 241575; LA32-UAL-NEXT:    or $a0, $a0, $a41576; LA32-UAL-NEXT:    and $a2, $a1, $a21577; LA32-UAL-NEXT:    slli.w $a2, $a2, 81578; LA32-UAL-NEXT:    slli.w $a1, $a1, 241579; LA32-UAL-NEXT:    or $a1, $a1, $a21580; LA32-UAL-NEXT:    or $a4, $a1, $a01581; LA32-UAL-NEXT:    bne $a3, $a4, .LBB30_31582; LA32-UAL-NEXT:  # %bb.2:1583; LA32-UAL-NEXT:    move $a0, $zero1584; LA32-UAL-NEXT:    ret1585; LA32-UAL-NEXT:  .LBB30_3: # %res_block1586; LA32-UAL-NEXT:    sltu $a0, $a3, $a41587; LA32-UAL-NEXT:    sub.w $a0, $zero, $a01588; LA32-UAL-NEXT:    ori $a0, $a0, 11589; LA32-UAL-NEXT:    ret1590;1591; LA64-UAL-LABEL: memcmp_size_7:1592; LA64-UAL:       # %bb.0: # %entry1593; LA64-UAL-NEXT:    ld.w $a2, $a0, 01594; LA64-UAL-NEXT:    ld.w $a3, $a1, 01595; LA64-UAL-NEXT:    revb.2w $a2, $a21596; LA64-UAL-NEXT:    addi.w $a4, $a2, 01597; LA64-UAL-NEXT:    revb.2w $a3, $a31598; LA64-UAL-NEXT:    addi.w $a5, $a3, 01599; LA64-UAL-NEXT:    bne $a4, $a5, .LBB30_31600; LA64-UAL-NEXT:  # %bb.1: # %loadbb11601; LA64-UAL-NEXT:    ld.w $a0, $a0, 31602; LA64-UAL-NEXT:    ld.w $a1, $a1, 31603; LA64-UAL-NEXT:    revb.2w $a2, $a01604; LA64-UAL-NEXT:    addi.w $a0, $a2, 01605; LA64-UAL-NEXT:    revb.2w $a3, $a11606; LA64-UAL-NEXT:    addi.w $a1, $a3, 01607; LA64-UAL-NEXT:    bne $a0, $a1, .LBB30_31608; LA64-UAL-NEXT:  # %bb.2:1609; LA64-UAL-NEXT:    move $a0, $zero1610; LA64-UAL-NEXT:    ret1611; LA64-UAL-NEXT:  .LBB30_3: # %res_block1612; LA64-UAL-NEXT:    addi.w $a0, $a3, 01613; LA64-UAL-NEXT:    addi.w $a1, $a2, 01614; LA64-UAL-NEXT:    sltu $a0, $a1, $a01615; LA64-UAL-NEXT:    sub.d $a0, $zero, $a01616; LA64-UAL-NEXT:    ori $a0, $a0, 11617; LA64-UAL-NEXT:    ret1618;1619; LA32-NUAL-LABEL: memcmp_size_7:1620; LA32-NUAL:       # %bb.0: # %entry1621; LA32-NUAL-NEXT:    addi.w $sp, $sp, -161622; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill1623; LA32-NUAL-NEXT:    ori $a2, $zero, 71624; LA32-NUAL-NEXT:    bl memcmp1625; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload1626; LA32-NUAL-NEXT:    addi.w $sp, $sp, 161627; LA32-NUAL-NEXT:    ret1628;1629; LA64-NUAL-LABEL: memcmp_size_7:1630; LA64-NUAL:       # %bb.0: # %entry1631; LA64-NUAL-NEXT:    addi.d $sp, $sp, -161632; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill1633; LA64-NUAL-NEXT:    ori $a2, $zero, 71634; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)1635; LA64-NUAL-NEXT:    jirl $ra, $ra, 01636; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload1637; LA64-NUAL-NEXT:    addi.d $sp, $sp, 161638; LA64-NUAL-NEXT:    ret1639entry:1640  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 7)1641  ret i32 %memcmp1642}1643 1644define signext i32 @memcmp_size_8(ptr %s1, ptr %s2) nounwind {1645; LA32-UAL-LABEL: memcmp_size_8:1646; LA32-UAL:       # %bb.0: # %entry1647; LA32-UAL-NEXT:    ld.w $a3, $a0, 01648; LA32-UAL-NEXT:    ld.w $a4, $a1, 01649; LA32-UAL-NEXT:    srli.w $a5, $a3, 81650; LA32-UAL-NEXT:    lu12i.w $a2, 151651; LA32-UAL-NEXT:    ori $a2, $a2, 38401652; LA32-UAL-NEXT:    and $a5, $a5, $a21653; LA32-UAL-NEXT:    srli.w $a6, $a3, 241654; LA32-UAL-NEXT:    or $a5, $a5, $a61655; LA32-UAL-NEXT:    and $a6, $a3, $a21656; LA32-UAL-NEXT:    slli.w $a6, $a6, 81657; LA32-UAL-NEXT:    slli.w $a3, $a3, 241658; LA32-UAL-NEXT:    or $a3, $a3, $a61659; LA32-UAL-NEXT:    or $a3, $a3, $a51660; LA32-UAL-NEXT:    srli.w $a5, $a4, 81661; LA32-UAL-NEXT:    and $a5, $a5, $a21662; LA32-UAL-NEXT:    srli.w $a6, $a4, 241663; LA32-UAL-NEXT:    or $a5, $a5, $a61664; LA32-UAL-NEXT:    and $a6, $a4, $a21665; LA32-UAL-NEXT:    slli.w $a6, $a6, 81666; LA32-UAL-NEXT:    slli.w $a4, $a4, 241667; LA32-UAL-NEXT:    or $a4, $a4, $a61668; LA32-UAL-NEXT:    or $a4, $a4, $a51669; LA32-UAL-NEXT:    bne $a3, $a4, .LBB31_31670; LA32-UAL-NEXT:  # %bb.1: # %loadbb11671; LA32-UAL-NEXT:    ld.w $a0, $a0, 41672; LA32-UAL-NEXT:    ld.w $a1, $a1, 41673; LA32-UAL-NEXT:    srli.w $a3, $a0, 81674; LA32-UAL-NEXT:    and $a3, $a3, $a21675; LA32-UAL-NEXT:    srli.w $a4, $a0, 241676; LA32-UAL-NEXT:    or $a3, $a3, $a41677; LA32-UAL-NEXT:    and $a4, $a0, $a21678; LA32-UAL-NEXT:    slli.w $a4, $a4, 81679; LA32-UAL-NEXT:    slli.w $a0, $a0, 241680; LA32-UAL-NEXT:    or $a0, $a0, $a41681; LA32-UAL-NEXT:    or $a3, $a0, $a31682; LA32-UAL-NEXT:    srli.w $a0, $a1, 81683; LA32-UAL-NEXT:    and $a0, $a0, $a21684; LA32-UAL-NEXT:    srli.w $a4, $a1, 241685; LA32-UAL-NEXT:    or $a0, $a0, $a41686; LA32-UAL-NEXT:    and $a2, $a1, $a21687; LA32-UAL-NEXT:    slli.w $a2, $a2, 81688; LA32-UAL-NEXT:    slli.w $a1, $a1, 241689; LA32-UAL-NEXT:    or $a1, $a1, $a21690; LA32-UAL-NEXT:    or $a4, $a1, $a01691; LA32-UAL-NEXT:    bne $a3, $a4, .LBB31_31692; LA32-UAL-NEXT:  # %bb.2:1693; LA32-UAL-NEXT:    move $a0, $zero1694; LA32-UAL-NEXT:    ret1695; LA32-UAL-NEXT:  .LBB31_3: # %res_block1696; LA32-UAL-NEXT:    sltu $a0, $a3, $a41697; LA32-UAL-NEXT:    sub.w $a0, $zero, $a01698; LA32-UAL-NEXT:    ori $a0, $a0, 11699; LA32-UAL-NEXT:    ret1700;1701; LA64-UAL-LABEL: memcmp_size_8:1702; LA64-UAL:       # %bb.0: # %entry1703; LA64-UAL-NEXT:    ld.d $a0, $a0, 01704; LA64-UAL-NEXT:    ld.d $a1, $a1, 01705; LA64-UAL-NEXT:    revb.d $a0, $a01706; LA64-UAL-NEXT:    revb.d $a1, $a11707; LA64-UAL-NEXT:    sltu $a2, $a0, $a11708; LA64-UAL-NEXT:    sltu $a0, $a1, $a01709; LA64-UAL-NEXT:    sub.d $a0, $a0, $a21710; LA64-UAL-NEXT:    ret1711;1712; LA32-NUAL-LABEL: memcmp_size_8:1713; LA32-NUAL:       # %bb.0: # %entry1714; LA32-NUAL-NEXT:    addi.w $sp, $sp, -161715; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill1716; LA32-NUAL-NEXT:    ori $a2, $zero, 81717; LA32-NUAL-NEXT:    bl memcmp1718; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload1719; LA32-NUAL-NEXT:    addi.w $sp, $sp, 161720; LA32-NUAL-NEXT:    ret1721;1722; LA64-NUAL-LABEL: memcmp_size_8:1723; LA64-NUAL:       # %bb.0: # %entry1724; LA64-NUAL-NEXT:    addi.d $sp, $sp, -161725; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill1726; LA64-NUAL-NEXT:    ori $a2, $zero, 81727; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)1728; LA64-NUAL-NEXT:    jirl $ra, $ra, 01729; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload1730; LA64-NUAL-NEXT:    addi.d $sp, $sp, 161731; LA64-NUAL-NEXT:    ret1732entry:1733  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 8)1734  ret i32 %memcmp1735}1736 1737define signext i32 @memcmp_size_15(ptr %s1, ptr %s2) nounwind {1738; LA32-UAL-LABEL: memcmp_size_15:1739; LA32-UAL:       # %bb.0: # %entry1740; LA32-UAL-NEXT:    ld.w $a3, $a0, 01741; LA32-UAL-NEXT:    ld.w $a4, $a1, 01742; LA32-UAL-NEXT:    srli.w $a5, $a3, 81743; LA32-UAL-NEXT:    lu12i.w $a2, 151744; LA32-UAL-NEXT:    ori $a2, $a2, 38401745; LA32-UAL-NEXT:    and $a5, $a5, $a21746; LA32-UAL-NEXT:    srli.w $a6, $a3, 241747; LA32-UAL-NEXT:    or $a5, $a5, $a61748; LA32-UAL-NEXT:    and $a6, $a3, $a21749; LA32-UAL-NEXT:    slli.w $a6, $a6, 81750; LA32-UAL-NEXT:    slli.w $a3, $a3, 241751; LA32-UAL-NEXT:    or $a3, $a3, $a61752; LA32-UAL-NEXT:    or $a3, $a3, $a51753; LA32-UAL-NEXT:    srli.w $a5, $a4, 81754; LA32-UAL-NEXT:    and $a5, $a5, $a21755; LA32-UAL-NEXT:    srli.w $a6, $a4, 241756; LA32-UAL-NEXT:    or $a5, $a5, $a61757; LA32-UAL-NEXT:    and $a6, $a4, $a21758; LA32-UAL-NEXT:    slli.w $a6, $a6, 81759; LA32-UAL-NEXT:    slli.w $a4, $a4, 241760; LA32-UAL-NEXT:    or $a4, $a4, $a61761; LA32-UAL-NEXT:    or $a4, $a4, $a51762; LA32-UAL-NEXT:    bne $a3, $a4, .LBB32_51763; LA32-UAL-NEXT:  # %bb.1: # %loadbb11764; LA32-UAL-NEXT:    ld.w $a3, $a0, 41765; LA32-UAL-NEXT:    ld.w $a4, $a1, 41766; LA32-UAL-NEXT:    srli.w $a5, $a3, 81767; LA32-UAL-NEXT:    and $a5, $a5, $a21768; LA32-UAL-NEXT:    srli.w $a6, $a3, 241769; LA32-UAL-NEXT:    or $a5, $a5, $a61770; LA32-UAL-NEXT:    and $a6, $a3, $a21771; LA32-UAL-NEXT:    slli.w $a6, $a6, 81772; LA32-UAL-NEXT:    slli.w $a3, $a3, 241773; LA32-UAL-NEXT:    or $a3, $a3, $a61774; LA32-UAL-NEXT:    or $a3, $a3, $a51775; LA32-UAL-NEXT:    srli.w $a5, $a4, 81776; LA32-UAL-NEXT:    and $a5, $a5, $a21777; LA32-UAL-NEXT:    srli.w $a6, $a4, 241778; LA32-UAL-NEXT:    or $a5, $a5, $a61779; LA32-UAL-NEXT:    and $a6, $a4, $a21780; LA32-UAL-NEXT:    slli.w $a6, $a6, 81781; LA32-UAL-NEXT:    slli.w $a4, $a4, 241782; LA32-UAL-NEXT:    or $a4, $a4, $a61783; LA32-UAL-NEXT:    or $a4, $a4, $a51784; LA32-UAL-NEXT:    bne $a3, $a4, .LBB32_51785; LA32-UAL-NEXT:  # %bb.2: # %loadbb21786; LA32-UAL-NEXT:    ld.w $a3, $a0, 81787; LA32-UAL-NEXT:    ld.w $a4, $a1, 81788; LA32-UAL-NEXT:    srli.w $a5, $a3, 81789; LA32-UAL-NEXT:    and $a5, $a5, $a21790; LA32-UAL-NEXT:    srli.w $a6, $a3, 241791; LA32-UAL-NEXT:    or $a5, $a5, $a61792; LA32-UAL-NEXT:    and $a6, $a3, $a21793; LA32-UAL-NEXT:    slli.w $a6, $a6, 81794; LA32-UAL-NEXT:    slli.w $a3, $a3, 241795; LA32-UAL-NEXT:    or $a3, $a3, $a61796; LA32-UAL-NEXT:    or $a3, $a3, $a51797; LA32-UAL-NEXT:    srli.w $a5, $a4, 81798; LA32-UAL-NEXT:    and $a5, $a5, $a21799; LA32-UAL-NEXT:    srli.w $a6, $a4, 241800; LA32-UAL-NEXT:    or $a5, $a5, $a61801; LA32-UAL-NEXT:    and $a6, $a4, $a21802; LA32-UAL-NEXT:    slli.w $a6, $a6, 81803; LA32-UAL-NEXT:    slli.w $a4, $a4, 241804; LA32-UAL-NEXT:    or $a4, $a4, $a61805; LA32-UAL-NEXT:    or $a4, $a4, $a51806; LA32-UAL-NEXT:    bne $a3, $a4, .LBB32_51807; LA32-UAL-NEXT:  # %bb.3: # %loadbb31808; LA32-UAL-NEXT:    ld.w $a0, $a0, 111809; LA32-UAL-NEXT:    ld.w $a1, $a1, 111810; LA32-UAL-NEXT:    srli.w $a3, $a0, 81811; LA32-UAL-NEXT:    and $a3, $a3, $a21812; LA32-UAL-NEXT:    srli.w $a4, $a0, 241813; LA32-UAL-NEXT:    or $a3, $a3, $a41814; LA32-UAL-NEXT:    and $a4, $a0, $a21815; LA32-UAL-NEXT:    slli.w $a4, $a4, 81816; LA32-UAL-NEXT:    slli.w $a0, $a0, 241817; LA32-UAL-NEXT:    or $a0, $a0, $a41818; LA32-UAL-NEXT:    or $a3, $a0, $a31819; LA32-UAL-NEXT:    srli.w $a0, $a1, 81820; LA32-UAL-NEXT:    and $a0, $a0, $a21821; LA32-UAL-NEXT:    srli.w $a4, $a1, 241822; LA32-UAL-NEXT:    or $a0, $a0, $a41823; LA32-UAL-NEXT:    and $a2, $a1, $a21824; LA32-UAL-NEXT:    slli.w $a2, $a2, 81825; LA32-UAL-NEXT:    slli.w $a1, $a1, 241826; LA32-UAL-NEXT:    or $a1, $a1, $a21827; LA32-UAL-NEXT:    or $a4, $a1, $a01828; LA32-UAL-NEXT:    bne $a3, $a4, .LBB32_51829; LA32-UAL-NEXT:  # %bb.4:1830; LA32-UAL-NEXT:    move $a0, $zero1831; LA32-UAL-NEXT:    ret1832; LA32-UAL-NEXT:  .LBB32_5: # %res_block1833; LA32-UAL-NEXT:    sltu $a0, $a3, $a41834; LA32-UAL-NEXT:    sub.w $a0, $zero, $a01835; LA32-UAL-NEXT:    ori $a0, $a0, 11836; LA32-UAL-NEXT:    ret1837;1838; LA64-UAL-LABEL: memcmp_size_15:1839; LA64-UAL:       # %bb.0: # %entry1840; LA64-UAL-NEXT:    ld.d $a2, $a0, 01841; LA64-UAL-NEXT:    ld.d $a3, $a1, 01842; LA64-UAL-NEXT:    revb.d $a2, $a21843; LA64-UAL-NEXT:    revb.d $a3, $a31844; LA64-UAL-NEXT:    bne $a2, $a3, .LBB32_31845; LA64-UAL-NEXT:  # %bb.1: # %loadbb11846; LA64-UAL-NEXT:    ld.d $a0, $a0, 71847; LA64-UAL-NEXT:    ld.d $a1, $a1, 71848; LA64-UAL-NEXT:    revb.d $a2, $a01849; LA64-UAL-NEXT:    revb.d $a3, $a11850; LA64-UAL-NEXT:    bne $a2, $a3, .LBB32_31851; LA64-UAL-NEXT:  # %bb.2:1852; LA64-UAL-NEXT:    move $a0, $zero1853; LA64-UAL-NEXT:    ret1854; LA64-UAL-NEXT:  .LBB32_3: # %res_block1855; LA64-UAL-NEXT:    sltu $a0, $a2, $a31856; LA64-UAL-NEXT:    sub.d $a0, $zero, $a01857; LA64-UAL-NEXT:    ori $a0, $a0, 11858; LA64-UAL-NEXT:    ret1859;1860; LA32-NUAL-LABEL: memcmp_size_15:1861; LA32-NUAL:       # %bb.0: # %entry1862; LA32-NUAL-NEXT:    addi.w $sp, $sp, -161863; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill1864; LA32-NUAL-NEXT:    ori $a2, $zero, 151865; LA32-NUAL-NEXT:    bl memcmp1866; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload1867; LA32-NUAL-NEXT:    addi.w $sp, $sp, 161868; LA32-NUAL-NEXT:    ret1869;1870; LA64-NUAL-LABEL: memcmp_size_15:1871; LA64-NUAL:       # %bb.0: # %entry1872; LA64-NUAL-NEXT:    addi.d $sp, $sp, -161873; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill1874; LA64-NUAL-NEXT:    ori $a2, $zero, 151875; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)1876; LA64-NUAL-NEXT:    jirl $ra, $ra, 01877; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload1878; LA64-NUAL-NEXT:    addi.d $sp, $sp, 161879; LA64-NUAL-NEXT:    ret1880entry:1881  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 15)1882  ret i32 %memcmp1883}1884 1885define signext i32 @memcmp_size_16(ptr %s1, ptr %s2) nounwind {1886; LA32-UAL-LABEL: memcmp_size_16:1887; LA32-UAL:       # %bb.0: # %entry1888; LA32-UAL-NEXT:    ld.w $a3, $a0, 01889; LA32-UAL-NEXT:    ld.w $a4, $a1, 01890; LA32-UAL-NEXT:    srli.w $a5, $a3, 81891; LA32-UAL-NEXT:    lu12i.w $a2, 151892; LA32-UAL-NEXT:    ori $a2, $a2, 38401893; LA32-UAL-NEXT:    and $a5, $a5, $a21894; LA32-UAL-NEXT:    srli.w $a6, $a3, 241895; LA32-UAL-NEXT:    or $a5, $a5, $a61896; LA32-UAL-NEXT:    and $a6, $a3, $a21897; LA32-UAL-NEXT:    slli.w $a6, $a6, 81898; LA32-UAL-NEXT:    slli.w $a3, $a3, 241899; LA32-UAL-NEXT:    or $a3, $a3, $a61900; LA32-UAL-NEXT:    or $a3, $a3, $a51901; LA32-UAL-NEXT:    srli.w $a5, $a4, 81902; LA32-UAL-NEXT:    and $a5, $a5, $a21903; LA32-UAL-NEXT:    srli.w $a6, $a4, 241904; LA32-UAL-NEXT:    or $a5, $a5, $a61905; LA32-UAL-NEXT:    and $a6, $a4, $a21906; LA32-UAL-NEXT:    slli.w $a6, $a6, 81907; LA32-UAL-NEXT:    slli.w $a4, $a4, 241908; LA32-UAL-NEXT:    or $a4, $a4, $a61909; LA32-UAL-NEXT:    or $a4, $a4, $a51910; LA32-UAL-NEXT:    bne $a3, $a4, .LBB33_51911; LA32-UAL-NEXT:  # %bb.1: # %loadbb11912; LA32-UAL-NEXT:    ld.w $a3, $a0, 41913; LA32-UAL-NEXT:    ld.w $a4, $a1, 41914; LA32-UAL-NEXT:    srli.w $a5, $a3, 81915; LA32-UAL-NEXT:    and $a5, $a5, $a21916; LA32-UAL-NEXT:    srli.w $a6, $a3, 241917; LA32-UAL-NEXT:    or $a5, $a5, $a61918; LA32-UAL-NEXT:    and $a6, $a3, $a21919; LA32-UAL-NEXT:    slli.w $a6, $a6, 81920; LA32-UAL-NEXT:    slli.w $a3, $a3, 241921; LA32-UAL-NEXT:    or $a3, $a3, $a61922; LA32-UAL-NEXT:    or $a3, $a3, $a51923; LA32-UAL-NEXT:    srli.w $a5, $a4, 81924; LA32-UAL-NEXT:    and $a5, $a5, $a21925; LA32-UAL-NEXT:    srli.w $a6, $a4, 241926; LA32-UAL-NEXT:    or $a5, $a5, $a61927; LA32-UAL-NEXT:    and $a6, $a4, $a21928; LA32-UAL-NEXT:    slli.w $a6, $a6, 81929; LA32-UAL-NEXT:    slli.w $a4, $a4, 241930; LA32-UAL-NEXT:    or $a4, $a4, $a61931; LA32-UAL-NEXT:    or $a4, $a4, $a51932; LA32-UAL-NEXT:    bne $a3, $a4, .LBB33_51933; LA32-UAL-NEXT:  # %bb.2: # %loadbb21934; LA32-UAL-NEXT:    ld.w $a3, $a0, 81935; LA32-UAL-NEXT:    ld.w $a4, $a1, 81936; LA32-UAL-NEXT:    srli.w $a5, $a3, 81937; LA32-UAL-NEXT:    and $a5, $a5, $a21938; LA32-UAL-NEXT:    srli.w $a6, $a3, 241939; LA32-UAL-NEXT:    or $a5, $a5, $a61940; LA32-UAL-NEXT:    and $a6, $a3, $a21941; LA32-UAL-NEXT:    slli.w $a6, $a6, 81942; LA32-UAL-NEXT:    slli.w $a3, $a3, 241943; LA32-UAL-NEXT:    or $a3, $a3, $a61944; LA32-UAL-NEXT:    or $a3, $a3, $a51945; LA32-UAL-NEXT:    srli.w $a5, $a4, 81946; LA32-UAL-NEXT:    and $a5, $a5, $a21947; LA32-UAL-NEXT:    srli.w $a6, $a4, 241948; LA32-UAL-NEXT:    or $a5, $a5, $a61949; LA32-UAL-NEXT:    and $a6, $a4, $a21950; LA32-UAL-NEXT:    slli.w $a6, $a6, 81951; LA32-UAL-NEXT:    slli.w $a4, $a4, 241952; LA32-UAL-NEXT:    or $a4, $a4, $a61953; LA32-UAL-NEXT:    or $a4, $a4, $a51954; LA32-UAL-NEXT:    bne $a3, $a4, .LBB33_51955; LA32-UAL-NEXT:  # %bb.3: # %loadbb31956; LA32-UAL-NEXT:    ld.w $a0, $a0, 121957; LA32-UAL-NEXT:    ld.w $a1, $a1, 121958; LA32-UAL-NEXT:    srli.w $a3, $a0, 81959; LA32-UAL-NEXT:    and $a3, $a3, $a21960; LA32-UAL-NEXT:    srli.w $a4, $a0, 241961; LA32-UAL-NEXT:    or $a3, $a3, $a41962; LA32-UAL-NEXT:    and $a4, $a0, $a21963; LA32-UAL-NEXT:    slli.w $a4, $a4, 81964; LA32-UAL-NEXT:    slli.w $a0, $a0, 241965; LA32-UAL-NEXT:    or $a0, $a0, $a41966; LA32-UAL-NEXT:    or $a3, $a0, $a31967; LA32-UAL-NEXT:    srli.w $a0, $a1, 81968; LA32-UAL-NEXT:    and $a0, $a0, $a21969; LA32-UAL-NEXT:    srli.w $a4, $a1, 241970; LA32-UAL-NEXT:    or $a0, $a0, $a41971; LA32-UAL-NEXT:    and $a2, $a1, $a21972; LA32-UAL-NEXT:    slli.w $a2, $a2, 81973; LA32-UAL-NEXT:    slli.w $a1, $a1, 241974; LA32-UAL-NEXT:    or $a1, $a1, $a21975; LA32-UAL-NEXT:    or $a4, $a1, $a01976; LA32-UAL-NEXT:    bne $a3, $a4, .LBB33_51977; LA32-UAL-NEXT:  # %bb.4:1978; LA32-UAL-NEXT:    move $a0, $zero1979; LA32-UAL-NEXT:    ret1980; LA32-UAL-NEXT:  .LBB33_5: # %res_block1981; LA32-UAL-NEXT:    sltu $a0, $a3, $a41982; LA32-UAL-NEXT:    sub.w $a0, $zero, $a01983; LA32-UAL-NEXT:    ori $a0, $a0, 11984; LA32-UAL-NEXT:    ret1985;1986; LA64-UAL-LABEL: memcmp_size_16:1987; LA64-UAL:       # %bb.0: # %entry1988; LA64-UAL-NEXT:    ld.d $a2, $a0, 01989; LA64-UAL-NEXT:    ld.d $a3, $a1, 01990; LA64-UAL-NEXT:    revb.d $a2, $a21991; LA64-UAL-NEXT:    revb.d $a3, $a31992; LA64-UAL-NEXT:    bne $a2, $a3, .LBB33_31993; LA64-UAL-NEXT:  # %bb.1: # %loadbb11994; LA64-UAL-NEXT:    ld.d $a0, $a0, 81995; LA64-UAL-NEXT:    ld.d $a1, $a1, 81996; LA64-UAL-NEXT:    revb.d $a2, $a01997; LA64-UAL-NEXT:    revb.d $a3, $a11998; LA64-UAL-NEXT:    bne $a2, $a3, .LBB33_31999; LA64-UAL-NEXT:  # %bb.2:2000; LA64-UAL-NEXT:    move $a0, $zero2001; LA64-UAL-NEXT:    ret2002; LA64-UAL-NEXT:  .LBB33_3: # %res_block2003; LA64-UAL-NEXT:    sltu $a0, $a2, $a32004; LA64-UAL-NEXT:    sub.d $a0, $zero, $a02005; LA64-UAL-NEXT:    ori $a0, $a0, 12006; LA64-UAL-NEXT:    ret2007;2008; LA32-NUAL-LABEL: memcmp_size_16:2009; LA32-NUAL:       # %bb.0: # %entry2010; LA32-NUAL-NEXT:    addi.w $sp, $sp, -162011; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill2012; LA32-NUAL-NEXT:    ori $a2, $zero, 162013; LA32-NUAL-NEXT:    bl memcmp2014; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload2015; LA32-NUAL-NEXT:    addi.w $sp, $sp, 162016; LA32-NUAL-NEXT:    ret2017;2018; LA64-NUAL-LABEL: memcmp_size_16:2019; LA64-NUAL:       # %bb.0: # %entry2020; LA64-NUAL-NEXT:    addi.d $sp, $sp, -162021; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill2022; LA64-NUAL-NEXT:    ori $a2, $zero, 162023; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)2024; LA64-NUAL-NEXT:    jirl $ra, $ra, 02025; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload2026; LA64-NUAL-NEXT:    addi.d $sp, $sp, 162027; LA64-NUAL-NEXT:    ret2028entry:2029  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 16)2030  ret i32 %memcmp2031}2032 2033define signext i32 @memcmp_size_31(ptr %s1, ptr %s2) nounwind {2034; LA32-UAL-LABEL: memcmp_size_31:2035; LA32-UAL:       # %bb.0: # %entry2036; LA32-UAL-NEXT:    ld.w $a3, $a0, 02037; LA32-UAL-NEXT:    ld.w $a4, $a1, 02038; LA32-UAL-NEXT:    srli.w $a5, $a3, 82039; LA32-UAL-NEXT:    lu12i.w $a2, 152040; LA32-UAL-NEXT:    ori $a2, $a2, 38402041; LA32-UAL-NEXT:    and $a5, $a5, $a22042; LA32-UAL-NEXT:    srli.w $a6, $a3, 242043; LA32-UAL-NEXT:    or $a5, $a5, $a62044; LA32-UAL-NEXT:    and $a6, $a3, $a22045; LA32-UAL-NEXT:    slli.w $a6, $a6, 82046; LA32-UAL-NEXT:    slli.w $a3, $a3, 242047; LA32-UAL-NEXT:    or $a3, $a3, $a62048; LA32-UAL-NEXT:    or $a3, $a3, $a52049; LA32-UAL-NEXT:    srli.w $a5, $a4, 82050; LA32-UAL-NEXT:    and $a5, $a5, $a22051; LA32-UAL-NEXT:    srli.w $a6, $a4, 242052; LA32-UAL-NEXT:    or $a5, $a5, $a62053; LA32-UAL-NEXT:    and $a6, $a4, $a22054; LA32-UAL-NEXT:    slli.w $a6, $a6, 82055; LA32-UAL-NEXT:    slli.w $a4, $a4, 242056; LA32-UAL-NEXT:    or $a4, $a4, $a62057; LA32-UAL-NEXT:    or $a4, $a4, $a52058; LA32-UAL-NEXT:    bne $a3, $a4, .LBB34_92059; LA32-UAL-NEXT:  # %bb.1: # %loadbb12060; LA32-UAL-NEXT:    ld.w $a3, $a0, 42061; LA32-UAL-NEXT:    ld.w $a4, $a1, 42062; LA32-UAL-NEXT:    srli.w $a5, $a3, 82063; LA32-UAL-NEXT:    and $a5, $a5, $a22064; LA32-UAL-NEXT:    srli.w $a6, $a3, 242065; LA32-UAL-NEXT:    or $a5, $a5, $a62066; LA32-UAL-NEXT:    and $a6, $a3, $a22067; LA32-UAL-NEXT:    slli.w $a6, $a6, 82068; LA32-UAL-NEXT:    slli.w $a3, $a3, 242069; LA32-UAL-NEXT:    or $a3, $a3, $a62070; LA32-UAL-NEXT:    or $a3, $a3, $a52071; LA32-UAL-NEXT:    srli.w $a5, $a4, 82072; LA32-UAL-NEXT:    and $a5, $a5, $a22073; LA32-UAL-NEXT:    srli.w $a6, $a4, 242074; LA32-UAL-NEXT:    or $a5, $a5, $a62075; LA32-UAL-NEXT:    and $a6, $a4, $a22076; LA32-UAL-NEXT:    slli.w $a6, $a6, 82077; LA32-UAL-NEXT:    slli.w $a4, $a4, 242078; LA32-UAL-NEXT:    or $a4, $a4, $a62079; LA32-UAL-NEXT:    or $a4, $a4, $a52080; LA32-UAL-NEXT:    bne $a3, $a4, .LBB34_92081; LA32-UAL-NEXT:  # %bb.2: # %loadbb22082; LA32-UAL-NEXT:    ld.w $a3, $a0, 82083; LA32-UAL-NEXT:    ld.w $a4, $a1, 82084; LA32-UAL-NEXT:    srli.w $a5, $a3, 82085; LA32-UAL-NEXT:    and $a5, $a5, $a22086; LA32-UAL-NEXT:    srli.w $a6, $a3, 242087; LA32-UAL-NEXT:    or $a5, $a5, $a62088; LA32-UAL-NEXT:    and $a6, $a3, $a22089; LA32-UAL-NEXT:    slli.w $a6, $a6, 82090; LA32-UAL-NEXT:    slli.w $a3, $a3, 242091; LA32-UAL-NEXT:    or $a3, $a3, $a62092; LA32-UAL-NEXT:    or $a3, $a3, $a52093; LA32-UAL-NEXT:    srli.w $a5, $a4, 82094; LA32-UAL-NEXT:    and $a5, $a5, $a22095; LA32-UAL-NEXT:    srli.w $a6, $a4, 242096; LA32-UAL-NEXT:    or $a5, $a5, $a62097; LA32-UAL-NEXT:    and $a6, $a4, $a22098; LA32-UAL-NEXT:    slli.w $a6, $a6, 82099; LA32-UAL-NEXT:    slli.w $a4, $a4, 242100; LA32-UAL-NEXT:    or $a4, $a4, $a62101; LA32-UAL-NEXT:    or $a4, $a4, $a52102; LA32-UAL-NEXT:    bne $a3, $a4, .LBB34_92103; LA32-UAL-NEXT:  # %bb.3: # %loadbb32104; LA32-UAL-NEXT:    ld.w $a3, $a0, 122105; LA32-UAL-NEXT:    ld.w $a4, $a1, 122106; LA32-UAL-NEXT:    srli.w $a5, $a3, 82107; LA32-UAL-NEXT:    and $a5, $a5, $a22108; LA32-UAL-NEXT:    srli.w $a6, $a3, 242109; LA32-UAL-NEXT:    or $a5, $a5, $a62110; LA32-UAL-NEXT:    and $a6, $a3, $a22111; LA32-UAL-NEXT:    slli.w $a6, $a6, 82112; LA32-UAL-NEXT:    slli.w $a3, $a3, 242113; LA32-UAL-NEXT:    or $a3, $a3, $a62114; LA32-UAL-NEXT:    or $a3, $a3, $a52115; LA32-UAL-NEXT:    srli.w $a5, $a4, 82116; LA32-UAL-NEXT:    and $a5, $a5, $a22117; LA32-UAL-NEXT:    srli.w $a6, $a4, 242118; LA32-UAL-NEXT:    or $a5, $a5, $a62119; LA32-UAL-NEXT:    and $a6, $a4, $a22120; LA32-UAL-NEXT:    slli.w $a6, $a6, 82121; LA32-UAL-NEXT:    slli.w $a4, $a4, 242122; LA32-UAL-NEXT:    or $a4, $a4, $a62123; LA32-UAL-NEXT:    or $a4, $a4, $a52124; LA32-UAL-NEXT:    bne $a3, $a4, .LBB34_92125; LA32-UAL-NEXT:  # %bb.4: # %loadbb42126; LA32-UAL-NEXT:    ld.w $a3, $a0, 162127; LA32-UAL-NEXT:    ld.w $a4, $a1, 162128; LA32-UAL-NEXT:    srli.w $a5, $a3, 82129; LA32-UAL-NEXT:    and $a5, $a5, $a22130; LA32-UAL-NEXT:    srli.w $a6, $a3, 242131; LA32-UAL-NEXT:    or $a5, $a5, $a62132; LA32-UAL-NEXT:    and $a6, $a3, $a22133; LA32-UAL-NEXT:    slli.w $a6, $a6, 82134; LA32-UAL-NEXT:    slli.w $a3, $a3, 242135; LA32-UAL-NEXT:    or $a3, $a3, $a62136; LA32-UAL-NEXT:    or $a3, $a3, $a52137; LA32-UAL-NEXT:    srli.w $a5, $a4, 82138; LA32-UAL-NEXT:    and $a5, $a5, $a22139; LA32-UAL-NEXT:    srli.w $a6, $a4, 242140; LA32-UAL-NEXT:    or $a5, $a5, $a62141; LA32-UAL-NEXT:    and $a6, $a4, $a22142; LA32-UAL-NEXT:    slli.w $a6, $a6, 82143; LA32-UAL-NEXT:    slli.w $a4, $a4, 242144; LA32-UAL-NEXT:    or $a4, $a4, $a62145; LA32-UAL-NEXT:    or $a4, $a4, $a52146; LA32-UAL-NEXT:    bne $a3, $a4, .LBB34_92147; LA32-UAL-NEXT:  # %bb.5: # %loadbb52148; LA32-UAL-NEXT:    ld.w $a3, $a0, 202149; LA32-UAL-NEXT:    ld.w $a4, $a1, 202150; LA32-UAL-NEXT:    srli.w $a5, $a3, 82151; LA32-UAL-NEXT:    and $a5, $a5, $a22152; LA32-UAL-NEXT:    srli.w $a6, $a3, 242153; LA32-UAL-NEXT:    or $a5, $a5, $a62154; LA32-UAL-NEXT:    and $a6, $a3, $a22155; LA32-UAL-NEXT:    slli.w $a6, $a6, 82156; LA32-UAL-NEXT:    slli.w $a3, $a3, 242157; LA32-UAL-NEXT:    or $a3, $a3, $a62158; LA32-UAL-NEXT:    or $a3, $a3, $a52159; LA32-UAL-NEXT:    srli.w $a5, $a4, 82160; LA32-UAL-NEXT:    and $a5, $a5, $a22161; LA32-UAL-NEXT:    srli.w $a6, $a4, 242162; LA32-UAL-NEXT:    or $a5, $a5, $a62163; LA32-UAL-NEXT:    and $a6, $a4, $a22164; LA32-UAL-NEXT:    slli.w $a6, $a6, 82165; LA32-UAL-NEXT:    slli.w $a4, $a4, 242166; LA32-UAL-NEXT:    or $a4, $a4, $a62167; LA32-UAL-NEXT:    or $a4, $a4, $a52168; LA32-UAL-NEXT:    bne $a3, $a4, .LBB34_92169; LA32-UAL-NEXT:  # %bb.6: # %loadbb62170; LA32-UAL-NEXT:    ld.w $a3, $a0, 242171; LA32-UAL-NEXT:    ld.w $a4, $a1, 242172; LA32-UAL-NEXT:    srli.w $a5, $a3, 82173; LA32-UAL-NEXT:    and $a5, $a5, $a22174; LA32-UAL-NEXT:    srli.w $a6, $a3, 242175; LA32-UAL-NEXT:    or $a5, $a5, $a62176; LA32-UAL-NEXT:    and $a6, $a3, $a22177; LA32-UAL-NEXT:    slli.w $a6, $a6, 82178; LA32-UAL-NEXT:    slli.w $a3, $a3, 242179; LA32-UAL-NEXT:    or $a3, $a3, $a62180; LA32-UAL-NEXT:    or $a3, $a3, $a52181; LA32-UAL-NEXT:    srli.w $a5, $a4, 82182; LA32-UAL-NEXT:    and $a5, $a5, $a22183; LA32-UAL-NEXT:    srli.w $a6, $a4, 242184; LA32-UAL-NEXT:    or $a5, $a5, $a62185; LA32-UAL-NEXT:    and $a6, $a4, $a22186; LA32-UAL-NEXT:    slli.w $a6, $a6, 82187; LA32-UAL-NEXT:    slli.w $a4, $a4, 242188; LA32-UAL-NEXT:    or $a4, $a4, $a62189; LA32-UAL-NEXT:    or $a4, $a4, $a52190; LA32-UAL-NEXT:    bne $a3, $a4, .LBB34_92191; LA32-UAL-NEXT:  # %bb.7: # %loadbb72192; LA32-UAL-NEXT:    ld.w $a0, $a0, 272193; LA32-UAL-NEXT:    ld.w $a1, $a1, 272194; LA32-UAL-NEXT:    srli.w $a3, $a0, 82195; LA32-UAL-NEXT:    and $a3, $a3, $a22196; LA32-UAL-NEXT:    srli.w $a4, $a0, 242197; LA32-UAL-NEXT:    or $a3, $a3, $a42198; LA32-UAL-NEXT:    and $a4, $a0, $a22199; LA32-UAL-NEXT:    slli.w $a4, $a4, 82200; LA32-UAL-NEXT:    slli.w $a0, $a0, 242201; LA32-UAL-NEXT:    or $a0, $a0, $a42202; LA32-UAL-NEXT:    or $a3, $a0, $a32203; LA32-UAL-NEXT:    srli.w $a0, $a1, 82204; LA32-UAL-NEXT:    and $a0, $a0, $a22205; LA32-UAL-NEXT:    srli.w $a4, $a1, 242206; LA32-UAL-NEXT:    or $a0, $a0, $a42207; LA32-UAL-NEXT:    and $a2, $a1, $a22208; LA32-UAL-NEXT:    slli.w $a2, $a2, 82209; LA32-UAL-NEXT:    slli.w $a1, $a1, 242210; LA32-UAL-NEXT:    or $a1, $a1, $a22211; LA32-UAL-NEXT:    or $a4, $a1, $a02212; LA32-UAL-NEXT:    bne $a3, $a4, .LBB34_92213; LA32-UAL-NEXT:  # %bb.8:2214; LA32-UAL-NEXT:    move $a0, $zero2215; LA32-UAL-NEXT:    ret2216; LA32-UAL-NEXT:  .LBB34_9: # %res_block2217; LA32-UAL-NEXT:    sltu $a0, $a3, $a42218; LA32-UAL-NEXT:    sub.w $a0, $zero, $a02219; LA32-UAL-NEXT:    ori $a0, $a0, 12220; LA32-UAL-NEXT:    ret2221;2222; LA64-UAL-LABEL: memcmp_size_31:2223; LA64-UAL:       # %bb.0: # %entry2224; LA64-UAL-NEXT:    ld.d $a2, $a0, 02225; LA64-UAL-NEXT:    ld.d $a3, $a1, 02226; LA64-UAL-NEXT:    revb.d $a2, $a22227; LA64-UAL-NEXT:    revb.d $a3, $a32228; LA64-UAL-NEXT:    bne $a2, $a3, .LBB34_52229; LA64-UAL-NEXT:  # %bb.1: # %loadbb12230; LA64-UAL-NEXT:    ld.d $a2, $a0, 82231; LA64-UAL-NEXT:    ld.d $a3, $a1, 82232; LA64-UAL-NEXT:    revb.d $a2, $a22233; LA64-UAL-NEXT:    revb.d $a3, $a32234; LA64-UAL-NEXT:    bne $a2, $a3, .LBB34_52235; LA64-UAL-NEXT:  # %bb.2: # %loadbb22236; LA64-UAL-NEXT:    ld.d $a2, $a0, 162237; LA64-UAL-NEXT:    ld.d $a3, $a1, 162238; LA64-UAL-NEXT:    revb.d $a2, $a22239; LA64-UAL-NEXT:    revb.d $a3, $a32240; LA64-UAL-NEXT:    bne $a2, $a3, .LBB34_52241; LA64-UAL-NEXT:  # %bb.3: # %loadbb32242; LA64-UAL-NEXT:    ld.d $a0, $a0, 232243; LA64-UAL-NEXT:    ld.d $a1, $a1, 232244; LA64-UAL-NEXT:    revb.d $a2, $a02245; LA64-UAL-NEXT:    revb.d $a3, $a12246; LA64-UAL-NEXT:    bne $a2, $a3, .LBB34_52247; LA64-UAL-NEXT:  # %bb.4:2248; LA64-UAL-NEXT:    move $a0, $zero2249; LA64-UAL-NEXT:    ret2250; LA64-UAL-NEXT:  .LBB34_5: # %res_block2251; LA64-UAL-NEXT:    sltu $a0, $a2, $a32252; LA64-UAL-NEXT:    sub.d $a0, $zero, $a02253; LA64-UAL-NEXT:    ori $a0, $a0, 12254; LA64-UAL-NEXT:    ret2255;2256; LA32-NUAL-LABEL: memcmp_size_31:2257; LA32-NUAL:       # %bb.0: # %entry2258; LA32-NUAL-NEXT:    addi.w $sp, $sp, -162259; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill2260; LA32-NUAL-NEXT:    ori $a2, $zero, 312261; LA32-NUAL-NEXT:    bl memcmp2262; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload2263; LA32-NUAL-NEXT:    addi.w $sp, $sp, 162264; LA32-NUAL-NEXT:    ret2265;2266; LA64-NUAL-LABEL: memcmp_size_31:2267; LA64-NUAL:       # %bb.0: # %entry2268; LA64-NUAL-NEXT:    addi.d $sp, $sp, -162269; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill2270; LA64-NUAL-NEXT:    ori $a2, $zero, 312271; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)2272; LA64-NUAL-NEXT:    jirl $ra, $ra, 02273; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload2274; LA64-NUAL-NEXT:    addi.d $sp, $sp, 162275; LA64-NUAL-NEXT:    ret2276entry:2277  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 31)2278  ret i32 %memcmp2279}2280 2281define signext i32 @memcmp_size_32(ptr %s1, ptr %s2) nounwind {2282; LA32-UAL-LABEL: memcmp_size_32:2283; LA32-UAL:       # %bb.0: # %entry2284; LA32-UAL-NEXT:    ld.w $a3, $a0, 02285; LA32-UAL-NEXT:    ld.w $a4, $a1, 02286; LA32-UAL-NEXT:    srli.w $a5, $a3, 82287; LA32-UAL-NEXT:    lu12i.w $a2, 152288; LA32-UAL-NEXT:    ori $a2, $a2, 38402289; LA32-UAL-NEXT:    and $a5, $a5, $a22290; LA32-UAL-NEXT:    srli.w $a6, $a3, 242291; LA32-UAL-NEXT:    or $a5, $a5, $a62292; LA32-UAL-NEXT:    and $a6, $a3, $a22293; LA32-UAL-NEXT:    slli.w $a6, $a6, 82294; LA32-UAL-NEXT:    slli.w $a3, $a3, 242295; LA32-UAL-NEXT:    or $a3, $a3, $a62296; LA32-UAL-NEXT:    or $a3, $a3, $a52297; LA32-UAL-NEXT:    srli.w $a5, $a4, 82298; LA32-UAL-NEXT:    and $a5, $a5, $a22299; LA32-UAL-NEXT:    srli.w $a6, $a4, 242300; LA32-UAL-NEXT:    or $a5, $a5, $a62301; LA32-UAL-NEXT:    and $a6, $a4, $a22302; LA32-UAL-NEXT:    slli.w $a6, $a6, 82303; LA32-UAL-NEXT:    slli.w $a4, $a4, 242304; LA32-UAL-NEXT:    or $a4, $a4, $a62305; LA32-UAL-NEXT:    or $a4, $a4, $a52306; LA32-UAL-NEXT:    bne $a3, $a4, .LBB35_92307; LA32-UAL-NEXT:  # %bb.1: # %loadbb12308; LA32-UAL-NEXT:    ld.w $a3, $a0, 42309; LA32-UAL-NEXT:    ld.w $a4, $a1, 42310; LA32-UAL-NEXT:    srli.w $a5, $a3, 82311; LA32-UAL-NEXT:    and $a5, $a5, $a22312; LA32-UAL-NEXT:    srli.w $a6, $a3, 242313; LA32-UAL-NEXT:    or $a5, $a5, $a62314; LA32-UAL-NEXT:    and $a6, $a3, $a22315; LA32-UAL-NEXT:    slli.w $a6, $a6, 82316; LA32-UAL-NEXT:    slli.w $a3, $a3, 242317; LA32-UAL-NEXT:    or $a3, $a3, $a62318; LA32-UAL-NEXT:    or $a3, $a3, $a52319; LA32-UAL-NEXT:    srli.w $a5, $a4, 82320; LA32-UAL-NEXT:    and $a5, $a5, $a22321; LA32-UAL-NEXT:    srli.w $a6, $a4, 242322; LA32-UAL-NEXT:    or $a5, $a5, $a62323; LA32-UAL-NEXT:    and $a6, $a4, $a22324; LA32-UAL-NEXT:    slli.w $a6, $a6, 82325; LA32-UAL-NEXT:    slli.w $a4, $a4, 242326; LA32-UAL-NEXT:    or $a4, $a4, $a62327; LA32-UAL-NEXT:    or $a4, $a4, $a52328; LA32-UAL-NEXT:    bne $a3, $a4, .LBB35_92329; LA32-UAL-NEXT:  # %bb.2: # %loadbb22330; LA32-UAL-NEXT:    ld.w $a3, $a0, 82331; LA32-UAL-NEXT:    ld.w $a4, $a1, 82332; LA32-UAL-NEXT:    srli.w $a5, $a3, 82333; LA32-UAL-NEXT:    and $a5, $a5, $a22334; LA32-UAL-NEXT:    srli.w $a6, $a3, 242335; LA32-UAL-NEXT:    or $a5, $a5, $a62336; LA32-UAL-NEXT:    and $a6, $a3, $a22337; LA32-UAL-NEXT:    slli.w $a6, $a6, 82338; LA32-UAL-NEXT:    slli.w $a3, $a3, 242339; LA32-UAL-NEXT:    or $a3, $a3, $a62340; LA32-UAL-NEXT:    or $a3, $a3, $a52341; LA32-UAL-NEXT:    srli.w $a5, $a4, 82342; LA32-UAL-NEXT:    and $a5, $a5, $a22343; LA32-UAL-NEXT:    srli.w $a6, $a4, 242344; LA32-UAL-NEXT:    or $a5, $a5, $a62345; LA32-UAL-NEXT:    and $a6, $a4, $a22346; LA32-UAL-NEXT:    slli.w $a6, $a6, 82347; LA32-UAL-NEXT:    slli.w $a4, $a4, 242348; LA32-UAL-NEXT:    or $a4, $a4, $a62349; LA32-UAL-NEXT:    or $a4, $a4, $a52350; LA32-UAL-NEXT:    bne $a3, $a4, .LBB35_92351; LA32-UAL-NEXT:  # %bb.3: # %loadbb32352; LA32-UAL-NEXT:    ld.w $a3, $a0, 122353; LA32-UAL-NEXT:    ld.w $a4, $a1, 122354; LA32-UAL-NEXT:    srli.w $a5, $a3, 82355; LA32-UAL-NEXT:    and $a5, $a5, $a22356; LA32-UAL-NEXT:    srli.w $a6, $a3, 242357; LA32-UAL-NEXT:    or $a5, $a5, $a62358; LA32-UAL-NEXT:    and $a6, $a3, $a22359; LA32-UAL-NEXT:    slli.w $a6, $a6, 82360; LA32-UAL-NEXT:    slli.w $a3, $a3, 242361; LA32-UAL-NEXT:    or $a3, $a3, $a62362; LA32-UAL-NEXT:    or $a3, $a3, $a52363; LA32-UAL-NEXT:    srli.w $a5, $a4, 82364; LA32-UAL-NEXT:    and $a5, $a5, $a22365; LA32-UAL-NEXT:    srli.w $a6, $a4, 242366; LA32-UAL-NEXT:    or $a5, $a5, $a62367; LA32-UAL-NEXT:    and $a6, $a4, $a22368; LA32-UAL-NEXT:    slli.w $a6, $a6, 82369; LA32-UAL-NEXT:    slli.w $a4, $a4, 242370; LA32-UAL-NEXT:    or $a4, $a4, $a62371; LA32-UAL-NEXT:    or $a4, $a4, $a52372; LA32-UAL-NEXT:    bne $a3, $a4, .LBB35_92373; LA32-UAL-NEXT:  # %bb.4: # %loadbb42374; LA32-UAL-NEXT:    ld.w $a3, $a0, 162375; LA32-UAL-NEXT:    ld.w $a4, $a1, 162376; LA32-UAL-NEXT:    srli.w $a5, $a3, 82377; LA32-UAL-NEXT:    and $a5, $a5, $a22378; LA32-UAL-NEXT:    srli.w $a6, $a3, 242379; LA32-UAL-NEXT:    or $a5, $a5, $a62380; LA32-UAL-NEXT:    and $a6, $a3, $a22381; LA32-UAL-NEXT:    slli.w $a6, $a6, 82382; LA32-UAL-NEXT:    slli.w $a3, $a3, 242383; LA32-UAL-NEXT:    or $a3, $a3, $a62384; LA32-UAL-NEXT:    or $a3, $a3, $a52385; LA32-UAL-NEXT:    srli.w $a5, $a4, 82386; LA32-UAL-NEXT:    and $a5, $a5, $a22387; LA32-UAL-NEXT:    srli.w $a6, $a4, 242388; LA32-UAL-NEXT:    or $a5, $a5, $a62389; LA32-UAL-NEXT:    and $a6, $a4, $a22390; LA32-UAL-NEXT:    slli.w $a6, $a6, 82391; LA32-UAL-NEXT:    slli.w $a4, $a4, 242392; LA32-UAL-NEXT:    or $a4, $a4, $a62393; LA32-UAL-NEXT:    or $a4, $a4, $a52394; LA32-UAL-NEXT:    bne $a3, $a4, .LBB35_92395; LA32-UAL-NEXT:  # %bb.5: # %loadbb52396; LA32-UAL-NEXT:    ld.w $a3, $a0, 202397; LA32-UAL-NEXT:    ld.w $a4, $a1, 202398; LA32-UAL-NEXT:    srli.w $a5, $a3, 82399; LA32-UAL-NEXT:    and $a5, $a5, $a22400; LA32-UAL-NEXT:    srli.w $a6, $a3, 242401; LA32-UAL-NEXT:    or $a5, $a5, $a62402; LA32-UAL-NEXT:    and $a6, $a3, $a22403; LA32-UAL-NEXT:    slli.w $a6, $a6, 82404; LA32-UAL-NEXT:    slli.w $a3, $a3, 242405; LA32-UAL-NEXT:    or $a3, $a3, $a62406; LA32-UAL-NEXT:    or $a3, $a3, $a52407; LA32-UAL-NEXT:    srli.w $a5, $a4, 82408; LA32-UAL-NEXT:    and $a5, $a5, $a22409; LA32-UAL-NEXT:    srli.w $a6, $a4, 242410; LA32-UAL-NEXT:    or $a5, $a5, $a62411; LA32-UAL-NEXT:    and $a6, $a4, $a22412; LA32-UAL-NEXT:    slli.w $a6, $a6, 82413; LA32-UAL-NEXT:    slli.w $a4, $a4, 242414; LA32-UAL-NEXT:    or $a4, $a4, $a62415; LA32-UAL-NEXT:    or $a4, $a4, $a52416; LA32-UAL-NEXT:    bne $a3, $a4, .LBB35_92417; LA32-UAL-NEXT:  # %bb.6: # %loadbb62418; LA32-UAL-NEXT:    ld.w $a3, $a0, 242419; LA32-UAL-NEXT:    ld.w $a4, $a1, 242420; LA32-UAL-NEXT:    srli.w $a5, $a3, 82421; LA32-UAL-NEXT:    and $a5, $a5, $a22422; LA32-UAL-NEXT:    srli.w $a6, $a3, 242423; LA32-UAL-NEXT:    or $a5, $a5, $a62424; LA32-UAL-NEXT:    and $a6, $a3, $a22425; LA32-UAL-NEXT:    slli.w $a6, $a6, 82426; LA32-UAL-NEXT:    slli.w $a3, $a3, 242427; LA32-UAL-NEXT:    or $a3, $a3, $a62428; LA32-UAL-NEXT:    or $a3, $a3, $a52429; LA32-UAL-NEXT:    srli.w $a5, $a4, 82430; LA32-UAL-NEXT:    and $a5, $a5, $a22431; LA32-UAL-NEXT:    srli.w $a6, $a4, 242432; LA32-UAL-NEXT:    or $a5, $a5, $a62433; LA32-UAL-NEXT:    and $a6, $a4, $a22434; LA32-UAL-NEXT:    slli.w $a6, $a6, 82435; LA32-UAL-NEXT:    slli.w $a4, $a4, 242436; LA32-UAL-NEXT:    or $a4, $a4, $a62437; LA32-UAL-NEXT:    or $a4, $a4, $a52438; LA32-UAL-NEXT:    bne $a3, $a4, .LBB35_92439; LA32-UAL-NEXT:  # %bb.7: # %loadbb72440; LA32-UAL-NEXT:    ld.w $a0, $a0, 282441; LA32-UAL-NEXT:    ld.w $a1, $a1, 282442; LA32-UAL-NEXT:    srli.w $a3, $a0, 82443; LA32-UAL-NEXT:    and $a3, $a3, $a22444; LA32-UAL-NEXT:    srli.w $a4, $a0, 242445; LA32-UAL-NEXT:    or $a3, $a3, $a42446; LA32-UAL-NEXT:    and $a4, $a0, $a22447; LA32-UAL-NEXT:    slli.w $a4, $a4, 82448; LA32-UAL-NEXT:    slli.w $a0, $a0, 242449; LA32-UAL-NEXT:    or $a0, $a0, $a42450; LA32-UAL-NEXT:    or $a3, $a0, $a32451; LA32-UAL-NEXT:    srli.w $a0, $a1, 82452; LA32-UAL-NEXT:    and $a0, $a0, $a22453; LA32-UAL-NEXT:    srli.w $a4, $a1, 242454; LA32-UAL-NEXT:    or $a0, $a0, $a42455; LA32-UAL-NEXT:    and $a2, $a1, $a22456; LA32-UAL-NEXT:    slli.w $a2, $a2, 82457; LA32-UAL-NEXT:    slli.w $a1, $a1, 242458; LA32-UAL-NEXT:    or $a1, $a1, $a22459; LA32-UAL-NEXT:    or $a4, $a1, $a02460; LA32-UAL-NEXT:    bne $a3, $a4, .LBB35_92461; LA32-UAL-NEXT:  # %bb.8:2462; LA32-UAL-NEXT:    move $a0, $zero2463; LA32-UAL-NEXT:    ret2464; LA32-UAL-NEXT:  .LBB35_9: # %res_block2465; LA32-UAL-NEXT:    sltu $a0, $a3, $a42466; LA32-UAL-NEXT:    sub.w $a0, $zero, $a02467; LA32-UAL-NEXT:    ori $a0, $a0, 12468; LA32-UAL-NEXT:    ret2469;2470; LA64-UAL-LABEL: memcmp_size_32:2471; LA64-UAL:       # %bb.0: # %entry2472; LA64-UAL-NEXT:    ld.d $a2, $a0, 02473; LA64-UAL-NEXT:    ld.d $a3, $a1, 02474; LA64-UAL-NEXT:    revb.d $a2, $a22475; LA64-UAL-NEXT:    revb.d $a3, $a32476; LA64-UAL-NEXT:    bne $a2, $a3, .LBB35_52477; LA64-UAL-NEXT:  # %bb.1: # %loadbb12478; LA64-UAL-NEXT:    ld.d $a2, $a0, 82479; LA64-UAL-NEXT:    ld.d $a3, $a1, 82480; LA64-UAL-NEXT:    revb.d $a2, $a22481; LA64-UAL-NEXT:    revb.d $a3, $a32482; LA64-UAL-NEXT:    bne $a2, $a3, .LBB35_52483; LA64-UAL-NEXT:  # %bb.2: # %loadbb22484; LA64-UAL-NEXT:    ld.d $a2, $a0, 162485; LA64-UAL-NEXT:    ld.d $a3, $a1, 162486; LA64-UAL-NEXT:    revb.d $a2, $a22487; LA64-UAL-NEXT:    revb.d $a3, $a32488; LA64-UAL-NEXT:    bne $a2, $a3, .LBB35_52489; LA64-UAL-NEXT:  # %bb.3: # %loadbb32490; LA64-UAL-NEXT:    ld.d $a0, $a0, 242491; LA64-UAL-NEXT:    ld.d $a1, $a1, 242492; LA64-UAL-NEXT:    revb.d $a2, $a02493; LA64-UAL-NEXT:    revb.d $a3, $a12494; LA64-UAL-NEXT:    bne $a2, $a3, .LBB35_52495; LA64-UAL-NEXT:  # %bb.4:2496; LA64-UAL-NEXT:    move $a0, $zero2497; LA64-UAL-NEXT:    ret2498; LA64-UAL-NEXT:  .LBB35_5: # %res_block2499; LA64-UAL-NEXT:    sltu $a0, $a2, $a32500; LA64-UAL-NEXT:    sub.d $a0, $zero, $a02501; LA64-UAL-NEXT:    ori $a0, $a0, 12502; LA64-UAL-NEXT:    ret2503;2504; LA32-NUAL-LABEL: memcmp_size_32:2505; LA32-NUAL:       # %bb.0: # %entry2506; LA32-NUAL-NEXT:    addi.w $sp, $sp, -162507; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill2508; LA32-NUAL-NEXT:    ori $a2, $zero, 322509; LA32-NUAL-NEXT:    bl memcmp2510; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload2511; LA32-NUAL-NEXT:    addi.w $sp, $sp, 162512; LA32-NUAL-NEXT:    ret2513;2514; LA64-NUAL-LABEL: memcmp_size_32:2515; LA64-NUAL:       # %bb.0: # %entry2516; LA64-NUAL-NEXT:    addi.d $sp, $sp, -162517; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill2518; LA64-NUAL-NEXT:    ori $a2, $zero, 322519; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)2520; LA64-NUAL-NEXT:    jirl $ra, $ra, 02521; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload2522; LA64-NUAL-NEXT:    addi.d $sp, $sp, 162523; LA64-NUAL-NEXT:    ret2524entry:2525  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 32)2526  ret i32 %memcmp2527}2528 2529define signext i32 @memcmp_size_63(ptr %s1, ptr %s2) nounwind {2530; LA32-LABEL: memcmp_size_63:2531; LA32:       # %bb.0: # %entry2532; LA32-NEXT:    addi.w $sp, $sp, -162533; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill2534; LA32-NEXT:    ori $a2, $zero, 632535; LA32-NEXT:    bl memcmp2536; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload2537; LA32-NEXT:    addi.w $sp, $sp, 162538; LA32-NEXT:    ret2539;2540; LA64-UAL-LABEL: memcmp_size_63:2541; LA64-UAL:       # %bb.0: # %entry2542; LA64-UAL-NEXT:    ld.d $a2, $a0, 02543; LA64-UAL-NEXT:    ld.d $a3, $a1, 02544; LA64-UAL-NEXT:    revb.d $a2, $a22545; LA64-UAL-NEXT:    revb.d $a3, $a32546; LA64-UAL-NEXT:    bne $a2, $a3, .LBB36_92547; LA64-UAL-NEXT:  # %bb.1: # %loadbb12548; LA64-UAL-NEXT:    ld.d $a2, $a0, 82549; LA64-UAL-NEXT:    ld.d $a3, $a1, 82550; LA64-UAL-NEXT:    revb.d $a2, $a22551; LA64-UAL-NEXT:    revb.d $a3, $a32552; LA64-UAL-NEXT:    bne $a2, $a3, .LBB36_92553; LA64-UAL-NEXT:  # %bb.2: # %loadbb22554; LA64-UAL-NEXT:    ld.d $a2, $a0, 162555; LA64-UAL-NEXT:    ld.d $a3, $a1, 162556; LA64-UAL-NEXT:    revb.d $a2, $a22557; LA64-UAL-NEXT:    revb.d $a3, $a32558; LA64-UAL-NEXT:    bne $a2, $a3, .LBB36_92559; LA64-UAL-NEXT:  # %bb.3: # %loadbb32560; LA64-UAL-NEXT:    ld.d $a2, $a0, 242561; LA64-UAL-NEXT:    ld.d $a3, $a1, 242562; LA64-UAL-NEXT:    revb.d $a2, $a22563; LA64-UAL-NEXT:    revb.d $a3, $a32564; LA64-UAL-NEXT:    bne $a2, $a3, .LBB36_92565; LA64-UAL-NEXT:  # %bb.4: # %loadbb42566; LA64-UAL-NEXT:    ld.d $a2, $a0, 322567; LA64-UAL-NEXT:    ld.d $a3, $a1, 322568; LA64-UAL-NEXT:    revb.d $a2, $a22569; LA64-UAL-NEXT:    revb.d $a3, $a32570; LA64-UAL-NEXT:    bne $a2, $a3, .LBB36_92571; LA64-UAL-NEXT:  # %bb.5: # %loadbb52572; LA64-UAL-NEXT:    ld.d $a2, $a0, 402573; LA64-UAL-NEXT:    ld.d $a3, $a1, 402574; LA64-UAL-NEXT:    revb.d $a2, $a22575; LA64-UAL-NEXT:    revb.d $a3, $a32576; LA64-UAL-NEXT:    bne $a2, $a3, .LBB36_92577; LA64-UAL-NEXT:  # %bb.6: # %loadbb62578; LA64-UAL-NEXT:    ld.d $a2, $a0, 482579; LA64-UAL-NEXT:    ld.d $a3, $a1, 482580; LA64-UAL-NEXT:    revb.d $a2, $a22581; LA64-UAL-NEXT:    revb.d $a3, $a32582; LA64-UAL-NEXT:    bne $a2, $a3, .LBB36_92583; LA64-UAL-NEXT:  # %bb.7: # %loadbb72584; LA64-UAL-NEXT:    ld.d $a0, $a0, 552585; LA64-UAL-NEXT:    ld.d $a1, $a1, 552586; LA64-UAL-NEXT:    revb.d $a2, $a02587; LA64-UAL-NEXT:    revb.d $a3, $a12588; LA64-UAL-NEXT:    bne $a2, $a3, .LBB36_92589; LA64-UAL-NEXT:  # %bb.8:2590; LA64-UAL-NEXT:    move $a0, $zero2591; LA64-UAL-NEXT:    ret2592; LA64-UAL-NEXT:  .LBB36_9: # %res_block2593; LA64-UAL-NEXT:    sltu $a0, $a2, $a32594; LA64-UAL-NEXT:    sub.d $a0, $zero, $a02595; LA64-UAL-NEXT:    ori $a0, $a0, 12596; LA64-UAL-NEXT:    ret2597;2598; LA64-NUAL-LABEL: memcmp_size_63:2599; LA64-NUAL:       # %bb.0: # %entry2600; LA64-NUAL-NEXT:    addi.d $sp, $sp, -162601; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill2602; LA64-NUAL-NEXT:    ori $a2, $zero, 632603; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)2604; LA64-NUAL-NEXT:    jirl $ra, $ra, 02605; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload2606; LA64-NUAL-NEXT:    addi.d $sp, $sp, 162607; LA64-NUAL-NEXT:    ret2608entry:2609  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 63)2610  ret i32 %memcmp2611}2612 2613define signext i32 @memcmp_size_64(ptr %s1, ptr %s2) nounwind {2614; LA32-LABEL: memcmp_size_64:2615; LA32:       # %bb.0: # %entry2616; LA32-NEXT:    addi.w $sp, $sp, -162617; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill2618; LA32-NEXT:    ori $a2, $zero, 642619; LA32-NEXT:    bl memcmp2620; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload2621; LA32-NEXT:    addi.w $sp, $sp, 162622; LA32-NEXT:    ret2623;2624; LA64-UAL-LABEL: memcmp_size_64:2625; LA64-UAL:       # %bb.0: # %entry2626; LA64-UAL-NEXT:    ld.d $a2, $a0, 02627; LA64-UAL-NEXT:    ld.d $a3, $a1, 02628; LA64-UAL-NEXT:    revb.d $a2, $a22629; LA64-UAL-NEXT:    revb.d $a3, $a32630; LA64-UAL-NEXT:    bne $a2, $a3, .LBB37_92631; LA64-UAL-NEXT:  # %bb.1: # %loadbb12632; LA64-UAL-NEXT:    ld.d $a2, $a0, 82633; LA64-UAL-NEXT:    ld.d $a3, $a1, 82634; LA64-UAL-NEXT:    revb.d $a2, $a22635; LA64-UAL-NEXT:    revb.d $a3, $a32636; LA64-UAL-NEXT:    bne $a2, $a3, .LBB37_92637; LA64-UAL-NEXT:  # %bb.2: # %loadbb22638; LA64-UAL-NEXT:    ld.d $a2, $a0, 162639; LA64-UAL-NEXT:    ld.d $a3, $a1, 162640; LA64-UAL-NEXT:    revb.d $a2, $a22641; LA64-UAL-NEXT:    revb.d $a3, $a32642; LA64-UAL-NEXT:    bne $a2, $a3, .LBB37_92643; LA64-UAL-NEXT:  # %bb.3: # %loadbb32644; LA64-UAL-NEXT:    ld.d $a2, $a0, 242645; LA64-UAL-NEXT:    ld.d $a3, $a1, 242646; LA64-UAL-NEXT:    revb.d $a2, $a22647; LA64-UAL-NEXT:    revb.d $a3, $a32648; LA64-UAL-NEXT:    bne $a2, $a3, .LBB37_92649; LA64-UAL-NEXT:  # %bb.4: # %loadbb42650; LA64-UAL-NEXT:    ld.d $a2, $a0, 322651; LA64-UAL-NEXT:    ld.d $a3, $a1, 322652; LA64-UAL-NEXT:    revb.d $a2, $a22653; LA64-UAL-NEXT:    revb.d $a3, $a32654; LA64-UAL-NEXT:    bne $a2, $a3, .LBB37_92655; LA64-UAL-NEXT:  # %bb.5: # %loadbb52656; LA64-UAL-NEXT:    ld.d $a2, $a0, 402657; LA64-UAL-NEXT:    ld.d $a3, $a1, 402658; LA64-UAL-NEXT:    revb.d $a2, $a22659; LA64-UAL-NEXT:    revb.d $a3, $a32660; LA64-UAL-NEXT:    bne $a2, $a3, .LBB37_92661; LA64-UAL-NEXT:  # %bb.6: # %loadbb62662; LA64-UAL-NEXT:    ld.d $a2, $a0, 482663; LA64-UAL-NEXT:    ld.d $a3, $a1, 482664; LA64-UAL-NEXT:    revb.d $a2, $a22665; LA64-UAL-NEXT:    revb.d $a3, $a32666; LA64-UAL-NEXT:    bne $a2, $a3, .LBB37_92667; LA64-UAL-NEXT:  # %bb.7: # %loadbb72668; LA64-UAL-NEXT:    ld.d $a0, $a0, 562669; LA64-UAL-NEXT:    ld.d $a1, $a1, 562670; LA64-UAL-NEXT:    revb.d $a2, $a02671; LA64-UAL-NEXT:    revb.d $a3, $a12672; LA64-UAL-NEXT:    bne $a2, $a3, .LBB37_92673; LA64-UAL-NEXT:  # %bb.8:2674; LA64-UAL-NEXT:    move $a0, $zero2675; LA64-UAL-NEXT:    ret2676; LA64-UAL-NEXT:  .LBB37_9: # %res_block2677; LA64-UAL-NEXT:    sltu $a0, $a2, $a32678; LA64-UAL-NEXT:    sub.d $a0, $zero, $a02679; LA64-UAL-NEXT:    ori $a0, $a0, 12680; LA64-UAL-NEXT:    ret2681;2682; LA64-NUAL-LABEL: memcmp_size_64:2683; LA64-NUAL:       # %bb.0: # %entry2684; LA64-NUAL-NEXT:    addi.d $sp, $sp, -162685; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill2686; LA64-NUAL-NEXT:    ori $a2, $zero, 642687; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)2688; LA64-NUAL-NEXT:    jirl $ra, $ra, 02689; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload2690; LA64-NUAL-NEXT:    addi.d $sp, $sp, 162691; LA64-NUAL-NEXT:    ret2692entry:2693  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 64)2694  ret i32 %memcmp2695}2696 2697define signext i32 @memcmp_size_127(ptr %s1, ptr %s2) nounwind {2698; LA32-LABEL: memcmp_size_127:2699; LA32:       # %bb.0: # %entry2700; LA32-NEXT:    addi.w $sp, $sp, -162701; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill2702; LA32-NEXT:    ori $a2, $zero, 1272703; LA32-NEXT:    bl memcmp2704; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload2705; LA32-NEXT:    addi.w $sp, $sp, 162706; LA32-NEXT:    ret2707;2708; LA64-LABEL: memcmp_size_127:2709; LA64:       # %bb.0: # %entry2710; LA64-NEXT:    addi.d $sp, $sp, -162711; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill2712; LA64-NEXT:    ori $a2, $zero, 1272713; LA64-NEXT:    pcaddu18i $ra, %call36(memcmp)2714; LA64-NEXT:    jirl $ra, $ra, 02715; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload2716; LA64-NEXT:    addi.d $sp, $sp, 162717; LA64-NEXT:    ret2718entry:2719  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 127)2720  ret i32 %memcmp2721}2722 2723define signext i32 @memcmp_size_128(ptr %s1, ptr %s2) nounwind {2724; LA32-LABEL: memcmp_size_128:2725; LA32:       # %bb.0: # %entry2726; LA32-NEXT:    addi.w $sp, $sp, -162727; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill2728; LA32-NEXT:    ori $a2, $zero, 1282729; LA32-NEXT:    bl memcmp2730; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload2731; LA32-NEXT:    addi.w $sp, $sp, 162732; LA32-NEXT:    ret2733;2734; LA64-LABEL: memcmp_size_128:2735; LA64:       # %bb.0: # %entry2736; LA64-NEXT:    addi.d $sp, $sp, -162737; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill2738; LA64-NEXT:    ori $a2, $zero, 1282739; LA64-NEXT:    pcaddu18i $ra, %call36(memcmp)2740; LA64-NEXT:    jirl $ra, $ra, 02741; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload2742; LA64-NEXT:    addi.d $sp, $sp, 162743; LA64-NEXT:    ret2744entry:2745  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 128)2746  ret i32 %memcmp2747}2748 2749define signext i32 @memcmp_size_runtime(ptr %s1, ptr %s2, iGRLen %len) nounwind {2750; LA32-LABEL: memcmp_size_runtime:2751; LA32:       # %bb.0: # %entry2752; LA32-NEXT:    addi.w $sp, $sp, -162753; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill2754; LA32-NEXT:    bl memcmp2755; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload2756; LA32-NEXT:    addi.w $sp, $sp, 162757; LA32-NEXT:    ret2758;2759; LA64-LABEL: memcmp_size_runtime:2760; LA64:       # %bb.0: # %entry2761; LA64-NEXT:    addi.d $sp, $sp, -162762; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill2763; LA64-NEXT:    pcaddu18i $ra, %call36(memcmp)2764; LA64-NEXT:    jirl $ra, $ra, 02765; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload2766; LA64-NEXT:    addi.d $sp, $sp, 162767; LA64-NEXT:    ret2768entry:2769  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen %len)2770  ret i32 %memcmp2771}2772 2773define i1 @memcmp_eq_zero(ptr %s1, ptr %s2) nounwind {2774; LA32-UAL-LABEL: memcmp_eq_zero:2775; LA32-UAL:       # %bb.0: # %entry2776; LA32-UAL-NEXT:    ld.w $a2, $a0, 02777; LA32-UAL-NEXT:    ld.w $a3, $a1, 02778; LA32-UAL-NEXT:    ld.w $a4, $a0, 42779; LA32-UAL-NEXT:    ld.w $a5, $a1, 42780; LA32-UAL-NEXT:    ld.w $a6, $a0, 82781; LA32-UAL-NEXT:    ld.w $a7, $a1, 82782; LA32-UAL-NEXT:    ld.w $a0, $a0, 122783; LA32-UAL-NEXT:    ld.w $a1, $a1, 122784; LA32-UAL-NEXT:    xor $a2, $a2, $a32785; LA32-UAL-NEXT:    xor $a3, $a4, $a52786; LA32-UAL-NEXT:    xor $a4, $a6, $a72787; LA32-UAL-NEXT:    xor $a0, $a0, $a12788; LA32-UAL-NEXT:    or $a1, $a2, $a32789; LA32-UAL-NEXT:    or $a0, $a4, $a02790; LA32-UAL-NEXT:    or $a0, $a1, $a02791; LA32-UAL-NEXT:    sltui $a0, $a0, 12792; LA32-UAL-NEXT:    ret2793;2794; LA64-UAL-LABEL: memcmp_eq_zero:2795; LA64-UAL:       # %bb.0: # %entry2796; LA64-UAL-NEXT:    ld.d $a2, $a0, 02797; LA64-UAL-NEXT:    ld.d $a3, $a1, 02798; LA64-UAL-NEXT:    ld.d $a0, $a0, 82799; LA64-UAL-NEXT:    ld.d $a1, $a1, 82800; LA64-UAL-NEXT:    xor $a2, $a2, $a32801; LA64-UAL-NEXT:    xor $a0, $a0, $a12802; LA64-UAL-NEXT:    or $a0, $a2, $a02803; LA64-UAL-NEXT:    sltui $a0, $a0, 12804; LA64-UAL-NEXT:    ret2805;2806; LA32-NUAL-LABEL: memcmp_eq_zero:2807; LA32-NUAL:       # %bb.0: # %entry2808; LA32-NUAL-NEXT:    addi.w $sp, $sp, -162809; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill2810; LA32-NUAL-NEXT:    ori $a2, $zero, 162811; LA32-NUAL-NEXT:    bl memcmp2812; LA32-NUAL-NEXT:    sltui $a0, $a0, 12813; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload2814; LA32-NUAL-NEXT:    addi.w $sp, $sp, 162815; LA32-NUAL-NEXT:    ret2816;2817; LA64-NUAL-LABEL: memcmp_eq_zero:2818; LA64-NUAL:       # %bb.0: # %entry2819; LA64-NUAL-NEXT:    addi.d $sp, $sp, -162820; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill2821; LA64-NUAL-NEXT:    ori $a2, $zero, 162822; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)2823; LA64-NUAL-NEXT:    jirl $ra, $ra, 02824; LA64-NUAL-NEXT:    sltui $a0, $a0, 12825; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload2826; LA64-NUAL-NEXT:    addi.d $sp, $sp, 162827; LA64-NUAL-NEXT:    ret2828entry:2829  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 16)2830  %ret = icmp eq i32 %memcmp, 02831  ret i1 %ret2832}2833 2834define i1 @memcmp_lt_zero(ptr %s1, ptr %s2) nounwind {2835; LA32-UAL-LABEL: memcmp_lt_zero:2836; LA32-UAL:       # %bb.0: # %entry2837; LA32-UAL-NEXT:    ld.w $a0, $a0, 02838; LA32-UAL-NEXT:    ld.w $a1, $a1, 02839; LA32-UAL-NEXT:    srli.w $a2, $a0, 82840; LA32-UAL-NEXT:    lu12i.w $a3, 152841; LA32-UAL-NEXT:    ori $a3, $a3, 38402842; LA32-UAL-NEXT:    and $a2, $a2, $a32843; LA32-UAL-NEXT:    srli.w $a4, $a0, 242844; LA32-UAL-NEXT:    or $a2, $a2, $a42845; LA32-UAL-NEXT:    and $a4, $a0, $a32846; LA32-UAL-NEXT:    slli.w $a4, $a4, 82847; LA32-UAL-NEXT:    slli.w $a0, $a0, 242848; LA32-UAL-NEXT:    or $a0, $a0, $a42849; LA32-UAL-NEXT:    or $a0, $a0, $a22850; LA32-UAL-NEXT:    srli.w $a2, $a1, 82851; LA32-UAL-NEXT:    and $a2, $a2, $a32852; LA32-UAL-NEXT:    srli.w $a4, $a1, 242853; LA32-UAL-NEXT:    or $a2, $a2, $a42854; LA32-UAL-NEXT:    and $a3, $a1, $a32855; LA32-UAL-NEXT:    slli.w $a3, $a3, 82856; LA32-UAL-NEXT:    slli.w $a1, $a1, 242857; LA32-UAL-NEXT:    or $a1, $a1, $a32858; LA32-UAL-NEXT:    or $a1, $a1, $a22859; LA32-UAL-NEXT:    sltu $a0, $a0, $a12860; LA32-UAL-NEXT:    ret2861;2862; LA64-UAL-LABEL: memcmp_lt_zero:2863; LA64-UAL:       # %bb.0: # %entry2864; LA64-UAL-NEXT:    ld.w $a0, $a0, 02865; LA64-UAL-NEXT:    ld.w $a1, $a1, 02866; LA64-UAL-NEXT:    revb.2w $a0, $a02867; LA64-UAL-NEXT:    addi.w $a0, $a0, 02868; LA64-UAL-NEXT:    revb.2w $a1, $a12869; LA64-UAL-NEXT:    addi.w $a1, $a1, 02870; LA64-UAL-NEXT:    sltu $a0, $a0, $a12871; LA64-UAL-NEXT:    ret2872;2873; LA32-NUAL-LABEL: memcmp_lt_zero:2874; LA32-NUAL:       # %bb.0: # %entry2875; LA32-NUAL-NEXT:    addi.w $sp, $sp, -162876; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill2877; LA32-NUAL-NEXT:    ori $a2, $zero, 42878; LA32-NUAL-NEXT:    bl memcmp2879; LA32-NUAL-NEXT:    srli.w $a0, $a0, 312880; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload2881; LA32-NUAL-NEXT:    addi.w $sp, $sp, 162882; LA32-NUAL-NEXT:    ret2883;2884; LA64-NUAL-LABEL: memcmp_lt_zero:2885; LA64-NUAL:       # %bb.0: # %entry2886; LA64-NUAL-NEXT:    addi.d $sp, $sp, -162887; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill2888; LA64-NUAL-NEXT:    ori $a2, $zero, 42889; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)2890; LA64-NUAL-NEXT:    jirl $ra, $ra, 02891; LA64-NUAL-NEXT:    slti $a0, $a0, 02892; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload2893; LA64-NUAL-NEXT:    addi.d $sp, $sp, 162894; LA64-NUAL-NEXT:    ret2895entry:2896  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 4)2897  %ret = icmp slt i32 %memcmp, 02898  ret i1 %ret2899}2900 2901define i1 @memcmp_gt_zero(ptr %s1, ptr %s2) nounwind {2902; LA32-UAL-LABEL: memcmp_gt_zero:2903; LA32-UAL:       # %bb.0: # %entry2904; LA32-UAL-NEXT:    ld.w $a0, $a0, 02905; LA32-UAL-NEXT:    ld.w $a1, $a1, 02906; LA32-UAL-NEXT:    srli.w $a2, $a0, 82907; LA32-UAL-NEXT:    lu12i.w $a3, 152908; LA32-UAL-NEXT:    ori $a3, $a3, 38402909; LA32-UAL-NEXT:    and $a2, $a2, $a32910; LA32-UAL-NEXT:    srli.w $a4, $a0, 242911; LA32-UAL-NEXT:    or $a2, $a2, $a42912; LA32-UAL-NEXT:    and $a4, $a0, $a32913; LA32-UAL-NEXT:    slli.w $a4, $a4, 82914; LA32-UAL-NEXT:    slli.w $a0, $a0, 242915; LA32-UAL-NEXT:    or $a0, $a0, $a42916; LA32-UAL-NEXT:    or $a0, $a0, $a22917; LA32-UAL-NEXT:    srli.w $a2, $a1, 82918; LA32-UAL-NEXT:    and $a2, $a2, $a32919; LA32-UAL-NEXT:    srli.w $a4, $a1, 242920; LA32-UAL-NEXT:    or $a2, $a2, $a42921; LA32-UAL-NEXT:    and $a3, $a1, $a32922; LA32-UAL-NEXT:    slli.w $a3, $a3, 82923; LA32-UAL-NEXT:    slli.w $a1, $a1, 242924; LA32-UAL-NEXT:    or $a1, $a1, $a32925; LA32-UAL-NEXT:    or $a1, $a1, $a22926; LA32-UAL-NEXT:    sltu $a0, $a1, $a02927; LA32-UAL-NEXT:    ret2928;2929; LA64-UAL-LABEL: memcmp_gt_zero:2930; LA64-UAL:       # %bb.0: # %entry2931; LA64-UAL-NEXT:    ld.w $a0, $a0, 02932; LA64-UAL-NEXT:    ld.w $a1, $a1, 02933; LA64-UAL-NEXT:    revb.2w $a0, $a02934; LA64-UAL-NEXT:    addi.w $a0, $a0, 02935; LA64-UAL-NEXT:    revb.2w $a1, $a12936; LA64-UAL-NEXT:    addi.w $a1, $a1, 02937; LA64-UAL-NEXT:    sltu $a0, $a1, $a02938; LA64-UAL-NEXT:    ret2939;2940; LA32-NUAL-LABEL: memcmp_gt_zero:2941; LA32-NUAL:       # %bb.0: # %entry2942; LA32-NUAL-NEXT:    addi.w $sp, $sp, -162943; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill2944; LA32-NUAL-NEXT:    ori $a2, $zero, 42945; LA32-NUAL-NEXT:    bl memcmp2946; LA32-NUAL-NEXT:    slt $a0, $zero, $a02947; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload2948; LA32-NUAL-NEXT:    addi.w $sp, $sp, 162949; LA32-NUAL-NEXT:    ret2950;2951; LA64-NUAL-LABEL: memcmp_gt_zero:2952; LA64-NUAL:       # %bb.0: # %entry2953; LA64-NUAL-NEXT:    addi.d $sp, $sp, -162954; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill2955; LA64-NUAL-NEXT:    ori $a2, $zero, 42956; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)2957; LA64-NUAL-NEXT:    jirl $ra, $ra, 02958; LA64-NUAL-NEXT:    slt $a0, $zero, $a02959; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload2960; LA64-NUAL-NEXT:    addi.d $sp, $sp, 162961; LA64-NUAL-NEXT:    ret2962entry:2963  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 4)2964  %ret = icmp sgt i32 %memcmp, 02965  ret i1 %ret2966}2967 2968define i1 @memcmp_le_zero(ptr %s1, ptr %s2) nounwind {2969; LA32-UAL-LABEL: memcmp_le_zero:2970; LA32-UAL:       # %bb.0: # %entry2971; LA32-UAL-NEXT:    ld.w $a0, $a0, 02972; LA32-UAL-NEXT:    ld.w $a1, $a1, 02973; LA32-UAL-NEXT:    srli.w $a2, $a0, 82974; LA32-UAL-NEXT:    lu12i.w $a3, 152975; LA32-UAL-NEXT:    ori $a3, $a3, 38402976; LA32-UAL-NEXT:    and $a2, $a2, $a32977; LA32-UAL-NEXT:    srli.w $a4, $a0, 242978; LA32-UAL-NEXT:    or $a2, $a2, $a42979; LA32-UAL-NEXT:    and $a4, $a0, $a32980; LA32-UAL-NEXT:    slli.w $a4, $a4, 82981; LA32-UAL-NEXT:    slli.w $a0, $a0, 242982; LA32-UAL-NEXT:    or $a0, $a0, $a42983; LA32-UAL-NEXT:    or $a0, $a0, $a22984; LA32-UAL-NEXT:    srli.w $a2, $a1, 82985; LA32-UAL-NEXT:    and $a2, $a2, $a32986; LA32-UAL-NEXT:    srli.w $a4, $a1, 242987; LA32-UAL-NEXT:    or $a2, $a2, $a42988; LA32-UAL-NEXT:    and $a3, $a1, $a32989; LA32-UAL-NEXT:    slli.w $a3, $a3, 82990; LA32-UAL-NEXT:    slli.w $a1, $a1, 242991; LA32-UAL-NEXT:    or $a1, $a1, $a32992; LA32-UAL-NEXT:    or $a1, $a1, $a22993; LA32-UAL-NEXT:    sltu $a0, $a1, $a02994; LA32-UAL-NEXT:    xori $a0, $a0, 12995; LA32-UAL-NEXT:    ret2996;2997; LA64-UAL-LABEL: memcmp_le_zero:2998; LA64-UAL:       # %bb.0: # %entry2999; LA64-UAL-NEXT:    ld.w $a0, $a0, 03000; LA64-UAL-NEXT:    ld.w $a1, $a1, 03001; LA64-UAL-NEXT:    revb.2w $a0, $a03002; LA64-UAL-NEXT:    addi.w $a0, $a0, 03003; LA64-UAL-NEXT:    revb.2w $a1, $a13004; LA64-UAL-NEXT:    addi.w $a1, $a1, 03005; LA64-UAL-NEXT:    sltu $a0, $a1, $a03006; LA64-UAL-NEXT:    xori $a0, $a0, 13007; LA64-UAL-NEXT:    ret3008;3009; LA32-NUAL-LABEL: memcmp_le_zero:3010; LA32-NUAL:       # %bb.0: # %entry3011; LA32-NUAL-NEXT:    addi.w $sp, $sp, -163012; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill3013; LA32-NUAL-NEXT:    ori $a2, $zero, 43014; LA32-NUAL-NEXT:    bl memcmp3015; LA32-NUAL-NEXT:    slti $a0, $a0, 13016; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload3017; LA32-NUAL-NEXT:    addi.w $sp, $sp, 163018; LA32-NUAL-NEXT:    ret3019;3020; LA64-NUAL-LABEL: memcmp_le_zero:3021; LA64-NUAL:       # %bb.0: # %entry3022; LA64-NUAL-NEXT:    addi.d $sp, $sp, -163023; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill3024; LA64-NUAL-NEXT:    ori $a2, $zero, 43025; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)3026; LA64-NUAL-NEXT:    jirl $ra, $ra, 03027; LA64-NUAL-NEXT:    slti $a0, $a0, 13028; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload3029; LA64-NUAL-NEXT:    addi.d $sp, $sp, 163030; LA64-NUAL-NEXT:    ret3031entry:3032  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 4)3033  %ret = icmp slt i32 %memcmp, 13034  ret i1 %ret3035}3036 3037define i1 @memcmp_ge_zero(ptr %s1, ptr %s2) nounwind {3038; LA32-UAL-LABEL: memcmp_ge_zero:3039; LA32-UAL:       # %bb.0: # %entry3040; LA32-UAL-NEXT:    ld.w $a0, $a0, 03041; LA32-UAL-NEXT:    ld.w $a1, $a1, 03042; LA32-UAL-NEXT:    srli.w $a2, $a0, 83043; LA32-UAL-NEXT:    lu12i.w $a3, 153044; LA32-UAL-NEXT:    ori $a3, $a3, 38403045; LA32-UAL-NEXT:    and $a2, $a2, $a33046; LA32-UAL-NEXT:    srli.w $a4, $a0, 243047; LA32-UAL-NEXT:    or $a2, $a2, $a43048; LA32-UAL-NEXT:    and $a4, $a0, $a33049; LA32-UAL-NEXT:    slli.w $a4, $a4, 83050; LA32-UAL-NEXT:    slli.w $a0, $a0, 243051; LA32-UAL-NEXT:    or $a0, $a0, $a43052; LA32-UAL-NEXT:    or $a0, $a0, $a23053; LA32-UAL-NEXT:    srli.w $a2, $a1, 83054; LA32-UAL-NEXT:    and $a2, $a2, $a33055; LA32-UAL-NEXT:    srli.w $a4, $a1, 243056; LA32-UAL-NEXT:    or $a2, $a2, $a43057; LA32-UAL-NEXT:    and $a3, $a1, $a33058; LA32-UAL-NEXT:    slli.w $a3, $a3, 83059; LA32-UAL-NEXT:    slli.w $a1, $a1, 243060; LA32-UAL-NEXT:    or $a1, $a1, $a33061; LA32-UAL-NEXT:    or $a1, $a1, $a23062; LA32-UAL-NEXT:    sltu $a0, $a0, $a13063; LA32-UAL-NEXT:    xori $a0, $a0, 13064; LA32-UAL-NEXT:    ret3065;3066; LA64-UAL-LABEL: memcmp_ge_zero:3067; LA64-UAL:       # %bb.0: # %entry3068; LA64-UAL-NEXT:    ld.w $a0, $a0, 03069; LA64-UAL-NEXT:    ld.w $a1, $a1, 03070; LA64-UAL-NEXT:    revb.2w $a0, $a03071; LA64-UAL-NEXT:    addi.w $a0, $a0, 03072; LA64-UAL-NEXT:    revb.2w $a1, $a13073; LA64-UAL-NEXT:    addi.w $a1, $a1, 03074; LA64-UAL-NEXT:    sltu $a0, $a0, $a13075; LA64-UAL-NEXT:    xori $a0, $a0, 13076; LA64-UAL-NEXT:    ret3077;3078; LA32-NUAL-LABEL: memcmp_ge_zero:3079; LA32-NUAL:       # %bb.0: # %entry3080; LA32-NUAL-NEXT:    addi.w $sp, $sp, -163081; LA32-NUAL-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill3082; LA32-NUAL-NEXT:    ori $a2, $zero, 43083; LA32-NUAL-NEXT:    bl memcmp3084; LA32-NUAL-NEXT:    addi.w $a1, $zero, -13085; LA32-NUAL-NEXT:    slt $a0, $a1, $a03086; LA32-NUAL-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload3087; LA32-NUAL-NEXT:    addi.w $sp, $sp, 163088; LA32-NUAL-NEXT:    ret3089;3090; LA64-NUAL-LABEL: memcmp_ge_zero:3091; LA64-NUAL:       # %bb.0: # %entry3092; LA64-NUAL-NEXT:    addi.d $sp, $sp, -163093; LA64-NUAL-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill3094; LA64-NUAL-NEXT:    ori $a2, $zero, 43095; LA64-NUAL-NEXT:    pcaddu18i $ra, %call36(memcmp)3096; LA64-NUAL-NEXT:    jirl $ra, $ra, 03097; LA64-NUAL-NEXT:    addi.w $a1, $zero, -13098; LA64-NUAL-NEXT:    slt $a0, $a1, $a03099; LA64-NUAL-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload3100; LA64-NUAL-NEXT:    addi.d $sp, $sp, 163101; LA64-NUAL-NEXT:    ret3102entry:3103  %memcmp = call signext i32 @memcmp(ptr %s1, ptr %s2, iGRLen 4)3104  %ret = icmp sgt i32 %memcmp, -13105  ret i1 %ret3106}3107