[LLVMdev] How do I model MUL with multiply-accumulate instruction?
Evan Cheng
evan.cheng at apple.com
Thu Apr 16 17:15:45 PDT 2009
On Apr 16, 2009, at 2:19 PM, Greg McGary wrote:
> The only multiplication instruction on my target CPU is
> multiply-and-accumulate. The result goes into a special register that
> can destructively read at the end of a sequence of multiply-adds. The
> following sequence is required to so a simple multiply:
>
> acc r0 # clear accumulator, discarding its value (r0 reads as 0,
> and sinks writes)
> mac rSRC1, rSRC2 # multiply sources, store result in accumulator
> acc rDEST # fetch accumulator value to rDEST
>
> What's the best way to model simple MUL as this 3-insn sequence in the
> LLVM backend?
>
> Should the internal accumulation register be explicitly modeled as its
> own register class with a pattern to copy its value to a general
> register?
>
> Is it possible to code the three insn sequence in TableGen alone, or
> must I resort to custom C++ code?
Probably c++ code. You want to lower it into the target node followed
by a copyfromreg from the accumulator to a virtual register.
Evan
>
> G
>
>
> _______________________________________________
> 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