forked from OSchip/llvm-project
[IR] [TableGen] Cleanup pass over the IR TableGen files.
This patch includes intrinsics for AMDGPU. Differential Revision: https://reviews.llvm.org/D90946
This commit is contained in:
parent
45ddb245c5
commit
2af0edefd6
|
@ -1,3 +1,15 @@
|
|||
//===- Attributes.td - Defines all LLVM attributes ---------*- tablegen -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines all the LLVM attributes.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
/// Attribute base class.
|
||||
class Attr<string S> {
|
||||
// String representation of this attribute in the IR.
|
||||
|
|
|
@ -17,7 +17,7 @@ include "llvm/CodeGen/SDNodeProperties.td"
|
|||
// Properties we keep track of for intrinsics.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
class IntrinsicProperty<bit is_default = 0> {
|
||||
class IntrinsicProperty<bit is_default = false> {
|
||||
bit IsDefault = is_default;
|
||||
}
|
||||
|
||||
|
@ -161,7 +161,7 @@ def IntrHasSideEffects : IntrinsicProperty;
|
|||
|
||||
class LLVMType<ValueType vt> {
|
||||
ValueType VT = vt;
|
||||
int isAny = 0;
|
||||
int isAny = false;
|
||||
}
|
||||
|
||||
class LLVMQualPointerType<LLVMType elty, int addrspace>
|
||||
|
@ -177,7 +177,7 @@ class LLVMAnyPointerType<LLVMType elty>
|
|||
: LLVMType<iPTRAny>{
|
||||
LLVMType ElTy = elty;
|
||||
|
||||
let isAny = 1;
|
||||
let isAny = true;
|
||||
}
|
||||
|
||||
// Match the type of another intrinsic parameter. Number is an index into the
|
||||
|
@ -226,7 +226,7 @@ class LLVMSubdivide4VectorType<int num> : LLVMMatchType<num>;
|
|||
class LLVMVectorOfBitcastsToInt<int num> : LLVMMatchType<num>;
|
||||
|
||||
def llvm_void_ty : LLVMType<isVoid>;
|
||||
let isAny = 1 in {
|
||||
let isAny = true in {
|
||||
def llvm_any_ty : LLVMType<Any>;
|
||||
def llvm_anyint_ty : LLVMType<iAny>;
|
||||
def llvm_anyfloat_ty : LLVMType<fAny>;
|
||||
|
@ -342,7 +342,7 @@ class Intrinsic<list<LLVMType> ret_types,
|
|||
list<IntrinsicProperty> intr_properties = [],
|
||||
string name = "",
|
||||
list<SDNodeProperty> sd_properties = [],
|
||||
bit disable_default_attributes = 1> : SDPatternOperator {
|
||||
bit disable_default_attributes = true> : SDPatternOperator {
|
||||
string LLVMName = name;
|
||||
string TargetPrefix = ""; // Set to a prefix for target-specific intrinsics.
|
||||
list<LLVMType> RetTypes = ret_types;
|
||||
|
@ -354,10 +354,10 @@ class Intrinsic<list<LLVMType> ret_types,
|
|||
// IntrinsicProperty<1>
|
||||
bit DisableDefaultAttributes = disable_default_attributes;
|
||||
|
||||
bit isTarget = 0;
|
||||
bit isTarget = false;
|
||||
}
|
||||
|
||||
// Intrinisc with default attributes (disable_default_attributes = 0).
|
||||
// Intrinisc with default attributes (disable_default_attributes = false).
|
||||
class DefaultAttrsIntrinsic<list<LLVMType> ret_types,
|
||||
list<LLVMType> param_types = [],
|
||||
list<IntrinsicProperty> intr_properties = [],
|
||||
|
|
|
@ -18,7 +18,7 @@ class AMDGPUReadPreloadRegisterIntrinsicNamed<string name>
|
|||
|
||||
// Used to tag image and resource intrinsics with information used to generate
|
||||
// mem operands.
|
||||
class AMDGPURsrcIntrinsic<int rsrcarg, bit isimage = 0> {
|
||||
class AMDGPURsrcIntrinsic<int rsrcarg, bit isimage = false> {
|
||||
int RsrcArg = rsrcarg;
|
||||
bit IsImage = isimage;
|
||||
}
|
||||
|
@ -554,7 +554,7 @@ class AMDGPUSampleVariant<string ucmod, string lcmod, list<AMDGPUArg> extra_addr
|
|||
|
||||
// {offset} {bias} {z-compare}
|
||||
list<AMDGPUArg> ExtraAddrArgs = extra_addr;
|
||||
bit Gradients = 0;
|
||||
bit Gradients = false;
|
||||
|
||||
// Name of the {lod} or {clamp} argument that is appended to the coordinates,
|
||||
// if any.
|
||||
|
@ -594,7 +594,7 @@ defset list<AMDGPUSampleVariant> AMDGPUSampleVariants = {
|
|||
defm AMDGPUSample : AMDGPUSampleHelper_Compare<"_LZ", "_lz", []>;
|
||||
}
|
||||
|
||||
let Gradients = 1 in {
|
||||
let Gradients = true in {
|
||||
defm AMDGPUSample : AMDGPUSampleHelper_Clamp<"_D", "_d", []>;
|
||||
defm AMDGPUSample : AMDGPUSampleHelper_Clamp<"_CD", "_cd", []>;
|
||||
}
|
||||
|
@ -609,12 +609,12 @@ class AMDGPUDimProfile<string opmod,
|
|||
string OpMod = opmod; // the corresponding instruction is named IMAGE_OpMod
|
||||
|
||||
// These are intended to be overwritten by subclasses
|
||||
bit IsSample = 0;
|
||||
bit IsAtomic = 0;
|
||||
bit IsSample = false;
|
||||
bit IsAtomic = false;
|
||||
list<LLVMType> RetTypes = [];
|
||||
list<AMDGPUArg> DataArgs = [];
|
||||
list<AMDGPUArg> ExtraAddrArgs = [];
|
||||
bit Gradients = 0;
|
||||
bit Gradients = false;
|
||||
string LodClampMip = "";
|
||||
|
||||
int NumRetAndDataAnyTypes =
|
||||
|
@ -625,7 +625,7 @@ class AMDGPUDimProfile<string opmod,
|
|||
arglistconcat<[ExtraAddrArgs,
|
||||
!if(Gradients, dim.GradientArgs, []),
|
||||
!listconcat(!if(IsSample, dim.CoordSliceArgs, dim.CoordSliceIntArgs),
|
||||
!if(!eq(LodClampMip, ""),
|
||||
!if(!empty(LodClampMip),
|
||||
[]<AMDGPUArg>,
|
||||
[AMDGPUArg<LLVMMatchType<0>, LodClampMip>]))],
|
||||
NumRetAndDataAnyTypes>.ret;
|
||||
|
@ -655,7 +655,7 @@ class AMDGPUDimProfileCopy<AMDGPUDimProfile base> : AMDGPUDimProfile<base.OpMod,
|
|||
class AMDGPUDimSampleProfile<string opmod,
|
||||
AMDGPUDimProps dim,
|
||||
AMDGPUSampleVariant sample> : AMDGPUDimProfile<opmod, dim> {
|
||||
let IsSample = 1;
|
||||
let IsSample = true;
|
||||
let RetTypes = [llvm_any_ty];
|
||||
let ExtraAddrArgs = sample.ExtraAddrArgs;
|
||||
let Gradients = sample.Gradients;
|
||||
|
@ -666,7 +666,7 @@ class AMDGPUDimNoSampleProfile<string opmod,
|
|||
AMDGPUDimProps dim,
|
||||
list<LLVMType> retty,
|
||||
list<AMDGPUArg> dataargs,
|
||||
bit Mip = 0> : AMDGPUDimProfile<opmod, dim> {
|
||||
bit Mip = false> : AMDGPUDimProfile<opmod, dim> {
|
||||
let RetTypes = retty;
|
||||
let DataArgs = dataargs;
|
||||
let LodClampMip = !if(Mip, "mip", "");
|
||||
|
@ -677,7 +677,7 @@ class AMDGPUDimAtomicProfile<string opmod,
|
|||
list<AMDGPUArg> dataargs> : AMDGPUDimProfile<opmod, dim> {
|
||||
let RetTypes = [llvm_anyint_ty];
|
||||
let DataArgs = dataargs;
|
||||
let IsAtomic = 1;
|
||||
let IsAtomic = true;
|
||||
}
|
||||
|
||||
class AMDGPUDimGetResInfoProfile<AMDGPUDimProps dim> : AMDGPUDimProfile<"GET_RESINFO", dim> {
|
||||
|
@ -690,7 +690,7 @@ class AMDGPUDimGetResInfoProfile<AMDGPUDimProps dim> : AMDGPUDimProfile<"GET_RES
|
|||
// Helper class for figuring out image intrinsic argument indexes.
|
||||
class AMDGPUImageDimIntrinsicEval<AMDGPUDimProfile P_> {
|
||||
int NumDataArgs = !size(P_.DataArgs);
|
||||
int NumDmaskArgs = !if(P_.IsAtomic, 0, 1);
|
||||
int NumDmaskArgs = !not(P_.IsAtomic);
|
||||
int NumExtraAddrArgs = !size(P_.ExtraAddrArgs);
|
||||
int NumVAddrArgs = !size(P_.AddrArgs);
|
||||
int NumGradientArgs = !if(P_.Gradients, !size(P_.Dim.GradientArgs), 0);
|
||||
|
@ -757,7 +757,7 @@ defset list<AMDGPUImageDimIntrinsic> AMDGPUImageDimIntrinsics = {
|
|||
list<AMDGPUArg> dataargs,
|
||||
list<IntrinsicProperty> props,
|
||||
list<SDNodeProperty> sdnodeprops,
|
||||
bit Mip = 0> {
|
||||
bit Mip = false> {
|
||||
foreach dim = AMDGPUDims.NoMsaa in {
|
||||
def !strconcat(NAME, "_", dim.Name)
|
||||
: AMDGPUImageDimIntrinsic<
|
||||
|
@ -771,7 +771,7 @@ defset list<AMDGPUImageDimIntrinsic> AMDGPUImageDimIntrinsics = {
|
|||
list<AMDGPUArg> dataargs,
|
||||
list<IntrinsicProperty> props,
|
||||
list<SDNodeProperty> sdnodeprops,
|
||||
bit Mip = 0> {
|
||||
bit Mip = false> {
|
||||
foreach dim = AMDGPUDims.All in {
|
||||
def !strconcat(NAME, "_", dim.Name)
|
||||
: AMDGPUImageDimIntrinsic<
|
||||
|
@ -806,7 +806,7 @@ defset list<AMDGPUImageDimIntrinsic> AMDGPUImageDimIntrinsics = {
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
multiclass AMDGPUImageDimSampleDims<string opmod,
|
||||
AMDGPUSampleVariant sample,
|
||||
bit NoMem = 0> {
|
||||
bit NoMem = false> {
|
||||
foreach dim = AMDGPUDims.NoMsaa in {
|
||||
def !strconcat(NAME, "_", dim.Name) : AMDGPUImageDimIntrinsic<
|
||||
AMDGPUDimSampleProfile<opmod, dim, sample>,
|
||||
|
@ -992,7 +992,7 @@ class AMDGPUStructBufferStore<LLVMType data_ty = llvm_any_ty> : Intrinsic <
|
|||
def int_amdgcn_struct_buffer_store_format : AMDGPUStructBufferStore;
|
||||
def int_amdgcn_struct_buffer_store : AMDGPUStructBufferStore;
|
||||
|
||||
class AMDGPURawBufferAtomic<LLVMType data_ty = llvm_any_ty, bit NoRtn = 0> : Intrinsic <
|
||||
class AMDGPURawBufferAtomic<LLVMType data_ty = llvm_any_ty, bit NoRtn = false> : Intrinsic <
|
||||
!if(NoRtn, [], [data_ty]),
|
||||
[!if(NoRtn, data_ty, LLVMMatchType<0>), // vdata(VGPR)
|
||||
llvm_v4i32_ty, // rsrc(SGPR)
|
||||
|
@ -1027,7 +1027,7 @@ def int_amdgcn_raw_buffer_atomic_cmpswap : Intrinsic<
|
|||
// gfx908 intrinsic
|
||||
def int_amdgcn_raw_buffer_atomic_fadd : AMDGPURawBufferAtomic<llvm_anyfloat_ty>;
|
||||
|
||||
class AMDGPUStructBufferAtomic<LLVMType data_ty = llvm_any_ty, bit NoRtn = 0> : Intrinsic <
|
||||
class AMDGPUStructBufferAtomic<LLVMType data_ty = llvm_any_ty, bit NoRtn = false> : Intrinsic <
|
||||
!if(NoRtn, [], [data_ty]),
|
||||
[!if(NoRtn, data_ty, LLVMMatchType<0>), // vdata(VGPR)
|
||||
llvm_v4i32_ty, // rsrc(SGPR)
|
||||
|
|
Loading…
Reference in New Issue