[PATCH] D128313: AMDGPU: Use isMeta flags on pseudoinstructions
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 21 17:08:45 PDT 2022
arsenm created this revision.
arsenm added reviewers: kerbowa, rampitec, AMDGPU.
Herald added subscribers: kosarev, jsilvanus, foad, hiraditya, t-tye, tpr, dstuttard, yaxunl, nhaehnle, jvesely, kzhuravl.
Herald added a project: All.
arsenm requested review of this revision.
Herald added a subscriber: wdng.
Herald added a project: LLVM.
https://reviews.llvm.org/D128313
Files:
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
llvm/lib/Target/AMDGPU/SIInstructions.td
llvm/test/CodeGen/AMDGPU/sched-barrier-pre-RA.mir
Index: llvm/test/CodeGen/AMDGPU/sched-barrier-pre-RA.mir
===================================================================
--- llvm/test/CodeGen/AMDGPU/sched-barrier-pre-RA.mir
+++ llvm/test/CodeGen/AMDGPU/sched-barrier-pre-RA.mir
@@ -385,8 +385,8 @@
; CHECK-LABEL: name: sched_barrier_mask_256
; CHECK: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
; CHECK-NEXT: [[DS_READ_U16_gfx9_:%[0-9]+]]:vgpr_32 = DS_READ_U16_gfx9 [[DEF]], 0, 0, implicit $exec :: (load (s32) from %ir.in, !alias.scope !0, addrspace 3)
- ; CHECK-NEXT: [[V_MUL_LO_U32_e64_:%[0-9]+]]:vgpr_32 = nsw V_MUL_LO_U32_e64 [[DS_READ_U16_gfx9_]], [[DS_READ_U16_gfx9_]], implicit $exec
; CHECK-NEXT: [[DS_READ_U16_gfx9_1:%[0-9]+]]:vgpr_32 = DS_READ_U16_gfx9 [[DEF]], 0, 0, implicit $exec :: (load (s32) from %ir.in, !alias.scope !0, addrspace 3)
+ ; CHECK-NEXT: [[V_MUL_LO_U32_e64_:%[0-9]+]]:vgpr_32 = nsw V_MUL_LO_U32_e64 [[DS_READ_U16_gfx9_]], [[DS_READ_U16_gfx9_]], implicit $exec
; CHECK-NEXT: S_NOP 0
; CHECK-NEXT: DS_WRITE_B32 [[V_MUL_LO_U32_e64_]], [[DEF]], 0, 16, implicit $m0, implicit $exec :: (store (s32) into %ir.out, !noalias !0, addrspace 3)
; CHECK-NEXT: SCHED_BARRIER 256
Index: llvm/lib/Target/AMDGPU/SIInstructions.td
===================================================================
--- llvm/lib/Target/AMDGPU/SIInstructions.td
+++ llvm/lib/Target/AMDGPU/SIInstructions.td
@@ -313,6 +313,7 @@
let isConvergent = 1;
let FixedSize = 1;
let Size = 0;
+ let isMeta = 1;
}
def SCHED_BARRIER : SPseudoInstSI<(outs), (ins i32imm:$mask),
@@ -325,6 +326,7 @@
let isConvergent = 1;
let FixedSize = 1;
let Size = 0;
+ let isMeta = 1;
}
// SI pseudo instructions. These are used by the CFG structurizer pass
@@ -462,6 +464,7 @@
let Size = 0;
let hasNoSchedulingInfo = 1;
let FixedSize = 1;
+ let isMeta = 1;
}
// Used as an isel pseudo to directly emit initialization with an
@@ -497,6 +500,9 @@
let hasNoSchedulingInfo = 1;
let DisableWQM = 1;
let FixedSize = 1;
+
+ // TODO: Should this be true?
+ let isMeta = 0;
}
// Return for returning function calls.
Index: llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+++ llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
@@ -1770,14 +1770,8 @@
case AMDGPU::S_NOP:
return MI.getOperand(0).getImm() + 1;
-
- // FIXME: Any other pseudo instruction?
// SI_RETURN_TO_EPILOG is a fallthrough to code outside of the function. The
// hazard, even if one exist, won't really be visible. Should we handle it?
- case AMDGPU::SI_MASKED_UNREACHABLE:
- case AMDGPU::WAVE_BARRIER:
- case AMDGPU::SCHED_BARRIER:
- return 0;
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D128313.438875.patch
Type: text/x-patch
Size: 2742 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220622/72e53c4a/attachment.bin>
More information about the llvm-commits
mailing list