diff --git a/NAMESPACE b/NAMESPACE index 9a14c5ae..81b1644a 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -62,6 +62,7 @@ createLoad, createLocalArrayVariable, createLocalVariable, createNeg, +createFNeg, createNot, createRet, createReturn, diff --git a/R/IRBuilder.R b/R/IRBuilder.R index b581247f..b1906a6b 100644 --- a/R/IRBuilder.R +++ b/R/IRBuilder.R @@ -73,6 +73,14 @@ function(builder, val, id = character()) .Call("R_IRBuilder_CreateNeg", builder, val) } + +createFNeg = +function(builder, val, id = character()) +{ + .Call("R_IRBuilder_CreateFNeg", builder, val) +} + + createNot = function(builder, val, id = character()) { diff --git a/R/value.R b/R/value.R index 1ec0e8a7..54285ae7 100644 --- a/R/value.R +++ b/R/value.R @@ -10,7 +10,6 @@ setGeneric("getType", setMethod("getType", "Value", function(obj, ...) { ans = .Call("R_Value_getType", obj) - browser() ans }) diff --git a/src/IRBuilder.cpp b/src/IRBuilder.cpp index 156f2f36..7c109768 100644 --- a/src/IRBuilder.cpp +++ b/src/IRBuilder.cpp @@ -185,6 +185,17 @@ R_IRBuilder_CreateNeg(SEXP r_builder, SEXP r_val) return(R_createRef(ans, "Value")); } +extern "C" +SEXP +R_IRBuilder_CreateFNeg(SEXP r_builder, SEXP r_val) +{ + llvm::IRBuilder<> *builder; + builder = GET_REF(r_builder, IRBuilder<>); + llvm::Value *val = GET_REF(r_val, Value); + llvm::Value * ans = builder->CreateFNeg(val); + return(R_createRef(ans, "Value")); +} + extern "C" SEXP R_IRBuilder_CreateUIToFP(SEXP r_builder, SEXP r_val, SEXP r_type)