Implement mad.hi.cc

This commit is contained in:
NyanCatTW1 2024-04-05 02:52:34 +08:00
commit b18e69456d

View file

@ -2079,17 +2079,17 @@ fn emit_inst_mad_lo(
) )
} }
// TODO: support mad.hi.cc
fn emit_inst_madcc( fn emit_inst_madcc(
ctx: &mut EmitContext, ctx: &mut EmitContext,
type_: ast::ScalarType, type_: ast::ScalarType,
is_hi: bool, is_hi: bool,
arg: &Arg4CarryOut<ExpandedArgParams>, arg: &Arg4CarryOut<ExpandedArgParams>,
) -> Result<(), TranslateError> { ) -> Result<(), TranslateError> {
let builder = ctx.builder.get(); let mul_result = if is_hi {
let src1 = ctx.names.value(arg.src1)?; emit_inst_mul_hi_impl(ctx, type_, None, arg.src1, arg.src2)?
let src2 = ctx.names.value(arg.src2)?; } else {
let mul_result = unsafe { LLVMBuildMul(builder, src1, src2, LLVM_UNNAMED) }; emit_inst_mul_low_impl(ctx, None, arg.src1, arg.src2, LLVMBuildMul)?
};
emit_inst_addsub_cc_impl( emit_inst_addsub_cc_impl(
ctx, ctx,
"add", "add",
@ -2099,6 +2099,21 @@ fn emit_inst_madcc(
mul_result, mul_result,
arg.src3, arg.src3,
) )
/*
let builder = ctx.builder.get();
let src1 = ctx.names.value(arg.src1)?;
let src2 = ctx.names.value(arg.src2)?;
let mul_result = unsafe { LLVMBuildMul(builder, src1, src2, LLVM_UNNAMED) };
emit_inst_addsub_cc_impl(
ctx,
"add",
type_,
arg.dst,
arg.carry_out,
mul_result,
arg.src3,
)
*/
} }
fn get_llvm_type_struct<'a>( fn get_llvm_type_struct<'a>(