mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-12 13:30:51 +00:00
Add missing Interpreter intrinsic lowering for sin, cos and ceil
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215209 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a9ee302530
commit
b79931d94e
@ -528,6 +528,18 @@ void IntrinsicLowering::LowerIntrinsicCall(CallInst *CI) {
|
||||
ReplaceFPIntrinsicWithCall(CI, "powf", "pow", "powl");
|
||||
break;
|
||||
}
|
||||
case Intrinsic::sin: {
|
||||
ReplaceFPIntrinsicWithCall(CI, "sinf", "sin", "sinl");
|
||||
break;
|
||||
}
|
||||
case Intrinsic::cos: {
|
||||
ReplaceFPIntrinsicWithCall(CI, "cosf", "cos", "cosl");
|
||||
break;
|
||||
}
|
||||
case Intrinsic::ceil: {
|
||||
ReplaceFPIntrinsicWithCall(CI, "ceilf", "ceil", "ceill");
|
||||
break;
|
||||
}
|
||||
case Intrinsic::flt_rounds:
|
||||
// Lower to "round to the nearest"
|
||||
if (!CI->getType()->isVoidTy())
|
||||
|
19
test/ExecutionEngine/Interpreter/intrinsics.ll
Normal file
19
test/ExecutionEngine/Interpreter/intrinsics.ll
Normal file
@ -0,0 +1,19 @@
|
||||
; RUN: lli -O0 -force-interpreter < %s
|
||||
|
||||
; libffi does not support fp128 so we don’t test it
|
||||
declare float @llvm.sin.f32(float)
|
||||
declare double @llvm.sin.f64(double)
|
||||
declare float @llvm.cos.f32(float)
|
||||
declare double @llvm.cos.f64(double)
|
||||
declare float @llvm.ceil.f32(float)
|
||||
declare double @llvm.ceil.f64(double)
|
||||
|
||||
define i32 @main() {
|
||||
%sin32 = call float @llvm.sin.f32(float 0.000000e+00)
|
||||
%sin64 = call double @llvm.sin.f64(double 0.000000e+00)
|
||||
%cos32 = call float @llvm.cos.f32(float 0.000000e+00)
|
||||
%cos64 = call double @llvm.cos.f64(double 0.000000e+00)
|
||||
%ceil32 = call float @llvm.ceil.f32(float 0.000000e+00)
|
||||
%ceil64 = call double @llvm.ceil.f64(double 0.000000e+00)
|
||||
ret i32 0
|
||||
}
|
3
test/ExecutionEngine/Interpreter/lit.local.cfg
Normal file
3
test/ExecutionEngine/Interpreter/lit.local.cfg
Normal file
@ -0,0 +1,3 @@
|
||||
# These tests require foreign function calls
|
||||
if config.enable_ffi != "ON":
|
||||
config.unsupported = True
|
@ -22,6 +22,7 @@ config.host_arch = "@HOST_ARCH@"
|
||||
config.llvm_use_intel_jitevents = "@LLVM_USE_INTEL_JITEVENTS@"
|
||||
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
|
||||
config.have_zlib = "@HAVE_LIBZ@"
|
||||
config.enable_ffi = "@LLVM_ENABLE_FFI@"
|
||||
|
||||
# Support substitution of the tools_dir with user parameters. This is
|
||||
# used when we can't determine the tool dir at configuration time.
|
||||
|
Loading…
Reference in New Issue
Block a user