blob: 4d86bb879f18faed71fe534de12d62c7de160ed0 [file] [log] [blame] [edit]
# 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:
...