| # This file tests the scenario: ISEL RX, RY, RY, CR (X != 0 && Y != 0) |
| # It is folded into a copy (%RX = OR %RY, %RY) |
| # RUN: llc -ppc-gen-isel=true -run-pass ppc-expand-isel -o - %s | FileCheck %s |
| |
| --- | |
| target datalayout = "E-m:e-i64:64-n32:64" |
| target triple = "powerpc64-unknown-linux-gnu" |
| define signext i32 @testExpandISEL(i32 signext %i, i32 signext %j) { |
| entry: |
| %cmp = icmp sgt i32 %i, 0 |
| %add = add nsw i32 %i, 1 |
| %cond = select i1 %cmp, i32 %add, i32 %j |
| ret i32 %cond |
| } |
| |
| ... |
| --- |
| name: testExpandISEL |
| alignment: 2 |
| exposesReturnsTwice: false |
| legalized: false |
| regBankSelected: false |
| selected: false |
| tracksRegLiveness: true |
| liveins: |
| - { reg: '$x3' } |
| - { reg: '$x4' } |
| frameInfo: |
| isFrameAddressTaken: false |
| isReturnAddressTaken: false |
| hasStackMap: false |
| hasPatchPoint: false |
| stackSize: 0 |
| offsetAdjustment: 0 |
| maxAlignment: 0 |
| adjustsStack: false |
| hasCalls: false |
| maxCallFrameSize: 0 |
| hasOpaqueSPAdjustment: false |
| hasVAStart: false |
| hasMustTailInVarArgFunc: false |
| body: | |
| bb.0.entry: |
| liveins: $x3, $x4 |
| |
| $r5 = ADDI $r3, 1 |
| $cr0 = CMPWI $r3, 0 |
| $r3 = ISEL $r4, $r4, $cr0gt |
| ; Test fold ISEL to a copy |
| ; CHECK: $r3 = OR $r4, $r4 |
| |
| $x3 = EXTSW_32_64 $r3 |
| |
| ... |