Displaying 20 results from an estimated 700 matches similar to: "[LLVMdev] Tablegen question"
2009 Apr 15
3
[LLVMdev] Tablegen question
In IntrinsicEmitter::EmitTypeGenerate, called from
IntrinsicEmitter::EmitGenerator, here
for (unsigned j = 0; j != N; ++j) {
OS << " ArgTys.push_back(";
EmitTypeGenerate(OS, ParamTys[j], ArgNo);
OS << ");\n";
}
I'm hitting this assertion:
if (ArgType->isSubClassOf("LLVMMatchType")) {
unsigned Number =
2009 Apr 15
0
[LLVMdev] Tablegen question
That's a bug. I'm working on a fix....
On Apr 15, 2009, at 10:16 AM, Villmow, Micah wrote:
> In IntrinsicEmitter::EmitTypeGenerate, called from
> IntrinsicEmitter::EmitGenerator, here
> for (unsigned j = 0; j != N; ++j) {
> OS << " ArgTys.push_back(";
> EmitTypeGenerate(OS, ParamTys[j], ArgNo);
> OS << ");\n";
> }
2009 Apr 15
3
[LLVMdev] Tablegen question
Oops. That was premature. I think your original question was on the
right track. TableGen distinguishes between known and "overloaded"
types (like "llvm_anyfloat_ty" in your example). The overloaded types
are numbered separately, and the argument to LLVMMatchType is an index
into these overloaded types, ignoring the known types. So, in your
case, the first
2009 Apr 15
0
[LLVMdev] Tablegen question
On Apr 15, 2009, at 9:29 AM, Villmow, Micah wrote:
> I have this intrinsic definition for llvm.
> def int_opencl_math_fdistance_fast : Intrinsic<[llvm_float_ty],
> [llvm_anyfloat_ty, LLVMMatchType<0>]>;
>
>
> Can someone explain what LLVMMatchType does and how to specify it
> to match the first argument and not the return value?
2009 Apr 15
0
[LLVMdev] Tablegen question
I still think there is a bug somewhere, but not sure where yet.
This is what is generated in intrinsic.gen:
case Intrinsic::opencl_math_fdistance: //
llvm.opencl.math.fdistance
ResultTy = Type::FloatTy;
ArgTys.push_back(Tys[0]);
ArgTys.push_back(Tys[0]);
break;
This is the intrinsic definition:
def int_opencl_math_fdistance_fast : Intrinsic<[llvm_float_ty],
2007 Feb 05
0
[LLVMdev] automatically generating intrinsic declarations
On Mon, 5 Feb 2007, Dan Gohman wrote:
> LLVM knows what all the types of the intrinsic functions are; I thought,
> why are users (including llvm-gcc...) required to duplicate all this
> information in order to use them? I mean in order to call
> getOrInsertFunction to get declarations for them.
That is an excellent question! :) In the bad old days, we used to allow
intrinsics
2007 Feb 05
2
[LLVMdev] automatically generating intrinsic declarations
LLVM knows what all the types of the intrinsic functions are; I thought,
why are users (including llvm-gcc...) required to duplicate all this
information in order to use them? I mean in order to call getOrInsertFunction
to get declarations for them.
So I wrote this patch, which allows all this code to be generated
automatically. Is this a good approach?
Dan
--
Dan Gohman, Cray Inc. <djg at
2009 Apr 15
1
[LLVMdev] Tablegen question
On Wed, Apr 15, 2009 at 11:15 AM, Villmow, Micah <Micah.Villmow at amd.com> wrote:
> I still think there is a bug somewhere, but not sure where yet.
> This is what is generated in intrinsic.gen:
> case Intrinsic::opencl_math_fdistance: //
> llvm.opencl.math.fdistance
> ResultTy = Type::FloatTy;
> ArgTys.push_back(Tys[0]);
> ArgTys.push_back(Tys[0]);
2009 Apr 15
2
[LLVMdev] Tablegen question
On Apr 15, 2009, at 11:15 AM, Villmow, Micah wrote:
> I still think there is a bug somewhere, but not sure where yet.
> This is what is generated in intrinsic.gen:
> case Intrinsic::opencl_math_fdistance: //
> llvm.opencl.math.fdistance
> ResultTy = Type::FloatTy;
> ArgTys.push_back(Tys[0]);
> ArgTys.push_back(Tys[0]);
> break;
OK. That looks right to me.
2011 Nov 22
2
[LLVMdev] PTX builtin functions.
Alberto,
The AMDIL backend solves your problem with intrinsic overloading this way:
def int_AMDIL_mad : GCCBuiltin<"__amdil_mad">, TernaryIntFloat;
Where TernaryIntFloat is defined as:
class TernaryIntFloat :
Intrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>,
LLVMMatchType<0>, LLVMMatchType<0>], []>;
This allows us to write a
2009 Apr 15
0
[LLVMdev] Tablegen question
If I force it to use v2f32 for my register class, it still fails with:
d:\hq\main\sw\appeng\tools\hpc\opencl\compiler\llvm\test\AMDIL>TableGen.
exe -gen
-dag-isel -I../../include/ test.td > output
GPRV2F32:v2f32:$src1 MACRO_DISTANCE_FAST_v2f32: (set
GPRF32:f32:$dst, (i
ntrinsic_w_chain:f32 84:iPTR, GPRV2F32:v2f32:$src0,
GPRV2F32:v2f32:$src1))
TableGen.exe: In
2011 Nov 23
2
[LLVMdev] PTX builtin functions.
On Nov 23, 2011 6:57 AM, "Alberto Magni" <alberto.magni86 at gmail.com> wrote:
>
> On Tue, Nov 22, 2011 at 5:01 PM, Villmow, Micah <Micah.Villmow at amd.com>
wrote:
> > Alberto,
> > The AMDIL backend solves your problem with intrinsic overloading this
way:
> > def int_AMDIL_mad : GCCBuiltin<"__amdil_mad">, TernaryIntFloat;
>
2011 Nov 23
0
[LLVMdev] PTX builtin functions.
On Tue, Nov 22, 2011 at 5:01 PM, Villmow, Micah <Micah.Villmow at amd.com> wrote:
> Alberto,
> The AMDIL backend solves your problem with intrinsic overloading this way:
> def int_AMDIL_mad : GCCBuiltin<"__amdil_mad">, TernaryIntFloat;
>
> Where TernaryIntFloat is defined as:
> class TernaryIntFloat :
> Intrinsic<[llvm_anyfloat_ty],
2011 Nov 23
0
[LLVMdev] PTX builtin functions.
On Nov 23, 2011 8:33 AM, "Justin Holewinski" <justin.holewinski at gmail.com>
wrote:
>
>
> On Nov 23, 2011 6:57 AM, "Alberto Magni" <alberto.magni86 at gmail.com>
wrote:
> >
> > On Tue, Nov 22, 2011 at 5:01 PM, Villmow, Micah <Micah.Villmow at amd.com>
wrote:
> > > Alberto,
> > > The AMDIL backend solves your problem
2011 Dec 04
2
[LLVMdev] PTX builtin functions.
Hi Justin,
sorry for the delay, I have been busy.
Micah's proposal requires to move the definitions of the intrinsics
from include/llvm/IntrinsicsPTX.td to lib/Target/PTX/PTXIntrinsics.td
thus allowing the generation of the file PTXGenIntrinsics.inc which
will be included by PTXIntrinsicInfo.cpp.
This is a quite big modification, do you agree with this ?
Or do you have a better solution.
2011 Dec 08
3
[LLVMdev] PTX builtin functions.
It is my understanding that all you need to do is specify let isTarget = 1 in your .td file and it will generate target specific intrinsics. This should allow you to keep the IntrinsicsPTX.td file in the same location.
Micah
From: Justin Holewinski [mailto:justin.holewinski at gmail.com]
Sent: Monday, December 05, 2011 6:13 AM
To: Alberto Magni
Cc: Villmow, Micah; LLVM Developers Mailing List
2007 Feb 06
1
[LLVMdev] automatically generating intrinsic declarations
On Mon, Feb 05, 2007 at 12:28:56PM -0800, Chris Lattner wrote:
> On Mon, 5 Feb 2007, Dan Gohman wrote:
>
> > LLVM knows what all the types of the intrinsic functions are; I thought,
> > why are users (including llvm-gcc...) required to duplicate all this
> > information in order to use them? I mean in order to call
> > getOrInsertFunction to get declarations for
2011 Dec 05
0
[LLVMdev] PTX builtin functions.
On Sun, Dec 4, 2011 at 1:10 PM, Alberto Magni <alberto.magni86 at gmail.com>wrote:
> Hi Justin,
>
> sorry for the delay, I have been busy.
>
> Micah's proposal requires to move the definitions of the intrinsics
> from include/llvm/IntrinsicsPTX.td to lib/Target/PTX/PTXIntrinsics.td
> thus allowing the generation of the file PTXGenIntrinsics.inc which
> will be
2011 Dec 08
0
[LLVMdev] PTX builtin functions.
On Thu, Dec 8, 2011 at 11:36 AM, Villmow, Micah <Micah.Villmow at amd.com>wrote:
> It is my understanding that all you need to do is specify let isTarget =
> 1 in your .td file and it will generate target specific intrinsics. This
> should allow you to keep the IntrinsicsPTX.td file in the same location.
>
So we keep the intrinsics defined in include/llvm/IntrinsicsPTX.td?
2011 Nov 19
1
[LLVMdev] llvm_anyint_ty clarification
Hello everyone,
I am trying to implement the max PTX builtin function.
This is defined in the following way:
"max.type d, a, b;"
where .type can be:
.type = { .u16, .u32, .u64,
.s16, .s32, .s64 };
The presence of multiple types requires llvm.ptx.max
to be overloaded for i16, i32 and i64.
So I think that the right way to define the intrinsic would be
(as in the