search for: legalizeloadops

Displaying 5 results from an estimated 5 matches for "legalizeloadops".

2015 Mar 04
2
[LLVMdev] ReduceLoadWidth, DAGCombiner and non 8bit loads/extloads question.
...:) > > Keep in mind "EXTLOAD" usually means "load, possibly followed by an > extension". So, the "EXT" part is probably irrelevant here, if that's > what's bugging you ;) Nevermind, grepping around shows this is specifically about ISD::EXTLOAD, in LegalizeLoadOps (LegalizeDAG.cpp). There's some code above, with an "isTypeLegal(SrcVT)" check, that tries to turn an EXTLOAD into LOAD+[SZ]EXT. I'm guessing that on your target, both the EXTLOAD from i8 and the i8 type are illegal? In that case, again, I don't know how one could legalize...
2015 Mar 05
2
[LLVMdev] ReduceLoadWidth, DAGCombiner and non 8bit loads/extloads question.
...lize phase, yes In general, yes. > So this is either a bug (design flaw) or maybe > someone more knowledgeable about a way to get around this without having to > change core code that cannot be put into off. release will chime in. :) > > Yes, via Expand the assert is issued during LegalizeLoadOps (since it's > trying to legalize the 8 bit extload because the hardware does not support > it). > > The EXT part is not bugging me, I suppose it's possible that the > DAGCombiner could optimize to just an 8-bit load, but we've only seen this > opt if it's going to...
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
2019 May 13
3
How to change CLang struct alignment behaviour?
Hi Joan, On Mon, 13 May 2019 at 18:01, Joan Lluch <joan.lluch at icloud.com> wrote: > After looking at it a bit further, I think this is a Clang thing. Clang issues “align 2” if the struct has at least one int (2 bytes), but also if the entire struct size is multiple of 2. For example a struct with 4 char members. In these cases the LLVM backend correctly creates word sized load/stores
2017 Jun 15
9
About CodeGen quality
Hi Mats, It's private backend. I will try describing what I am dealing with. struct S { unsigned int a : 8; unsigned int b : 8; unsigned int c : 8; unsigned int d : 8; unsigned int e; } We want to read S->b for example. The size of struct S is 64 bits, and seems LLVM treats it as i64. Below is the IR corresponding to S->b, IIRC. %0 = load