| # RUN: llc -mtriple=powerpc64le-unknown-unknown -start-before ppc-pre-emit-peephole \ | 
 | # RUN:   -verify-machineinstrs -ppc-asm-full-reg-names %s -o - | FileCheck %s | 
 | --- | | 
 |   ; ModuleID = 't.ll' | 
 |   source_filename = "t.ll" | 
 |   target datalayout = "e-m:e-i64:64-n32:64" | 
 |    | 
 |   define signext i32 @test(i32 signext %a, i32 signext %b, i32 signext %c) { | 
 |   entry: | 
 |     %cmp = icmp slt i32 %a, %b | 
 |     br i1 %cmp, label %return, label %if.end | 
 |    | 
 |   if.end:                                           ; preds = %entry | 
 |     %cmp1 = icmp slt i32 %b, %a | 
 |     br i1 %cmp1, label %return, label %if.end3 | 
 |    | 
 |   if.end3:                                          ; preds = %if.end | 
 |     %cmp4 = icmp eq i32 %a, %c | 
 |     br i1 %cmp4, label %if.then5, label %if.end6 | 
 |    | 
 |   if.then5:                                         ; preds = %if.end3 | 
 |     %add = shl nsw i32 %a, 1 | 
 |     br label %return | 
 |    | 
 |   if.end6:                                          ; preds = %if.end3 | 
 |     %cmp7 = icmp sgt i32 %c, %b | 
 |     %add11 = add i32 %c, %b | 
 |     %add12 = select i1 %cmp7, i32 %a, i32 0 | 
 |     %spec.select = add i32 %add11, %add12 | 
 |     ret i32 %spec.select | 
 |    | 
 |   return:                                           ; preds = %if.then5, %if.end, %entry | 
 |     %retval.0 = phi i32 [ %add, %if.then5 ], [ %c, %entry ], [ %b, %if.end ] | 
 |     ret i32 %retval.0 | 
 |   } | 
 |  | 
 | ... | 
 | --- | 
 | name:            test | 
 | alignment:       16 | 
 | exposesReturnsTwice: false | 
 | legalized:       false | 
 | regBankSelected: false | 
 | selected:        false | 
 | failedISel:      false | 
 | tracksRegLiveness: true | 
 | registers:        | 
 | liveins:          | 
 |   - { reg: '$x3', virtual-reg: '' } | 
 |   - { reg: '$x4', virtual-reg: '' } | 
 |   - { reg: '$x5', virtual-reg: '' } | 
 | frameInfo:        | 
 |   isFrameAddressTaken: false | 
 |   isReturnAddressTaken: false | 
 |   hasStackMap:     false | 
 |   hasPatchPoint:   false | 
 |   stackSize:       0 | 
 |   offsetAdjustment: 0 | 
 |   maxAlignment:    0 | 
 |   adjustsStack:    false | 
 |   hasCalls:        false | 
 |   stackProtector:  '' | 
 |   maxCallFrameSize: 0 | 
 |   hasOpaqueSPAdjustment: false | 
 |   hasVAStart:      false | 
 |   hasMustTailInVarArgFunc: false | 
 |   localFrameSize:  0 | 
 |   savePoint:       '' | 
 |   restorePoint:    '' | 
 | fixedStack:       | 
 | stack:            | 
 | constants:        | 
 | body:             | | 
 |   bb.0.entry: | 
 |     successors: %bb.4(0x40000000), %bb.1(0x40000000) | 
 |     liveins: $x3, $x4, $x5 | 
 |    | 
 |     renamable $cr0 = CMPW renamable $r3, renamable $r4 | 
 |     BCC 12, renamable $cr0, %bb.4 | 
 |    | 
 |   bb.1.if.end: | 
 |     successors: %bb.6(0x40000000), %bb.2(0x40000000) | 
 |     liveins: $cr0, $x3, $x4, $x5 | 
 |    | 
 |     BCC 36, killed renamable $cr0, %bb.2 | 
 |    | 
 |   bb.6: | 
 |     liveins: $x4 | 
 |    | 
 |     ; CHECK: mr r5, r4 | 
 |     ; CHECK-NOT: mr r5, r5 | 
 |     ; CHECK: extsw r3, r5 | 
 |     $r5 = OR killed $r4, $r4, implicit $x4, implicit-def $x5 | 
 |     $r5 = OR $r5, $r5, implicit-def $x5 | 
 |     renamable $x3 = EXTSW_32_64 killed renamable $r5, implicit $x5 | 
 |     BLR8 implicit $lr8, implicit $rm, implicit killed $x3 | 
 |    | 
 |   bb.2.if.end3: | 
 |     successors: %bb.3(0x40000000), %bb.5(0x40000000) | 
 |     liveins: $x3, $x4, $x5 | 
 |    | 
 |     renamable $cr0 = CMPLW renamable $r3, renamable $r5 | 
 |     BCC 68, killed renamable $cr0, %bb.5 | 
 |    | 
 |   bb.3.if.then5: | 
 |     successors: %bb.4(0x80000000) | 
 |     liveins: $x3 | 
 |    | 
 |     renamable $r5 = RLWINM killed renamable $r3, 1, 0, 30, implicit $x3, implicit-def $x5 | 
 |    | 
 |   bb.4.return: | 
 |     liveins: $x5 | 
 |    | 
 |     renamable $x3 = EXTSW_32_64 killed renamable $r5, implicit $x5 | 
 |     BLR8 implicit $lr8, implicit $rm, implicit killed $x3 | 
 |    | 
 |   bb.5.if.end6: | 
 |     liveins: $x3, $x4, $x5 | 
 |    | 
 |     renamable $cr0 = CMPW renamable $r5, renamable $r4 | 
 |     renamable $r6 = LI 0 | 
 |     renamable $r4 = ADD4 killed renamable $r5, killed renamable $r4, implicit $x4, implicit $x5 | 
 |     renamable $r3 = ISEL killed renamable $r3, killed renamable $r6, killed renamable $cr0gt, implicit $cr0, implicit $x3 | 
 |     renamable $r3 = ADD4 killed renamable $r4, killed renamable $r3 | 
 |     renamable $x3 = EXTSW_32_64 killed renamable $r3 | 
 |     BLR8 implicit $lr8, implicit $rm, implicit killed $x3 | 
 |  | 
 | ... |