Files
clang-p2996/llvm/test/CodeGen/AMDGPU/scheduler-handle-move-bundle.mir
Joe Nash 18ed279a3a [AMDGPU] gfx11 subtarget features & early tests
Tablegen definitions for subtarget features and cpp predicate functions to
access the features.
New Sub-TargetProcessors and common latencies.
Simple changes to MIR codegen tests which pass on gfx11 because they have the
same output as previous subtargets or operate on pseudo instructions which
are reused from previous subtargets.

Contributors:
Jay Foad <jay.foad@amd.com>
Petar Avramovic <Petar.Avramovic@amd.com>

Patch 4/N for upstreaming of AMDGPU gfx11 architecture

Depends on D124538

Reviewed By: Petar.Avramovic, foad

Differential Revision: https://reviews.llvm.org/D125261
2022-05-11 10:31:49 -04:00

52 lines
2.4 KiB
YAML

# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 -run-pass=machine-scheduler -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -run-pass=machine-scheduler -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s
# handleMove was called for the BUNDLE pseudo-instruction, but
# considered it to be an instruction in the bundle. Make sure it
# doesn't assert when the whole bundle is moved.
---
name: handleMove_bundle
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
memoryBound: false
waveLimiter: false
body: |
bb.0:
liveins: $sgpr4_sgpr5
; GCN-LABEL: name: handleMove_bundle
; GCN: liveins: $sgpr4_sgpr5
; GCN: [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr4_sgpr5
; GCN: [[S_LOAD_DWORD_IMM:%[0-9]+]]:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM [[COPY]], 0, 0 :: (dereferenceable invariant load (s32), align 16, addrspace 4)
; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
; GCN: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
; GCN: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 2, implicit $exec
; GCN: DS_WRITE_B32_gfx9 [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_]], 0, 0, implicit $exec :: (store (s32), addrspace 3)
; GCN: $vgpr0 = COPY [[S_LOAD_DWORD_IMM]]
; GCN: $m0 = S_MOV_B32 0
; GCN: BUNDLE implicit $vgpr0, implicit $m0, implicit $exec {
; GCN: DS_GWS_INIT $vgpr0, 11, implicit $m0, implicit $exec :: (store (s32))
; GCN: S_WAITCNT 0
; GCN: }
; GCN: DS_WRITE_B32_gfx9 [[V_MOV_B32_e32_1]], [[V_MOV_B32_e32_2]], 0, 0, implicit $exec :: (store (s32), addrspace 3)
; GCN: S_ENDPGM 0
%2:sgpr_64 = COPY $sgpr4_sgpr5
%5:sreg_32_xm0_xexec = S_LOAD_DWORD_IMM %2, 0, 0 :: (dereferenceable invariant load (s32), align 16, addrspace 4)
%6:vgpr_32 = V_MOV_B32_e32 1, implicit $exec
%7:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
DS_WRITE_B32_gfx9 %7, %6, 0, 0, implicit $exec :: (store (s32), addrspace 3)
$m0 = S_MOV_B32 0
$vgpr0 = COPY %5
BUNDLE implicit killed $vgpr0, implicit $m0, implicit $exec {
DS_GWS_INIT $vgpr0, 11, implicit $m0, implicit $exec :: (store (s32))
S_WAITCNT 0
}
%8:vgpr_32 = V_MOV_B32_e32 2, implicit $exec
DS_WRITE_B32_gfx9 %7, %8, 0, 0, implicit $exec :: (store (s32), addrspace 3)
S_ENDPGM 0
...