[LLVMdev] 64-bit add using 2 32-bit operations, guarantee of stuck together?

Francois Pichet pichet2000 at gmail.com
Mon Apr 15 14:37:15 PDT 2013


I really have to force them to stuck together otherwise the carry will just
not work.

How about wrapping the 2 instructions in a bundle?
Would that be a way?
http://llvm.org/docs/CodeGenerator.html#machineinstr-bundles


On Mon, Apr 15, 2013 at 5:24 PM, Quentin Colombet <qcolombet at apple.com>wrote:

> Hi Francois,
>
> If you model the effect of your carry on the instructions, the scheduler
> (and the other backend passes) should ensure that nothing that affects the
> carry will be inserted between your two instructions (assuming they are
> issued with nothing affecting the carry in between in the first place).
> Therefore, you shouldn’t have to force them to be stuck together.
>
> If you still do, what Jakob proposed is what you are looking for.
>
> -Quentin
>
> On Apr 15, 2013, at 2:02 PM, Francois Pichet <pichet2000 at gmail.com> wrote:
>
> Hi,
>
> Let's say we have a 32-bit architecture where 64-bit additions are done
> using 2 operations.
>
> Instructions are defined as follow in TableGen:
>    defm ADD64  : ALU32<"add", 1, 1, addc>;
>    defm ADD64C : ALU32<"addrc", 1, 2, adde>;
>
>
> Let's assume that the carry bit is implicit and that the 2 operations must
> *always* be stuck together for the 64-bit add to work properly.
> Is there a default guarantee that nothing will ever be inserted between
> "add" and "addrc" or is there a flag/condition to set somewhere to have
> that guarantee?
>
> Thanks
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130415/847f096b/attachment.html>


More information about the llvm-dev mailing list