From 8cb022982a3c64c04511dec7d1e74be00a922c31 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Thu, 13 Aug 2020 18:57:06 -0400 Subject: [PATCH] AMDGPU: Remove redundant FLAT complex patterns These were identical to the non-atomic cases. I'm not sure why these were ever separated. --- llvm/lib/Target/AMDGPU/AMDGPUGISel.td | 7 ------ llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp | 20 ----------------- llvm/lib/Target/AMDGPU/FLATInstructions.td | 31 +++++++++++---------------- 3 files changed, 12 insertions(+), 46 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AMDGPUGISel.td b/llvm/lib/Target/AMDGPU/AMDGPUGISel.td index fc11255..dd72191 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUGISel.td +++ b/llvm/lib/Target/AMDGPU/AMDGPUGISel.td @@ -68,19 +68,12 @@ def gi_smrd_sgpr : GIComplexOperandMatcher, GIComplexPatternEquiv; -// FIXME: Why are the atomic versions separated? def gi_flat_offset : GIComplexOperandMatcher, GIComplexPatternEquiv; def gi_flat_offset_signed : GIComplexOperandMatcher, GIComplexPatternEquiv; -def gi_flat_atomic : - GIComplexOperandMatcher, - GIComplexPatternEquiv; -def gi_flat_signed_atomic : - GIComplexOperandMatcher, - GIComplexPatternEquiv; def gi_mubuf_scratch_offset : GIComplexOperandMatcher, diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp index 368af73..0385f55 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp @@ -234,10 +234,6 @@ private: template bool SelectFlatOffset(SDNode *N, SDValue Addr, SDValue &VAddr, SDValue &Offset, SDValue &SLC) const; - bool SelectFlatAtomic(SDNode *N, SDValue Addr, SDValue &VAddr, - SDValue &Offset, SDValue &SLC) const; - bool SelectFlatAtomicSigned(SDNode *N, SDValue Addr, SDValue &VAddr, - SDValue &Offset, SDValue &SLC) const; bool SelectSMRDOffset(SDValue ByteOffsetNode, SDValue &Offset, bool &Imm) const; @@ -1756,22 +1752,6 @@ bool AMDGPUDAGToDAGISel::SelectFlatOffset(SDNode *N, return true; } -bool AMDGPUDAGToDAGISel::SelectFlatAtomic(SDNode *N, - SDValue Addr, - SDValue &VAddr, - SDValue &Offset, - SDValue &SLC) const { - return SelectFlatOffset(N, Addr, VAddr, Offset, SLC); -} - -bool AMDGPUDAGToDAGISel::SelectFlatAtomicSigned(SDNode *N, - SDValue Addr, - SDValue &VAddr, - SDValue &Offset, - SDValue &SLC) const { - return SelectFlatOffset(N, Addr, VAddr, Offset, SLC); -} - bool AMDGPUDAGToDAGISel::SelectSMRDOffset(SDValue ByteOffsetNode, SDValue &Offset, bool &Imm) const { ConstantSDNode *C = dyn_cast(ByteOffsetNode); diff --git a/llvm/lib/Target/AMDGPU/FLATInstructions.td b/llvm/lib/Target/AMDGPU/FLATInstructions.td index c180ea8..493f4a2 100644 --- a/llvm/lib/Target/AMDGPU/FLATInstructions.td +++ b/llvm/lib/Target/AMDGPU/FLATInstructions.td @@ -6,11 +6,8 @@ // //===----------------------------------------------------------------------===// -def FLATAtomic : ComplexPattern; def FLATOffset : ComplexPattern", [], [SDNPWantRoot], -10>; - def FLATOffsetSigned : ComplexPattern", [], [SDNPWantRoot], -10>; -def FLATSignedAtomic : ComplexPattern; //===----------------------------------------------------------------------===// // FLAT classes @@ -326,7 +323,7 @@ multiclass FLAT_Atomic_Pseudo< (ins VReg_64:$vaddr, data_rc:$vdata, flat_offset:$offset, SLC:$slc), " $vdst, $vaddr, $vdata$offset glc$slc", [(set vt:$vdst, - (atomic (FLATAtomic i64:$vaddr, i16:$offset, i1:$slc), data_vt:$vdata))]>, + (atomic (FLATOffset i64:$vaddr, i16:$offset, i1:$slc), data_vt:$vdata))]>, GlobalSaddrTable<0, opName#"_rtn">, AtomicNoRet { let FPAtomic = isFP; @@ -381,7 +378,7 @@ multiclass FLAT_Global_Atomic_Pseudo_RTN< (ins VReg_64:$vaddr, data_rc:$vdata, flat_offset:$offset, SLC:$slc), " $vdst, $vaddr, $vdata, off$offset glc$slc", [(set vt:$vdst, - (atomic (FLATSignedAtomic i64:$vaddr, i16:$offset, i1:$slc), data_vt:$vdata))]>, + (atomic (FLATOffsetSigned i64:$vaddr, i16:$offset, i1:$slc), data_vt:$vdata))]>, GlobalSaddrTable<0, opName#"_rtn">, AtomicNoRet { let has_saddr = 1; @@ -744,11 +741,6 @@ class FlatSignedLoadPat_D16 ; -class FlatLoadAtomicPat : GCNPat < - (vt (node (FLATAtomic (i64 VReg_64:$vaddr), i16:$offset, i1:$slc))), - (inst $vaddr, $offset, 0, 0, $slc) ->; - class FlatLoadSignedPat : GCNPat < (vt (node (FLATOffsetSigned (i64 VReg_64:$vaddr), i16:$offset, i1:$slc))), (inst $vaddr, $offset, 0, 0, $slc) @@ -767,31 +759,31 @@ class FlatStoreSignedPat : GCNPat < // atomic store follows atomic binop convention so the address comes // first. - (node (FLATAtomic i64:$vaddr, i16:$offset, i1:$slc), vt:$data), + (node (FLATOffset i64:$vaddr, i16:$offset, i1:$slc), vt:$data), (inst $vaddr, rc:$data, $offset, 0, 0, $slc) >; class FlatStoreSignedAtomicPat : GCNPat < // atomic store follows atomic binop convention so the address comes // first. - (node (FLATSignedAtomic i64:$vaddr, i16:$offset, i1:$slc), vt:$data), + (node (FLATOffset i64:$vaddr, i16:$offset, i1:$slc), vt:$data), (inst $vaddr, rc:$data, $offset, 0, 0, $slc) >; class FlatAtomicPat : GCNPat < - (vt (node (FLATAtomic i64:$vaddr, i16:$offset, i1:$slc), data_vt:$data)), + (vt (node (FLATOffset i64:$vaddr, i16:$offset, i1:$slc), data_vt:$data)), (inst $vaddr, $data, $offset, $slc) >; class FlatAtomicPatNoRtn : GCNPat < - (node (FLATAtomic i64:$vaddr, i16:$offset, i1:$slc), vt:$data), + (node (FLATOffset i64:$vaddr, i16:$offset, i1:$slc), vt:$data), (inst VReg_64:$vaddr, getVregSrcForVT.ret:$data, $offset, $slc) >; class FlatSignedAtomicPat : GCNPat < - (vt (node (FLATSignedAtomic i64:$vaddr, i16:$offset, i1:$slc), data_vt:$data)), + (vt (node (FLATOffsetSigned i64:$vaddr, i16:$offset, i1:$slc), data_vt:$data)), (inst $vaddr, $data, $offset, $slc) >; @@ -809,8 +801,8 @@ def : FlatLoadPat ; def : FlatLoadPat ; def : FlatLoadPat ; -def : FlatLoadAtomicPat ; -def : FlatLoadAtomicPat ; +def : FlatLoadPat ; +def : FlatLoadPat ; def : FlatStorePat ; def : FlatStorePat ; @@ -917,8 +909,9 @@ def : FlatLoadSignedPat ; def : FlatStoreSignedPat ; } -def : FlatLoadAtomicPat ; -def : FlatLoadAtomicPat ; +// FIXME: Should be using signed pat +def : FlatLoadPat ; +def : FlatLoadPat ; def : FlatStoreSignedPat ; def : FlatStoreSignedPat ; -- 2.7.4