Skip to content

Commit

Permalink
Use uint64 registers for unsigned arguments in dispatch
Browse files Browse the repository at this point in the history
  • Loading branch information
niner committed Jan 15, 2022
1 parent 609d071 commit 8cb7202
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 8 deletions.
6 changes: 4 additions & 2 deletions src/vm/moar/QAST/QASTCompilerMAST.nqp
Original file line number Diff line number Diff line change
Expand Up @@ -1086,8 +1086,10 @@ my class MASTCompilerInstance {
$ins := self.coerce($ins, $MVM_reg_num64);
}
elsif $ins_result_kind == $MVM_reg_int32 || $ins_result_kind == $MVM_reg_int16 ||
$ins_result_kind == $MVM_reg_int8 || $ins_result_kind == $MVM_reg_uint64 ||
$ins_result_kind == $MVM_reg_uint32 || $ins_result_kind == $MVM_reg_uint16 ||
$ins_result_kind == $MVM_reg_int8 {
$ins := self.coerce($ins, $MVM_reg_int64);
}
elsif $ins_result_kind == $MVM_reg_uint64 || $ins_result_kind == $MVM_reg_uint32 || $ins_result_kind == $MVM_reg_uint16 ||
$ins_result_kind == $MVM_reg_uint8 {
$ins := self.coerce($ins, $MVM_reg_int64);

This comment has been minimized.

Copy link
@MasterDuke17

MasterDuke17 Jan 15, 2022

Contributor

Should be $MVM_reg_uint64?

This comment has been minimized.

Copy link
@niner

niner via email Jan 15, 2022

Author Contributor
}
Expand Down
16 changes: 10 additions & 6 deletions src/vm/moar/QAST/QASTOperationsMAST.nqp
Original file line number Diff line number Diff line change
Expand Up @@ -1568,11 +1568,13 @@ my $dispatch_call_gen := -> $qastcomp, $op {
$arg_mast := $qastcomp.coerce($arg_mast, $MVM_reg_num64);
}
elsif $arg_mast_kind == $MVM_reg_int32 || $arg_mast_kind == $MVM_reg_int16 ||
$arg_mast_kind == $MVM_reg_int8 || $arg_mast_kind == $MVM_reg_uint64 ||
$arg_mast_kind == $MVM_reg_uint32 || $arg_mast_kind == $MVM_reg_uint16 ||
$arg_mast_kind == $MVM_reg_uint8 {
$arg_mast_kind == $MVM_reg_int8 {
$arg_mast := $qastcomp.coerce($arg_mast, $MVM_reg_int64);
}
elsif $arg_mast_kind == $MVM_reg_uint32 || $arg_mast_kind == $MVM_reg_uint16 ||
$arg_mast_kind == $MVM_reg_uint8 {
$arg_mast := $qastcomp.coerce($arg_mast, $MVM_reg_uint64);
}
nqp::push(@dispatch_mast, $arg_mast);
nqp::push(@dispatch_arg_idxs, $arg_mast.result_reg);
}
Expand Down Expand Up @@ -1803,11 +1805,13 @@ QAST::MASTOperations.add_core_op('callmethod', -> $qastcomp, $op {
$arg_mast := $qastcomp.coerce($arg_mast, $MVM_reg_num64);
}
elsif $arg_mast_kind == $MVM_reg_int32 || $arg_mast_kind == $MVM_reg_int16 ||
$arg_mast_kind == $MVM_reg_int8 || $arg_mast_kind == $MVM_reg_uint64 ||
$arg_mast_kind == $MVM_reg_uint32 || $arg_mast_kind == $MVM_reg_uint16 ||
$arg_mast_kind == $MVM_reg_uint8 {
$arg_mast_kind == $MVM_reg_int8 {
$arg_mast := $qastcomp.coerce($arg_mast, $MVM_reg_int64);
}
elsif $arg_mast_kind == $MVM_reg_uint32 || $arg_mast_kind == $MVM_reg_uint16 ||
$arg_mast_kind == $MVM_reg_uint8 {
$arg_mast := $qastcomp.coerce($arg_mast, $MVM_reg_uint64);
}
nqp::push(@dispatch_mast, $arg_mast);
nqp::push(@dispatch_arg_idxs, $arg_mast.result_reg);
}
Expand Down

0 comments on commit 8cb7202

Please sign in to comment.