Displaying 20 results from an estimated 11000 matches similar to: "[LLVMdev] Why is there no ashl/lshl?"
2013 May 07
0
[LLVMdev] Why is there no ashl/lshl?
Hi,
> There is a distinction between logical/arithmetic shift right, but why
> not for shift left?
The arithmetic right shift has the nice property that it preserves the
fact that x >> 1 == x/2 for negative signed numbers (unlike the
logical shift). Either because of this or because of other uses I
can't think of right now almost all modern CPUs implement it in
hardware, and
2013 May 07
1
[LLVMdev] Why is there no ashl/lshl?
> From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
> On Behalf Of Tim Northover
> In contrast, it's not quite clear what an arithmetic left-shift would
> be. If you want to keep x << 1 == x*2 then the logical one already
> does this.
Only if the left-most (shiftcount + 1) bits are all-0 or all-1.
I've used machines that distinguished
2013 May 07
1
[LLVMdev] Why is there no ashl/lshl?
Hi Tim,
>> There is a distinction between logical/arithmetic shift right, but why
>> not for shift left?
>
> The arithmetic right shift has the nice property that it preserves the
> fact that x >> 1 == x/2 for negative signed numbers (unlike the
> logical shift).
except when x is -1.
That said, this is correct: the reason for distinct signed and unsigned
right
2007 Aug 14
1
[LLVMdev] Static functions for APInt
This adds a bunch of static functions that implement unsigned
two's complement bignum arithmetic. They could be used to
implement much of APInt, but the idea is they are enough to
implement APFloat as well, which the current APInt interface
is not suited for.
Neil.
-------------- next part --------------
Index: include/llvm/ADT/APInt.h
2007 Aug 18
1
[LLVMdev] Soft floating point support
This patch supplies software IEEE floating point support.
The comment from the patch reproduced below says all there is
to say.
This patch contains the prior "cleanup" patch; please don't apply
that one.
Please let me know of any bugs. It is tested reasonably well,
but until I put together random tests it's hard to have 100%
confidence.
Neil.
/* A self-contained host- and
2012 May 11
2
[LLVMdev] [PATCH] OpenCL half support
I've got comments on the code change. The test cases look ok, but I
haven't fully checked the math on the half-values.
I checked with reference to trunk top-of-tree at revision 156617. I
have not compiled the code.
lib/AsmParser/LLLexer.cpp
Adds support to parse format: 0xH<hexdigits>
Tha 0xH format should be described in LangRef.html alongside
0xK<hex> and
2012 May 17
0
[LLVMdev] [PATCH] OpenCL half support
Hi David,
Many thanks for the comments!
> Tha 0xH format should be described in LangRef.html alongside
> 0xK<hex> and 0xM<hex>
Done.
> Declaration of "int shiftcount" should be moved to smallest nesting
> possible, right after "if ( const ConstantFP ..." at line 710
>
> (The code makes a lot more sense with a good comment on the
2012 May 17
3
[LLVMdev] [PATCH] OpenCL half support
looks good here.
> -----Original Message-----
> From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
> On Behalf Of Anton Lokhmotov
> Sent: Thursday, May 17, 2012 4:51 AM
> To: 'David Neto'
> Cc: llvmdev at cs.uiuc.edu
> Subject: Re: [LLVMdev] [PATCH] OpenCL half support
>
> Hi David,
>
> Many thanks for the comments!
>
>
2014 Feb 25
2
[LLVMdev] ScheduleDAGInstrs/R600 test potential issue with implicit defs
Hello,
The ScheduleDAGInstrs::buildSchedGraph() function creates def/uses lists by iterating over all instruction operands and calls addPhysRegDeps() if used post-RA (line ~770 ff.). If an operand is a def, the uses of that registers are cleared (ScheduleDAGInstrs.cpp:333: Uses.eraseAll(Reg); ).
As a consequence, if an instruction has an explicit use of a register and an implicit def of the
2012 Jul 31
4
[LLVMdev] rotate
On Monday, July 30, 2012 12:16 AM, Cameron McInally wrote:
> Hey Andy,
>
> I proposed a similar patch to LLVM (left circular shift) around 10/2011.
> Parts of my patch did make it into trunk about a year after, but others
> did not.
>
> At that time, my solution was to add a binary operator to the IRBuilder,
> since LCS fits in nicely with the other shift operators. But,
2014 Feb 25
4
[LLVMdev] ScheduleDAGInstrs/R600 test potential issue with implicit defs
Hi Tom,
Thanks a lot for your explanations, now it makes a lot more sense ;)
I had a slightly closer look at the R600 packetizer, and the issue is
that the third LSHL instruction has both an implicit use and
*afterwards* an implicit def of T1_XYZW. The latter def causes the
current ScheduleDAGInstrs implementation to ignore the implicit use,
thus the ScheduleDAG only contains an
2012 Apr 16
5
[LLVMdev] InstCombine adds bit masks, confuses self, others
Look at this silly function:
$ cat small.c
unsigned f(unsigned a, unsigned *p) {
unsigned x = a/4;
p[0] = x;
p[1] = x+x;
return p[1] - 2*p[0];
}
GCC turns this into straightforward code and figures out the 0 return value:
shrl $2, %edi
movl %edi, (%rsi)
addl %edi, %edi
movl %edi, 4(%rsi)
movl $0, %eax
ret
LLVM optimizes the code:
$ clang -O -S -o- small.c -emit-llvm
define i32
2012 Jul 31
0
[LLVMdev] rotate
On Jul 31, 2012, at 3:04 AM, Andy Gibbs <andyg1001 at hotmail.co.uk> wrote:
> On Monday, July 30, 2012 12:16 AM, Cameron McInally wrote:
>> Hey Andy,
>>
>> I proposed a similar patch to LLVM (left circular shift) around 10/2011.
>> Parts of my patch did make it into trunk about a year after, but others
>> did not.
>>
>> At that time, my
2019 Feb 26
2
funnel shift, select, and poison
If I got poison propagation right, it's probably only by luck!
Hopefully, the funnel shift bug is fixed here:
https://reviews.llvm.org/rL354905
Nuno, IIUC this means that you do *not* need to change the funnel shift
semantics in Alive.
So I think that means we're still on track to go with John's suggestion
that only select and phi can block poison?
(I don't know of any
2019 Feb 25
3
funnel shift, select, and poison
We have these transforms from funnel shift to a simpler shift op:
// fshl(X, 0, C) -> shl X, C
// fshl(X, undef, C) -> shl X, C
// fshl(0, X, C) -> lshr X, (BW-C)
// fshl(undef, X, C) -> lshr X, (BW-C)
These were part of: https://reviews.llvm.org/D54778
In all cases, one operand must be 0 or undef and the shift amount is a
constant, so I think these are safe.
2012 Apr 16
0
[LLVMdev] InstCombine adds bit masks, confuses self, others
On Tue, Apr 17, 2012 at 12:23 AM, Jakob Stoklund Olesen <stoklund at 2pi.dk>wrote:
> I am not sure how best to fix this. If possible, InstCombine's
> canonicalization shouldn't hide arithmetic progressions behind bit masks.
The entire concept of cleverly converting arithmetic to bit masks seems
like the perfect domain for DAGCombine instead of InstCombine:
1) We know the
2015 Jan 28
3
[LLVMdev] RFC: Proposal for Poison Semantics
On Tue, Jan 27, 2015 at 8:58 PM, Sanjoy Das <sanjoy at playingwithpointers.com>
wrote:
> > Ah, yes. You are right, we cannot always assume that %y would be zero in
> > the second case.
> > This wouldn't be the first time we've lost information that we could use
> to
> > optimize a program by transforming it.
> >
> > Do you think this result
2012 Jul 31
0
[LLVMdev] rotate
Oh, no. I should have been more clear. The patch was not rejected, just
lost in the daily shuffle.
I already have my employer's approval to send this upstream, so I will
prepare a patch against trunk this morning.
> I proposed a similar patch to LLVM (left circular shift) around 10/2011.
> > Parts of my patch did make it into trunk about a year after, but others
> > did not.
2013 Aug 12
2
[LLVMdev] [RFC] Poor code generation for paired load
Hi Eli,
Thanks for the feedbacks.
On Aug 9, 2013, at 8:00 PM, Eli Friedman <eli.friedman at gmail.com> wrote:
> On Fri, Aug 9, 2013 at 4:58 PM, Quentin Colombet <qcolombet at apple.com> wrote:
>> Hi,
>>
>> I am investigating a poor code generation on x86-64 involving a 64-bits
>> structure with two 32-bits fields (in the attached examples float, but
2012 Apr 17
3
[LLVMdev] InstCombine adds bit masks, confuses self, others
On Tue, Apr 17, 2012 at 1:36 PM, Rafael EspĂndola <
rafael.espindola at gmail.com> wrote:
> > I am not sure how best to fix this. If possible, InstCombine's
> canonicalization shouldn't hide arithmetic progressions behind bit masks.
> At least, it seems these transformations should be disabled unless (X >>
> C).hasOneUse(). They aren't exactly optimizations.