Revision 2d8c1ecd532405ab6872dd5cdcef0be3f26e6c14 authored by Viral B. Shah on 26 April 2019, 19:11:01 UTC, committed by Alex Arslan on 26 April 2019, 19:11:01 UTC
* Remove circleci, old freebsd ci and vagrant (pkgeval) files * Remove vagrant from readme. * Move ack stuff to contrib/ack
1 parent f227b9b
llvmcall2.jl
# This file is a part of Julia. License is MIT: https://julialang.org/license
using InteractiveUtils: code_llvm
function declared_floor(x::Float64)
return ccall("llvm.floor.f64", llvmcall, Float64, (Float64,), x)
end
@test declared_floor(4.2) == 4.0
ir = sprint(code_llvm, declared_floor, Tuple{Float64})
@test occursin("call double @llvm.floor.f64", ir) # should be inlined
function doubly_declared_floor(x::Float64)
a = ccall("llvm.floor.f64", llvmcall, Float64, (Float64,), x)
b = ccall("llvm.floor.f64", llvmcall, Float64, (Float64,), x + 1) - 1
return a + b
end
@test doubly_declared_floor(4.2) == 8.0
function doubly_declared2_trunc(x::Float64)
a = ccall("llvm.trunc.f64", llvmcall, Float64, (Float64,), x)
b = ccall("llvm.trunc.f64", llvmcall, Float64, (Float64,), x + 1) - 1
return a + b
end
@test doubly_declared2_trunc(4.2) == 8.0
# Test for single line
function declared_ceil(x::Float64)
return ccall("llvm.ceil.f64", llvmcall, Float64, (Float64,), x)
end
@test declared_ceil(4.2) == 5.0
# Test for multiple lines
function ceilfloor(x::Float64)
a = ccall("llvm.ceil.f64", llvmcall, Float64, (Float64,), x)
b = ccall("llvm.floor.f64", llvmcall, Float64, (Float64,), a)
return b
end
@test ceilfloor(7.4) == 8.0
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...