mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
6af08589c4
SIRemoveShortExecBranches is an optimisation so fits well in the context of SIPreEmitPeephole. Test changes relate to early termination from kills which have now been lowered prior to considering branches for removal. As these use s_cbranch the execz skips are now retained instead. Currently either behaviour is valid as kill with EXEC=0 is a nop; however, if early termination is used differently in future then the new behaviour is the correct one. Reviewed By: foad Differential Revision: https://reviews.llvm.org/D98917
84 lines
2.4 KiB
YAML
84 lines
2.4 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
# RUN: llc -march=amdgcn -mcpu=polaris10 -run-pass si-pre-emit-peephole -amdgpu-skip-threshold=1 -verify-machineinstrs %s -o - | FileCheck %s
|
|
|
|
---
|
|
|
|
name: skip_execz_flat
|
|
body: |
|
|
; CHECK-LABEL: name: skip_execz_flat
|
|
; CHECK: bb.0:
|
|
; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
|
; CHECK: S_CBRANCH_EXECZ %bb.2, implicit $exec
|
|
; CHECK: bb.1:
|
|
; CHECK: successors: %bb.2(0x80000000)
|
|
; CHECK: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
|
|
; CHECK: FLAT_STORE_DWORD undef $vgpr1_vgpr2, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
|
|
; CHECK: bb.2:
|
|
; CHECK: S_ENDPGM 0
|
|
bb.0:
|
|
successors: %bb.1, %bb.2
|
|
S_CBRANCH_EXECZ %bb.2, implicit $exec
|
|
|
|
bb.1:
|
|
successors: %bb.2
|
|
$vgpr0 = V_MOV_B32_e32 0, implicit $exec
|
|
FLAT_STORE_DWORD undef $vgpr1_vgpr2, $vgpr0, 0, 0, implicit $exec, implicit $flat_scr
|
|
|
|
bb.2:
|
|
S_ENDPGM 0
|
|
...
|
|
|
|
---
|
|
|
|
name: skip_execz_mubuf
|
|
body: |
|
|
; CHECK-LABEL: name: skip_execz_mubuf
|
|
; CHECK: bb.0:
|
|
; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
|
; CHECK: S_CBRANCH_EXECZ %bb.2, implicit $exec
|
|
; CHECK: bb.1:
|
|
; CHECK: successors: %bb.2(0x80000000)
|
|
; CHECK: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
|
|
; CHECK: BUFFER_STORE_DWORD_OFFSET $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, 0, implicit $exec
|
|
; CHECK: bb.2:
|
|
; CHECK: S_ENDPGM 0
|
|
bb.0:
|
|
successors: %bb.1, %bb.2
|
|
S_CBRANCH_EXECZ %bb.2, implicit $exec
|
|
|
|
bb.1:
|
|
successors: %bb.2
|
|
$vgpr0 = V_MOV_B32_e32 0, implicit $exec
|
|
BUFFER_STORE_DWORD_OFFSET $vgpr0, undef $sgpr0_sgpr1_sgpr2_sgpr3, undef $sgpr4, 0, 0, 0, 0, implicit $exec
|
|
|
|
bb.2:
|
|
S_ENDPGM 0
|
|
...
|
|
|
|
---
|
|
|
|
name: skip_execz_ds
|
|
body: |
|
|
; CHECK-LABEL: name: skip_execz_ds
|
|
; CHECK: bb.0:
|
|
; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000)
|
|
; CHECK: S_CBRANCH_EXECZ %bb.2, implicit $exec
|
|
; CHECK: bb.1:
|
|
; CHECK: successors: %bb.2(0x80000000)
|
|
; CHECK: $vgpr0 = V_MOV_B32_e32 0, implicit $exec
|
|
; CHECK: DS_WRITE_B32 $vgpr0, $vgpr0, 0, 0, implicit $m0, implicit $exec
|
|
; CHECK: bb.2:
|
|
; CHECK: S_ENDPGM 0
|
|
bb.0:
|
|
successors: %bb.1, %bb.2
|
|
S_CBRANCH_EXECZ %bb.2, implicit $exec
|
|
|
|
bb.1:
|
|
successors: %bb.2
|
|
$vgpr0 = V_MOV_B32_e32 0, implicit $exec
|
|
DS_WRITE_B32 $vgpr0, $vgpr0, 0, 0, implicit $m0, implicit $exec
|
|
|
|
bb.2:
|
|
S_ENDPGM 0
|
|
...
|