Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] Help on DAG pattern matching string"
2009 Jul 04
0
[LLVMdev] Help on DAG pattern matching string
Are there any other patterns in your TD file? If so, then one of the
ones before this pattern will match everything, and this pattern will
never be matched.
-bw
On Jul 3, 2009, at 8:27 PM, Javier Martinez wrote:
> Hello,
>
> I'm new to LLVM and I'm using it to translate from LLVM to another
> language rather than emitting actual machine code. The target language
> has
2009 Jul 06
2
[LLVMdev] Help on DAG pattern matching string
Hi Bill,
Yes, there are other patterns. I tried commenting out all the other
instructions definitions and I still get this error. After debugging
TblGen I found that the second pattern is being generated as a variant
of the first. I think the reason is that the PADD instruction is
inheriting the commutative property from ADD defined
inTargetSelectionDAG.td. The variant ends up being the same
2009 Jul 07
1
[LLVMdev] LLVM code target dependent generator question
Hello,
I am new to LLVM and I am not sure whether I am writing to the right distribution list or not. Please let me know if this is not the right distribution list.
Question:
- I am having hard time lowering ADD instructions for different purposes. Basically, I want to have different machine instruction for pointer addition vs scalar addition. I am having hard time mapping LLVM add to my machine
2009 Jul 06
0
[LLVMdev] Help on DAG pattern matching string
That's kind of strange. It might be some type of "default". However,
you probably don't want to turn off the "commutative" property, unless
it really isn't commutative. I know it's painful, but it might be best
just to slog through the TableGen code in a debugger, and see why it
is that your stuff inherits properties from the ADD in
2009 Jul 07
0
[LLVMdev] LLVM code target dependent generator question
Hello,
I am new to LLVM and I am not sure whether I am writing to the right distribution list or not. Please let me know if this is not the right distribution list.
Question:
- I am having hard time lowering ADD instructions for different purposes. Basically, I want to have different machine instruction for pointer addition vs scalar addition. I am having hard time mapping LLVM add to my machine
2004 Dec 02
3
[LLVMdev] Adding xadd instruction to X86
Hi,
I'm trying to add the xadd instruction to the X86 back end.
xadd r/m32, r32
exchanges r/m32 and r32, and loads the sum into r/m32. I'm
interested in the case where the destination operand is a
memory location.
I've added the following entry to X86InstrInfo.td:
def XADD32mr : I<0x87, MRMDestMem,
(ops i32mem:$src1, R32:$src2),
"xadd{l}
2012 Feb 10
1
[LLVMdev] Prevent DAG combiner from changing "store ConstFP, addr" to integer store
This code lives in DAGCombiner.cpp:
-------------
// Turn 'store float 1.0, Ptr' -> 'store int 0x12345678, Ptr'
if (ConstantFPSDNode *CFP = dyn_cast<ConstantFPSDNode>(Value)) {
// NOTE: If the original store is volatile, this transform must not
increase
// the number of stores. For example, on x86-32 an f64 can be stored
in one
// processor operation but
2009 Jul 06
1
[LLVMdev] Help on DAG pattern matching string
Hello, Everyone
> TargetSelectoinDAG.td and then why the two versions are "identical" in
> TableGen's mind.
That's correct. The patterns are identical since the types of operands
involved are the same. DAG pattern matching is done before regalloc,
there are not regclasses actually at that point, thus both patterns
tries to select the same thing...
--
With best regards,
2004 Dec 02
0
[LLVMdev] Adding xadd instruction to X86
On Thu, 2 Dec 2004, Brent Monroe wrote:
> I'm trying to add the xadd instruction to the X86 back end.
> xadd r/m32, r32
> exchanges r/m32 and r32, and loads the sum into r/m32. I'm
> interested in the case where the destination operand is a
> memory location.
>
> I've added the following entry to X86InstrInfo.td:
> def XADD32mr : I<0x87, MRMDestMem,
>
2016 Nov 27
5
Extending Register Rematerialization
Hello LLVM Developers,
We are working on extending currently available register rematerialization
to include cases where sequence of multiple instructions is required to
rematerialize a value.
We had a discussion on this in community mailing list and link is here:
http://lists.llvm.org/pipermail/llvm-dev/2016-September/subject.html#104777
>From the above discussion and studying the code we
2004 Jan 13
1
wine-20031212 segmention fault while wineinstall as user
hi
cant get wine compiled, tried the wineinstall script as user, these are the last lines :(
Preparing to install default Wine registry entries...
Installing default Wine registry entries...
./wineinstall: line 648: 28561 Segmentation fault $REGEDIT $DEFREG >/dev/null
Registry install failed.
permissions of /dev/null are 777
any ideas are welcome
2017 May 28
2
Pseudo-instruction that overwrites its input register
Hi,
I'd like to define a pseudo-instruction whose expansion will, as a
side-effect, overwrite an input register's value: the pseudo-instruction
ldw r1:r2, P
to load 2 bytes from memory address P is to be expaneded to
ld r1, P+
ld r2, P
where "ld _, P+" is an instruction that loads a single byte from P, and
post-increments P by one.
How can I represent this behaviour in
2013 Apr 07
2
[LLVMdev] Pat operands matching example in ppc
Hi,
How do "Pat" operands get matched? I am trying to follow the example given
in http://llvm.org/docs/CodeGenerator.html#selectiondag-process
In the latest trunk of ppcintrinfo.td following pattern is defined:
def : Pat<(pre_store i32:$rS, iPTR:$ptrreg, iaddroff:$ptroff),
(STWU $rS, iaddroff:$ptroff, $ptrreg)>;
I understand that input operand list i.e. ins of
2019 Mar 11
3
IsDead, IsKill
Thanks.
I saw the header comments but it wasn’t clear to me what the difference between those concepts is?
My slightly vague understanding is IsDef means that the register specified by this operand is set by the machine instruction. So I understand that to mean the MO will override that register?
Also things like early clobber, perhaps there is another document that clarifies some of these
2013 Apr 07
1
[LLVMdev] Pat operands matching example in ppc
On 7 April 2013 14:54, Sam Parker <S.Parker3 at lboro.ac.uk> wrote:
> Hi Anitha,
>
> memri is just describing that the address contains two components, an
> immediate and a register, and how to handle them in the instruction printer.
> The STWU expects a memri operand, and that is what is passed from the Pat.
>
My confusion is how operands of STWU from "Pat
2013 Apr 07
0
[LLVMdev] Pat operands matching example in ppc
Hi Anitha,
memri is just describing that the address contains two components, an
immediate and a register, and how to handle them in the instruction
printer. The STWU expects a memri operand, and that is what is passed
from the Pat.
Hope that helps,
Sam
On 07/04/2013 10:19, Anitha B Gollamudi wrote:
> Hi,
>
>
> How do "Pat" operands get matched? I am trying to follow
2017 May 28
2
Pseudo-instruction that overwrites its input register
On Sun, 28 May 2017, David Chisnall wrote:
>> let Constraints = "@earlyclobber $reg" in
>> def LDWRdPtr : Pseudo<(outs DREGS:$reg),
>> (ins PTRREGS:$ptrreg),
>> "ldw\t$reg, $ptrreg",
>> [(set i16:$reg, (load i16:$ptrreg))]>,
>>
2015 Jan 31
0
[LLVMdev] Encoding instructions with inconsistent formats
I can't get it to work with pattern matching. My operand is defined like so:
def LDSTPtrReg : Operand<i16>
{
let MIOperandInfo = (ops PTRREGS);
let EncoderMethod = "encodeLDSTPtrReg";
}
I am able to use it in the place of PTRREGS in the definition of the LD
instruction, but if I use it in an instruction matching pattern,
compilation fails with the error "Unknown
2015 Jan 31
3
[LLVMdev] Encoding instructions with inconsistent formats
I'm attempting to implement codegen support for the AVR ST/LD
<http://www.atmel.com/webdoc/avrassembler/avrassembler.wb_ST.html> family
of instructions.
The binary encoding is not particularly consistent -- take a look at this
table of variants of LD, along with their machine code representation:
# load 8 bits from pointer register X into general purpose Rd
ld Rd, X `1001 000d dddd
2013 Oct 01
2
[LLVMdev] Post Increment Indirect Move Instructions
Hi Hal,
Our Architecture has indirect move instruction which increments the
pointer implicitly and the target only has i8 type values. So the load
of i16 will be converted to two i8 target loads wherein after the first
load instruction, the pointer to the first i8 address will automatically
increment to point to the next i8 value. So the post increment nature is
in the Target. A normal