brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.0 KiB · b3d5a52 Raw
193 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc -mcpu=ppc32 < %s | FileCheck %s --check-prefix=PPC323; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s4; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s5declare i32 @llvm.bitreverse.i32(i32)6define i32 @testBitReverseIntrinsicI32(i32 %arg) {7; PPC32-LABEL: testBitReverseIntrinsicI32:8; PPC32:       # %bb.0:9; PPC32-NEXT:    lis 4, -2184610; PPC32-NEXT:    ori 4, 4, 4369011; PPC32-NEXT:    slwi 5, 3, 112; PPC32-NEXT:    and 4, 5, 413; PPC32-NEXT:    lis 5, 2184514; PPC32-NEXT:    ori 5, 5, 2184515; PPC32-NEXT:    srwi 3, 3, 116; PPC32-NEXT:    and 3, 3, 517; PPC32-NEXT:    lis 5, -1310818; PPC32-NEXT:    or 3, 3, 419; PPC32-NEXT:    ori 5, 5, 5242820; PPC32-NEXT:    slwi 4, 3, 221; PPC32-NEXT:    and 4, 4, 522; PPC32-NEXT:    lis 5, 1310723; PPC32-NEXT:    ori 5, 5, 1310724; PPC32-NEXT:    srwi 3, 3, 225; PPC32-NEXT:    and 3, 3, 526; PPC32-NEXT:    lis 5, -385627; PPC32-NEXT:    or 3, 3, 428; PPC32-NEXT:    ori 5, 5, 6168029; PPC32-NEXT:    slwi 4, 3, 430; PPC32-NEXT:    and 4, 4, 531; PPC32-NEXT:    lis 5, 385532; PPC32-NEXT:    ori 5, 5, 385533; PPC32-NEXT:    srwi 3, 3, 434; PPC32-NEXT:    and 3, 3, 535; PPC32-NEXT:    or 4, 3, 436; PPC32-NEXT:    rotlwi 3, 4, 2437; PPC32-NEXT:    rlwimi 3, 4, 8, 8, 1538; PPC32-NEXT:    rlwimi 3, 4, 8, 24, 3139; PPC32-NEXT:    blr40;41; CHECK-LABEL: testBitReverseIntrinsicI32:42; CHECK:       # %bb.0:43; CHECK-NEXT:    lis 4, -2184644; CHECK-NEXT:    slwi 5, 3, 145; CHECK-NEXT:    srwi 3, 3, 146; CHECK-NEXT:    ori 4, 4, 4369047; CHECK-NEXT:    and 4, 5, 448; CHECK-NEXT:    lis 5, 2184549; CHECK-NEXT:    ori 5, 5, 2184550; CHECK-NEXT:    and 3, 3, 551; CHECK-NEXT:    lis 5, -1310852; CHECK-NEXT:    or 3, 3, 453; CHECK-NEXT:    ori 5, 5, 5242854; CHECK-NEXT:    slwi 4, 3, 255; CHECK-NEXT:    srwi 3, 3, 256; CHECK-NEXT:    and 4, 4, 557; CHECK-NEXT:    lis 5, 1310758; CHECK-NEXT:    ori 5, 5, 1310759; CHECK-NEXT:    and 3, 3, 560; CHECK-NEXT:    lis 5, -385661; CHECK-NEXT:    or 3, 3, 462; CHECK-NEXT:    ori 5, 5, 6168063; CHECK-NEXT:    slwi 4, 3, 464; CHECK-NEXT:    srwi 3, 3, 465; CHECK-NEXT:    and 4, 4, 566; CHECK-NEXT:    lis 5, 385567; CHECK-NEXT:    ori 5, 5, 385568; CHECK-NEXT:    and 3, 3, 569; CHECK-NEXT:    or 3, 3, 470; CHECK-NEXT:    rotlwi 4, 3, 2471; CHECK-NEXT:    rlwimi 4, 3, 8, 8, 1572; CHECK-NEXT:    rlwimi 4, 3, 8, 24, 3173; CHECK-NEXT:    rldicl 3, 4, 0, 3274; CHECK-NEXT:    blr75  %res = call i32 @llvm.bitreverse.i32(i32 %arg)76  ret i32 %res77}78 79declare i64 @llvm.bitreverse.i64(i64)80define i64 @testBitReverseIntrinsicI64(i64 %arg) {81; PPC32-LABEL: testBitReverseIntrinsicI64:82; PPC32:       # %bb.0:83; PPC32-NEXT:    lis 5, -2184684; PPC32-NEXT:    lis 6, 2184585; PPC32-NEXT:    ori 5, 5, 4369086; PPC32-NEXT:    slwi 10, 4, 187; PPC32-NEXT:    slwi 11, 3, 188; PPC32-NEXT:    ori 6, 6, 2184589; PPC32-NEXT:    srwi 4, 4, 190; PPC32-NEXT:    srwi 3, 3, 191; PPC32-NEXT:    and 10, 10, 592; PPC32-NEXT:    and 5, 11, 593; PPC32-NEXT:    and 4, 4, 694; PPC32-NEXT:    and 3, 3, 695; PPC32-NEXT:    lis 7, -1310896; PPC32-NEXT:    lis 8, 1310797; PPC32-NEXT:    or 4, 4, 1098; PPC32-NEXT:    or 3, 3, 599; PPC32-NEXT:    ori 7, 7, 52428100; PPC32-NEXT:    ori 8, 8, 13107101; PPC32-NEXT:    slwi 5, 4, 2102; PPC32-NEXT:    srwi 4, 4, 2103; PPC32-NEXT:    slwi 6, 3, 2104; PPC32-NEXT:    srwi 3, 3, 2105; PPC32-NEXT:    and 5, 5, 7106; PPC32-NEXT:    and 4, 4, 8107; PPC32-NEXT:    and 6, 6, 7108; PPC32-NEXT:    and 3, 3, 8109; PPC32-NEXT:    lis 9, -3856110; PPC32-NEXT:    lis 11, 3855111; PPC32-NEXT:    or 4, 4, 5112; PPC32-NEXT:    or 3, 3, 6113; PPC32-NEXT:    ori 9, 9, 61680114; PPC32-NEXT:    ori 11, 11, 3855115; PPC32-NEXT:    slwi 5, 4, 4116; PPC32-NEXT:    srwi 4, 4, 4117; PPC32-NEXT:    slwi 6, 3, 4118; PPC32-NEXT:    srwi 3, 3, 4119; PPC32-NEXT:    and 5, 5, 9120; PPC32-NEXT:    and 4, 4, 11121; PPC32-NEXT:    and 6, 6, 9122; PPC32-NEXT:    and 3, 3, 11123; PPC32-NEXT:    or 5, 4, 5124; PPC32-NEXT:    or 6, 3, 6125; PPC32-NEXT:    rotlwi 3, 5, 24126; PPC32-NEXT:    rotlwi 4, 6, 24127; PPC32-NEXT:    rlwimi 3, 5, 8, 8, 15128; PPC32-NEXT:    rlwimi 4, 6, 8, 8, 15129; PPC32-NEXT:    rlwimi 3, 5, 8, 24, 31130; PPC32-NEXT:    rlwimi 4, 6, 8, 24, 31131; PPC32-NEXT:    blr132;133; CHECK-LABEL: testBitReverseIntrinsicI64:134; CHECK:       # %bb.0:135; CHECK-NEXT:    lis 4, -21846136; CHECK-NEXT:    sldi 5, 3, 1137; CHECK-NEXT:    rldicl 3, 3, 63, 1138; CHECK-NEXT:    ori 4, 4, 43690139; CHECK-NEXT:    sldi 4, 4, 32140; CHECK-NEXT:    oris 4, 4, 43690141; CHECK-NEXT:    ori 4, 4, 43690142; CHECK-NEXT:    and 4, 5, 4143; CHECK-NEXT:    lis 5, 21845144; CHECK-NEXT:    ori 5, 5, 21845145; CHECK-NEXT:    sldi 5, 5, 32146; CHECK-NEXT:    oris 5, 5, 21845147; CHECK-NEXT:    ori 5, 5, 21845148; CHECK-NEXT:    and 3, 3, 5149; CHECK-NEXT:    lis 5, -13108150; CHECK-NEXT:    ori 5, 5, 52428151; CHECK-NEXT:    or 3, 3, 4152; CHECK-NEXT:    sldi 5, 5, 32153; CHECK-NEXT:    sldi 4, 3, 2154; CHECK-NEXT:    rldicl 3, 3, 62, 2155; CHECK-NEXT:    oris 5, 5, 52428156; CHECK-NEXT:    ori 5, 5, 52428157; CHECK-NEXT:    and 4, 4, 5158; CHECK-NEXT:    lis 5, 13107159; CHECK-NEXT:    ori 5, 5, 13107160; CHECK-NEXT:    sldi 5, 5, 32161; CHECK-NEXT:    oris 5, 5, 13107162; CHECK-NEXT:    ori 5, 5, 13107163; CHECK-NEXT:    and 3, 3, 5164; CHECK-NEXT:    lis 5, -3856165; CHECK-NEXT:    ori 5, 5, 61680166; CHECK-NEXT:    or 3, 3, 4167; CHECK-NEXT:    sldi 5, 5, 32168; CHECK-NEXT:    sldi 4, 3, 4169; CHECK-NEXT:    rldicl 3, 3, 60, 4170; CHECK-NEXT:    oris 5, 5, 61680171; CHECK-NEXT:    ori 5, 5, 61680172; CHECK-NEXT:    and 4, 4, 5173; CHECK-NEXT:    lis 5, 3855174; CHECK-NEXT:    ori 5, 5, 3855175; CHECK-NEXT:    sldi 5, 5, 32176; CHECK-NEXT:    oris 5, 5, 3855177; CHECK-NEXT:    ori 5, 5, 3855178; CHECK-NEXT:    and 3, 3, 5179; CHECK-NEXT:    or 3, 3, 4180; CHECK-NEXT:    rldicl 4, 3, 32, 32181; CHECK-NEXT:    rotlwi 5, 4, 24182; CHECK-NEXT:    rlwimi 5, 4, 8, 8, 15183; CHECK-NEXT:    rlwimi 5, 4, 8, 24, 31184; CHECK-NEXT:    rotlwi 4, 3, 24185; CHECK-NEXT:    rlwimi 4, 3, 8, 8, 15186; CHECK-NEXT:    rlwimi 4, 3, 8, 24, 31187; CHECK-NEXT:    sldi 3, 4, 32188; CHECK-NEXT:    or 3, 3, 5189; CHECK-NEXT:    blr190  %res = call i64 @llvm.bitreverse.i64(i64 %arg)191  ret i64 %res192}193