Displaying 20 results from an estimated 300 matches similar to: "[LLVMdev] Purpose of (XXX)Wrapper"
2012 Jul 25
2
[LLVMdev] Purpose of MSP430Wrapper
Hello,
I'm considering creating an LLVM backend for a 16 bit processor and
modelling it around the (experimental) MSP430 back end.
When reviewing MSP430InstrInfo.td I see
def MSP430Wrapper : SDNode<"MSP430ISD::Wrapper", SDT_MSP430Wrapper>;
and can see in MSP430ISelLowering.cpp that
ISD::GlobalAddress:
ISD::BlockAddress:
ISD::ExternalSymbol
all get lowered to
2012 Jul 25
0
[LLVMdev] Purpose of MSP430Wrapper
On 25 Jul 2012, at 04:49, Paul Shortis wrote:
> Hello,
>
> I'm considering creating an LLVM backend for a 16 bit processor and
> modelling it around the (experimental) MSP430 back end.
>
> When reviewing MSP430InstrInfo.td I see
>
> def MSP430Wrapper : SDNode<"MSP430ISD::Wrapper", SDT_MSP430Wrapper>;
>
> and can see in MSP430ISelLowering.cpp
2012 Jul 25
2
[LLVMdev] Purpose of MSP430Wrapper
On 25/07/12 18:21, Richard Osborne wrote:
> On 25 Jul 2012, at 04:49, Paul Shortis wrote:
>
>
>> Hello,
>>
>> I'm considering creating an LLVM backend for a 16 bit processor and
>> modelling it around the (experimental) MSP430 back end.
>>
>> When reviewing MSP430InstrInfo.td I see
>>
>> def MSP430Wrapper :
2010 Jun 21
0
[LLVMdev] r98938 broke argument passing on MSP430?
On Fri, Jun 11, 2010 at 2:55 PM, Ben Ransford <ransford at cs.umass.edu> wrote:
> Yesterday I noticed that MSP430 argument passing is broken in trunk;
> see http://llvm.org/PR6573 for details and testcases. The problem is
> that calls aren't being preceded by instructions that put the
> arguments into registers. I backtracked my working copy and then
> stepped forward
2012 Jul 25
0
[LLVMdev] Purpose of MSP430Wrapper
On 25/07/12 12:14, Paul Shortis wrote:
> Thanks Richard,
>
> You're correct, they are similar. In the XCoreInstrInfo.td patterns
> what I'm struggling with is why this ....
>
> def BL_lu10 : _FLU10<
> (outs),
> (ins calltarget:$target, variable_ops),
> "bl $target",
>
2010 Jun 11
2
[LLVMdev] r98938 broke argument passing on MSP430?
Hello,
Yesterday I noticed that MSP430 argument passing is broken in trunk;
see http://llvm.org/PR6573 for details and testcases. The problem is
that calls aren't being preceded by instructions that put the
arguments into registers. I backtracked my working copy and then
stepped forward until it broke between r98937 and r98938. Refining
further, I found that rolling back the
2011 Apr 26
0
[LLVMdev] Symbol folding with MC
On Apr 26, 2011, at 1:27 PM, Borja Ferrer wrote:
> Hello Jim thanks for the reply,
>
> For normal additions with immediates I've done the same as ARM does, basically transforming add(x, imm) nodes to sub(x, -imm) with a pattern in the .td file like this:
> def : Pat<(add DLDREGS:$src1, imm:$src2),
> (SUBIWRdK DLDREGS:$src1, (imm16_neg_XFORM imm:$src2))>;
2011 Apr 27
1
[LLVMdev] Symbol folding with MC
Thanks Jim, I've implemented the negation part successfully :) maybe the
second part could be a possible feature request so others could use it
aswell?
2011/4/27 Jim Grosbach <grosbach at apple.com>
>
> On Apr 26, 2011, at 1:27 PM, Borja Ferrer wrote:
>
> > Hello Jim thanks for the reply,
> >
> > For normal additions with immediates I've done the same as
2009 Apr 20
2
[LLVMdev] A few questions from a newbie
Hi Jacob, thank you for your reply.
Your suggestion works! But instead of using the Pat<>, I am using
def MOVE_ADDR : MYInst<(outs Int32Regs:$dst), (ins i32mem:$a),
"move $dst, $a;",
[(set Int32Regs:$dst, (Wrapper tglobaladdr:$a))]>;
I don't quite understand what the semantics of Pat in general. Could you
please explain what
2016 Jan 15
2
Expanding a PseudoOp and accessing the DAG
On Thu, Jan 14, 2016 at 6:05 AM, Krzysztof Parzyszek <
kparzysz at codeaurora.org> wrote:
> On 1/13/2016 4:47 PM, Phil Tomson wrote:
>
>>
>> First off, I got this idea from the LLVM Cookbook chapter 8: Writing an
>> LLVM Backend: Lowering to multiple instructions. (now I'm having my
>> doubts as to whether this is the right approach)
>>
>
>
2016 Jan 15
2
Expanding a PseudoOp and accessing the DAG
On 1/15/2016 1:08 PM, Phil Tomson wrote:
>
> Ah, I see, the defm is a multi-class so I needed to change it to:
>
> def: Pat<(load (XSTGADDR_NORMAL tglobaladdr:$addr)),
> (LOADI64_RI tglobaladdr:$addr, 0)>;
> // Match load from a relocatable address to a load with GRP:
> def: Pat<(load (XSTGADDR_USE_GRP tglobaladdr:$addr)),
> (LOADI64_RI
2011 Apr 26
2
[LLVMdev] Symbol folding with MC
Hello Jim thanks for the reply,
For normal additions with immediates I've done the same as ARM does,
basically transforming add(x, imm) nodes to sub(x, -imm) with a pattern in
the .td file like this:
def : Pat<(add DLDREGS:$src1, imm:$src2),
(SUBIWRdK DLDREGS:$src1, (imm16_neg_XFORM imm:$src2))>;
Now, the typical pattern concerning additions with global addresses looks
2009 Apr 20
0
[LLVMdev] A few questions from a newbie
On 20/04/2009, at 07.35, Peter Bacon wrote:
> Hello, I am learning to write a new backend for LLVM and have a few
> simple questions.
Hi Peter,
I am a newbie too, but I have recently dealt with the same issues.
> 1) What are the differences between 'constant' and 'targetconstant',
> 'globaladdress' and 'targetglobaladdress'? It is not clear from
2013 Apr 12
1
[LLVMdev] Problem with Store of i8 in a global address
Hi,
I am creating a new backend for a custom microcontroller.
In order to create the backend I am modifying from Mips backend.
My architecture has a store instruction with direct address mode. It
accepts two arguments: source register and address (immediate). This
instruction is not available in Mips, but it is in Hexagon, so I copied
from Hexagon the following, adapting it to my registers:
-
2007 Aug 03
1
[LLVMdev] Adding intrinsic with variable argument list HOWTO.
Hi, I've been hitting my head to wall two days now. This is practically
my first contact with InstrInfo.td files. Is there any tutorial how to
make this kind of stuff? Or should I just keep on studying Sparc and
other backends?
So I added new intrinsic to llvm/include/llvm/TCEInstrinsics.td:
def int_tce_customop :
Intrinsic<[llvm_void_ty, llvm_ptr_ty, llvm_vararg_ty], [],
2016 Jan 13
2
Expanding a PseudoOp and accessing the DAG
On Wed, Jan 13, 2016 at 2:08 PM, Krzysztof Parzyszek via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> On 1/13/2016 2:26 PM, Phil Tomson via llvm-dev wrote:
>
>> I've got this PseudoOp defined:
>>
>> def SDT_RELADDR : SDTypeProfile<1, 2, [SDTCisInt<0>, SDTCisInt<1>]>;
>> def XSTGRELADDR :
2012 Apr 19
0
[LLVMdev] Target Dependent Hexagon Packetizer patch
Sure I will split it and put it in two patches.
Give me few hours. I need to test those patches.
Sirish
On 4/19/2012 8:40 AM, Tom Stellard wrote:
> On Wed, Apr 18, 2012 at 11:18:05PM -0500, Sirish Pande wrote:
>> Hi,
>>
>> Here's a patch for Hexagon Packetizer for review. This patch does
>> not yield any warnings.
>>
> Would it be possible to split this
2016 Jan 15
2
Expanding a PseudoOp and accessing the DAG
On 1/15/2016 2:57 PM, Phil Tomson wrote:
>
>
> I see the following in my SelectCode (in XSTGGenDGISel.inc):
>
>
> /*2235*/ OPC_SwitchOpcode /*2 cases */, 27,
> TARGET_VAL(XSTGISD::ADDR_NORMAL),// ->2266
> /*2239*/ OPC_RecordChild0, // #1 = $addr
> /*2240*/ OPC_MoveChild, 0,
> /*2242*/ OPC_CheckOpcode,
2009 Apr 20
2
[LLVMdev] A few questions from a newbie
Hello, I am learning to write a new backend for LLVM and have a few simple
questions.
1) What are the differences between 'constant' and 'targetconstant',
'globaladdress' and 'targetglobaladdress'? It is not clear from the document
when and which should be used.
2) On the processor I am working on, there is a 'move reg, mem_addr'
instruction.
When I try
2016 Jan 13
2
Expanding a PseudoOp and accessing the DAG
I've got this PseudoOp defined:
def SDT_RELADDR : SDTypeProfile<1, 2, [SDTCisInt<0>, SDTCisInt<1>]>;
def XSTGRELADDR : SDNode<"XSTGISD::RELADDR", SDT_RELADDR>;
let Constraints = "$dst = $addr" in { //, Uses= [GRP] in {
def RelAddr : XSTGPseudo< (outs GPRC:$dst),
(ins i64imm:$spoff,