Displaying 20 results from an estimated 500 matches similar to: "[LLVMdev] Signed/Unsigned Instruction selection."
2008 Dec 09
1
[LLVMdev] [PATH] Add sub.ovf/mul.ovf intrinsics
Hi,
The attached patch implements sub.ovf/mul.ovf intrinsics similarly to
the recently added add.ovf intrinsics. These are useful for
implementing some vm instructions like sub.ovf/mul.ovf in .NET IL
efficiently. sub.ovf is supported in target independent lowering and
on x86, while mul.ovf is only supported in the x86 backend.
Please review
2014 Jun 20
3
[LLVMdev] Passing specific register for an Instruction in target description files.
Hi all,
I want to generate an assembly instruction for my target using target
description representation of the instruction. The problem is that I want to
add direct register to be chose as an output register for my target. Does it
possible to do with an instruction definition in TARGETInstrInfo.td file?
May be someone could help with an example?
Currently I have seen that we can pass the name
2013 Oct 09
4
[LLVMdev] Related constant folding of floating point values
Hi all,
I have the following test case:
#define FLT_EPSILON 1.19209290E-7
int err = -1;
int main()
{
float a = 8.1;
if (((a - 8.1) >= FLT_EPSILON) || ((a - 8.1) <= -FLT_EPSILON)) { //I am
using FLT_EPSILON to check whether (a != 2.0).
err = 1;
} else {
err = 0;
}
return 0;
}
with -O3 optimization level clang generates already incorrect LLVM IR:
; Function Attrs:
2018 Jan 12
2
StripDeadDebugInfo for static inline functions.
Hi Arsen, we are beyond what I understand about how metadata operates. Maybe Adrian or David knows.
--paulr
From: Arsen Hakobyan [mailto:hakobyan.ars at gmail.com]
Sent: Friday, January 12, 2018 12:16 PM
To: Robinson, Paul
Cc: llvm-dev at lists.llvm.org; David Blaikie
Subject: Re: [llvm-dev] StripDeadDebugInfo for static inline functions.
Just one update:
the function causing the segmentation
2018 Jan 14
0
StripDeadDebugInfo for static inline functions.
Thanks Paul,
Hi Adrian and David I would really appreciate any comments, thoughts
assumptions.
If additional information is needed please let me know.
Regards,
Arsen
On Sat, Jan 13, 2018 at 2:54 AM, Robinson, Paul <paul.robinson at sony.com>
wrote:
> Hi Arsen, we are beyond what I understand about how metadata operates.
> Maybe Adrian or David knows.
>
> --paulr
>
>
2018 Jan 12
2
StripDeadDebugInfo for static inline functions.
Hi Paul,
Thanks for your response.
Let me actually post more details visualizing my case. Assuming that can
help.
so the IR before the opt tool is running is:
; Function Attrs: nounwind
define i16 @main() #0 !dbg !13 {
entry:
%retval = alloca i16, align 1
...
}
; Function Attrs: inlinehint nounwind
define internal void @delay(i16 %d) #4 !dbg !69 {
entry:
%d.addr = alloca i16,
2018 Jan 15
1
StripDeadDebugInfo for static inline functions.
+ Adrian
+ David
Hi Arsen,
This sounds like a bug to me. Have you tried reproducing it on trunk? For instance, I see that the relation between DICompileUnit and DISubprogram was changed in the meantime (https://reviews.llvm.org/D19034 <https://reviews.llvm.org/D19034>).
If this no longer occurs on master you could bisect the compiler to find the commit(s) that fix this and consider
2018 Jan 12
0
StripDeadDebugInfo for static inline functions.
Just one update:
the function causing the segmentation fault is the following:
359 void DwarfDebug::constructAbstractSubprogramScopeDIE(LexicalScope
*Scope) {
360 assert(Scope && Scope->getScopeNode());
361 assert(Scope->isAbstractScope());
362 assert(!Scope->getInlinedAt());
363
364 const MDNode *SP = Scope->getScopeNode();
365
366
2014 Aug 14
2
[LLVMdev] Tablegen: How to define a Pattern with multiple result instructions
Hi all,
I would like to be sure that Tablegen still does not support completely
separate multiple instruction generation, and the only way is to write
costume code (may be in TargetISelDAGToDAG class) to get the needed result.
Dear Tom, do you found other solution (using Tablegen tool) for this?
Thanks,
Arsen
--
View this message in context:
2014 Aug 15
2
[LLVMdev] Tablegen: How to define a Pattern with multiple result instructions
Dear Tom,
What is the advantage to use the “pseudo instruction” approach VS “custom lowering/DAGtoDAGSelection” VS “ Library function”?
Best
Kevin
On Aug 14, 2014, at 9:27 AM, Tom Stellard <tom at stellard.net> wrote:
> On Thu, Aug 14, 2014 at 12:05:33AM -0700, Arsen Hakobyan wrote:
>> Hi all,
>>
>> I would like to be sure that Tablegen still does not support
2018 Jan 12
2
StripDeadDebugInfo for static inline functions.
Hi all,
I would like to understand the strip-dead-debug-info transformation.
In my test case there is a static inline function with two local variables.
It appears that the function is already inlined before
strip-dead-debug-info starts its work. As a result the DICompileUnit is
cleaned and its subprograms list has no reference to the DISubprogram for
the inlined function, but as there is
2014 Jul 02
2
[LLVMdev] Passing specific register for an Instruction in target description files.
On Mon, Jun 30, 2014 at 02:40:43AM -0700, Quentin Colombet wrote:
> Hi Arsen,
>
>
> > On Jun 19, 2014, at 10:43 PM, Arsen Hakobyan <artinetstudio at gmail.com> wrote:
> >
> > Hi all,
> >
> > I want to generate an assembly instruction for my target using target
> > description representation of the instruction. The problem is that I want to
2017 Feb 15
2
Unsigned int displaying as negative
Thanks for your reply.
We are propagating sign info to tablegen currently using
BinaryWithFlagsSDNode.Flags.hasNoSignedWrap atm.
I imagine (I have not looked) they are printed according to instruction in
AsmPrinter.cpp (pure speculation).
I'm still confused as to why 0x7FFF is ok to match 16 bit int but not
0x8000?
Thanks.
On Wed, Feb 15, 2017 at 1:44 PM, Manuel Jacob <me at
2014 Aug 05
2
[LLVMdev] Concerning not relevant argument count in TableGen Patterns.
Dear all.
I have a problem with the following situation:
I want to handle an intrinsic function in a specific way. The prototype of
my function is: "/int my_intrinsic_name()/"
So I want to generate a move instruction which should use two register type
operands: "/mov R1, R2/"
For this purpose I assume that the instruction definition in the
TargetInstrInfo.td file
2018 Feb 28
2
How to handle UMULO?
Hi All,
While compiling libgcc, I find I have to deal with UMULO (overflow-aware
unsigned multiplication) SDNode. UMULO returns the result of
multiplication, and a boolean indicating overflow occurred or not. Our
target's multiply instruction doesn't care (detect) overflow. I am
wondering if I can always set the boolean to false. I am not sure about
this as I see AArch64 [1] seems
2018 Jan 12
0
StripDeadDebugInfo for static inline functions.
I'm not as familiar with all the ins and outs of metadata as maybe I should be, but ultimately the inlined function should have a DWARF description contained within the description of the caller (which is why you're seeing the call to constructAbstractSubprogramScopeDIE). That suggests that the DISubprogram for the inlined function ought to remain, and its scope should be the
2018 Feb 28
1
How to handle UMULO?
If your target has a cheap count-leading-zeros instruction, you'd be able to determine whether an unsigned multiply will overflow or not, in most cases, without doing the long version of the multiplication. This is because an N-bit number times an M-bit number will produce a result that is either N+M bits wide or N+M-1 bits wide. If an N+M bit result will fit in your result type, you are
2017 Feb 15
5
Unsigned int displaying as negative
Where does the unsignedSub come from?
On 2017-02-15 20:38, Ryan Taylor wrote:
> Sorry, it should be:
>
> defm SUB16u_ : ABD_NonCommutative<"sub16u", unsignedSub, LOADRegs,
> GPRRegs, DSTRegs, i16, i16, i16, uimm16, immZExt16x>;
>
> On Wed, Feb 15, 2017 at 2:37 PM, Ryan Taylor <ryta1203 at gmail.com>
> wrote:
>
>> I see. If I put simm16 and
2018 Feb 28
0
How to handle UMULO?
I think your users will be very upset if you don't set the boolean return
value correctly :-)
Whatever work it takes to determine the correct value for it, if the user
code doesn't need/use that value then the dead code will be eliminated
later. But if they need that return flag then they will want it to be
correct!
You may need to use a multiply instruction that returns a
2013 Sep 24
2
[LLVMdev] Related to the LLVM Intrinsic functions.
Hello,
I have a need to change the parameter type of llvm.lifetime.start/end
intrinsic functions to get other defined type, but i do not want to replace
the current definition of the intrinsic function with the new definition. Is
there a way, to do such things for a specific target?
If the only way to do this is to create a separate file for my target and
write there a target specific