brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.2 KiB · f9d2c25 Raw
489 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr8 \3; RUN:   -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=AIX324; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr8 \5; RUN:   -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=AIX646; RUN: llc -verify-machineinstrs -mtriple powerpc64-unknown-linux -mcpu=pwr8 \7; RUN:   -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LINUX64BE8; RUN: llc -verify-machineinstrs -mtriple powerpc64le-unknown-linux -mcpu=pwr8 \9; RUN:   -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LINUX64LE10 11define dso_local i64 @rotatemask32(i64 noundef %word) local_unnamed_addr #0 {12; AIX32-LABEL: rotatemask32:13; AIX32:       # %bb.0: # %entry14; AIX32-NEXT:    cntlzw r5, r315; AIX32-NEXT:    cmplwi r3, 016; AIX32-NEXT:    cntlzw r3, r417; AIX32-NEXT:    addi r3, r3, 3218; AIX32-NEXT:    iseleq r3, r3, r519; AIX32-NEXT:    rlwnm r4, r4, r3, 1, 3120; AIX32-NEXT:    li r3, 021; AIX32-NEXT:    blr22;23; AIX64-LABEL: rotatemask32:24; AIX64:       # %bb.0: # %entry25; AIX64-NEXT:    cntlzd r4, r326; AIX64-NEXT:    rlwnm r3, r3, r4, 1, 3127; AIX64-NEXT:    blr28;29; LINUX64BE-LABEL: rotatemask32:30; LINUX64BE:       # %bb.0: # %entry31; LINUX64BE-NEXT:    cntlzd r4, r332; LINUX64BE-NEXT:    rlwnm r3, r3, r4, 1, 3133; LINUX64BE-NEXT:    blr34;35; LINUX64LE-LABEL: rotatemask32:36; LINUX64LE:       # %bb.0: # %entry37; LINUX64LE-NEXT:    cntlzd r4, r338; LINUX64LE-NEXT:    rlwnm r3, r3, r4, 1, 3139; LINUX64LE-NEXT:    blr40entry:41  %0 = tail call i64 @llvm.ctlz.i64(i64 %word, i1 false)42  %cast = trunc i64 %0 to i3243  %conv1 = trunc i64 %word to i3244  %1 = tail call i32 @llvm.fshl.i32(i32 %conv1, i32 %conv1, i32 %cast)45  %2 = and i32 %1, 214748364746  %and = zext i32 %2 to i6447  ret i64 %and48}49 50declare i64 @llvm.ctlz.i64(i64, i1 immarg) #051declare i32 @llvm.fshl.i32(i32, i32, i32) #052 53define dso_local i64 @rotatemask64(i64 noundef %word) local_unnamed_addr #0 {54; AIX32-LABEL: rotatemask64:55; AIX32:       # %bb.0: # %entry56; AIX32-NEXT:    cmplwi r3, 057; AIX32-NEXT:    cntlzw r6, r458; AIX32-NEXT:    addi r6, r6, 3259; AIX32-NEXT:    cntlzw r5, r360; AIX32-NEXT:    iseleq r5, r6, r561; AIX32-NEXT:    andi. r6, r5, 3262; AIX32-NEXT:    clrlwi r5, r5, 2763; AIX32-NEXT:    iseleq r6, r3, r464; AIX32-NEXT:    iseleq r3, r4, r365; AIX32-NEXT:    subfic r7, r5, 3266; AIX32-NEXT:    slw r4, r3, r567; AIX32-NEXT:    srw r3, r3, r768; AIX32-NEXT:    slw r5, r6, r569; AIX32-NEXT:    srw r8, r6, r770; AIX32-NEXT:    or r3, r5, r371; AIX32-NEXT:    or r4, r4, r872; AIX32-NEXT:    clrlwi r3, r3, 173; AIX32-NEXT:    blr74;75; AIX64-LABEL: rotatemask64:76; AIX64:       # %bb.0: # %entry77; AIX64-NEXT:    cntlzd r4, r378; AIX64-NEXT:    rldcl r3, r3, r4, 179; AIX64-NEXT:    blr80;81; LINUX64BE-LABEL: rotatemask64:82; LINUX64BE:       # %bb.0: # %entry83; LINUX64BE-NEXT:    cntlzd r4, r384; LINUX64BE-NEXT:    rldcl r3, r3, r4, 185; LINUX64BE-NEXT:    blr86;87; LINUX64LE-LABEL: rotatemask64:88; LINUX64LE:       # %bb.0: # %entry89; LINUX64LE-NEXT:    cntlzd r4, r390; LINUX64LE-NEXT:    rldcl r3, r3, r4, 191; LINUX64LE-NEXT:    blr92entry:93  %0 = tail call i64 @llvm.ctlz.i64(i64 %word, i1 false)94  %1 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0)95  %and = and i64 %1, 922337203685477580796  ret i64 %and97}98 99declare i64 @llvm.fshl.i64(i64, i64, i64) #1100 101define dso_local i64 @rotatemask64_2(i64 noundef %word) local_unnamed_addr #0 {102; AIX32-LABEL: rotatemask64_2:103; AIX32:       # %bb.0: # %entry104; AIX32-NEXT:    cmplwi r3, 0105; AIX32-NEXT:    cntlzw r6, r4106; AIX32-NEXT:    addi r6, r6, 32107; AIX32-NEXT:    cntlzw r5, r3108; AIX32-NEXT:    iseleq r5, r6, r5109; AIX32-NEXT:    andi. r6, r5, 32110; AIX32-NEXT:    clrlwi r5, r5, 27111; AIX32-NEXT:    iseleq r6, r3, r4112; AIX32-NEXT:    iseleq r3, r4, r3113; AIX32-NEXT:    subfic r7, r5, 32114; AIX32-NEXT:    slw r4, r3, r5115; AIX32-NEXT:    srw r3, r3, r7116; AIX32-NEXT:    slw r5, r6, r5117; AIX32-NEXT:    srw r8, r6, r7118; AIX32-NEXT:    or r3, r5, r3119; AIX32-NEXT:    or r4, r4, r8120; AIX32-NEXT:    clrlwi r3, r3, 1121; AIX32-NEXT:    blr122;123; AIX64-LABEL: rotatemask64_2:124; AIX64:       # %bb.0: # %entry125; AIX64-NEXT:    cntlzd r4, r3126; AIX64-NEXT:    rldcl r3, r3, r4, 1127; AIX64-NEXT:    blr128;129; LINUX64BE-LABEL: rotatemask64_2:130; LINUX64BE:       # %bb.0: # %entry131; LINUX64BE-NEXT:    cntlzd r4, r3132; LINUX64BE-NEXT:    rldcl r3, r3, r4, 1133; LINUX64BE-NEXT:    blr134;135; LINUX64LE-LABEL: rotatemask64_2:136; LINUX64LE:       # %bb.0: # %entry137; LINUX64LE-NEXT:    cntlzd r4, r3138; LINUX64LE-NEXT:    rldcl r3, r3, r4, 1139; LINUX64LE-NEXT:    blr140entry:141  %0 = tail call i64 @llvm.ctlz.i64(i64 %word, i1 false)142  %1 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0)143  %and = and i64 %1, 9223372036854775807144  ret i64 %and145}146 147define dso_local i64 @rotatemask64_3(i64 noundef %word) local_unnamed_addr #0 {148; AIX32-LABEL: rotatemask64_3:149; AIX32:       # %bb.0: # %entry150; AIX32-NEXT:    cmplwi r3, 0151; AIX32-NEXT:    cntlzw r6, r4152; AIX32-NEXT:    addi r6, r6, 32153; AIX32-NEXT:    cntlzw r5, r3154; AIX32-NEXT:    iseleq r5, r6, r5155; AIX32-NEXT:    andi. r6, r5, 32156; AIX32-NEXT:    clrlwi r5, r5, 27157; AIX32-NEXT:    iseleq r6, r3, r4158; AIX32-NEXT:    iseleq r3, r4, r3159; AIX32-NEXT:    subfic r7, r5, 32160; AIX32-NEXT:    srw r8, r6, r7161; AIX32-NEXT:    slw r4, r3, r5162; AIX32-NEXT:    srw r3, r3, r7163; AIX32-NEXT:    slw r5, r6, r5164; AIX32-NEXT:    or r4, r4, r8165; AIX32-NEXT:    or r3, r5, r3166; AIX32-NEXT:    clrlwi r3, r3, 1167; AIX32-NEXT:    rlwinm r4, r4, 0, 0, 23168; AIX32-NEXT:    blr169;170; AIX64-LABEL: rotatemask64_3:171; AIX64:       # %bb.0: # %entry172; AIX64-NEXT:    cntlzd r4, r3173; AIX64-NEXT:    rotld r3, r3, r4174; AIX64-NEXT:    rldicl r3, r3, 56, 8175; AIX64-NEXT:    rldicl r3, r3, 8, 1176; AIX64-NEXT:    blr177;178; LINUX64BE-LABEL: rotatemask64_3:179; LINUX64BE:       # %bb.0: # %entry180; LINUX64BE-NEXT:    cntlzd r4, r3181; LINUX64BE-NEXT:    rotld r3, r3, r4182; LINUX64BE-NEXT:    rldicl r3, r3, 56, 8183; LINUX64BE-NEXT:    rldicl r3, r3, 8, 1184; LINUX64BE-NEXT:    blr185;186; LINUX64LE-LABEL: rotatemask64_3:187; LINUX64LE:       # %bb.0: # %entry188; LINUX64LE-NEXT:    cntlzd r4, r3189; LINUX64LE-NEXT:    rotld r3, r3, r4190; LINUX64LE-NEXT:    rldicl r3, r3, 56, 8191; LINUX64LE-NEXT:    rldicl r3, r3, 8, 1192; LINUX64LE-NEXT:    blr193entry:194  %0 = tail call i64 @llvm.ctlz.i64(i64 %word, i1 false)195  %1 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0)196  %and = and i64 %1, 9223372036854775552197  ret i64 %and198}199 200define dso_local i64 @rotatemask64_nocount(i64 noundef %word, i64 noundef %clz) local_unnamed_addr #0 {201; AIX32-LABEL: rotatemask64_nocount:202; AIX32:       # %bb.0: # %entry203; AIX32-NEXT:    andi. r5, r6, 32204; AIX32-NEXT:    clrlwi r6, r6, 27205; AIX32-NEXT:    subfic r7, r6, 32206; AIX32-NEXT:    iseleq r5, r3, r4207; AIX32-NEXT:    iseleq r3, r4, r3208; AIX32-NEXT:    srw r8, r5, r7209; AIX32-NEXT:    slw r4, r3, r6210; AIX32-NEXT:    srw r3, r3, r7211; AIX32-NEXT:    slw r5, r5, r6212; AIX32-NEXT:    or r3, r5, r3213; AIX32-NEXT:    or r4, r4, r8214; AIX32-NEXT:    clrlwi r3, r3, 8215; AIX32-NEXT:    blr216;217; AIX64-LABEL: rotatemask64_nocount:218; AIX64:       # %bb.0: # %entry219; AIX64-NEXT:    rldcl r3, r3, r4, 8220; AIX64-NEXT:    blr221;222; LINUX64BE-LABEL: rotatemask64_nocount:223; LINUX64BE:       # %bb.0: # %entry224; LINUX64BE-NEXT:    rldcl r3, r3, r4, 8225; LINUX64BE-NEXT:    blr226;227; LINUX64LE-LABEL: rotatemask64_nocount:228; LINUX64LE:       # %bb.0: # %entry229; LINUX64LE-NEXT:    rldcl r3, r3, r4, 8230; LINUX64LE-NEXT:    blr231entry:232  %0 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %clz)233  %and = and i64 %0, 72057594037927935234  ret i64 %and235}236 237define dso_local i64 @builtincheck(i64 noundef %word, i64 noundef %shift) local_unnamed_addr #0 {238; AIX32-LABEL: builtincheck:239; AIX32:       # %bb.0: # %entry240; AIX32-NEXT:    andi. r5, r6, 32241; AIX32-NEXT:    clrlwi r6, r6, 27242; AIX32-NEXT:    subfic r7, r6, 32243; AIX32-NEXT:    iseleq r5, r3, r4244; AIX32-NEXT:    iseleq r3, r4, r3245; AIX32-NEXT:    srw r8, r5, r7246; AIX32-NEXT:    slw r4, r3, r6247; AIX32-NEXT:    srw r3, r3, r7248; AIX32-NEXT:    slw r5, r5, r6249; AIX32-NEXT:    or r3, r5, r3250; AIX32-NEXT:    or r4, r4, r8251; AIX32-NEXT:    clrlwi r3, r3, 1252; AIX32-NEXT:    blr253;254; AIX64-LABEL: builtincheck:255; AIX64:       # %bb.0: # %entry256; AIX64-NEXT:    rldcl r3, r3, r4, 1257; AIX64-NEXT:    blr258;259; LINUX64BE-LABEL: builtincheck:260; LINUX64BE:       # %bb.0: # %entry261; LINUX64BE-NEXT:    rldcl r3, r3, r4, 1262; LINUX64BE-NEXT:    blr263;264; LINUX64LE-LABEL: builtincheck:265; LINUX64LE:       # %bb.0: # %entry266; LINUX64LE-NEXT:    rldcl r3, r3, r4, 1267; LINUX64LE-NEXT:    blr268entry:269  %0 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %shift)270  %1 = and i64 %0, 9223372036854775807271  ret i64 %1272}273 274define dso_local i64 @immshift(i64 noundef %word) local_unnamed_addr #0 {275; AIX32-LABEL: immshift:276; AIX32:       # %bb.0: # %entry277; AIX32-NEXT:    rotlwi r5, r3, 15278; AIX32-NEXT:    rlwimi r5, r4, 15, 0, 16279; AIX32-NEXT:    srwi r4, r4, 17280; AIX32-NEXT:    rlwimi r4, r3, 15, 12, 16281; AIX32-NEXT:    mr r3, r4282; AIX32-NEXT:    mr r4, r5283; AIX32-NEXT:    blr284;285; AIX64-LABEL: immshift:286; AIX64:       # %bb.0: # %entry287; AIX64-NEXT:    rldicl r3, r3, 15, 12288; AIX64-NEXT:    blr289;290; LINUX64BE-LABEL: immshift:291; LINUX64BE:       # %bb.0: # %entry292; LINUX64BE-NEXT:    rldicl r3, r3, 15, 12293; LINUX64BE-NEXT:    blr294;295; LINUX64LE-LABEL: immshift:296; LINUX64LE:       # %bb.0: # %entry297; LINUX64LE-NEXT:    rldicl r3, r3, 15, 12298; LINUX64LE-NEXT:    blr299entry:300  %0 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 15)301  %and = and i64 %0, 4503599627370495302  ret i64 %and303}304 305define dso_local i64 @twomasks(i64 noundef %word) local_unnamed_addr #0 {306; AIX32-LABEL: twomasks:307; AIX32:       # %bb.0: # %entry308; AIX32-NEXT:    mflr r0309; AIX32-NEXT:    stwu r1, -64(r1)310; AIX32-NEXT:    cmplwi r3, 0311; AIX32-NEXT:    cntlzw r6, r4312; AIX32-NEXT:    stw r0, 72(r1)313; AIX32-NEXT:    addi r6, r6, 32314; AIX32-NEXT:    cntlzw r5, r3315; AIX32-NEXT:    iseleq r5, r6, r5316; AIX32-NEXT:    andi. r6, r5, 32317; AIX32-NEXT:    clrlwi r5, r5, 27318; AIX32-NEXT:    iseleq r6, r3, r4319; AIX32-NEXT:    iseleq r3, r4, r3320; AIX32-NEXT:    subfic r7, r5, 32321; AIX32-NEXT:    srw r8, r6, r7322; AIX32-NEXT:    slw r4, r3, r5323; AIX32-NEXT:    srw r3, r3, r7324; AIX32-NEXT:    slw r5, r6, r5325; AIX32-NEXT:    or r4, r4, r8326; AIX32-NEXT:    or r5, r5, r3327; AIX32-NEXT:    clrlwi r3, r5, 1328; AIX32-NEXT:    clrlwi r5, r5, 16329; AIX32-NEXT:    mr r6, r4330; AIX32-NEXT:    bl .callee[PR]331; AIX32-NEXT:    nop332; AIX32-NEXT:    addi r1, r1, 64333; AIX32-NEXT:    lwz r0, 8(r1)334; AIX32-NEXT:    mtlr r0335; AIX32-NEXT:    blr336;337; AIX64-LABEL: twomasks:338; AIX64:       # %bb.0: # %entry339; AIX64-NEXT:    mflr r0340; AIX64-NEXT:    stdu r1, -112(r1)341; AIX64-NEXT:    cntlzd r4, r3342; AIX64-NEXT:    std r0, 128(r1)343; AIX64-NEXT:    rldcl r5, r3, r4, 1344; AIX64-NEXT:    rldcl r4, r3, r4, 16345; AIX64-NEXT:    mr r3, r5346; AIX64-NEXT:    bl .callee[PR]347; AIX64-NEXT:    nop348; AIX64-NEXT:    addi r1, r1, 112349; AIX64-NEXT:    ld r0, 16(r1)350; AIX64-NEXT:    mtlr r0351; AIX64-NEXT:    blr352;353; LINUX64BE-LABEL: twomasks:354; LINUX64BE:       # %bb.0: # %entry355; LINUX64BE-NEXT:    mflr r0356; LINUX64BE-NEXT:    stdu r1, -112(r1)357; LINUX64BE-NEXT:    cntlzd r4, r3358; LINUX64BE-NEXT:    std r0, 128(r1)359; LINUX64BE-NEXT:    rldcl r5, r3, r4, 1360; LINUX64BE-NEXT:    rldcl r4, r3, r4, 16361; LINUX64BE-NEXT:    mr r3, r5362; LINUX64BE-NEXT:    bl callee363; LINUX64BE-NEXT:    nop364; LINUX64BE-NEXT:    addi r1, r1, 112365; LINUX64BE-NEXT:    ld r0, 16(r1)366; LINUX64BE-NEXT:    mtlr r0367; LINUX64BE-NEXT:    blr368;369; LINUX64LE-LABEL: twomasks:370; LINUX64LE:       # %bb.0: # %entry371; LINUX64LE-NEXT:    mflr r0372; LINUX64LE-NEXT:    stdu r1, -32(r1)373; LINUX64LE-NEXT:    cntlzd r4, r3374; LINUX64LE-NEXT:    std r0, 48(r1)375; LINUX64LE-NEXT:    rldcl r5, r3, r4, 1376; LINUX64LE-NEXT:    rldcl r4, r3, r4, 16377; LINUX64LE-NEXT:    mr r3, r5378; LINUX64LE-NEXT:    bl callee379; LINUX64LE-NEXT:    nop380; LINUX64LE-NEXT:    addi r1, r1, 32381; LINUX64LE-NEXT:    ld r0, 16(r1)382; LINUX64LE-NEXT:    mtlr r0383; LINUX64LE-NEXT:    blr384entry:385  %0 = tail call i64 @llvm.ctlz.i64(i64 %word, i1 false)386  %1 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0)387  %and = and i64 %1, 9223372036854775807388  %and1 = and i64 %1, 281474976710655389  %call = tail call i64 @callee(i64 noundef %and, i64 noundef %and1) #0390  ret i64 %call391}392 393declare i64 @callee(i64 noundef, i64 noundef) local_unnamed_addr #0394 395define dso_local i64 @tworotates(i64 noundef %word) local_unnamed_addr #0 {396; AIX32-LABEL: tworotates:397; AIX32:       # %bb.0: # %entry398; AIX32-NEXT:    mflr r0399; AIX32-NEXT:    stwu r1, -64(r1)400; AIX32-NEXT:    cmplwi r3, 0401; AIX32-NEXT:    cntlzw r6, r4402; AIX32-NEXT:    stw r0, 72(r1)403; AIX32-NEXT:    addi r6, r6, 32404; AIX32-NEXT:    cntlzw r5, r3405; AIX32-NEXT:    iseleq r5, r6, r5406; AIX32-NEXT:    andi. r6, r5, 32407; AIX32-NEXT:    clrlwi r5, r5, 27408; AIX32-NEXT:    iseleq r6, r3, r4409; AIX32-NEXT:    iseleq r9, r4, r3410; AIX32-NEXT:    subfic r7, r5, 32411; AIX32-NEXT:    srw r8, r6, r7412; AIX32-NEXT:    slw r10, r9, r5413; AIX32-NEXT:    srw r7, r9, r7414; AIX32-NEXT:    slw r5, r6, r5415; AIX32-NEXT:    rotlwi r6, r3, 23416; AIX32-NEXT:    or r5, r5, r7417; AIX32-NEXT:    or r8, r10, r8418; AIX32-NEXT:    rlwimi r6, r4, 23, 0, 8419; AIX32-NEXT:    clrlwi r7, r5, 1420; AIX32-NEXT:    srwi r5, r4, 9421; AIX32-NEXT:    mr r4, r8422; AIX32-NEXT:    rlwimi r5, r3, 23, 1, 8423; AIX32-NEXT:    mr r3, r7424; AIX32-NEXT:    bl .callee[PR]425; AIX32-NEXT:    nop426; AIX32-NEXT:    addi r1, r1, 64427; AIX32-NEXT:    lwz r0, 8(r1)428; AIX32-NEXT:    mtlr r0429; AIX32-NEXT:    blr430;431; AIX64-LABEL: tworotates:432; AIX64:       # %bb.0: # %entry433; AIX64-NEXT:    mflr r0434; AIX64-NEXT:    stdu r1, -112(r1)435; AIX64-NEXT:    cntlzd r4, r3436; AIX64-NEXT:    std r0, 128(r1)437; AIX64-NEXT:    rldcl r5, r3, r4, 1438; AIX64-NEXT:    rldicl r4, r3, 23, 1439; AIX64-NEXT:    mr r3, r5440; AIX64-NEXT:    bl .callee[PR]441; AIX64-NEXT:    nop442; AIX64-NEXT:    addi r1, r1, 112443; AIX64-NEXT:    ld r0, 16(r1)444; AIX64-NEXT:    mtlr r0445; AIX64-NEXT:    blr446;447; LINUX64BE-LABEL: tworotates:448; LINUX64BE:       # %bb.0: # %entry449; LINUX64BE-NEXT:    mflr r0450; LINUX64BE-NEXT:    stdu r1, -112(r1)451; LINUX64BE-NEXT:    cntlzd r4, r3452; LINUX64BE-NEXT:    std r0, 128(r1)453; LINUX64BE-NEXT:    rldcl r5, r3, r4, 1454; LINUX64BE-NEXT:    rldicl r4, r3, 23, 1455; LINUX64BE-NEXT:    mr r3, r5456; LINUX64BE-NEXT:    bl callee457; LINUX64BE-NEXT:    nop458; LINUX64BE-NEXT:    addi r1, r1, 112459; LINUX64BE-NEXT:    ld r0, 16(r1)460; LINUX64BE-NEXT:    mtlr r0461; LINUX64BE-NEXT:    blr462;463; LINUX64LE-LABEL: tworotates:464; LINUX64LE:       # %bb.0: # %entry465; LINUX64LE-NEXT:    mflr r0466; LINUX64LE-NEXT:    stdu r1, -32(r1)467; LINUX64LE-NEXT:    cntlzd r4, r3468; LINUX64LE-NEXT:    std r0, 48(r1)469; LINUX64LE-NEXT:    rldcl r5, r3, r4, 1470; LINUX64LE-NEXT:    rldicl r4, r3, 23, 1471; LINUX64LE-NEXT:    mr r3, r5472; LINUX64LE-NEXT:    bl callee473; LINUX64LE-NEXT:    nop474; LINUX64LE-NEXT:    addi r1, r1, 32475; LINUX64LE-NEXT:    ld r0, 16(r1)476; LINUX64LE-NEXT:    mtlr r0477; LINUX64LE-NEXT:    blr478entry:479  %0 = tail call i64 @llvm.ctlz.i64(i64 %word, i1 false)480  %1 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 %0)481  %2 = tail call i64 @llvm.fshl.i64(i64 %word, i64 %word, i64 23)482  %and = and i64 %1, 9223372036854775807483  %and1 = and i64 %2, 9223372036854775807484  %call = tail call i64 @callee(i64 noundef %and, i64 noundef %and1) #0485  ret i64 %call486}487 488attributes #0 = { nounwind }489