search for: simplifybinopwithsameopcodehands

Displaying 9 results from an estimated 9 matches for "simplifybinopwithsameopcodehands".

2009 Aug 23
4
[LLVMdev] Problems with DAG Combiner
...aced it by (trunc (or (aext x), (aext y))). Now the problem is that the DAG Combiner optimizes it back to an i1 OR operations that is not supported by the architecture. What is the best way to solve this problem? I take a look at the DAG Optimizer and for this OR operation it calls DAGCombiner::SimplifyBinOpWithSameOpcodeHands that folds (OP (aext x), (aext y)) -> (aext (OP x, y)). No check if the new operation is legal is performed. Kind regards Timo Stripf -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090823/272a6e3...
2009 Aug 23
0
[LLVMdev] Problems with DAG Combiner
...(ISD::OR, MVT::i1, Promote); If you can get your target to work with a legal i1 type, it would be great. The Blackfin target could use that as well. > What is the best way to solve this problem? I take a look at the > DAG Optimizer and for this OR operation it calls > DAGCombiner::SimplifyBinOpWithSameOpcodeHands that folds (OP (aext > x), (aext y)) -> (aext (OP x, y)). No check if the new operation is > legal is performed. When LegalOperations is set, the DAG combiner must not create illegal operations. It is a bug if it does. I recently fixed this in the first if statement in SimplifyBin...
2012 May 23
2
[LLVMdev] Predicate registers/condition codes question
...esirableForOp() and > IsDesirableToPromoteOp() may help you here. X86 does something similar. I just tried these functions, and it seems like they are only modifying the behavior of type promotions for a small subset of operations (PromoteIntBinOp, PromoteIntShiftOp, PromoteExtend, PromoteLoad, SimplifyBinOpWithSameOpcodeHands, visitSRL, visitTRUNCATE that matter to the performance of i16 on X86.) I don't like the "desirable" in the name of these functions: in the case of Hexagon it is illegal to use an i8 predicate register for anything else than setcc, brcond, and the logical ops: so doing the conversion...
2015 Sep 30
2
InstCombine wrongful (?) optimization on BinOp with SameOperands
...nc i64 %shr to i32 IC: Visiting: %conv3 = trunc i64 %mul to i32 IC: Visiting: %xor = xor i32 %conv3, %conv2 IC: ADD: %xor6 = xor i64 %mul, %shr IC: Old = %xor = xor i32 %conv3, %conv2 New = <badref> = trunc i64 %xor6 to i32 * which seems to be performed by SDValue DAGCombiner::SimplifyBinOpWithSameOpcodeHands(SDNode *N) In my backend's architecture truncate is free, but zext is not (and i64 is not a desirable type for xor or any binary operation in general), so I would expect this optimization to be bypassed but because of the following statement : (N0.getOpcode() == ISD::TRUNCATE && (...
2009 Aug 23
2
[LLVMdev] Problems with DAG Combiner
...m you if i get it running. I successfully compiled and simulated jpeg 2000 encoder/decoder before I ran into this problem. > When LegalOperations is set, the DAG combiner must not create illegal > operations. It is a bug if it does. I recently fixed this in the first > if statement in SimplifyBinOpWithSameOpcodeHands(). Perhaps you could > add a check to the second if statement and submit a patch? That sounds nice. I'll try out the svn code tomorrow. I think it'll take some days to converted the back-end to the new code base. -Timo -----Ursprüngliche Nachricht----- Von: Jakob Stoklund Olesen [m...
2012 May 24
0
[LLVMdev] Predicate registers/condition codes question
...IsDesirableToPromoteOp() may help you here. X86 does something similar. > > I just tried these functions, and it seems like they are only > modifying the behavior of type promotions for a small subset of > operations (PromoteIntBinOp, PromoteIntShiftOp, PromoteExtend, > PromoteLoad, SimplifyBinOpWithSameOpcodeHands, visitSRL, visitTRUNCATE > that matter to the performance of i16 on X86.) > > I don't like the "desirable" in the name of these functions: in the > case of Hexagon it is illegal to use an i8 predicate register for > anything else than setcc, brcond, and the logical ops:...
2012 May 22
0
[LLVMdev] Predicate registers/condition codes question
Hi Sebastian, On 22/05/2012 23:25, Sebastian Pop wrote: > Hi Eli, > > On Thu, Mar 1, 2012 at 2:21 PM, Eli Friedman<eli.friedman at gmail.com> wrote: >> On Tue, Feb 28, 2012 at 11:17 AM, Tony Linthicum<tlinth at codeaurora.org> wrote: >>> Hey folks, >>> >>> We are having some difficulty with how we have been representing our >>>
2012 May 22
2
[LLVMdev] Predicate registers/condition codes question
Hi Eli, On Thu, Mar 1, 2012 at 2:21 PM, Eli Friedman <eli.friedman at gmail.com> wrote: > On Tue, Feb 28, 2012 at 11:17 AM, Tony Linthicum <tlinth at codeaurora.org> wrote: >> Hey folks, >> >> We are having some difficulty with how we have been representing our >> predicate registers, and wanted some advice from the list.  First, we >> had been
2012 May 24
3
[LLVMdev] Predicate registers/condition codes question
...here. X86 does something > >> similar. > > > > I just tried these functions, and it seems like they are only > > modifying the behavior of type promotions for a small subset of > > operations (PromoteIntBinOp, PromoteIntShiftOp, PromoteExtend, > > PromoteLoad, SimplifyBinOpWithSameOpcodeHands, visitSRL, > > visitTRUNCATE that matter to the performance of i16 on X86.) > > > > I don't like the "desirable" in the name of these functions: in the > > case of Hexagon it is illegal to use an i8 predicate register for > > anything else than setcc, brc...