Displaying 20 results from an estimated 700 matches similar to: "[LLVMdev] Operand order in dag pattern matching in td files"
2012 Nov 16
0
[LLVMdev] Operand order in dag pattern matching in td files
On 16 November 2012 13:41, Anitha B Gollamudi <anitha.boyapati at gmail.com> wrote:
> Hi,
>
> I have a simple question w.r.t the order of operands used in dag
> pattern matching in target files. Some of them seem intuitive. But I
> want to get it clarified anyway. I am using a pattern from
> X86InstrFMA.td in the below example. Consider FMA3 pattern
> (simplified).
>
2012 Nov 16
1
[LLVMdev] Operand order in dag pattern matching in td files
You've unfortunately chosen a complex example.
Your second question is needs be answered first. null_frag causes the
pattern to be dropped.
Now having covered that the reason the operands are in the order they are
is because the only instruction that doesn't use null_frag is this one
defm r213 : fma3s_rm<opc213, !strconcat(OpStr, !strconcat("213", PackTy)),
2012 Nov 08
2
[LLVMdev] X86 Tablegen Description and VEX.W
Hi,
A question from r162999 changes:
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrFMA.td?r1=162999&r2=162998&pathrev=162999
For the multiclass "fma4s", why is "mr" not inherited from "VEX_W" and
"MemOp4" like those of "rm" or "rr" ?
multiclass fma4s< >
...
def mr : FMA4<opc, MRMSrcMem, (outs
2012 Nov 08
0
[LLVMdev] X86 Tablegen Description and VEX.W
On Wed, Nov 7, 2012 at 10:52 PM, Anitha Boyapati
<anitha.boyapati at gmail.com>wrote:
...
> For the multiclass "fma4s", why is "mr" not inherited from "VEX_W" and
> "MemOp4" like those of "rm" or "rr" ?
>
Hey Anitha,
The VEX.W bit is used to denote operand order. In other words, this bit
allows for a memop to be used as
2012 Nov 08
2
[LLVMdev] X86 Tablegen Description and VEX.W
On 8 November 2012 11:12, Cameron McInally <cameron.mcinally at nyu.edu> wrote:
> On Wed, Nov 7, 2012 at 10:52 PM, Anitha Boyapati <anitha.boyapati at gmail.com>
> wrote:
> ...
>>
>> For the multiclass "fma4s", why is "mr" not inherited from "VEX_W" and
>> "MemOp4" like those of "rm" or "rr" ?
>
2013 Jul 30
3
[LLVMdev] Help with promotion/custom handling of MUL i32 and MUL i64
I'll try to run through the scenario:
64-bit register type target (all registers have 64 bits).
all 32-bits are getting promoted to 64-bit integers
Problem:
MUL on i32 is getting promoted to MUL on i64
MUL on i64 is getting expanded to a library call in compiler-rt
the problem is that MUL32 gets promoted and then converted into a
subroutine call because it is now type i64, even though
2013 Jul 30
0
[LLVMdev] Help with promotion/custom handling of MUL i32 and MUL i64
On Tue, Jul 30, 2013 at 01:14:16PM -0600, Dan wrote:
> I'll try to run through the scenario:
>
>
> 64-bit register type target (all registers have 64 bits).
>
> all 32-bits are getting promoted to 64-bit integers
>
> Problem:
>
> MUL on i32 is getting promoted to MUL on i64
>
> MUL on i64 is getting expanded to a library call in compiler-rt
>
>
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
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
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 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 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 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
2013 Jul 31
2
[LLVMdev] Help with promotion/custom handling of MUL i32 and MUL i64
Thanks for the information, allow maybe I can re-phrase the question or
issue.
Assume 64-bit register types, but integer is 32-bit. Already have table
generation of the 64-bit operation descriptions.
How about this modified approach?
Before type-legalization, I'd really like to move all MUL I64 to a
subroutine call of my own choice.
This would be a form of customization, but I want this
2012 Jan 10
1
[LLVMdev] SelectionDAG
Hello,
I am working on a AVR backend and have a version up and running that will convert LLVM IR code to assembly code for my target. I have written a bunch of instructions from the AVR Instruction Set in AVRInstrInfo.td and not much else. In a simple test case I am attempting to compile (if that is the word you are supposed to use for this operation) test.ll:
define i8 @foo(i8 %a, i8 %b) {
2010 Mar 13
3
[LLVMdev] Targeting low level embedded
I'm new to LLVM and I'm trying to set it up to target a low level
embedded device with no OS. Therefore the final program needs to
perform variable initialization and be located at a certain address
location. Here is my basic flow:
Compile C to bytecode:
$ llvm-gcc -emit-llvm -c src1.c src2.c src3.c
Consolidate to one bytecode file:
$ llvm-link -o all.o src1.c src2.o src3.o
Emit
2009 Dec 31
1
[PATCH] Autogenerate uureg opcode macros
Also some missing _src()s and cosmetic changes.
---
src/gallium/programs/galliumut/Makefile | 5 +
.../programs/galliumut/gen_uureg_opcodes.sh | 29 +++
src/gallium/programs/galliumut/uureg.h | 196 ++++----------------
3 files changed, 71 insertions(+), 159 deletions(-)
create mode 100644 src/gallium/programs/galliumut/gen_uureg_opcodes.sh
diff --git
2015 Aug 25
2
[LLVMdev] TableGen Register Class not matching for MI in 3.6
Here is the instruction in question:
multiclass AD<string asmstr, SDPatternOperator OpNode, RegisterClass
srcAReg,
RegisterClass dstReg, ValueType srcAType,
ValueType dstType, Operand ImmOd, ImmLeaf imm_type>
{
def REG_REG : SetADInOut<asmstr, srcAReg, dstReg,
[(set dstReg:$dstD, (OpNode srcAReg:$srcA))]>;
def IMM_REG :