[llvm-branch-commits] [llvm] 6175fcf - [NFC] Update some PPC tests marked as auto-generated

Qiu Chaofan via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Jan 8 02:03:26 PST 2021


Author: Qiu Chaofan
Date: 2021-01-08T17:59:13+08:00
New Revision: 6175fcf01f17e0bd1155aaaba977b9baa88ee61d

URL: https://github.com/llvm/llvm-project/commit/6175fcf01f17e0bd1155aaaba977b9baa88ee61d
DIFF: https://github.com/llvm/llvm-project/commit/6175fcf01f17e0bd1155aaaba977b9baa88ee61d.diff

LOG: [NFC] Update some PPC tests marked as auto-generated

Update CodeGen regression tests with marker at first line telling it's
auto-generated by the script, under PowerPC directory. For some reason,
these tests are generated but manually written, which makes things
unclear when someone's change affecting them.

However, some tests only show simple change after re-generated, like
extra blank lines, disappearing '.localentry', etc. Besides, some tests
are generated but added checks for debug output. This commit doesn't try
updating them.

Added: 
    

Modified: 
    llvm/test/CodeGen/PowerPC/lsr-ctrloop.ll
    llvm/test/CodeGen/PowerPC/maddld.ll
    llvm/test/CodeGen/PowerPC/no-ctr-loop-if-exit-in-nested-loop.ll
    llvm/test/CodeGen/PowerPC/noPermuteFormasking.ll
    llvm/test/CodeGen/PowerPC/ppc-32bit-shift.ll
    llvm/test/CodeGen/PowerPC/pr33547.ll
    llvm/test/CodeGen/PowerPC/pr35688.ll
    llvm/test/CodeGen/PowerPC/scalar-rounding-ops.ll
    llvm/test/CodeGen/PowerPC/tls-pie-xform.ll
    llvm/test/CodeGen/PowerPC/vec_constants.ll
    llvm/test/CodeGen/PowerPC/vec_int_ext.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/PowerPC/lsr-ctrloop.ll b/llvm/test/CodeGen/PowerPC/lsr-ctrloop.ll
index 72e17f820adb..8d96a784f2bf 100644
--- a/llvm/test/CodeGen/PowerPC/lsr-ctrloop.ll
+++ b/llvm/test/CodeGen/PowerPC/lsr-ctrloop.ll
@@ -6,15 +6,23 @@
 ;   for (i = 0; i < 8000; i++)
 ;     data[i] = d;
 ; }
-; 
+;
 ; This loop will be unrolled by 96 and vectorized on power9.
 ; icmp for loop iteration index and loop trip count(384) has LSRUse for 'reg({0,+,384})'.
