| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6 |
| # RUN: llc -o - %s -passes="require<machine-loops>,require<live-vars>,phi-node-elimination" | FileCheck %s |
| |
| --- | |
| target datalayout = "e-p6:32:32-i64:64-i128:128-i256:256-v16:16-v32:32-n16:32:64" |
| target triple = "nvptx64-unknown-nvidiacl" |
| |
| define void @func_26(i32 %BS_COND_16.0.BS_COND_16.0.BS_COND_16.0.BS_COND_16.0.) { |
| entry: |
| br label %for.cond |
| |
| for.cond: ; preds = %BS_LABEL_1, %BS_LABEL_1, %entry |
| %p_2218_0.1 = phi i32 [ 0, %entry ], [ %p_2218_0.3, %BS_LABEL_1 ], [ %p_2218_0.3, %BS_LABEL_1 ] |
| br label %BS_LABEL_1 |
| |
| BS_LABEL_2: ; preds = %BS_LABEL_1 |
| %sub = or i32 %p_2218_0.3, 1 |
| br label %for.cond4 |
| |
| for.cond4: ; preds = %BS_LABEL_1, %BS_LABEL_2 |
| %p_2218_0.2 = phi i32 [ %BS_COND_16.0.BS_COND_16.0.BS_COND_16.0.BS_COND_16.0., %BS_LABEL_1 ], [ %sub, %BS_LABEL_2 ] |
| br label %BS_LABEL_1 |
| |
| BS_LABEL_1: ; preds = %for.cond4, %for.cond |
| %p_2218_0.3 = phi i32 [ %p_2218_0.2, %for.cond4 ], [ %p_2218_0.1, %for.cond ] |
| switch i32 %BS_COND_16.0.BS_COND_16.0.BS_COND_16.0.BS_COND_16.0., label %unreachable [ |
| i32 0, label %for.cond4 |
| i32 4, label %BS_LABEL_2 |
| i32 1, label %for.cond |
| i32 6, label %for.cond |
| ] |
| |
| unreachable: ; preds = %BS_LABEL_1 |
| call void asm sideeffect "exit;", ""() |
| unreachable |
| } |
| ... |
| --- |
| name: func_26 |
| alignment: 1 |
| exposesReturnsTwice: false |
| legalized: false |
| regBankSelected: false |
| selected: false |
| failedISel: false |
| tracksRegLiveness: true |
| hasWinCFI: false |
| noPhis: false |
| isSSA: true |
| noVRegs: false |
| hasFakeUses: false |
| callsEHReturn: false |
| callsUnwindInit: false |
| hasEHContTarget: false |
| hasEHScopes: false |
| hasEHFunclets: false |
| isOutlined: false |
| debugInstrRef: false |
| failsVerification: false |
| tracksDebugUserValues: false |
| registers: |
| - { id: 0, class: b32, preferred-register: '', flags: [ ] } |
| - { id: 1, class: b32, preferred-register: '', flags: [ ] } |
| - { id: 2, class: b32, preferred-register: '', flags: [ ] } |
| - { id: 3, class: b32, preferred-register: '', flags: [ ] } |
| - { id: 4, class: b32, preferred-register: '', flags: [ ] } |
| - { id: 5, class: b32, preferred-register: '', flags: [ ] } |
| - { id: 6, class: b32, preferred-register: '', flags: [ ] } |
| - { id: 7, class: b1, preferred-register: '', flags: [ ] } |
| - { id: 8, class: b32, preferred-register: '', flags: [ ] } |
| - { id: 9, class: b1, preferred-register: '', flags: [ ] } |
| - { id: 10, class: b32, preferred-register: '', flags: [ ] } |
| - { id: 11, class: b1, preferred-register: '', flags: [ ] } |
| liveins: [] |
| frameInfo: |
| isFrameAddressTaken: false |
| isReturnAddressTaken: false |
| hasStackMap: false |
| hasPatchPoint: false |
| stackSize: 0 |
| offsetAdjustment: 0 |
| maxAlignment: 1 |
| adjustsStack: false |
| hasCalls: false |
| stackProtector: '' |
| functionContext: '' |
| maxCallFrameSize: 4294967295 |
| cvBytesOfCalleeSavedRegisters: 0 |
| hasOpaqueSPAdjustment: false |
| hasVAStart: false |
| hasMustTailInVarArgFunc: false |
| hasTailCall: false |
| isCalleeSavedInfoValid: false |
| localFrameSize: 0 |
| fixedStack: [] |
| stack: [] |
| entry_values: [] |
| callSites: [] |
| debugValueSubstitutions: [] |
| constants: [] |
| machineFunctionInfo: {} |
| jumpTable: |
| kind: inline |
| entries: |
| - id: 0 |
| blocks: [ '%bb.3', '%bb.1', '%bb.6', '%bb.6', '%bb.2', '%bb.6', |
| '%bb.1' ] |
| body: | |
| ; CHECK-LABEL: name: func_26 |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: successors: %bb.1(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: dead [[DEF:%[0-9]+]]:b32 = IMPLICIT_DEF |
| ; CHECK-NEXT: dead [[DEF1:%[0-9]+]]:b1 = IMPLICIT_DEF |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.1: |
| ; CHECK-NEXT: successors: %bb.4(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: dead [[DEF2:%[0-9]+]]:b32 = IMPLICIT_DEF |
| ; CHECK-NEXT: GOTO %bb.4 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.2: |
| ; CHECK-NEXT: successors: %bb.3(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.3: |
| ; CHECK-NEXT: successors: %bb.4(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.4: |
| ; CHECK-NEXT: successors: %bb.6(0x00000000), %bb.5(0x80000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: CBranch undef [[DEF1]], %bb.6 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.5: |
| ; CHECK-NEXT: successors: %bb.3(0x3e000000), %bb.1(0x04000000), %bb.6(0x00000000), %bb.2(0x3e000000) |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: BRX_START 0 |
| ; CHECK-NEXT: BRX_ITEM %bb.3 |
| ; CHECK-NEXT: BRX_ITEM %bb.1 |
| ; CHECK-NEXT: BRX_ITEM %bb.6 |
| ; CHECK-NEXT: BRX_ITEM %bb.6 |
| ; CHECK-NEXT: BRX_ITEM %bb.2 |
| ; CHECK-NEXT: BRX_ITEM %bb.6 |
| ; CHECK-NEXT: BRX_END %bb.1, undef [[DEF]], 0 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: bb.6: |
| bb.0: |
| successors: %bb.1(0x80000000) |
| |
| %10:b32 = IMPLICIT_DEF |
| %11:b1 = IMPLICIT_DEF |
| |
| bb.1: |
| successors: %bb.4(0x80000000) |
| |
| %0:b32 = PHI undef %10, %bb.0, undef %0, %bb.5 |
| GOTO %bb.4 |
| |
| bb.2: |
| successors: %bb.3(0x80000000) |
| |
| bb.3: |
| successors: %bb.4(0x80000000) |
| |
| bb.4: |
| successors: %bb.6(0x00000000), %bb.5(0x80000000) |
| |
| CBranch undef %11, %bb.6 |
| |
| bb.5: |
| successors: %bb.3(0x3e000000), %bb.1(0x04000000), %bb.6(0x00000000), %bb.2(0x3e000000) |
| |
| BRX_START 0 |
| BRX_ITEM %bb.3 |
| BRX_ITEM %bb.1 |
| BRX_ITEM %bb.6 |
| BRX_ITEM %bb.6 |
| BRX_ITEM %bb.2 |
| BRX_ITEM %bb.6 |
| BRX_END %bb.1, undef %10, 0 |
| |
| bb.6: |
| ... |