Displaying 20 results from an estimated 1100 matches similar to: "[LLVMdev] equivalent IR, different asm"
2010 Sep 01
0
[LLVMdev] equivalent IR, different asm
On Sep 1, 2010, at 6:25 AM, Argyrios Kyrtzidis wrote:
> The attached .ll files seem equivalent, but the resulting asm from 'opt-fail.ll' causes a crash to webkit.
> I suspect the usage of registers is wrong, can someone take a look ?
The difference is that there is a shift right after the multiply, before the divide. In IR, the difference is:
%5 = mul nsw i32 %4, %tmp1
2010 Sep 01
2
[LLVMdev] equivalent IR, different asm
I attached preprocessed files.
$ llvm-g++ gcc-RenderBoxModelObject.ii -fno-exceptions -arch x86_64 -O2 -c -o part.o
vs
$ clang++ clang-RenderBoxModelObject.ii -fno-exceptions -arch x86_64 -O2 -c -o part.o
If I compile with clang, it causes a crash to webkit.
-Argiris
-------------- next part --------------
A non-text attachment was scrubbed...
Name: prepro.zip
Type: application/zip
Size:
2010 Sep 01
0
[LLVMdev] equivalent IR, different asm
On Sep 1, 2010, at 6:25 AMPDT, Argyrios Kyrtzidis wrote:
> The attached .ll files seem equivalent, but the resulting asm from
> 'opt-fail.ll' causes a crash to webkit.
> I suspect the usage of registers is wrong, can someone take a look ?
Yes, the code here is wrong:
> movl (%rbx), %ecx
> imull %ecx, %eax
This computes h*((int32)%1) in %eax.
> shrq $32, %rax
2010 Sep 01
1
[LLVMdev] equivalent IR, different asm
On Sep 1, 2010, at 11:14 AM, Dale Johannesen wrote:
>
> On Sep 1, 2010, at 6:25 AMPDT, Argyrios Kyrtzidis wrote:
>
>> The attached .ll files seem equivalent, but the resulting asm from
>> 'opt-fail.ll' causes a crash to webkit.
>> I suspect the usage of registers is wrong, can someone take a look ?
>
> Yes, the code here is wrong:
>
>> movl
2010 Aug 05
4
[LLVMdev] LLVMC tests failing when building with clang
Hi,
After building llvm with clang the llvmc tests are failing with:
llvmc: Node llc is not in graph
Anyone else see this ? (TOT llvm & clang)
-Argiris
2010 Aug 31
2
[LLVMdev] "equivalent" .ll files diverge after optimizations are applied
Here's the optimized versions:
$ opt -std-compile-opts unopt-pass.ll -o - | llvm-dis -o -
[...]
define %3 @_ZN7WebCore15GraphicsContext19roundToDevicePixelsERKNS_9FloatRectE(%"class.WebCore::GraphicsContext"* %this, %"struct.WebCore::FloatRect"* %rect) nounwind ssp align 2 {
%roundedOrigin = alloca %"class.WebCore::FloatSize", align 4 ;
2010 Sep 02
2
[LLVMdev] Jump threading pass bug
If I use the jump threading pass on the attached IR:
$ opt before.ll -jump-threading -o - | llvm-dis -o after.ll
a big chunk gets removed, a chunk that is actually necessary. ('before.ll' passes the test in webkit, while 'after.ll' fails)
Can someone take a look ?
-Argiris
-------------- next part --------------
A non-text attachment was scrubbed...
Name: before.ll
Type:
2010 Aug 31
5
[LLVMdev] "equivalent" .ll files diverge after optimizations are applied
Hi,
I've attached 2 .ll files which are supposed to be equivalent but 'unopt-fail.ll' causes a crash in webkit's test suite while 'unopt-pass.ll' does not. I can't give more details about the crash, when I run the crashing test it in isolation it passes, when I run the full suite it crashes; it boggles the mind.
Below I provide the optimized asm that is produced from
2010 Aug 31
0
[LLVMdev] "equivalent" .ll files diverge after optimizations are applied
On Aug 31, 2010, at 1:21 PMPDT, Argyrios Kyrtzidis wrote:
>
> Just to be clear, are you saying that the fact that, after using llc
> on the second IR, the produced asm is using MM registers, indicates
> a bug ?
Yes. It's not immediately obvious whether it's in the opt or llc,
though.
Chris was doing work involving <2 x float> and may know about this.
>
2010 Aug 13
0
[LLVMdev] LLVMC tests failing when building with clang
Hi,
Argyrios Kyrtzidis <kyrtzidis <at> apple.com> writes:
>
> Hi,
>
> After building llvm with clang the llvmc tests are failing with:
>
> llvmc: Node llc is not in graph
>
> Anyone else see this ? (TOT llvm & clang)
It looks like this is due to a bug in clang:
// file1.cpp
namespace {
class Plugin {
};
}
// file2.cpp
namespace {
class Plugin {
2012 Feb 09
3
[LLVMdev] x86-64 sign extension for parameters and return values
I recently noticed a difference between the way GCC and LLVM treat
sign extension for parameters and return values on x86-64. I could
not find a clear answer in the x86-64 ABI [1] concerning whether
parameters should be sign extended by the caller or callee and
similarly whether return values should be sign extended by the caller
or callee.
Consider a simple 'signed char' division
2010 Sep 01
0
[LLVMdev] equivalent IR, different asm
On Sep 1, 2010, at 9:42 AM, Argyrios Kyrtzidis wrote:
> If I compile with clang, it causes a crash to webkit.
This should be fixed by r112751, please verify.
/jakob
2010 Sep 02
0
[LLVMdev] Jump threading pass bug
On Sep 2, 2010, at 8:05 AMPDT, Argyrios Kyrtzidis wrote:
> If I use the jump threading pass on the attached IR:
>
> $ opt before.ll -jump-threading -o - | llvm-dis -o after.ll
>
> a big chunk gets removed, a chunk that is actually necessary.
> ('before.ll' passes the test in webkit, while 'after.ll' fails)
>
> Can someone take a look ?
This is fixed in
2010 Sep 01
0
[LLVMdev] "equivalent" .ll files diverge after optimizations are applied
On Aug 31, 2010, at 11:18 AM, Argyrios Kyrtzidis wrote:
> Hi,
>
> I've attached 2 .ll files which are supposed to be equivalent but 'unopt-fail.ll' causes a crash in webkit's test suite while 'unopt-pass.ll' does not. I can't give more details about the crash, when I run the crashing test it in isolation it passes, when I run the full suite it crashes; it
2015 Aug 31
2
[RFC] New pass: LoopExitValues
Hello LLVM,
This is a proposal for a new pass that improves performance and code
size in some nested loop situations. The pass is target independent.
>From the description in the file header:
This optimization finds loop exit values reevaluated after the loop
execution and replaces them by the corresponding exit values if they
are available. Such sequences can arise after the
2015 Sep 01
2
[RFC] New pass: LoopExitValues
On Mon, Aug 31, 2015 at 5:52 PM, Jake VanAdrighem
<jvanadrighem at gmail.com> wrote:
> Do you have some specific performance measurements?
Averaging 4 runs of 10000 iterations each of Coremark on my X86_64
desktop showed:
-O2 performance: +2.9% faster with the L.E.V. pass
-Os size: 1.5% smaller with the L.E.V. pass
In the case of Coremark, the benefit comes mainly from the matrix
2010 Aug 31
0
[LLVMdev] "equivalent" .ll files diverge after optimizations are applied
Using MM registers is wrong unless the user has specifically asked for
it, which doesn't seem to be the case here.
In the awesome MMX architecture, touching an MM register makes
subsequent x87 operations fail unless an EMMS instruction is issued
first; none of the compilers here are smart enough to insert EMMS
instructions in the right places, so the only safe thing is not to use
2013 Dec 13
0
[LLVMdev] GVNPRE /PRE is not effective
Hi All,
The PRE or GVNPRE is not effective for the below use case.
int sum;
int phi =30;
void
f (int i, int *a)
{
if ((a[i] << (1)) > -15) sum =(phi+ 0x7fffffffL )/ a[i];
if ((a[i] << (2)) > -15) sum =(phi + 0x7fffffffL) /a[i];
}
respective asm (clang on trunk )
#clang -O3 -S test.c
BB#0: # %entry
pushl %edi
pushl %esi
2014 Nov 13
2
[LLVMdev] [cfe-dev] New type of smart pointer for LLVM
On Thu, Nov 13, 2014 at 10:59 AM, Argyrios Kyrtzidis <akyrtzi at gmail.com>
wrote:
> Could we consider moving the things you listed to shared pointer semantics
> ? It will be a simple and clear model; unless someone justifies that it
> will be a performance concern to use shared pointers there I don’t think we
> need a new and more complex to reason about smart pointer.
>
2007 Nov 06
1
[LLVMdev] Two labels around one instruction in Codegen
Duncan Sands wrote:
> Hi Nicolas,
>
>
>> In order to have exceptions for non-call instructions (such as sdiv,
>> load or stores), I'm modifying codegen so that it generates a BeginLabel
>> and an EndLabel between the "may throwing" instruction. This is what the
>> codegen of an InvokeInst does.
>>
>
> the rule is that all