mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
24e5eb0aab
Folding EXEC copy into it's single use may lead to constant bus constraint violation as it adds one more SGPR operand. This change makes it validate the user instruction with the new SGPR operand and only fold it if it is legal. Reviewed By: rampitec, arsenm Differential Revision: https://reviews.llvm.org/D98888
24 lines
663 B
YAML
24 lines
663 B
YAML
# RUN: llc -run-pass si-optimize-exec-masking-pre-ra -march=amdgcn -verify-machineinstrs -o - %s | FileCheck --check-prefixes=GCN %s
|
|
---
|
|
# GCN-LABEL: name: opt_exec_copy_fold
|
|
# GCN: %2:vreg_64 = COPY $exec
|
|
name: opt_exec_copy_fold
|
|
tracksRegLiveness: true
|
|
liveins:
|
|
- { reg: '$sgpr0_sgpr1' }
|
|
body: |
|
|
bb.0:
|
|
liveins: $sgpr0_sgpr1
|
|
|
|
%0:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, $sgpr0_sgpr1, implicit $exec
|
|
%1:sreg_64 = V_CMP_NE_U32_e64 0, %0, implicit $exec
|
|
%2:vreg_64 = COPY $exec
|
|
%3:sreg_64 = V_CMP_EQ_U64_e64 %1, %2, implicit $exec
|
|
$scc = COPY %3
|
|
S_CBRANCH_SCC0 %bb.1, implicit $scc
|
|
|
|
bb.1:
|
|
...
|
|
|
|
|