[llvm-dev] floating point vector instructions

Rail Shafigulin via llvm-dev llvm-dev at lists.llvm.org
Sat Apr 2 14:18:24 PDT 2016

I've added floating point vector instructions to my target. However when I
run a simple test I don't them being generated. What I see is a jump to the
library. Does anyone know why llvm is doing it and how I can force it to
use a my floating point vector instructions?

Any help is appreciated.

Here are the details of what I'm talking about:

Command Line:
clang --target=esencia -S -O3 test.c -o test.s

Instruction definition:

// Floating point instructions
class InstFRR<bits<8> op, dag outs, dag ins, string asmstr, list<dag>
  : InstEsencia<outs, ins, asmstr, pattern> {
  let optype = 0b11;
  let opcode = 0b0010;
  let Inst{7-0} = op;

class VALU<bits<8> subOp, string asmstr, SDNode OpNode>
  : InstFRR<subOp, (outs VR:$rD), (ins VR:$rA, VR:$rB),
           !strconcat(asmstr, "\t$rD, $rA, $rB"),
           [(set VR:$rD, (OpNode VR:$rA, VR:$rB))]> {
  bits<5> rD;
  bits<5> rA;
  bits<5> rB;

  let Inst{25-21} = rD;
  let Inst{20-16} = rA;
  let Inst{15-11} = rB;

let Itinerary = v_fadd in
  def VFADD : VALU<0x1a, "v.fadd", fadd>;

Test file:

#define N 32

void foo (float *a, float *b, float *c) {

  for (int i = 0; i < N; ++i)
       c[i] = a[i] + b[i];

Jump instruction that I see:
l.jal __addsf3

It should use:
v.fadd v0, v1, v2

Rail Shafigulin
Software Engineer
Esencia Technologies
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160402/f499ff4d/attachment.html>

More information about the llvm-dev mailing list