-; Make sure above icmp does not impact LSR choose best formulae sets based on 'reg({(192 + %0),+,384})' 
+; Make sure above icmp does not impact LSR choose best formulae sets based on 'reg({(192 + %0),+,384})'
 
 define void @foo(float* nocapture %data, float %d) {
 ; CHECK-LABEL: foo:
-; CHECK:  .LBB0_1: # %vector.body
-; CHECK:         stxv 0, -192(4)
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    li 5, 83
+; CHECK-NEXT:    addi 4, 3, 192
+; CHECK-NEXT:    xscvdpspn 0, 1
+; CHECK-NEXT:    mtctr 5
+; CHECK-NEXT:    xxspltw 0, 0, 0
+; CHECK-NEXT:    .p2align 4
+; CHECK-NEXT:  .LBB0_1: # %vector.body
+; CHECK-NEXT:    #
+; CHECK-NEXT:    stxv 0, -192(4)
 ; CHECK-NEXT:    stxv 0, -176(4)
 ; CHECK-NEXT:    stxv 0, -160(4)
 ; CHECK-NEXT:    stxv 0, -144(4)
@@ -40,6 +48,40 @@ define void @foo(float* nocapture %data, float %d) {
 ; CHECK-NEXT:    stxv 0, 176(4)
 ; CHECK-NEXT:    addi 4, 4, 384
 ; CHECK-NEXT:    bdnz .LBB0_1
+; CHECK-NEXT:  # %bb.2: # %for.body
+; CHECK-NEXT:    stfs 1, 31872(3)
+; CHECK-NEXT:    stfs 1, 31876(3)
+; CHECK-NEXT:    stfs 1, 31880(3)
+; CHECK-NEXT:    stfs 1, 31884(3)
+; CHECK-NEXT:    stfs 1, 31888(3)
+; CHECK-NEXT:    stfs 1, 31892(3)
+; CHECK-NEXT:    stfs 1, 31896(3)
+; CHECK-NEXT:    stfs 1, 31900(3)
+; CHECK-NEXT:    stfs 1, 31904(3)
+; CHECK-NEXT:    stfs 1, 31908(3)
+; CHECK-NEXT:    stfs 1, 31912(3)
+; CHECK-NEXT:    stfs 1, 31916(3)
+; CHECK-NEXT:    stfs 1, 31920(3)
+; CHECK-NEXT:    stfs 1, 31924(3)
+; CHECK-NEXT:    stfs 1, 31928(3)
+; CHECK-NEXT:    stfs 1, 31932(3)
+; CHECK-NEXT:    stfs 1, 31936(3)
+; CHECK-NEXT:    stfs 1, 31940(3)
+; CHECK-NEXT:    stfs 1, 31944(3)
+; CHECK-NEXT:    stfs 1, 31948(3)
+; CHECK-NEXT:    stfs 1, 31952(3)
+; CHECK-NEXT:    stfs 1, 31956(3)
+; CHECK-NEXT:    stfs 1, 31960(3)
+; CHECK-NEXT:    stfs 1, 31964(3)
+; CHECK-NEXT:    stfs 1, 31968(3)
+; CHECK-NEXT:    stfs 1, 31972(3)
+; CHECK-NEXT:    stfs 1, 31976(3)
+; CHECK-NEXT:    stfs 1, 31980(3)
+; CHECK-NEXT:    stfs 1, 31984(3)
+; CHECK-NEXT:    stfs 1, 31988(3)
+; CHECK-NEXT:    stfs 1, 31992(3)
+; CHECK-NEXT:    stfs 1, 31996(3)
+; CHECK-NEXT:    blr
 
 entry:
   %broadcast.splatinsert16 = insertelement <4 x float> undef, float %d, i32 0

diff  --git a/llvm/test/CodeGen/PowerPC/maddld.ll b/llvm/test/CodeGen/PowerPC/maddld.ll
index 3b60a8f88b0b..03ee27a76c94 100644
--- a/llvm/test/CodeGen/PowerPC/maddld.ll
+++ b/llvm/test/CodeGen/PowerPC/maddld.ll
@@ -1,14 +1,18 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P9
-; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,CHECK-P8
+; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s --check-prefix=CHECK-P9
+; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s --check-prefix=CHECK-P8
 
 define signext i64 @maddld64(i64 signext %a, i64 signext %b) {
-; CHECK-LABEL: maddld64:
-; CHECK:       # %bb.0: # %entry
+; CHECK-P9-LABEL: maddld64:
+; CHECK-P9:       # %bb.0: # %entry
 ; CHECK-P9-NEXT:    maddld 3, 4, 3, 3
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld64:
+; CHECK-P8:       # %bb.0: # %entry
 ; CHECK-P8-NEXT:    mulld 4, 4, 3
 ; CHECK-P8-NEXT:    add 3, 4, 3
-; CHECK-NEXT:    blr
+; CHECK-P8-NEXT:    blr
 
 entry:
   %mul = mul i64 %b, %a
@@ -17,14 +21,18 @@ entry:
 }
 
 define signext i32 @maddld32(i32 signext %a, i32 signext %b) {
-; CHECK-LABEL: maddld32:
-; CHECK:       # %bb.0: # %entry
+; CHECK-P9-LABEL: maddld32:
+; CHECK-P9:       # %bb.0: # %entry
 ; CHECK-P9-NEXT:    maddld 3, 4, 3, 3
 ; CHECK-P9-NEXT:    extsw 3, 3
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld32:
+; CHECK-P8:       # %bb.0: # %entry
 ; CHECK-P8-NEXT:    mullw 4, 4, 3
 ; CHECK-P8-NEXT:    add 3, 4, 3
 ; CHECK-P8-NEXT:    extsw 3, 3
-; CHECK-NEXT:    blr
+; CHECK-P8-NEXT:    blr
 
 entry:
   %mul = mul i32 %b, %a
@@ -33,14 +41,18 @@ entry:
 }
 
 define signext i16 @maddld16(i16 signext %a, i16 signext %b, i16 signext %c) {
-; CHECK-LABEL: maddld16:
-; CHECK:       # %bb.0: # %entry
+; CHECK-P9-LABEL: maddld16:
+; CHECK-P9:       # %bb.0: # %entry
 ; CHECK-P9-NEXT:    maddld 3, 4, 3, 5
 ; CHECK-P9-NEXT:    extsh 3, 3
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld16:
+; CHECK-P8:       # %bb.0: # %entry
 ; CHECK-P8-NEXT:    mullw 3, 4, 3
 ; CHECK-P8-NEXT:    add 3, 3, 5
 ; CHECK-P8-NEXT:    extsh 3, 3
-; CHECK-NEXT:    blr
+; CHECK-P8-NEXT:    blr
 
 entry:
   %mul = mul i16 %b, %a
@@ -49,13 +61,18 @@ entry:
 }
 
 define zeroext i32 @maddld32zeroext(i32 zeroext %a, i32 zeroext %b) {
-; CHECK-LABEL: maddld32zeroext:
-; CHECK:       # %bb.0: # %entry
+; CHECK-P9-LABEL: maddld32zeroext:
+; CHECK-P9:       # %bb.0: # %entry
 ; CHECK-P9-NEXT:    maddld 3, 4, 3, 3
+; CHECK-P9-NEXT:    clrldi 3, 3, 32
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld32zeroext:
+; CHECK-P8:       # %bb.0: # %entry
 ; CHECK-P8-NEXT:    mullw 4, 4, 3
 ; CHECK-P8-NEXT:    add 3, 4, 3
-; CHECK-NEXT:    clrldi 3, 3, 32
-; CHECK-NEXT:    blr
+; CHECK-P8-NEXT:    clrldi 3, 3, 32
+; CHECK-P8-NEXT:    blr
 
 entry:
   %mul = mul i32 %b, %a
@@ -64,13 +81,18 @@ entry:
 }
 
 define signext i32 @maddld32nsw(i32 signext %a, i32 signext %b) {
-; CHECK-LABEL: maddld32nsw:
-; CHECK:       # %bb.0: # %entry
+; CHECK-P9-LABEL: maddld32nsw:
+; CHECK-P9:       # %bb.0: # %entry
 ; CHECK-P9-NEXT:    maddld 3, 4, 3, 3
+; CHECK-P9-NEXT:    extsw 3, 3
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld32nsw:
+; CHECK-P8:       # %bb.0: # %entry
 ; CHECK-P8-NEXT:    mullw 4, 4, 3
 ; CHECK-P8-NEXT:    add 3, 4, 3
-; CHECK-NEXT:    extsw 3, 3
-; CHECK-NEXT:    blr
+; CHECK-P8-NEXT:    extsw 3, 3
+; CHECK-P8-NEXT:    blr
 
 entry:
   %mul = mul nsw i32 %b, %a
@@ -79,13 +101,18 @@ entry:
 }
 
 define zeroext i32 @maddld32nuw(i32 zeroext %a, i32 zeroext %b) {
-; CHECK-LABEL: maddld32nuw:
-; CHECK:       # %bb.0: # %entry
+; CHECK-P9-LABEL: maddld32nuw:
+; CHECK-P9:       # %bb.0: # %entry
 ; CHECK-P9-NEXT:    maddld 3, 4, 3, 3
+; CHECK-P9-NEXT:    clrldi 3, 3, 32
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld32nuw:
+; CHECK-P8:       # %bb.0: # %entry
 ; CHECK-P8-NEXT:    mullw 4, 4, 3
 ; CHECK-P8-NEXT:    add 3, 4, 3
-; CHECK-NEXT:    clrldi 3, 3, 32
-; CHECK-NEXT:    blr
+; CHECK-P8-NEXT:    clrldi 3, 3, 32
+; CHECK-P8-NEXT:    blr
 
 entry:
   %mul = mul nuw i32 %b, %a
@@ -94,13 +121,17 @@ entry:
 }
 
 define signext i64 @maddld64_imm(i64 signext %a, i64 signext %b) {
-; CHECK-LABEL: maddld64_imm:
-; CHECK:       # %bb.0: # %entry
-; CHECK-NOT:     maddld
-; CHECK-NEXT:    mulli 4, 4, 13
-; CHECK-NEXT:    add 3, 4, 3
-; CHECK-NEXT:    blr
-
+; CHECK-P9-LABEL: maddld64_imm:
+; CHECK-P9:       # %bb.0: # %entry
+; CHECK-P9-NEXT:    mulli 4, 4, 13
+; CHECK-P9-NEXT:    add 3, 4, 3
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld64_imm:
+; CHECK-P8:       # %bb.0: # %entry
+; CHECK-P8-NEXT:    mulli 4, 4, 13
+; CHECK-P8-NEXT:    add 3, 4, 3
+; CHECK-P8-NEXT:    blr
 entry:
   %mul = mul i64 %b, 13
   %add = add i64 %mul, %a
@@ -108,14 +139,19 @@ entry:
 }
 
 define signext i32 @maddld32_imm(i32 signext %a, i32 signext %b) {
-; CHECK-LABEL: maddld32_imm:
-; CHECK:       # %bb.0: # %entry
-; CHECK-NOT:     maddld
-; CHECK-NEXT:    mullw 3, 4, 3
-; CHECK-NEXT:    addi 3, 3, 13
-; CHECK-NEXT:    extsw 3, 3
-; CHECK-NEXT:    blr
-
+; CHECK-P9-LABEL: maddld32_imm:
+; CHECK-P9:       # %bb.0: # %entry
+; CHECK-P9-NEXT:    mullw 3, 4, 3
+; CHECK-P9-NEXT:    addi 3, 3, 13
+; CHECK-P9-NEXT:    extsw 3, 3
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld32_imm:
+; CHECK-P8:       # %bb.0: # %entry
+; CHECK-P8-NEXT:    mullw 3, 4, 3
+; CHECK-P8-NEXT:    addi 3, 3, 13
+; CHECK-P8-NEXT:    extsw 3, 3
+; CHECK-P8-NEXT:    blr
 entry:
   %mul = mul i32 %b, %a
   %add = add i32 %mul, 13
@@ -123,14 +159,19 @@ entry:
 }
 
 define signext i16 @maddld16_imm(i16 signext %a, i16 signext %b, i16 signext %c) {
-; CHECK-LABEL: maddld16_imm:
-; CHECK:       # %bb.0: # %entry
-; CHECK-NOT:     maddld
-; CHECK-NEXT:    mulli 3, 4, 13
-; CHECK-NEXT:    add 3, 3, 5
-; CHECK-NEXT:    extsh 3, 3
-; CHECK-NEXT:    blr
-
+; CHECK-P9-LABEL: maddld16_imm:
+; CHECK-P9:       # %bb.0: # %entry
+; CHECK-P9-NEXT:    mulli 3, 4, 13
+; CHECK-P9-NEXT:    add 3, 3, 5
+; CHECK-P9-NEXT:    extsh 3, 3
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld16_imm:
+; CHECK-P8:       # %bb.0: # %entry
+; CHECK-P8-NEXT:    mulli 3, 4, 13
+; CHECK-P8-NEXT:    add 3, 3, 5
+; CHECK-P8-NEXT:    extsh 3, 3
+; CHECK-P8-NEXT:    blr
 entry:
   %mul = mul i16 %b, 13
   %add = add i16 %mul, %c
@@ -138,14 +179,19 @@ entry:
 }
 
 define zeroext i32 @maddld32zeroext_imm(i32 zeroext %a, i32 zeroext %b) {
-; CHECK-LABEL: maddld32zeroext_imm:
-; CHECK:       # %bb.0: # %entry
-; CHECK-NOT:     maddld
-; CHECK-NEXT:    mullw 3, 4, 3
-; CHECK-NEXT:    addi 3, 3, 13
-; CHECK-NEXT:    clrldi 3, 3, 32
-; CHECK-NEXT:    blr
-
+; CHECK-P9-LABEL: maddld32zeroext_imm:
+; CHECK-P9:       # %bb.0: # %entry
+; CHECK-P9-NEXT:    mullw 3, 4, 3
+; CHECK-P9-NEXT:    addi 3, 3, 13
+; CHECK-P9-NEXT:    clrldi 3, 3, 32
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld32zeroext_imm:
+; CHECK-P8:       # %bb.0: # %entry
+; CHECK-P8-NEXT:    mullw 3, 4, 3
+; CHECK-P8-NEXT:    addi 3, 3, 13
+; CHECK-P8-NEXT:    clrldi 3, 3, 32
+; CHECK-P8-NEXT:    blr
 entry:
   %mul = mul i32 %b, %a
   %add = add i32 %mul, 13
@@ -153,14 +199,19 @@ entry:
 }
 
 define signext i32 @maddld32nsw_imm(i32 signext %a, i32 signext %b) {
-; CHECK-LABEL: maddld32nsw_imm:
-; CHECK:       # %bb.0: # %entry
-; CHECK-NOT:    maddld
-; CHECK-NEXT:   mulli 4, 4, 13
-; CHECK-NEXT:   add 3, 4, 3
-; CHECK-NEXT:   extsw 3, 3
-; CHECK-NEXT:   blr
-
+; CHECK-P9-LABEL: maddld32nsw_imm:
+; CHECK-P9:       # %bb.0: # %entry
+; CHECK-P9-NEXT:    mulli 4, 4, 13
+; CHECK-P9-NEXT:    add 3, 4, 3
+; CHECK-P9-NEXT:    extsw 3, 3
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld32nsw_imm:
+; CHECK-P8:       # %bb.0: # %entry
+; CHECK-P8-NEXT:    mulli 4, 4, 13
+; CHECK-P8-NEXT:    add 3, 4, 3
+; CHECK-P8-NEXT:    extsw 3, 3
+; CHECK-P8-NEXT:    blr
 entry:
   %mul = mul nsw i32 %b, 13
   %add = add nsw i32 %mul, %a
@@ -168,14 +219,19 @@ entry:
 }
 
 define zeroext i32 @maddld32nuw_imm(i32 zeroext %a, i32 zeroext %b) {
-; CHECK-LABEL: maddld32nuw_imm:
-; CHECK:       # %bb.0: # %entry
-; CHECK-NOT:    maddld
-; CHECK-NEXT:   mullw 3, 4, 3
-; CHECK-NEXT:   addi 3, 3, 13
-; CHECK-NEXT:   clrldi 3, 3, 32
-; CHECK-NEXT:   blr
-
+; CHECK-P9-LABEL: maddld32nuw_imm:
+; CHECK-P9:       # %bb.0: # %entry
+; CHECK-P9-NEXT:    mullw 3, 4, 3
+; CHECK-P9-NEXT:    addi 3, 3, 13
+; CHECK-P9-NEXT:    clrldi 3, 3, 32
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld32nuw_imm:
+; CHECK-P8:       # %bb.0: # %entry
+; CHECK-P8-NEXT:    mullw 3, 4, 3
+; CHECK-P8-NEXT:    addi 3, 3, 13
+; CHECK-P8-NEXT:    clrldi 3, 3, 32
+; CHECK-P8-NEXT:    blr
 entry:
   %mul = mul nuw i32 %b, %a
   %add = add nuw i32 %mul, 13
@@ -183,14 +239,19 @@ entry:
 }
 
 define zeroext i32 @maddld32nuw_imm_imm(i32 zeroext %b) {
-; CHECK-LABEL: maddld32nuw_imm_imm:
-; CHECK:       # %bb.0: # %entry
-; CHECK-NOT:    maddld
-; CHECK-NEXT:   mulli 3, 3, 18
-; CHECK-NEXT:   addi 3, 3, 13
-; CHECK-NEXT:   clrldi 3, 3, 32
-; CHECK-NEXT:   blr
-
+; CHECK-P9-LABEL: maddld32nuw_imm_imm:
+; CHECK-P9:       # %bb.0: # %entry
+; CHECK-P9-NEXT:    mulli 3, 3, 18
+; CHECK-P9-NEXT:    addi 3, 3, 13
+; CHECK-P9-NEXT:    clrldi 3, 3, 32
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld32nuw_imm_imm:
+; CHECK-P8:       # %bb.0: # %entry
+; CHECK-P8-NEXT:    mulli 3, 3, 18
+; CHECK-P8-NEXT:    addi 3, 3, 13
+; CHECK-P8-NEXT:    clrldi 3, 3, 32
+; CHECK-P8-NEXT:    blr
 entry:
   %mul = mul nuw i32 %b, 18
   %add = add nuw i32 %mul, 13
@@ -198,16 +259,23 @@ entry:
 }
 
 define zeroext i32 @maddld32nuw_bigimm_imm(i32 zeroext %b) {
-; CHECK-LABEL: maddld32nuw_bigimm_imm:
-; CHECK:       # %bb.0: # %entry
-; CHECK-NOT:    maddld
-; CHECK-NEXT:   lis 4, 26127
-; CHECK-NEXT:   ori 4, 4, 63251
-; CHECK-NEXT:   mullw 3, 3, 4
-; CHECK-NEXT:   addi 3, 3, 13
-; CHECK-NEXT:   clrldi 3, 3, 32
-; CHECK-NEXT:   blr
-
+; CHECK-P9-LABEL: maddld32nuw_bigimm_imm:
+; CHECK-P9:       # %bb.0: # %entry
+; CHECK-P9-NEXT:    lis 4, 26127
+; CHECK-P9-NEXT:    ori 4, 4, 63251
+; CHECK-P9-NEXT:    mullw 3, 3, 4
+; CHECK-P9-NEXT:    addi 3, 3, 13
+; CHECK-P9-NEXT:    clrldi 3, 3, 32
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld32nuw_bigimm_imm:
+; CHECK-P8:       # %bb.0: # %entry
+; CHECK-P8-NEXT:    lis 4, 26127
+; CHECK-P8-NEXT:    ori 4, 4, 63251
+; CHECK-P8-NEXT:    mullw 3, 3, 4
+; CHECK-P8-NEXT:    addi 3, 3, 13
+; CHECK-P8-NEXT:    clrldi 3, 3, 32
+; CHECK-P8-NEXT:    blr
 entry:
   %mul = mul nuw i32 %b, 1712322323
   %add = add nuw i32 %mul, 13
@@ -215,22 +283,27 @@ entry:
 }
 
 define zeroext i32 @maddld32nuw_bigimm_bigimm(i32 zeroext %b) {
-; CHECK-LABEL: maddld32nuw_bigimm_bigimm:
-; CHECK:       # %bb.0: # %entry
-; CHECK-P9-NEXT:   lis 4, -865
-; CHECK-P9-NEXT:   lis 5, 26127
-; CHECK-P9-NEXT:   ori 4, 4, 42779
-; CHECK-P9-NEXT:   ori 5, 5, 63251
-; CHECK-P9-NEXT:   maddld 3, 3, 5, 4
-
-; CHECK-P8-NEXT:   lis 4, 26127
-; CHECK-P8-NEXT:   ori 4, 4, 63251
-; CHECK-P8-NEXT:   mullw 3, 3, 4
-; CHECK-P8-NEXT:   addi 3, 3, -22757
-; CHECK-P8-NEXT:   addis 3, 3, -864
-
-; CHECK-NEXT:   clrldi 3, 3, 32
-; CHECK-NEXT:   blr
+; CHECK-P9-LABEL: maddld32nuw_bigimm_bigimm:
+; CHECK-P9:       # %bb.0: # %entry
+; CHECK-P9-NEXT:    lis 4, -865
+; CHECK-P9-NEXT:    lis 5, 26127
+; CHECK-P9-NEXT:    ori 4, 4, 42779
+; CHECK-P9-NEXT:    ori 5, 5, 63251
+; CHECK-P9-NEXT:    maddld 3, 3, 5, 4
+; CHECK-P9-NEXT:    clrldi 3, 3, 32
+; CHECK-P9-NEXT:    blr
+;
+; CHECK-P8-LABEL: maddld32nuw_bigimm_bigimm:
+; CHECK-P8:       # %bb.0: # %entry
+; CHECK-P8-NEXT:    lis 4, 26127
+; CHECK-P8-NEXT:    ori 4, 4, 63251
+; CHECK-P8-NEXT:    mullw 3, 3, 4
+; CHECK-P8-NEXT:    addi 3, 3, -22757
+; CHECK-P8-NEXT:    addis 3, 3, -864
+; CHECK-P8-NEXT:    clrldi 3, 3, 32
+; CHECK-P8-NEXT:    blr
+
+
 
 entry:
   %mul = mul nuw i32 %b, 1712322323

diff  --git a/llvm/test/CodeGen/PowerPC/no-ctr-loop-if-exit-in-nested-loop.ll b/llvm/test/CodeGen/PowerPC/no-ctr-loop-if-exit-in-nested-loop.ll
index 0e65ebde8d5a..e54dec2fc56b 100644
--- a/llvm/test/CodeGen/PowerPC/no-ctr-loop-if-exit-in-nested-loop.ll
+++ b/llvm/test/CodeGen/PowerPC/no-ctr-loop-if-exit-in-nested-loop.ll
@@ -3,10 +3,52 @@
 ; RUN:   -verify-machineinstrs < %s | FileCheck %s
 define signext i32 @test(i32* noalias %PtrA, i32* noalias %PtrB, i32 signext %LenA, i32 signext %LenB) #0 {
 ; CHECK-LABEL: test:
-; CHECK-NOT: mtctr
-; CHECK-NOT: bdnz
-; CHECK-NOT: bdz
-; CHECK:     blr
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    li 6, 0
+; CHECK-NEXT:    addi 7, 3, 4
+; CHECK-NEXT:    addi 4, 4, -4
+; CHECK-NEXT:    li 8, 0
+; CHECK-NEXT:  .LBB0_1: # %block3
+; CHECK-NEXT:    # =>This Loop Header: Depth=1
+; CHECK-NEXT:    # Child Loop BB0_2 Depth 2
+; CHECK-NEXT:    mr 9, 6
+; CHECK-NEXT:    addi 6, 6, 1
+; CHECK-NEXT:    extsw 8, 8
+; CHECK-NEXT:    cmpw 6, 5
+; CHECK-NEXT:    extsw 9, 9
+; CHECK-NEXT:    crnot 20, 0
+; CHECK-NEXT:    sldi 10, 8, 2
+; CHECK-NEXT:    sldi 9, 9, 2
+; CHECK-NEXT:    addi 8, 8, 1
+; CHECK-NEXT:    add 10, 4, 10
+; CHECK-NEXT:    bc 12, 20, .LBB0_5
+; CHECK-NEXT:    .p2align 5
+; CHECK-NEXT:  .LBB0_2: # %if.end
+; CHECK-NEXT:    # Parent Loop BB0_1 Depth=1
+; CHECK-NEXT:    # => This Inner Loop Header: Depth=2
+; CHECK-NEXT:    lwz 11, 4(10)
+; CHECK-NEXT:    cmplwi 11, 0
+; CHECK-NEXT:    addi 11, 10, 4
+; CHECK-NEXT:    beq 0, .LBB0_4
+; CHECK-NEXT:  # %bb.3: # %if.then4
+; CHECK-NEXT:    #
+; CHECK-NEXT:    lwzx 12, 7, 9
+; CHECK-NEXT:    addi 8, 8, 1
+; CHECK-NEXT:    stw 12, 8(10)
+; CHECK-NEXT:    mr 10, 11
+; CHECK-NEXT:    bc 4, 20, .LBB0_2
+; CHECK-NEXT:    b .LBB0_5
+; CHECK-NEXT:    .p2align 4
+; CHECK-NEXT:  .LBB0_4: # %if.end9
+; CHECK-NEXT:    #
+; CHECK-NEXT:    add 9, 3, 9
+; CHECK-NEXT:    lwz 10, 4(9)
+; CHECK-NEXT:    addi 10, 10, 1
+; CHECK-NEXT:    stw 10, 4(9)
+; CHECK-NEXT:    b .LBB0_1
+; CHECK-NEXT:  .LBB0_5: # %if.then
+; CHECK-NEXT:    lwax 3, 9, 3
+; CHECK-NEXT:    blr
 entry:
   br label %block2
 

diff  --git a/llvm/test/CodeGen/PowerPC/noPermuteFormasking.ll b/llvm/test/CodeGen/PowerPC/noPermuteFormasking.ll
index 1506a35cc508..7a9e58af5913 100644
--- a/llvm/test/CodeGen/PowerPC/noPermuteFormasking.ll
+++ b/llvm/test/CodeGen/PowerPC/noPermuteFormasking.ll
@@ -94,6 +94,13 @@ entry:
 }
 
 define i64 @andis_no_cmp(i64 %a, i64 %b) {
+; CHECK-LABEL: andis_no_cmp:
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    andis. 5, 3, 1
+; CHECK-NEXT:    li 5, 1
+; CHECK-NEXT:    iseleq 4, 4, 5
+; CHECK-NEXT:    mulld 3, 4, 3
+; CHECK-NEXT:    blr
 entry:
   %and = and i64 %a, 65536
   %tobool = icmp eq i64 %and, 0

diff  --git a/llvm/test/CodeGen/PowerPC/ppc-32bit-shift.ll b/llvm/test/CodeGen/PowerPC/ppc-32bit-shift.ll
index 8c6df8c5edfb..4762cb946b43 100644
--- a/llvm/test/CodeGen/PowerPC/ppc-32bit-shift.ll
+++ b/llvm/test/CodeGen/PowerPC/ppc-32bit-shift.ll
@@ -6,23 +6,24 @@
 ; RUN:     -mcpu=pwr9 < %s | FileCheck %s --check-prefix=64BIT
 
 define dso_local void @foo(i32 %inta, i64* %long_intb) {
+; 32BIT-LABEL: foo:
+; 32BIT:       # %bb.0: # %entry
+; 32BIT-NEXT:    srawi 5, 3, 31
+; 32BIT-NEXT:    rotlwi 6, 3, 8
+; 32BIT-NEXT:    slwi 3, 3, 8
+; 32BIT-NEXT:    rlwimi 6, 5, 8, 0, 23
+; 32BIT-NEXT:    stw 3, 4(4)
+; 32BIT-NEXT:    stw 6, 0(4)
+; 32BIT-NEXT:    blr
+;
+; 64BIT-LABEL: foo:
+; 64BIT:       # %bb.0: # %entry
+; 64BIT-NEXT:    extswsli 3, 3, 8
+; 64BIT-NEXT:    std 3, 0(4)
+; 64BIT-NEXT:    blr
   entry:
     %conv = sext i32 %inta to i64
     %shl = shl nsw i64 %conv, 8
     store i64 %shl, i64* %long_intb, align 8
     ret void
 }
-
-; CHECK-LABEL:   foo:
-
-; 32BIT-DAG:     srawi [[REG1:[0-9]+]], [[REG2:[0-9]+]], 31
-; 32BIT-DAG:     rotlwi [[REG3:[0-9]+]], [[REG2]], 8
-; 32BIT-DAG:     slwi [[REG4:[0-9]+]], [[REG2]], 8
-; 32BIT-DAG:     rlwimi [[REG5:[0-9]+]], [[REG1]], 8, 0, 23
-; 32BIT-DAG:     stw [[REG4]], 4([[REG6:[0-9]+]])
-; 32BIT-DAG:     stw [[REG5]], 0([[REG6]])
-; 32BIT:         blr
-
-; 64BIT:         extswsli [[REG1:[0-9]+]], [[REG2:[0-9]+]], 8
-; 64BIT-NEXT:    std [[REG1]], 0([[REG3:[0-9]+]])
-; 64BIT-NEXT:    blr

diff  --git a/llvm/test/CodeGen/PowerPC/pr33547.ll b/llvm/test/CodeGen/PowerPC/pr33547.ll
index 166b5c6327ea..67fbab3e3b4e 100644
--- a/llvm/test/CodeGen/PowerPC/pr33547.ll
+++ b/llvm/test/CodeGen/PowerPC/pr33547.ll
@@ -8,6 +8,24 @@
 
 ; Function Attrs: noinline norecurse nounwind
 define void @main() {
+; CHECK-LABEL: main:
+; CHECK:       # %bb.0: # %L.entry
+; CHECK-NEXT:    mflr 0
+; CHECK-NEXT:    std 0, 16(1)
+; CHECK-NEXT:    stdu 1, -32(1)
+; CHECK-NEXT:    .cfi_def_cfa_offset 32
+; CHECK-NEXT:    .cfi_offset lr, 16
+; CHECK-NEXT:    addis 3, 2, .LC0 at toc@ha
+; CHECK-NEXT:    addis 4, 2, .LC1 at toc@ha
+; CHECK-NEXT:    ld 3, .LC0 at toc@l(3)
+; CHECK-NEXT:    ld 4, .LC1 at toc@l(4)
+; CHECK-NEXT:    addi 3, 3, 124
+; CHECK-NEXT:    bl testFunc
+; CHECK-NEXT:    nop
+; CHECK-NEXT:    addi 1, 1, 32
+; CHECK-NEXT:    ld 0, 16(1)
+; CHECK-NEXT:    mtlr 0
+; CHECK-NEXT:    blr
 L.entry:
   tail call void @testFunc(i64* bitcast (i8* getelementptr inbounds (%struct.STATICS1, %struct.STATICS1* @.STATICS1, i64 0, i32 0, i64 124) to i64*), i64* bitcast (i32* @.C302_MAIN_ to i64*))
   ret void
@@ -27,11 +45,46 @@ L.entry:
 
 ; Function Attrs: noinline norecurse nounwind
 define void @testFunc(i64* nocapture %r, i64* nocapture readonly %k) {
-; CHECK-LABEL: testFunc
-; CHECK: mflr 0
-; CHECK: std 0, 16(1)
-; CHECK: bl .[[BRANCHNEXT:[L0-9\$a-z]+]]
-; CHECK-NEXT: [[BRANCHNEXT]]
+; CHECK-LABEL: testFunc:
+; CHECK:       # %bb.0: # %L.entry
+; CHECK-NEXT:    mflr 0
+; CHECK-NEXT:    std 0, 16(1)
+; CHECK-NEXT:    stdu 1, -32(1)
+; CHECK-NEXT:    .cfi_def_cfa_offset 32
+; CHECK-NEXT:    .cfi_offset lr, 16
+; CHECK-NEXT:    bl .L2$pb
+; CHECK-NEXT:  .L2$pb:
+; CHECK-NEXT:    lwz 4, 0(4)
+; CHECK-NEXT:    mflr 5
+; CHECK-NEXT:    addi 4, 4, -1
+; CHECK-NEXT:    cmplwi 4, 5
+; CHECK-NEXT:    bgt 0, .LBB2_6
+; CHECK-NEXT:  # %bb.1: # %L.entry
+; CHECK-NEXT:    addis 6, 2, .LC2 at toc@ha
+; CHECK-NEXT:    rldic 4, 4, 2, 30
+; CHECK-NEXT:    ld 6, .LC2 at toc@l(6)
+; CHECK-NEXT:    lwax 4, 4, 6
+; CHECK-NEXT:    add 4, 4, 5
+; CHECK-NEXT:    mtctr 4
+; CHECK-NEXT:    li 4, -3
+; CHECK-NEXT:    bctr
+; CHECK-NEXT:    .p2align 4
+; CHECK-NEXT:  .LBB2_2: # %infloop11
+; CHECK-NEXT:    #
+; CHECK-NEXT:    b .LBB2_2
+; CHECK-NEXT:    .p2align 4
+; CHECK-NEXT:  .LBB2_3: # %infloop
+; CHECK-NEXT:    #
+; CHECK-NEXT:    b .LBB2_3
+; CHECK-NEXT:  .LBB2_4: # %L.LB3_321.split
+; CHECK-NEXT:    li 4, 5
+; CHECK-NEXT:  .LBB2_5: # %L.LB3_307.sink.split
+; CHECK-NEXT:    stw 4, 0(3)
+; CHECK-NEXT:  .LBB2_6: # %L.LB3_307
+; CHECK-NEXT:    addi 1, 1, 32
+; CHECK-NEXT:    ld 0, 16(1)
+; CHECK-NEXT:    mtlr 0
+; CHECK-NEXT:    blr
 L.entry:
   %0 = bitcast i64* %k to i32*
   %1 = load i32, i32* %0, align 4

diff  --git a/llvm/test/CodeGen/PowerPC/pr35688.ll b/llvm/test/CodeGen/PowerPC/pr35688.ll
index 3f027abceeeb..2be1add6cdfc 100644
--- a/llvm/test/CodeGen/PowerPC/pr35688.ll
+++ b/llvm/test/CodeGen/PowerPC/pr35688.ll
@@ -6,29 +6,40 @@
 ; Function Attrs: nounwind
 define void @ec_GFp_nistp256_points_mul() {
 ; CHECK-LABEL: ec_GFp_nistp256_points_mul:
-; CHECK:    ld 5, 0(3)
-; CHECK:    li 3, 127
-; CHECK:    li 4, 0
-; CHECK:    subfic 6, 5, 0
-; CHECK:    subfze 6, 4
-; CHECK:    sradi 7, 6, 63
-; CHECK:    srad 6, 6, 3
-; CHECK:    subc 5, 7, 5
-; CHECK:    subfe 5, 4, 6
-; CHECK:    sradi 5, 5, 63
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    ld 5, 0(3)
+; CHECK-NEXT:    li 3, 127
+; CHECK-NEXT:    li 4, 0
+; CHECK-NEXT:    .p2align 5
+; CHECK-NEXT:  .LBB0_1: # %fe_cmovznz.exit.i534.i.15
+; CHECK-NEXT:    #
+; CHECK-NEXT:    subfic 6, 5, 0
+; CHECK-NEXT:    subfze 6, 4
+; CHECK-NEXT:    sradi 7, 6, 63
+; CHECK-NEXT:    srad 6, 6, 3
+; CHECK-NEXT:    subc 5, 7, 5
+; CHECK-NEXT:    subfe 5, 4, 6
+; CHECK-NEXT:    sradi 5, 5, 63
+; CHECK-NEXT:    b .LBB0_1
+;
+; MSSA-LABEL: ec_GFp_nistp256_points_mul:
+; MSSA:       # %bb.0: # %entry
+; MSSA-NEXT:    ld 3, 0(3)
+; MSSA-NEXT:    li 4, 0
+; MSSA-NEXT:    subfic 5, 3, 0
+; MSSA-NEXT:    subfze 5, 4
+; MSSA-NEXT:    sradi 5, 5, 63
+; MSSA-NEXT:    subc 3, 5, 3
+; MSSA-NEXT:    subfe 3, 4, 5
+; MSSA-NEXT:    sradi 3, 3, 63
+; MSSA-NEXT:    std 3, 0(3)
+; MSSA-NEXT:    .p2align 4
+; MSSA-NEXT:  .LBB0_1: # %fe_cmovznz.exit.i534.i.15
+; MSSA-NEXT:    #
+; MSSA-NEXT:    b .LBB0_1
 
 ; With MemorySSA, everything is taken out of the loop by licm.
 ; Loads and stores to undef are treated as non-aliasing.
-; MSSA-LABEL: ec_GFp_nistp256_points_mul
-; MSSA:     ld 3, 0(3)
-; MSSA:     li 4, 0
-; MSSA:     subfic 5, 3, 0
-; MSSA:     subfze 5, 4
-; MSSA:     sradi 5, 5, 63
-; MSSA:     subc 3, 5, 3
-; MSSA:     subfe 3, 4, 5
-; MSSA:     sradi 3, 3, 63
-; MSSA:     std 3, 0(3)
 entry:
   br label %fe_cmovznz.exit.i534.i.15
 

diff  --git a/llvm/test/CodeGen/PowerPC/scalar-rounding-ops.ll b/llvm/test/CodeGen/PowerPC/scalar-rounding-ops.ll
index 3874765d75c5..bbb7e5719d8a 100644
--- a/llvm/test/CodeGen/PowerPC/scalar-rounding-ops.ll
+++ b/llvm/test/CodeGen/PowerPC/scalar-rounding-ops.ll
@@ -342,14 +342,32 @@ declare i64 @llvm.llround.i64.f32(float)
 
 define dso_local double @test_nearbyint(double %d) local_unnamed_addr {
 ; BE-LABEL: test_nearbyint:
-; BE:    # %bb.0: # %entry
-; BE:    bl nearbyint
-; BE:    blr
+; BE:       # %bb.0: # %entry
+; BE-NEXT:    mflr r0
+; BE-NEXT:    std r0, 16(r1)
+; BE-NEXT:    stdu r1, -112(r1)
+; BE-NEXT:    .cfi_def_cfa_offset 112
+; BE-NEXT:    .cfi_offset lr, 16
+; BE-NEXT:    bl nearbyint
+; BE-NEXT:    nop
+; BE-NEXT:    addi r1, r1, 112
+; BE-NEXT:    ld r0, 16(r1)
+; BE-NEXT:    mtlr r0
+; BE-NEXT:    blr
 ;
 ; CHECK-LABEL: test_nearbyint:
-; CHECK:    # %bb.0: # %entry
-; CHECK:    bl nearbyint
-; CHECK:    blr
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    mflr r0
+; CHECK-NEXT:    std r0, 16(r1)
+; CHECK-NEXT:    stdu r1, -32(r1)
+; CHECK-NEXT:    .cfi_def_cfa_offset 32
+; CHECK-NEXT:    .cfi_offset lr, 16
+; CHECK-NEXT:    bl nearbyint
+; CHECK-NEXT:    nop
+; CHECK-NEXT:    addi r1, r1, 32
+; CHECK-NEXT:    ld r0, 16(r1)
+; CHECK-NEXT:    mtlr r0
+; CHECK-NEXT:    blr
 ;
 ; FAST-LABEL: test_nearbyint:
 ; FAST:       # %bb.0: # %entry
@@ -364,14 +382,32 @@ declare double @llvm.nearbyint.f64(double)
 
 define dso_local float @test_nearbyintf(float %f) local_unnamed_addr {
 ; BE-LABEL: test_nearbyintf:
-; BE:    # %bb.0: # %entry
-; BE:    bl nearbyint
-; BE:    blr
+; BE:       # %bb.0: # %entry
+; BE-NEXT:    mflr r0
+; BE-NEXT:    std r0, 16(r1)
+; BE-NEXT:    stdu r1, -112(r1)
+; BE-NEXT:    .cfi_def_cfa_offset 112
+; BE-NEXT:    .cfi_offset lr, 16
+; BE-NEXT:    bl nearbyintf
+; BE-NEXT:    nop
+; BE-NEXT:    addi r1, r1, 112
+; BE-NEXT:    ld r0, 16(r1)
+; BE-NEXT:    mtlr r0
+; BE-NEXT:    blr
 ;
 ; CHECK-LABEL: test_nearbyintf:
-; CHECK:    # %bb.0: # %entry
-; CHECK:    bl nearbyintf
-; CHECK:    blr
+; CHECK:       # %bb.0: # %entry
+; CHECK-NEXT:    mflr r0
+; CHECK-NEXT:    std r0, 16(r1)
+; CHECK-NEXT:    stdu r1, -32(r1)
+; CHECK-NEXT:    .cfi_def_cfa_offset 32
+; CHECK-NEXT:    .cfi_offset lr, 16
+; CHECK-NEXT:    bl nearbyintf
+; CHECK-NEXT:    nop
+; CHECK-NEXT:    addi r1, r1, 32
+; CHECK-NEXT:    ld r0, 16(r1)
+; CHECK-NEXT:    mtlr r0
+; CHECK-NEXT:    blr
 ;
 ; FAST-LABEL: test_nearbyintf:
 ; FAST:       # %bb.0: # %entry

diff  --git a/llvm/test/CodeGen/PowerPC/tls-pie-xform.ll b/llvm/test/CodeGen/PowerPC/tls-pie-xform.ll
index b6a2c80a2a2e..92b0ae380597 100644
--- a/llvm/test/CodeGen/PowerPC/tls-pie-xform.ll
+++ b/llvm/test/CodeGen/PowerPC/tls-pie-xform.ll
@@ -9,9 +9,10 @@
 define dso_local zeroext i8 @test_char_one() {
 ; CHECK-LABEL: test_char_one:
 ; CHECK:       # %bb.0: # %entry
-; CHECK:    addis 3, 2, var_char at got@tprel at ha
+; CHECK-NEXT:    addis 3, 2, var_char at got@tprel at ha
 ; CHECK-NEXT:    ld 3, var_char at got@tprel at l(3)
 ; CHECK-NEXT:    lbzx 3, 3, var_char at tls
+; CHECK-NEXT:    blr
 entry:
   %0 = load i8, i8* @var_char, align 1, !tbaa !4
   ret i8 %0
@@ -20,9 +21,10 @@ entry:
 define dso_local void @test_char_two(i32 signext %a) {
 ; CHECK-LABEL: test_char_two:
 ; CHECK:       # %bb.0: # %entry
-; CHECK:    addis 4, 2, var_char at got@tprel at ha
+; CHECK-NEXT:    addis 4, 2, var_char at got@tprel at ha
 ; CHECK-NEXT:    ld 4, var_char at got@tprel at l(4)
 ; CHECK-NEXT:    stbx 3, 4, var_char at tls
+; CHECK-NEXT:    blr
 entry:
   %conv = trunc i32 %a to i8
   store i8 %conv, i8* @var_char, align 1, !tbaa !4
@@ -32,10 +34,13 @@ entry:
 define dso_local zeroext i8 @test_char_three(i8 zeroext %a) {
 ; CHECK-LABEL: test_char_three:
 ; CHECK:       # %bb.0: # %entry
-; CHECK:    addis 4, 2, var_char at got@tprel at ha
+; CHECK-NEXT:    addis 4, 2, var_char at got@tprel at ha
 ; CHECK-NEXT:    ld 4, var_char at got@tprel at l(4)
 ; CHECK-NEXT:    lbzx 5, 4, var_char at tls
-; CHECK:    stbx {{[0-9]+}}, 4, var_char at tls
+; CHECK-NEXT:    add 5, 5, 3
+; CHECK-NEXT:    clrldi 3, 5, 56
+; CHECK-NEXT:    stbx 5, 4, var_char at tls
+; CHECK-NEXT:    blr
 entry:
   %0 = load i8, i8* @var_char, align 1, !tbaa !4
   %add = add i8 %0, %a
@@ -46,9 +51,10 @@ entry:
 define dso_local signext i16 @test_short_one() {
 ; CHECK-LABEL: test_short_one:
 ; CHECK:       # %bb.0: # %entry
-; CHECK:    addis 3, 2, var_short at got@tprel at ha
+; CHECK-NEXT:    addis 3, 2, var_short at got@tprel at ha
 ; CHECK-NEXT:    ld 3, var_short at got@tprel at l(3)
 ; CHECK-NEXT:    lhzx 3, 3, var_short at tls
+; CHECK-NEXT:    blr
 entry:
   %0 = load i16, i16* @var_short, align 2, !tbaa !7
   ret i16 %0
@@ -57,9 +63,10 @@ entry:
 define dso_local void @test_short_two(i32 signext %a) {
 ; CHECK-LABEL: test_short_two:
 ; CHECK:       # %bb.0: # %entry
-; CHECK:    addis 4, 2, var_short at got@tprel at ha
+; CHECK-NEXT:    addis 4, 2, var_short at got@tprel at ha
 ; CHECK-NEXT:    ld 4, var_short at got@tprel at l(4)
 ; CHECK-NEXT:    sthx 3, 4, var_short at tls
+; CHECK-NEXT:    blr
 entry:
   %conv = trunc i32 %a to i16
   store i16 %conv, i16* @var_short, align 2, !tbaa !7
@@ -69,10 +76,13 @@ entry:
 define dso_local signext i16 @test_short_three(i16 signext %a) {
 ; CHECK-LABEL: test_short_three:
 ; CHECK:       # %bb.0: # %entry
-; CHECK:    addis 4, 2, var_short at got@tprel at ha
+; CHECK-NEXT:    addis 4, 2, var_short at got@tprel at ha
 ; CHECK-NEXT:    ld 4, var_short at got@tprel at l(4)
 ; CHECK-NEXT:    lhzx 5, 4, var_short at tls
-; CHECK:    sthx {{[0-9]+}}, 4, var_short at tls
+; CHECK-NEXT:    add 5, 5, 3
+; CHECK-NEXT:    extsh 3, 5
+; CHECK-NEXT:    sthx 5, 4, var_short at tls
+; CHECK-NEXT:    blr
 entry:
   %0 = load i16, i16* @var_short, align 2, !tbaa !7
   %add = add i16 %0, %a
@@ -83,9 +93,10 @@ entry:
 define dso_local signext i32 @test_int_one() {
 ; CHECK-LABEL: test_int_one:
 ; CHECK:       # %bb.0: # %entry
-; CHECK:    addis 3, 2, var_int at got@tprel at ha
+; CHECK-NEXT:    addis 3, 2, var_int at got@tprel at ha
 ; CHECK-NEXT:    ld 3, var_int at got@tprel at l(3)
 ; CHECK-NEXT:    lwzx 3, 3, var_int at tls
+; CHECK-NEXT:    blr
 entry:
   %0 = load i32, i32* @var_int, align 4, !tbaa !9
   ret i32 %0
@@ -94,9 +105,10 @@ entry:
 define dso_local void @test_int_two(i32 signext %a) {
 ; CHECK-LABEL: test_int_two:
 ; CHECK:       # %bb.0: # %entry
-; CHECK:    addis 4, 2, var_int at got@tprel at ha
+; CHECK-NEXT:    addis 4, 2, var_int at got@tprel at ha
 ; CHECK-NEXT:    ld 4, var_int at got@tprel at l(4)
 ; CHECK-NEXT:    stwx 3, 4, var_int at tls
+; CHECK-NEXT:    blr
 entry:
   store i32 %a, i32* @var_int, align 4, !tbaa !9
   ret void
@@ -105,10 +117,13 @@ entry:
 define dso_local signext i32 @test_int_three(i32 signext %a) {
 ; CHECK-LABEL: test_int_three:
 ; CHECK:       # %bb.0: # %entry
-; CHECK:    addis 4, 2, var_int at got@tprel at ha
+; CHECK-NEXT:    addis 4, 2, var_int at got@tprel at ha
 ; CHECK-NEXT:    ld 4, var_int at got@tprel at l(4)
 ; CHECK-NEXT:    lwzx 5, 4, var_int at tls
-; CHECK:    stwx {{[0-9]+}}, 4, var_int at tls
+; CHECK-NEXT:    add 5, 5, 3
+; CHECK-NEXT:    extsw 3, 5
+; CHECK-NEXT:    stwx 5, 4, var_int at tls
+; CHECK-NEXT:    blr
 entry:
   %0 = load i32, i32* @var_int, align 4, !tbaa !9
   %add = add nsw i32 %0, %a
@@ -119,9 +134,10 @@ entry:
 define dso_local i64 @test_longlong_one() {
 ; CHECK-LABEL: test_longlong_one:
 ; CHECK:       # %bb.0: # %entry
-; CHECK:    addis 3, 2, var_long_long at got@tprel at ha
+; CHECK-NEXT:    addis 3, 2, var_long_long at got@tprel at ha
 ; CHECK-NEXT:    ld 3, var_long_long at got@tprel at l(3)
 ; CHECK-NEXT:    ldx 3, 3, var_long_long at tls
+; CHECK-NEXT:    blr
 entry:
   %0 = load i64, i64* @var_long_long, align 8, !tbaa !11
   ret i64 %0
@@ -130,9 +146,10 @@ entry:
 define dso_local void @test_longlong_two(i32 signext %a) {
 ; CHECK-LABEL: test_longlong_two:
 ; CHECK:       # %bb.0: # %entry
-; CHECK:    addis 4, 2, var_long_long at got@tprel at ha
+; CHECK-NEXT:    addis 4, 2, var_long_long at got@tprel at ha
 ; CHECK-NEXT:    ld 4, var_long_long at got@tprel at l(4)
 ; CHECK-NEXT:    stdx 3, 4, var_long_long at tls
+; CHECK-NEXT:    blr
 entry:
   %conv = sext i32 %a to i64
   store i64 %conv, i64* @var_long_long, align 8, !tbaa !11
@@ -142,10 +159,12 @@ entry:
 define dso_local i64 @test_longlong_three(i64 %a) {
 ; CHECK-LABEL: test_longlong_three:
 ; CHECK:       # %bb.0: # %entry
-; CHECK:    addis 4, 2, var_long_long at got@tprel at ha
+; CHECK-NEXT:    addis 4, 2, var_long_long at got@tprel at ha
 ; CHECK-NEXT:    ld 4, var_long_long at got@tprel at l(4)
 ; CHECK-NEXT:    ldx 5, 4, var_long_long at tls
-; CHECK:    stdx {{[0-9]+}}, 4, var_long_long at tls
+; CHECK-NEXT:    add 3, 5, 3
+; CHECK-NEXT:    stdx 3, 4, var_long_long at tls
+; CHECK-NEXT:    blr
 entry:
   %0 = load i64, i64* @var_long_long, align 8, !tbaa !11
   %add = add nsw i64 %0, %a

diff  --git a/llvm/test/CodeGen/PowerPC/vec_constants.ll b/llvm/test/CodeGen/PowerPC/vec_constants.ll
index 71f448ee66b2..eadd704113a4 100644
--- a/llvm/test/CodeGen/PowerPC/vec_constants.ll
+++ b/llvm/test/CodeGen/PowerPC/vec_constants.ll
@@ -1,8 +1,37 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc -verify-machineinstrs -O0 -mcpu=pwr7 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s
-; RUN: llc -verify-machineinstrs -O0 -mcpu=pwr7 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
+; RUN: llc -verify-machineinstrs -O0 -mcpu=pwr7 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,BE
+; RUN: llc -verify-machineinstrs -O0 -mcpu=pwr7 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,LE
 
 define void @test1(<4 x i32>* %P1, <4 x i32>* %P2, <4 x float>* %P3) nounwind {
+; BE-LABEL: test1:
+; BE:       # %bb.0:
+; BE-NEXT:    lxvw4x 0, 0, 3
+; BE-NEXT:    vspltisb 2, -1
+; BE-NEXT:    vslw 2, 2, 2
+; BE-NEXT:    xxland 0, 0, 34
+; BE-NEXT:    stxvw4x 0, 0, 3
+; BE-NEXT:    lxvw4x 0, 0, 4
+; BE-NEXT:    xxlandc 0, 0, 34
+; BE-NEXT:    stxvw4x 0, 0, 4
+; BE-NEXT:    lxvw4x 0, 0, 5
+; BE-NEXT:    xvabssp 0, 0
+; BE-NEXT:    stxvw4x 0, 0, 5
+; BE-NEXT:    blr
+;
+; LE-LABEL: test1:
+; LE:       # %bb.0:
+; LE-NEXT:    lvx 2, 0, 3
+; LE-NEXT:    vspltisb 3, -1
+; LE-NEXT:    vslw 3, 3, 3
+; LE-NEXT:    xxland 34, 34, 35
+; LE-NEXT:    stvx 2, 0, 3
+; LE-NEXT:    lvx 2, 0, 4
+; LE-NEXT:    xxlandc 34, 34, 35
+; LE-NEXT:    stvx 2, 0, 4
+; LE-NEXT:    lvx 2, 0, 5
+; LE-NEXT:    xvabssp 34, 34
+; LE-NEXT:    stvx 2, 0, 5
+; LE-NEXT:    blr
 	%tmp = load <4 x i32>, <4 x i32>* %P1		; <<4 x i32>> [#uses=1]
 	%tmp4 = and <4 x i32> %tmp, < i32 -2147483648, i32 -2147483648, i32 -2147483648, i32 -2147483648 >		; <<4 x i32>> [#uses=1]
 	store <4 x i32> %tmp4, <4 x i32>* %P1
@@ -16,8 +45,6 @@ define void @test1(<4 x i32>* %P1, <4 x i32>* %P2, <4 x float>* %P3) nounwind {
 	store <4 x float> %tmp13, <4 x float>* %P3
 	ret void
 
-; CHECK-LABEL: test1:
-; CHECK-NOT: CPI
 }
 
 define <4 x i32> @test_30() nounwind {

diff  --git a/llvm/test/CodeGen/PowerPC/vec_int_ext.ll b/llvm/test/CodeGen/PowerPC/vec_int_ext.ll
index 1c86e38d0604..e833b2527245 100644
--- a/llvm/test/CodeGen/PowerPC/vec_int_ext.ll
+++ b/llvm/test/CodeGen/PowerPC/vec_int_ext.ll
@@ -7,9 +7,13 @@ define <4 x i32> @vextsb2wLE(<16 x i8> %a) {
 ; CHECK-LE:       # %bb.0: # %entry
 ; CHECK-LE-NEXT:    vextsb2w 2, 2
 ; CHECK-LE-NEXT:    blr
+;
 ; CHECK-BE-LABEL: vextsb2wLE:
 ; CHECK-BE:       # %bb.0: # %entry
-; CHECK-BE:         vperm 2, 2, 2, 3
+; CHECK-BE-NEXT:    addis 3, 2, .LCPI0_0 at toc@ha
+; CHECK-BE-NEXT:    addi 3, 3, .LCPI0_0 at toc@l
+; CHECK-BE-NEXT:    lxvx 35, 0, 3
+; CHECK-BE-NEXT:    vperm 2, 2, 2, 3
 ; CHECK-BE-NEXT:    vextsb2w 2, 2
 ; CHECK-BE-NEXT:    blr
 
@@ -34,9 +38,13 @@ define <2 x i64> @vextsb2dLE(<16 x i8> %a) {
 ; CHECK-LE:       # %bb.0: # %entry
 ; CHECK-LE-NEXT:    vextsb2d 2, 2
 ; CHECK-LE-NEXT:    blr
+;
 ; CHECK-BE-LABEL: vextsb2dLE:
 ; CHECK-BE:       # %bb.0: # %entry
-; CHECK-BE:         vperm 2, 2, 2, 3
+; CHECK-BE-NEXT:    addis 3, 2, .LCPI1_0 at toc@ha
+; CHECK-BE-NEXT:    addi 3, 3, .LCPI1_0 at toc@l
+; CHECK-BE-NEXT:    lxvx 35, 0, 3
+; CHECK-BE-NEXT:    vperm 2, 2, 2, 3
 ; CHECK-BE-NEXT:    vextsb2d 2, 2
 ; CHECK-BE-NEXT:    blr
 
@@ -55,9 +63,13 @@ define <4 x i32> @vextsh2wLE(<8 x i16> %a) {
 ; CHECK-LE:       # %bb.0: # %entry
 ; CHECK-LE-NEXT:    vextsh2w 2, 2
 ; CHECK-LE-NEXT:    blr
+;
 ; CHECK-BE-LABEL: vextsh2wLE:
 ; CHECK-BE:       # %bb.0: # %entry
-; CHECK-BE:         vperm 2, 2, 2, 3
+; CHECK-BE-NEXT:    addis 3, 2, .LCPI2_0 at toc@ha
+; CHECK-BE-NEXT:    addi 3, 3, .LCPI2_0 at toc@l
+; CHECK-BE-NEXT:    lxvx 35, 0, 3
+; CHECK-BE-NEXT:    vperm 2, 2, 2, 3
 ; CHECK-BE-NEXT:    vextsh2w 2, 2
 ; CHECK-BE-NEXT:    blr
 
@@ -82,9 +94,13 @@ define <2 x i64> @vextsh2dLE(<8 x i16> %a) {
 ; CHECK-LE:       # %bb.0: # %entry
 ; CHECK-LE-NEXT:    vextsh2d 2, 2
 ; CHECK-LE-NEXT:    blr
+;
 ; CHECK-BE-LABEL: vextsh2dLE:
 ; CHECK-BE:       # %bb.0: # %entry
-; CHECK-BE:         vperm 2, 2, 2, 3
+; CHECK-BE-NEXT:    addis 3, 2, .LCPI3_0 at toc@ha
+; CHECK-BE-NEXT:    addi 3, 3, .LCPI3_0 at toc@l
+; CHECK-BE-NEXT:    lxvx 35, 0, 3
+; CHECK-BE-NEXT:    vperm 2, 2, 2, 3
 ; CHECK-BE-NEXT:    vextsh2d 2, 2
 ; CHECK-BE-NEXT:    blr
 
@@ -103,9 +119,10 @@ define <2 x i64> @vextsw2dLE(<4 x i32> %a) {
 ; CHECK-LE:       # %bb.0: # %entry
 ; CHECK-LE-NEXT:    vextsw2d 2, 2
 ; CHECK-LE-NEXT:    blr
+;
 ; CHECK-BE-LABEL: vextsw2dLE:
 ; CHECK-BE:       # %bb.0: # %entry
-; CHECK-BE:         vmrgew
+; CHECK-BE-NEXT:    vmrgew 2, 2, 2
 ; CHECK-BE-NEXT:    vextsw2d 2, 2
 ; CHECK-BE-NEXT:    blr
 
@@ -120,15 +137,16 @@ entry:
 }
 
 define <4 x i32> @vextsb2wBE(<16 x i8> %a) {
-; CHECK-BE-LABEL: vextsb2wBE:
-; CHECK-BE:       # %bb.0: # %entry
-; CHECK-BE-NEXT:    vextsb2w 2, 2
-; CHECK-BE-NEXT:    blr
 ; CHECK-LE-LABEL: vextsb2wBE:
 ; CHECK-LE:       # %bb.0: # %entry
 ; CHECK-LE-NEXT:    vsldoi 2, 2, 2, 13
 ; CHECK-LE-NEXT:    vextsb2w 2, 2
 ; CHECK-LE-NEXT:    blr
+;
+; CHECK-BE-LABEL: vextsb2wBE:
+; CHECK-BE:       # %bb.0: # %entry
+; CHECK-BE-NEXT:    vextsb2w 2, 2
+; CHECK-BE-NEXT:    blr
 entry:
   %vecext = extractelement <16 x i8> %a, i32 3
   %conv = sext i8 %vecext to i32
@@ -146,15 +164,16 @@ entry:
 }
 
 define <2 x i64> @vextsb2dBE(<16 x i8> %a) {
-; CHECK-BE-LABEL: vextsb2dBE:
-; CHECK-BE:       # %bb.0: # %entry
-; CHECK-BE-NEXT:    vextsb2d 2, 2
-; CHECK-BE-NEXT:    blr
 ; CHECK-LE-LABEL: vextsb2dBE:
 ; CHECK-LE:       # %bb.0: # %entry
 ; CHECK-LE-NEXT:    vsldoi 2, 2, 2, 9
 ; CHECK-LE-NEXT:    vextsb2d 2, 2
 ; CHECK-LE-NEXT:    blr
+;
+; CHECK-BE-LABEL: vextsb2dBE:
+; CHECK-BE:       # %bb.0: # %entry
+; CHECK-BE-NEXT:    vextsb2d 2, 2
+; CHECK-BE-NEXT:    blr
 entry:
   %vecext = extractelement <16 x i8> %a, i32 7
   %conv = sext i8 %vecext to i64
@@ -166,15 +185,16 @@ entry:
 }
 
 define <4 x i32> @vextsh2wBE(<8 x i16> %a) {
-; CHECK-BE-LABEL: vextsh2wBE:
-; CHECK-BE:       # %bb.0: # %entry
-; CHECK-BE-NEXT:    vextsh2w 2, 2
-; CHECK-BE-NEXT:    blr
 ; CHECK-LE-LABEL: vextsh2wBE:
 ; CHECK-LE:       # %bb.0: # %entry
 ; CHECK-LE-NEXT:    vsldoi 2, 2, 2, 14
 ; CHECK-LE-NEXT:    vextsh2w 2, 2
 ; CHECK-LE-NEXT:    blr
+;
+; CHECK-BE-LABEL: vextsh2wBE:
+; CHECK-BE:       # %bb.0: # %entry
+; CHECK-BE-NEXT:    vextsh2w 2, 2
+; CHECK-BE-NEXT:    blr
 entry:
   %vecext = extractelement <8 x i16> %a, i32 1
   %conv = sext i16 %vecext to i32
@@ -192,15 +212,16 @@ entry:
 }
 
 define <2 x i64> @vextsh2dBE(<8 x i16> %a) {
-; CHECK-BE-LABEL: vextsh2dBE:
-; CHECK-BE:       # %bb.0: # %entry
-; CHECK-BE-NEXT:    vextsh2d 2, 2
-; CHECK-BE-NEXT:    blr
 ; CHECK-LE-LABEL: vextsh2dBE:
 ; CHECK-LE:       # %bb.0: # %entry
 ; CHECK-LE-NEXT:    vsldoi 2, 2, 2, 10
 ; CHECK-LE-NEXT:    vextsh2d 2, 2
 ; CHECK-LE-NEXT:    blr
+;
+; CHECK-BE-LABEL: vextsh2dBE:
+; CHECK-BE:       # %bb.0: # %entry
+; CHECK-BE-NEXT:    vextsh2d 2, 2
+; CHECK-BE-NEXT:    blr
 entry:
   %vecext = extractelement <8 x i16> %a, i32 3
   %conv = sext i16 %vecext to i64
@@ -212,15 +233,16 @@ entry:
 }
 
 define <2 x i64> @vextsw2dBE(<4 x i32> %a) {
-; CHECK-BE-LABEL: vextsw2dBE:
-; CHECK-BE:       # %bb.0: # %entry
-; CHECK-BE-NEXT:    vextsw2d 2, 2
-; CHECK-BE-NEXT:    blr
 ; CHECK-LE-LABEL: vextsw2dBE:
 ; CHECK-LE:       # %bb.0: # %entry
 ; CHECK-LE-NEXT:    vsldoi 2, 2, 2, 12
 ; CHECK-LE-NEXT:    vextsw2d 2, 2
 ; CHECK-LE-NEXT:    blr
+;
+; CHECK-BE-LABEL: vextsw2dBE:
+; CHECK-BE:       # %bb.0: # %entry
+; CHECK-BE-NEXT:    vextsw2d 2, 2
+; CHECK-BE-NEXT:    blr
 entry:
   %vecext = extractelement <4 x i32> %a, i32 1
   %conv = sext i32 %vecext to i64
@@ -234,11 +256,25 @@ entry:
 define <2 x i64> @vextDiffVectors(<4 x i32> %a, <4 x i32> %b) {
 ; CHECK-LE-LABEL: vextDiffVectors:
 ; CHECK-LE:       # %bb.0: # %entry
-; CHECK-LE-NOT:     vextsw2d
-
+; CHECK-LE-NEXT:    li 3, 0
+; CHECK-LE-NEXT:    mfvsrwz 4, 35
+; CHECK-LE-NEXT:    vextuwrx 3, 3, 2
+; CHECK-LE-NEXT:    extsw 4, 4
+; CHECK-LE-NEXT:    extsw 3, 3
+; CHECK-LE-NEXT:    mtvsrdd 34, 4, 3
+; CHECK-LE-NEXT:    blr
+;
 ; CHECK-BE-LABEL: vextDiffVectors:
 ; CHECK-BE:       # %bb.0: # %entry
-; CHECK-BE-NOT:     vextsw2d
+; CHECK-BE-NEXT:    li 3, 0
+; CHECK-BE-NEXT:    li 4, 8
+; CHECK-BE-NEXT:    vextuwlx 3, 3, 2
+; CHECK-BE-NEXT:    vextuwlx 4, 4, 3
+; CHECK-BE-NEXT:    extsw 3, 3
+; CHECK-BE-NEXT:    extsw 4, 4
+; CHECK-BE-NEXT:    mtvsrdd 34, 3, 4
+; CHECK-BE-NEXT:    blr
+
 entry:
   %vecext = extractelement <4 x i32> %a, i32 0
   %conv = sext i32 %vecext to i64
@@ -250,14 +286,101 @@ entry:
 }
 
 define <8 x i16> @testInvalidExtend(<16 x i8> %a) {
-entry:
 ; CHECK-LE-LABEL: testInvalidExtend:
 ; CHECK-LE:       # %bb.0: # %entry
-; CHECK-LE-NOT:     vexts
-
+; CHECK-LE-NEXT:    li 3, 0
+; CHECK-LE-NEXT:    li 4, 2
+; CHECK-LE-NEXT:    li 5, 4
+; CHECK-LE-NEXT:    li 6, 6
+; CHECK-LE-NEXT:    vextubrx 3, 3, 2
+; CHECK-LE-NEXT:    vextubrx 4, 4, 2
+; CHECK-LE-NEXT:    vextubrx 5, 5, 2
+; CHECK-LE-NEXT:    vextubrx 6, 6, 2
+; CHECK-LE-NEXT:    li 7, 8
+; CHECK-LE-NEXT:    li 8, 10
+; CHECK-LE-NEXT:    li 9, 12
+; CHECK-LE-NEXT:    li 10, 14
+; CHECK-LE-NEXT:    extsb 3, 3
+; CHECK-LE-NEXT:    extsb 4, 4
+; CHECK-LE-NEXT:    extsb 5, 5
+; CHECK-LE-NEXT:    extsb 6, 6
+; CHECK-LE-NEXT:    vextubrx 7, 7, 2
+; CHECK-LE-NEXT:    vextubrx 8, 8, 2
+; CHECK-LE-NEXT:    extsb 7, 7
+; CHECK-LE-NEXT:    extsb 8, 8
+; CHECK-LE-NEXT:    mtvsrd 35, 4
+; CHECK-LE-NEXT:    vextubrx 9, 9, 2
+; CHECK-LE-NEXT:    vextubrx 10, 10, 2
+; CHECK-LE-NEXT:    mtvsrd 34, 3
+; CHECK-LE-NEXT:    mtvsrd 36, 6
+; CHECK-LE-NEXT:    extsb 9, 9
+; CHECK-LE-NEXT:    extsb 10, 10
+; CHECK-LE-NEXT:    mtvsrd 37, 10
+; CHECK-LE-NEXT:    vmrghh 2, 3, 2
+; CHECK-LE-NEXT:    mtvsrd 35, 5
+; CHECK-LE-NEXT:    vmrghh 3, 4, 3
+; CHECK-LE-NEXT:    mtvsrd 36, 8
+; CHECK-LE-NEXT:    vmrglw 2, 3, 2
+; CHECK-LE-NEXT:    mtvsrd 35, 7
+; CHECK-LE-NEXT:    vmrghh 3, 4, 3
+; CHECK-LE-NEXT:    mtvsrd 36, 9
+; CHECK-LE-NEXT:    vmrghh 4, 5, 4
+; CHECK-LE-NEXT:    vmrglw 3, 4, 3
+; CHECK-LE-NEXT:    xxmrgld 34, 35, 34
+; CHECK-LE-NEXT:    blr
+;
 ; CHECK-BE-LABEL: testInvalidExtend:
 ; CHECK-BE:       # %bb.0: # %entry
-; CHECK-BE-NOT:     vexts
+; CHECK-BE-NEXT:    li 9, 12
+; CHECK-BE-NEXT:    li 10, 14
+; CHECK-BE-NEXT:    li 7, 8
+; CHECK-BE-NEXT:    li 8, 10
+; CHECK-BE-NEXT:    vextublx 9, 9, 2
+; CHECK-BE-NEXT:    vextublx 10, 10, 2
+; CHECK-BE-NEXT:    vextublx 7, 7, 2
+; CHECK-BE-NEXT:    vextublx 8, 8, 2
+; CHECK-BE-NEXT:    li 3, 0
+; CHECK-BE-NEXT:    li 4, 2
+; CHECK-BE-NEXT:    li 5, 4
+; CHECK-BE-NEXT:    li 6, 6
+; CHECK-BE-NEXT:    extsb 9, 9
+; CHECK-BE-NEXT:    extsb 10, 10
+; CHECK-BE-NEXT:    extsb 7, 7
+; CHECK-BE-NEXT:    extsb 8, 8
+; CHECK-BE-NEXT:    vextublx 3, 3, 2
+; CHECK-BE-NEXT:    vextublx 4, 4, 2
+; CHECK-BE-NEXT:    extsb 3, 3
+; CHECK-BE-NEXT:    extsb 4, 4
+; CHECK-BE-NEXT:    sldi 10, 10, 48
+; CHECK-BE-NEXT:    sldi 9, 9, 48
+; CHECK-BE-NEXT:    vextublx 5, 5, 2
+; CHECK-BE-NEXT:    vextublx 6, 6, 2
+; CHECK-BE-NEXT:    sldi 8, 8, 48
+; CHECK-BE-NEXT:    sldi 7, 7, 48
+; CHECK-BE-NEXT:    extsb 5, 5
+; CHECK-BE-NEXT:    extsb 6, 6
+; CHECK-BE-NEXT:    sldi 6, 6, 48
+; CHECK-BE-NEXT:    sldi 5, 5, 48
+; CHECK-BE-NEXT:    sldi 4, 4, 48
+; CHECK-BE-NEXT:    sldi 3, 3, 48
+; CHECK-BE-NEXT:    mtvsrd 34, 10
+; CHECK-BE-NEXT:    mtvsrd 35, 9
+; CHECK-BE-NEXT:    mtvsrd 36, 7
+; CHECK-BE-NEXT:    mtvsrd 37, 3
+; CHECK-BE-NEXT:    vmrghh 2, 3, 2
+; CHECK-BE-NEXT:    mtvsrd 35, 8
+; CHECK-BE-NEXT:    vmrghh 3, 4, 3
+; CHECK-BE-NEXT:    mtvsrd 36, 5
+; CHECK-BE-NEXT:    vmrghw 2, 3, 2
+; CHECK-BE-NEXT:    mtvsrd 35, 6
+; CHECK-BE-NEXT:    vmrghh 3, 4, 3
+; CHECK-BE-NEXT:    mtvsrd 36, 4
+; CHECK-BE-NEXT:    vmrghh 4, 5, 4
+; CHECK-BE-NEXT:    vmrghw 3, 4, 3
+; CHECK-BE-NEXT:    xxmrghd 34, 35, 34
+; CHECK-BE-NEXT:    blr
+entry:
+
 
   %vecext = extractelement <16 x i8> %a, i32 0
   %conv = sext i8 %vecext to i16


        


More information about the llvm-branch-commits mailing list