Skip to content

Commit 0eb62d5

Browse files
committed
AMDGPU/GlobalISel: Select llvm.amdgcn.raw.tbuffer.store
1 parent ab9762a commit 0eb62d5

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed

llvm/lib/Target/AMDGPU/AMDGPUGISel.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,8 @@ def : GINodeEquiv<G_AMDGPU_BUFFER_STORE_SHORT, SIbuffer_store_short>;
144144
def : GINodeEquiv<G_AMDGPU_BUFFER_STORE_BYTE, SIbuffer_store_byte>;
145145
def : GINodeEquiv<G_AMDGPU_BUFFER_STORE_FORMAT, SIbuffer_store_format>;
146146
def : GINodeEquiv<G_AMDGPU_BUFFER_STORE_FORMAT_D16, SIbuffer_store_format_d16>;
147+
def : GINodeEquiv<G_AMDGPU_TBUFFER_STORE_FORMAT, SItbuffer_store>;
148+
def : GINodeEquiv<G_AMDGPU_TBUFFER_STORE_FORMAT_D16, SItbuffer_store_d16>;
147149

148150
// FIXME: Check MMO is atomic
149151
def : GINodeEquiv<G_AMDGPU_ATOMIC_INC, SIatomic_inc>;

llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2775,6 +2775,9 @@ bool AMDGPULegalizerInfo::legalizeIntrinsic(MachineInstr &MI,
27752775
case Intrinsic::amdgcn_raw_buffer_store_format:
27762776
case Intrinsic::amdgcn_struct_buffer_store_format:
27772777
return legalizeBufferStore(MI, MRI, B, false, true);
2778+
case Intrinsic::amdgcn_raw_tbuffer_store:
2779+
case Intrinsic::amdgcn_struct_tbuffer_store:
2780+
return legalizeBufferStore(MI, MRI, B, true, true);
27782781
case Intrinsic::amdgcn_raw_buffer_load:
27792782
case Intrinsic::amdgcn_struct_buffer_load:
27802783
return legalizeBufferLoad(MI, MRI, B, false, false);

llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2256,7 +2256,9 @@ void AMDGPURegisterBankInfo::applyMappingImpl(
22562256
case AMDGPU::G_AMDGPU_BUFFER_STORE_BYTE:
22572257
case AMDGPU::G_AMDGPU_BUFFER_STORE_SHORT:
22582258
case AMDGPU::G_AMDGPU_BUFFER_STORE_FORMAT:
2259-
case AMDGPU::G_AMDGPU_BUFFER_STORE_FORMAT_D16: {
2259+
case AMDGPU::G_AMDGPU_BUFFER_STORE_FORMAT_D16:
2260+
case AMDGPU::G_AMDGPU_TBUFFER_STORE_FORMAT:
2261+
case AMDGPU::G_AMDGPU_TBUFFER_STORE_FORMAT_D16: {
22602262
applyDefaultMapping(OpdMapper);
22612263
executeInWaterfallLoop(MI, MRI, {1, 4});
22622264
return;

llvm/lib/Target/AMDGPU/BUFInstructions.td

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1760,26 +1760,26 @@ multiclass MTBUF_StoreIntrinsicPat<SDPatternOperator name, ValueType vt,
17601760
def : GCNPat<
17611761
(name vt:$vdata, v4i32:$rsrc, 0, 0, i32:$soffset, timm:$offset,
17621762
timm:$format, timm:$auxiliary, 0),
1763-
(!cast<MTBUF_Pseudo>(opcode # _OFFSET_exact) $vdata, $rsrc, $soffset,
1764-
(as_i16imm $offset), (as_i8imm $format),
1763+
(!cast<MTBUF_Pseudo>(opcode # _OFFSET_exact) getVregSrcForVT<vt>.ret:$vdata, SReg_128:$rsrc, SCSrc_b32:$soffset,
1764+
(as_i16timm $offset), (as_i8timm $format),
17651765
(extract_glc $auxiliary), (extract_slc $auxiliary), 0, (extract_dlc $auxiliary),
17661766
(extract_swz $auxiliary))
17671767
>;
17681768

17691769
def : GCNPat<
17701770
(name vt:$vdata, v4i32:$rsrc, i32:$vindex, 0, i32:$soffset, timm:$offset,
17711771
timm:$format, timm:$auxiliary, timm),
1772-
(!cast<MTBUF_Pseudo>(opcode # _IDXEN_exact) $vdata, $vindex, $rsrc, $soffset,
1773-
(as_i16imm $offset), (as_i8imm $format),
1772+
(!cast<MTBUF_Pseudo>(opcode # _IDXEN_exact) getVregSrcForVT<vt>.ret:$vdata, VGPR_32:$vindex, SReg_128:$rsrc, SCSrc_b32:$soffset,
1773+
(as_i16timm $offset), (as_i8timm $format),
17741774
(extract_glc $auxiliary), (extract_slc $auxiliary), 0, (extract_dlc $auxiliary),
17751775
(extract_swz $auxiliary))
17761776
>;
17771777

17781778
def : GCNPat<
17791779
(name vt:$vdata, v4i32:$rsrc, 0, i32:$voffset, i32:$soffset, timm:$offset,
17801780
timm:$format, timm:$auxiliary, 0),
1781-
(!cast<MTBUF_Pseudo>(opcode # _OFFEN_exact) $vdata, $voffset, $rsrc, $soffset,
1782-
(as_i16imm $offset), (as_i8imm $format),
1781+
(!cast<MTBUF_Pseudo>(opcode # _OFFEN_exact) getVregSrcForVT<vt>.ret:$vdata, VGPR_32:$voffset, SReg_128:$rsrc, SCSrc_b32:$soffset,
1782+
(as_i16timm $offset), (as_i8timm $format),
17831783
(extract_glc $auxiliary), (extract_slc $auxiliary), 0, (extract_dlc $auxiliary),
17841784
(extract_swz $auxiliary))
17851785
>;
@@ -1788,9 +1788,9 @@ multiclass MTBUF_StoreIntrinsicPat<SDPatternOperator name, ValueType vt,
17881788
(name vt:$vdata, v4i32:$rsrc, i32:$vindex, i32:$voffset, i32:$soffset,
17891789
timm:$offset, timm:$format, timm:$auxiliary, timm),
17901790
(!cast<MTBUF_Pseudo>(opcode # _BOTHEN_exact)
1791-
$vdata,
1792-
(REG_SEQUENCE VReg_64, $vindex, sub0, $voffset, sub1),
1793-
$rsrc, $soffset, (as_i16imm $offset), (as_i8imm $format),
1791+
getVregSrcForVT<vt>.ret:$vdata,
1792+
(REG_SEQUENCE VReg_64, VGPR_32:$vindex, sub0, VGPR_32:$voffset, sub1),
1793+
SReg_128:$rsrc, SCSrc_b32:$soffset, (as_i16timm $offset), (as_i8timm $format),
17941794
(extract_glc $auxiliary), (extract_slc $auxiliary), 0, (extract_dlc $auxiliary),
17951795
(extract_swz $auxiliary))
17961796
>;

0 commit comments

Comments
 (0)