Displaying 20 results from an estimated 2000 matches similar to: "[LLVMdev] Custom lowering of load with extension"
2011 Jul 19
0
[LLVMdev] Custom lowering of load with extension
On Mon, Jul 18, 2011 at 6:35 PM, Damien Vincent <damien.llvm at gmail.com> wrote:
>
> Hi,
>
> The target I am working on does not support i8 loading: it supports only 32
> bit aligned loads.
> I had to custom lower i8 load so that only i32 loads are generated.
>
> My issue is the following:
> In a very specific case, the lowering stage generates the following
2011 Jul 27
2
[LLVMdev] Avoiding load narrowing in DAGCombiner
Hi Eli,
On 07/27/2011 04:59 PM, Eli Friedman wrote:
> On Wed, Jul 27, 2011 at 2:28 PM, Matt Johnson
> <johnso87 at crhc.illinois.edu> wrote:
>> Hi All,
>> I'm writing a backend for a target which only supports 4-byte,
>> 4-byte-aligned loads and stores. I custom-lower all {*EXT}LOAD and
>> STORE nodes in TargetISelLowering.cpp to take advantage of
2011 Jul 27
0
[LLVMdev] Avoiding load narrowing in DAGCombiner
On Wed, Jul 27, 2011 at 3:50 PM, Matt Johnson
<johnso87 at crhc.illinois.edu> wrote:
> Hi Eli,
>
> On 07/27/2011 04:59 PM, Eli Friedman wrote:
>>
>> On Wed, Jul 27, 2011 at 2:28 PM, Matt Johnson
>> <johnso87 at crhc.illinois.edu> wrote:
>>>
>>> Hi All,
>>> I'm writing a backend for a target which only supports 4-byte,
2015 Mar 03
3
[LLVMdev] ReduceLoadWidth, DAGCombiner and non 8bit loads/extloads question.
I'm curious about this code in ReduceLoadWidth (and in DAGCombiner in
general):
if (LegalOperations && !TLI.isLoadExtLegal(ExtType, ExtVT))
return SDValue
<http://llvm.org/docs/doxygen/html/classllvm_1_1SDValue.html>();
LegalOperations is false for the first pre-legalize pass and true for the
post-legalize pass. The first pass is target-independent yes? So that makes
sense.
2010 Jul 20
1
[LLVMdev] DAGCombiner::ReduceLoadWidth bug?
On 7/19/10 10:36 AM, Duncan Sands wrote:
> Hi JP,
>
>
>> DAGCombiner::ReduceLoadWidth() does the following:
>> /// ReduceLoadWidth - If the result of a wider load is shifted to right of N
>> /// bits and then truncated to a narrower type and where N is a multiple
>> /// of number of bits of the narrower type, transform it to a narrower load
>> /// from
2015 Mar 03
2
[LLVMdev] ReduceLoadWidth, DAGCombiner and non 8bit loads/extloads question.
1) It's crashing because LD1 is produced due to LegalOperations=false in
pre-legalize pass. Then Legalization does not know how to handle it so it
asserts on a default case. I don't know if it's a reasonable expectation or
not but we do not have support for it. I have not tried
overriding shouldReduceLoadWidth.
2) I see, that makes sense to some degree, I'm curious if you can
2010 Jul 19
2
[LLVMdev] DAGCombiner::ReduceLoadWidth bug?
DAGCombiner::ReduceLoadWidth() does the following:
/// ReduceLoadWidth - If the result of a wider load is shifted to right of N
/// bits and then truncated to a narrower type and where N is a multiple
/// of number of bits of the narrower type, transform it to a narrower load
/// from address + N / num of bits of new type. If the result is to be
/// extended, also fold the extension to form a
2010 Jul 19
0
[LLVMdev] DAGCombiner::ReduceLoadWidth bug?
Hi JP,
> DAGCombiner::ReduceLoadWidth() does the following:
> /// ReduceLoadWidth - If the result of a wider load is shifted to right of N
> /// bits and then truncated to a narrower type and where N is a multiple
> /// of number of bits of the narrower type, transform it to a narrower load
> /// from address + N / num of bits of new type. If the result is to be
> /// extended,
2011 Jul 27
2
[LLVMdev] Avoiding load narrowing in DAGCombiner
Hi All,
I'm writing a backend for a target which only supports 4-byte,
4-byte-aligned loads and stores. I custom-lower all {*EXT}LOAD and
STORE nodes in TargetISelLowering.cpp to take advantage of all alignment
information available to the backend, rather than treat each load and
store conservatively, which takes O(10) instructions. My target's
allowsUnalignedMemoryOperations()
2011 Jul 27
0
[LLVMdev] Avoiding load narrowing in DAGCombiner
On Wed, Jul 27, 2011 at 2:28 PM, Matt Johnson
<johnso87 at crhc.illinois.edu> wrote:
> Hi All,
> I'm writing a backend for a target which only supports 4-byte,
> 4-byte-aligned loads and stores. I custom-lower all {*EXT}LOAD and
> STORE nodes in TargetISelLowering.cpp to take advantage of all alignment
> information available to the backend, rather than treat each
2013 Sep 10
0
[LLVMdev] removing unnecessary ZEXT
Hi,
A bit more information.
I believe my problem lies with the fact that the load is left as 'anyext from i8'.
On the XCore target we know this will become an 8bit zext load - as there is no 8bit sign extended load!
If BB#1 were to force the load to a "zext from i8" would this information be available in BB#2?
BB#1:
0x268c1b0: i32 = Register %vreg1 [ID=3]
0x2689d80:
2013 Sep 06
2
[LLVMdev] removing unnecessary ZEXT
Hi,
Within a basic block I can remove unnecessary register copies + zero sign extensions of unsigned-8bit-loaded values by implementing isZExtFree() for ISD::LOAD nodes.
...But not between basic blocks.
The first block does a CopyFromReg of the unsigned-8bit-loaded vreg1 into a new vreg2.
The second block then does a unnecessary zext to vreg2.
What I want is the 2nd block to use the original
2013 Mar 04
1
[LLVMdev] Custom Lowering of ARM zero-extending loads
Hi,
For my research, I need to reshape the current ARM backend to support
armv2a. Zero-extend half word load (ldrh) is not supported by armv2a, so I
need to make the code generation to not generate ldrh instructions. I want
to replace all those instances with a 32-bit load (ldr) and then and the
result with 0xffff to mask out the upper bits.
These are the modifications that I have made to
2013 Sep 11
2
[LLVMdev] removing unnecessary ZEXT
On Sep 10, 2013, at 8:59 AM, Robert Lytton <robert at xmos.com> wrote:
> Hi,
>
> A bit more information.
> I believe my problem lies with the fact that the load is left as 'anyext from i8'.
> On the XCore target we know this will become an 8bit zext load - as there is no 8bit sign extended load!
> If BB#1 were to force the load to a "zext from i8" would
2017 Nov 18
2
RFC: [GlobalISel] Towards a generic MI combiner framework
> On Nov 13, 2017, at 11:53 AM, Vedant Kumar via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> Hi Amara,
>
>> On Nov 10, 2017, at 9:12 AM, Amara Emerson via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
>>
>> Hi everyone,
>>
>> This RFC concerns the design and architecture of a generic machine
2017 Nov 28
2
RFC: [GlobalISel] Towards a generic MI combiner framework
Thanks for the suggestions Vedant. Synthetic debug info is an interesting idea that sounds worthwhile. Could this be implemented as a “wrapper” pass that automatically decorates debug info before and after a specific pass run in opt (or pipeline of passes)? It might be useful to be able to easily enable this for a wide range of tests without having to manually modify each run line, perhaps as an
2017 Nov 10
5
RFC: [GlobalISel] Towards a generic MI combiner framework
Hi everyone,
This RFC concerns the design and architecture of a generic machine instruction combiner/optimizer framework to be developed as part of the GISel pipeline. As we transition from correctness and reducing the fallback rate to SelectionDAG at -O0, we’re now starting to think about using GlobalISel with optimizations enabled. There are obviously many parts to this story as optimizations
2015 Mar 04
2
[LLVMdev] ReduceLoadWidth, DAGCombiner and non 8bit loads/extloads question.
Ahmed,
Yes, this is the case, I'm sure many other 'spots' in DAGCombiner use this
same check or use a similar check with LegalOperations. It just seems like
bad form to have core code that generates an illegal node that legalization
cannot seem to handle, unless I'm missing something, which is entirely
possible. Potentially we are using the wrong LegalAction, though each I've
2010 Aug 18
2
[LLVMdev] global type legalization?
On Aug 18, 2010, at 9:56 AM, Chris Lattner wrote:
> Some things to consider: When the input to the zext is spilled, the reload can be folded into the zext on almost all targets, making the zext free. When the zext *isn't* folded into a load, what you're really looking for is a code placement pass which tries to put the zexts in non-redundant (and non-partially redundant) places.
That
2012 Aug 15
0
[LLVMdev] More Back-End Porting Troubles
> -----Original Message-----
> From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
> On Behalf Of Fabian Scheler
> Sent: Wednesday, August 15, 2012 9:12 AM
> To: LLVM Developers Mailing List
> Subject: [LLVMdev] More Back-End Porting Troubles
>
> Hi LLVM-Folks,
>
> as mentioned in an earlier post
>