floating point vector instructions

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 pattern>
: 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