brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · 4992ae2 Raw
167 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s3; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s4; RUN: llc -mtriple=powerpc64-ibm-aix-xcoff -mcpu=pwr8 -vec-extabi < %s | FileCheck %s5 6define zeroext i32 @ReverseBits(i32 zeroext %n) {7; CHECK-LABEL: ReverseBits:8; CHECK:       # %bb.0: # %entry9; CHECK-NEXT:    lis 4, -2184610; CHECK-NEXT:    slwi 5, 3, 111; CHECK-NEXT:    srwi 3, 3, 112; CHECK-NEXT:    ori 4, 4, 4369013; CHECK-NEXT:    and 4, 5, 414; CHECK-NEXT:    lis 5, 2184515; CHECK-NEXT:    ori 5, 5, 2184516; CHECK-NEXT:    and 3, 3, 517; CHECK-NEXT:    lis 5, -1310818; CHECK-NEXT:    or 3, 3, 419; CHECK-NEXT:    ori 5, 5, 5242820; CHECK-NEXT:    slwi 4, 3, 221; CHECK-NEXT:    srwi 3, 3, 222; CHECK-NEXT:    and 4, 4, 523; CHECK-NEXT:    lis 5, 1310724; CHECK-NEXT:    ori 5, 5, 1310725; CHECK-NEXT:    and 3, 3, 526; CHECK-NEXT:    lis 5, -385627; CHECK-NEXT:    or 3, 3, 428; CHECK-NEXT:    ori 5, 5, 6168029; CHECK-NEXT:    slwi 4, 3, 430; CHECK-NEXT:    srwi 3, 3, 431; CHECK-NEXT:    and 4, 4, 532; CHECK-NEXT:    lis 5, 385533; CHECK-NEXT:    ori 5, 5, 385534; CHECK-NEXT:    and 3, 3, 535; CHECK-NEXT:    or 3, 3, 436; CHECK-NEXT:    rotlwi 4, 3, 2437; CHECK-NEXT:    rlwimi 4, 3, 8, 8, 1538; CHECK-NEXT:    rlwimi 4, 3, 8, 24, 3139; CHECK-NEXT:    rldicl 3, 4, 0, 3240; CHECK-NEXT:    clrldi 3, 3, 3241; CHECK-NEXT:    blr42entry:43  %shr = lshr i32 %n, 144  %and = and i32 %shr, 143165576545  %and1 = shl i32 %n, 146  %shl = and i32 %and1, -143165576647  %or = or i32 %and, %shl48  %shr2 = lshr i32 %or, 249  %and3 = and i32 %shr2, 85899345950  %and4 = shl i32 %or, 251  %shl5 = and i32 %and4, -85899346052  %or6 = or i32 %and3, %shl553  %shr7 = lshr i32 %or6, 454  %and8 = and i32 %shr7, 25264513555  %and9 = shl i32 %or6, 456  %shl10 = and i32 %and9, -25264513657  %or11 = or i32 %and8, %shl1058  %shr13 = lshr i32 %or11, 2459  %and14 = lshr i32 %or11, 860  %shr15 = and i32 %and14, 6528061  %and17 = shl i32 %or11, 862  %shl18 = and i32 %and17, 1671168063  %shl21 = shl i32 %or11, 2464  %or16 = or i32 %shl21, %shr1365  %or19 = or i32 %or16, %shr1566  %or22 = or i32 %or19, %shl1867  ret i32 %or2268}69 70define i64 @ReverseBits64(i64 %n) {71; CHECK-LABEL: ReverseBits64:72; CHECK:       # %bb.0: # %entry73; CHECK-NEXT:    lis 4, -2184674; CHECK-NEXT:    sldi 5, 3, 175; CHECK-NEXT:    rldicl 3, 3, 63, 176; CHECK-NEXT:    ori 4, 4, 4369077; CHECK-NEXT:    sldi 4, 4, 3278; CHECK-NEXT:    oris 4, 4, 4369079; CHECK-NEXT:    ori 4, 4, 4369080; CHECK-NEXT:    and 4, 5, 481; CHECK-NEXT:    lis 5, 2184582; CHECK-NEXT:    ori 5, 5, 2184583; CHECK-NEXT:    sldi 5, 5, 3284; CHECK-NEXT:    oris 5, 5, 2184585; CHECK-NEXT:    ori 5, 5, 2184586; CHECK-NEXT:    and 3, 3, 587; CHECK-NEXT:    lis 5, -1310888; CHECK-NEXT:    ori 5, 5, 5242889; CHECK-NEXT:    or 3, 3, 490; CHECK-NEXT:    sldi 5, 5, 3291; CHECK-NEXT:    sldi 4, 3, 292; CHECK-NEXT:    rldicl 3, 3, 62, 293; CHECK-NEXT:    oris 5, 5, 5242894; CHECK-NEXT:    ori 5, 5, 5242895; CHECK-NEXT:    and 4, 4, 596; CHECK-NEXT:    lis 5, 1310797; CHECK-NEXT:    ori 5, 5, 1310798; CHECK-NEXT:    sldi 5, 5, 3299; CHECK-NEXT:    oris 5, 5, 13107100; CHECK-NEXT:    ori 5, 5, 13107101; CHECK-NEXT:    and 3, 3, 5102; CHECK-NEXT:    lis 5, -3856103; CHECK-NEXT:    ori 5, 5, 61680104; CHECK-NEXT:    or 3, 3, 4105; CHECK-NEXT:    sldi 5, 5, 32106; CHECK-NEXT:    sldi 4, 3, 4107; CHECK-NEXT:    rldicl 3, 3, 60, 4108; CHECK-NEXT:    oris 5, 5, 61680109; CHECK-NEXT:    ori 5, 5, 61680110; CHECK-NEXT:    and 4, 4, 5111; CHECK-NEXT:    lis 5, 3855112; CHECK-NEXT:    ori 5, 5, 3855113; CHECK-NEXT:    sldi 5, 5, 32114; CHECK-NEXT:    oris 5, 5, 3855115; CHECK-NEXT:    ori 5, 5, 3855116; CHECK-NEXT:    and 3, 3, 5117; CHECK-NEXT:    or 3, 3, 4118; CHECK-NEXT:    rldicl 4, 3, 32, 32119; CHECK-NEXT:    rotlwi 5, 4, 24120; CHECK-NEXT:    rlwimi 5, 4, 8, 8, 15121; CHECK-NEXT:    rlwimi 5, 4, 8, 24, 31122; CHECK-NEXT:    rotlwi 4, 3, 24123; CHECK-NEXT:    rlwimi 4, 3, 8, 8, 15124; CHECK-NEXT:    rlwimi 4, 3, 8, 24, 31125; CHECK-NEXT:    sldi 3, 4, 32126; CHECK-NEXT:    or 3, 3, 5127; CHECK-NEXT:    blr128entry:129  %shr = lshr i64 %n, 1130  %and = and i64 %shr, 6148914691236517205131  %and1 = shl i64 %n, 1132  %shl = and i64 %and1, -6148914691236517206133  %or = or i64 %and, %shl134  %shr2 = lshr i64 %or, 2135  %and3 = and i64 %shr2, 3689348814741910323136  %and4 = shl i64 %or, 2137  %shl5 = and i64 %and4, -3689348814741910324138  %or6 = or i64 %and3, %shl5139  %shr7 = lshr i64 %or6, 4140  %and8 = and i64 %shr7, 1085102592571150095141  %and9 = shl i64 %or6, 4142  %shl10 = and i64 %and9, -1085102592571150096143  %or11 = or i64 %and8, %shl10144  %shr13 = lshr i64 %or11, 56145  %and14 = lshr i64 %or11, 40146  %shr15 = and i64 %and14, 65280147  %and17 = lshr i64 %or11, 24148  %shr18 = and i64 %and17, 16711680149  %and20 = lshr i64 %or11, 8150  %shr21 = and i64 %and20, 4278190080151  %and23 = shl i64 %or11, 8152  %shl24 = and i64 %and23, 1095216660480153  %and26 = shl i64 %or11, 24154  %shl27 = and i64 %and26, 280375465082880155  %and29 = shl i64 %or11, 40156  %shl30 = and i64 %and29, 71776119061217280157  %shl33 = shl i64 %or11, 56158  %or16 = or i64 %shl33, %shr13159  %or19 = or i64 %or16, %shr15160  %or22 = or i64 %or19, %shr18161  %or25 = or i64 %or22, %shr21162  %or28 = or i64 %or25, %shl24163  %or31 = or i64 %or28, %shl27164  %or34 = or i64 %or31, %shl30165  ret i64 %or34166}167