Displaying 20 results from an estimated 6000 matches similar to: "[LLVMdev] how to stop intrinsic being deleted"
2012 Nov 29
0
[LLVMdev] how to stop intrinsic being deleted
Hi Sam,
> So, I have inserted some calls to my intrinsic functions in a pass but there
> are being removed.
is it being deleted by the IR level optimizers or during code generation?
Are you inserting it at IR level or during code generation?
Ciao, Duncan.
The purpose of the intrinsics are to increment a specific
> register, the intrinsic call is lowered to a node that i have defined
2010 Nov 08
2
[LLVMdev] Creating tablegen patterns for intrinsics with no return value.
I have intrinsic with no return value and I need to match them to machine instructions. If the instruction has a return value I am able to correctly match it, but if I try to create some tablegen code that has no return value, the instruction gets deleted.
Here is my profile/node/pattern.
Profile:
def SDTIL_BinAtomNoRet : SDTypeProfile<0, 3, [
SDTCisPtrTy<0>, SDTCisVT<1, i32>,
2014 Jul 23
2
[LLVMdev] LowerINTRINSIC_W_CHAIN in X86
Yeah.
I agree that "Chain operand is needed if the intrinsic is reading / writing memory.”,
Just don’t know where and how to set it up.
like intrinsic “int_x86_xtest:
“
def int_x86_xtest : GCCBuiltin<"__builtin_ia32_xtest">,
Intrinsic<[llvm_i32_ty], [], []>;
“
"def X86xtest: SDNode<"X86ISD::XTEST", SDTypeProfile<1, 0,
2014 Jul 23
2
[LLVMdev] LowerINTRINSIC_W_CHAIN in X86
Hi guys,
In X86ISelLowering.cpp
I saw”
...
case Intrinsic::x86_rdrand_16:
case Intrinsic::x86_rdrand_32:
….
case Intrinsic::x86_avx512_gather_qpd_512:
case Intrinsic::x86_avx512_gather_qps_512:
..
“
those intrinsics are handled by “LowerINTRINSIC_W_CHAIN”.
How the “INTRINSIC_W_CHAIN” opCode is set instead of “INTRINSIC_WO_CHAIN”?
tks
Kevin
-------------- next part --------------
An
2010 Nov 08
0
[LLVMdev] Creating tablegen patterns for intrinsics with no return value.
On Nov 8, 2010, at 10:32 AM, Villmow, Micah wrote:
> I have intrinsic with no return value and I need to match them to machine instructions. If the instruction has a return value I am able to correctly match it, but if I try to create some tablegen code that has no return value, the instruction gets deleted.
Hi Micah,
>From your description it sounds like machine dead code elimination is
2010 Nov 08
1
[LLVMdev] Creating tablegen patterns for intrinsics with no return value.
> -----Original Message-----
> From: Jim Grosbach [mailto:grosbach at apple.com]
> Sent: Monday, November 08, 2010 10:41 AM
> To: Villmow, Micah
> Cc: LLVM Developers Mailing List
> Subject: Re: [LLVMdev] Creating tablegen patterns for intrinsics with
> no return value.
>
>
> On Nov 8, 2010, at 10:32 AM, Villmow, Micah wrote:
>
> > I have intrinsic with no
2015 Mar 09
2
[LLVMdev] LLVM Backend DAGToDAGISel INTRINSIC
I am currently working on DAGToDAGISel class for MIPS and am trying to
figure out a way to use INTRINSIC_W_CHAIN for an intrinsic which can return
a value.
My intrinsic is defined as:
Intrinsic<[llvm_i32_ty],[llvm_i32_ty,llvm_i32_ty,llvm_i32_ty,llvm_i32_ty],[IntrReadWriteArgMem]>;
i.e. it has four arguments and one return value
In DAGToDAGISel when I try to pass it with four arguments and
2016 Mar 21
3
New intrinsic property IntrOnlyWrite
On 19.03.2016 16:25, Mehdi Amini wrote:
> Hi,
>
> Can you elaborate what is the impact at the IR level?
> If the point is just about how you lower for you target, why are you needing an IR level attribute? You backend if free to specialize the lowering for any intrinsic regardless the IR level attributes.
As I explained in my reply to Philip, what I really need is a way to get
2016 Mar 19
4
New intrinsic property IntrOnlyWrite
Hi,
I'd like to draw your attention to http://reviews.llvm.org/D18291, in
which I propose a new intrinsic property for intrinsics that are lowered
to instructions that mayStore, but are neither mayLoad nor hasSideEffects.
This is relevant for AMDGPU, where we have store instructions that don't
operate on pointers. The codegen backend understands these perfectly
well as stores, and so
2016 Mar 22
1
New intrinsic property IntrOnlyWrite
> On Mar 21, 2016, at 9:14 PM, Mehdi Amini via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
>
>> On Mar 21, 2016, at 8:58 AM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
>>
>> On 19.03.2016 16:25, Mehdi Amini wrote:
>>> Hi,
>>>
>>> Can you elaborate what is the impact at the IR level?
>>> If the point is just about
2016 Mar 21
3
New intrinsic property IntrOnlyWrite
On 19.03.2016 14:47, Philip Reames wrote:
> I'm generally in support of this change. I haven't looked at the patch
> yet, but the direction seems worthwhile.
>
> Note that we already have a writeonly predicate in a few places in the
> code (BasicAA being one). If we do introduce the new intrinsic
> property, we should refactor all of these places to use the new
>
2016 Apr 15
3
[Sparc] Load address with SETHI
Hi,
I'm trying to implement __builtin_setjmp / __builtin_longjmp for Sparc processors. I think I'm very close, but I can't work out how to issue BuildMI-type instructions to load the address of the recovery location (set in setjmp) into a register using the SETHI / OR combination. I can't see any equivalent code anywhere else in Sparc.
I imagine this is similar if I try to make a
2016 Feb 02
2
creating Intrinsic DAG Node
I'm trying to 'lower' an operation that needs to create a node in the SD
that is an intrinsic call.... what is the best way to do this?
I see in the DAGBuilder it calls 'setValue' which adds to the map
NodeMap[V] where V is the key and the passed in SDValue is the value but
I'm not sure this is a good way to do it since these are local to
SelectionDAGBuilder and the
2016 Mar 22
0
New intrinsic property IntrOnlyWrite
On 03/21/2016 08:54 AM, Nicolai Hähnle wrote:
> On 19.03.2016 14:47, Philip Reames wrote:
>> I'm generally in support of this change. I haven't looked at the patch
>> yet, but the direction seems worthwhile.
>>
>> Note that we already have a writeonly predicate in a few places in the
>> code (BasicAA being one). If we do introduce the new intrinsic
2016 Feb 01
2
TableGen customized node with mayStore attribute is deleted if there is no use
Hi,
I define a customized node with customized type. The job of this customized
node is to move a value from one register class to another class. I find
that if there is no use of the destination register, this node will be
deleted from SDAG. For some reasons, I want to keep this node. So I attach
mayStore attribute to this node and I hope it will not be deleted. However,
it does not work like I
2016 Dec 02
2
Handling argument for an intrinsic
Hi, I'm trying to implement a target-agnostic intrinsic, first targeting
X86. I'm trying to map the intrinsic SD node to an instruction with a
certain target opcode that I've introduced. The issue that I'm running into
is what the correct way to lower the argument is. I've done a couple loops
on the docs so any help would be appreciated!
Some options I've explored but have
2011 Dec 21
1
[LLVMdev] Stop MachineCSE on certain instructions
Hi Evan.
The hasSideEffects method I believe operates only on Inline Assembly (IA) blocks. What if such a sequence is not part of IA?
Thanks.
Girish.
If an instruction is marked as side-effect free then it's a candidate for CSE. Try marking the instruction with hasSideEffects.
>
>Evan
>
>On Dec 17, 2011, at 12:24 PM, Johannes Birgmeier wrote:
>
>> Hello,
>>
2014 Sep 01
3
[LLVMdev] understanding DAG: node creation
Hi,
I'm not sure. But in your lowered DAG the chain nodes are the first
operands for you custom nodes, however for the other nodes the chain is
the last operand. I seem to remember that during targetlowering the
chain is the first operand and then it seems to switch over after
ISelDAG, this confused me and may have something to do with the issue
that you are seeing. I really don't
2014 Jul 18
3
[LLVMdev] how to define INTRINSIC_W_CHAIN
Hi guys,
I am working on an intrinsic function, which will write to a pointer argument.
So I am lowering it and think I need to catch it in lowerINTRINSIC_W_CHAIN, but somehow it always fall into INTRINSIC_WO_CHAIN category.
I put [IntrReadwriteArgMem] into my Intrinsic class definition, it did not help.
tried put [SDNPHasChain] into intrinsic class definition, cause errors” Element type
2014 Aug 31
2
[LLVMdev] understanding DAG: node creation
Hi,
Yes, that's what I would do. If you want LLVM and the register allocator to also know that the instruction explicitly defines the register, I would designate the register into it's own register class and have your instruction write to that class (and there will be only a single option for RA).
cheers,
Sam
Sam Parker
Research Student
Electronic Systems Design Group
Loughborough