[LLVMdev] Undoing DAG Combiner patterns

Tom Stellard tom at stellard.net
Thu May 16 07:12:40 PDT 2013

On Thu, May 16, 2013 at 02:03:14AM +0000, Martin Filteau wrote:
> Hi all,
> It's the first LLVM backend we do for our asynchronous DSP. So, I apologize if this is a trivial question!
> The target-independent DAG combiner performs the following transformation:
> sub  n, c                ->  add n, -c

It looks to me like this transformation would happen during the
legalization phase.  Is sub legal on your target?  If not, you
can custom lower it e.g.:

setOperationAction(ISD::SUB, MVT::i32, Custom);

and then handle ISD::SUB in the TargetLowering::LowerOperation()


> For our target, negative constants are more costly to encode.  What is the best place to revert to a sub instruction?
> Kind regards,
> -- Martin
> www.octasic.com<http://www.octasic.com>

> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

More information about the llvm-dev mailing list