1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
llvm-mirror/test/CodeGen/AMDGPU/si-i1-copies.mir
Nicolai Haehnle 23709dcaaf MachineSSAUpdater: insert IMPLICIT_DEF at top of basic block
Summary:
When getValueInMiddleOfBlock happens to be called for a basic block
that has no incoming value at all, an IMPLICIT_DEF is inserted in that
block via GetValueAtEndOfBlockInternal. This IMPLICIT_DEF must be at
the top of its basic block or it will likely not reach the use that
the caller intends to insert.

Issue: https://github.com/GPUOpen-Drivers/llpc/issues/204

Reviewers: arsenm, rampitec

Subscribers: jvesely, wdng, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D68183

llvm-svn: 374040
2019-10-08 12:46:20 +00:00

29 lines
901 B
YAML

# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -march=amdgcn -run-pass=si-i1-copies -verify-machineinstrs %s -o - | FileCheck -check-prefixes=GCN %s
# Test that the new IMPLICIT_DEF is inserted in the correct location.
---
name: test_undef
tracksRegLiveness: true
body: |
; GCN-LABEL: name: test_undef
; GCN: bb.0:
; GCN: successors: %bb.1(0x80000000)
; GCN: S_BRANCH %bb.1
; GCN: bb.1:
; GCN: [[DEF:%[0-9]+]]:sreg_64 = IMPLICIT_DEF
; GCN: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY [[DEF]]
; GCN: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, [[COPY]], implicit $exec
bb.0:
successors: %bb.1
%0:vreg_1 = IMPLICIT_DEF
S_BRANCH %bb.1
bb.1:
%1:vreg_1 = PHI %0, %bb.0
%2:sreg_64_xexec = COPY %1
%3:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, %2, implicit $exec
...