diff options
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
| -rw-r--r-- | src/rustllvm/RustWrapper.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 20ea8d70302..db6802320b3 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -1373,6 +1373,19 @@ extern "C" bool LLVMRustConstInt128Get(LLVMValueRef CV, bool sext, uint64_t *hig return true; } +extern "C" uint64_t LLVMRustConstFloatGetBits(LLVMValueRef CV) { + auto C = unwrap<llvm::ConstantFP>(CV); + APInt Bits = C->getValueAPF().bitcastToAPInt(); + if (!Bits.isIntN(64)) { + report_fatal_error("Float bit pattern >64 bits"); + } + return Bits.getLimitedValue(); +} + +extern "C" bool LLVMRustIsConstantFP(LLVMValueRef CV) { + return isa<llvm::ConstantFP>(unwrap<llvm::Value>(CV)); +} + extern "C" LLVMContextRef LLVMRustGetValueContext(LLVMValueRef V) { return wrap(&unwrap(V)->getContext()); } |
