コード例 #1
0
ファイル: abi_x86.cpp プロジェクト: BrianSipple/julia
void needPassByRef(AbiState *state, jl_datatype_t *dt, bool *byRef, bool *inReg)
{
    size_t size = jl_datatype_size(dt);
    if (is_complex64(dt) || is_complex128(dt) || (jl_is_bitstype(dt) && size <= 8))
        return;
    *byRef = true;
}
コード例 #2
0
ファイル: abi_x86.cpp プロジェクト: IntelLabs/julia
bool needPassByRef(jl_datatype_t *dt, AttrBuilder &ab) override
{
    size_t size = jl_datatype_size(dt);
    if (is_complex64(dt) || is_complex128(dt) || (jl_is_primitivetype(dt) && size <= 8))
        return false;
    ab.addAttribute(Attribute::ByVal);
    return true;
}
コード例 #3
0
ファイル: abi_x86.cpp プロジェクト: BrianSipple/julia
Type *preferred_llvm_type(jl_datatype_t *dt, bool isret)
{
    if (!isret)
        return NULL;
    // special case Complex{Float32} as a return type
    if (is_complex64(dt))
        return T_int64;
    return NULL;
}
コード例 #4
0
ファイル: abi_x86.cpp プロジェクト: BrianSipple/julia
bool use_sret(AbiState *state, jl_datatype_t *dt)
{
    size_t size = jl_datatype_size(dt);
    if (size == 0)
        return false;
    if (is_complex64(dt) || (jl_is_bitstype(dt) && size <= 8))
        return false;
    return true;
}
コード例 #5
0
ファイル: abi_x86.cpp プロジェクト: IntelLabs/julia
bool use_sret(jl_datatype_t *dt) override
{
    size_t size = jl_datatype_size(dt);
    if (size == 0)
        return false;
    if (is_complex64(dt) || (jl_is_primitivetype(dt) && size <= 8))
        return false;
    return true;
}