Thanks for the tip. For some reason it didn’t work. I’m sure I’m missing something very simple. Do you mind helping out? Here is what I have so far:
I’m getting a following error when I run a simple test:
cannot compile this builtin function yet
Here is the test code:
typedef int v4si attribute ((vector_size (16)));
int foo (int a, int b, int c, int d) {
v4si vec = {a, b, c, d};
return esencia_hadd(vec);
}
My intrinsic is defined in /include/llvm/IR/IntrinsicsEsencia.td
let TargetPrefix = “esencia” in
def int_esencia_hadd : Intrinsic<[llvm_i32_ty],
[llvm_v4i32_ty],
[IntrNoMem]>;
My builtin is defined in /include/clang/Basic/BuiltinsEsencia.def
BUILTIN(esencia_hadd, “iV4Si”, “nc”)
I’ve also added code to <full path to clang/lib/Basic/Targerts.cpp
const Builtin::Info EsenciaTargetInfo::BuiltinInfo = {
#define BUILTIN(ID, TYPE, ATTRS) { #ID, TYPE, ATTRS, 0, ALL_LANGUAGES },
#define LIBBUILTIN(ID, TYPE, ATTRS, HEADER) { #ID, TYPE, ATTRS, HEADER,
ALL_LANGUAGES },
#include “clang/Basic/BuiltinsEsencia.def”
};
as well as to /include/clang/Basic/TargetBuiltins.h
/// \brief Esencia builtins
namespace Esencia {
enum {
LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
#include “clang/Basic/BuiltinsEsencia.def”
LastTSBuiltin
};
}
What am I missing?