Remove type_to_llvm_int_only, only use type_to_llvm.

This commit is contained in:
Nick Lewycky
2019-12-18 11:53:48 -08:00
parent 09dbb49f84
commit 5d0429989a
2 changed files with 13 additions and 27 deletions

View File

@ -80,14 +80,6 @@ fn type_to_llvm<'ctx>(intrinsics: &Intrinsics<'ctx>, ty: Type) -> BasicTypeEnum<
}
}
fn type_to_llvm_int_only<'ctx>(intrinsics: &Intrinsics<'ctx>, ty: Type) -> BasicTypeEnum<'ctx> {
match ty {
Type::I32 | Type::F32 => intrinsics.i32_ty.as_basic_type_enum(),
Type::I64 | Type::F64 => intrinsics.i64_ty.as_basic_type_enum(),
Type::V128 => intrinsics.i128_ty.as_basic_type_enum(),
}
}
// Create a vector where each lane contains the same value.
fn splat_vector<'ctx>(
builder: &Builder<'ctx>,
@ -1786,14 +1778,14 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
apply_pending_canonicalization(
builder, intrinsics, *v, *info,
),
intrinsics.i32_ty,
intrinsics.f32_ty,
&state.var_name(),
),
Type::F64 => builder.build_bitcast(
apply_pending_canonicalization(
builder, intrinsics, *v, *info,
),
intrinsics.i64_ty,
intrinsics.f64_ty,
&state.var_name(),
),
Type::V128 => apply_pending_canonicalization(
@ -1823,14 +1815,14 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
apply_pending_canonicalization(
builder, intrinsics, *v, *info,
),
intrinsics.i32_ty,
intrinsics.f32_ty,
&state.var_name(),
),
Type::F64 => builder.build_bitcast(
apply_pending_canonicalization(
builder, intrinsics, *v, *info,
),
intrinsics.i64_ty,
intrinsics.f64_ty,
&state.var_name(),
),
Type::V128 => apply_pending_canonicalization(
@ -1887,15 +1879,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
if let Some(basic_value) = call_site.try_as_basic_value().left() {
match func_sig.returns().len() {
1 => state.push1(match func_sig.returns()[0] {
Type::F32 => {
builder.build_bitcast(basic_value, intrinsics.f32_ty, "ret_cast")
}
Type::F64 => {
builder.build_bitcast(basic_value, intrinsics.f64_ty, "ret_cast")
}
_ => basic_value,
}),
1 => state.push1(basic_value),
count @ _ => {
// This is a multi-value return.
let struct_value = basic_value.into_struct_value();
@ -2055,12 +2039,12 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
match wasmer_fn_sig.params()[i] {
Type::F32 => builder.build_bitcast(
apply_pending_canonicalization(builder, intrinsics, v, info),
intrinsics.i32_ty,
intrinsics.f32_ty,
&state.var_name(),
),
Type::F64 => builder.build_bitcast(
apply_pending_canonicalization(builder, intrinsics, v, info),
intrinsics.i64_ty,
intrinsics.f64_ty,
&state.var_name(),
),
Type::V128 => {
@ -8400,7 +8384,7 @@ impl<'ctx> FunctionCodeGenerator<CodegenError> for LLVMFunctionCodeGenerator<'ct
);
builder.build_return(Some(&builder.build_bitcast(
one_value.as_basic_value_enum(),
type_to_llvm_int_only(intrinsics, self.func_sig.returns()[0]),
type_to_llvm(intrinsics, self.func_sig.returns()[0]),
"return",
)));
}
@ -8751,7 +8735,7 @@ impl<'ctx> ModuleCodeGenerator<LLVMFunctionCodeGenerator<'ctx>, LLVMBackend, Cod
self.context.as_ref().unwrap(),
self.intrinsics.as_ref().unwrap(),
sig,
type_to_llvm_int_only,
type_to_llvm,
)
})
.collect();

View File

@ -69,8 +69,10 @@ fn generate_trampoline<'ctx>(
};
let cast_ptr_ty = |wasmer_ty| match wasmer_ty {
Type::I32 | Type::F32 => intrinsics.i32_ptr_ty,
Type::I64 | Type::F64 => intrinsics.i64_ptr_ty,
Type::I32 => intrinsics.i32_ptr_ty,
Type::F32 => intrinsics.f32_ptr_ty,
Type::I64 => intrinsics.i64_ptr_ty,
Type::F64 => intrinsics.f64_ptr_ty,
Type::V128 => intrinsics.i128_ptr_ty,
};