On 7/12/19 1:48 AM, Richard Henderson wrote: > On 7/12/19 12:32 AM, Jan Bobek wrote: >> insnv allows emitting variable-length instructions in little-endian or >> big-endian byte order; it subsumes functionality of former insn16() >> and insn32() functions. >> >> randint can reliably generate signed or unsigned integers of arbitrary >> width. >> >> Signed-off-by: Jan Bobek >> --- >> risugen_common.pm | 55 +++++++++++++++++++++++++++++++++++++++++------ >> 1 file changed, 48 insertions(+), 7 deletions(-) >> >> diff --git a/risugen_common.pm b/risugen_common.pm >> index 71ee996..d63250a 100644 >> --- a/risugen_common.pm >> +++ b/risugen_common.pm >> @@ -23,8 +23,9 @@ BEGIN { >> require Exporter; >> >> our @ISA = qw(Exporter); >> - our @EXPORT = qw(open_bin close_bin set_endian insn32 insn16 $bytecount >> - progress_start progress_update progress_end >> + our @EXPORT = qw(open_bin close_bin set_endian insn32 insn16 >> + $bytecount insnv randint progress_start >> + progress_update progress_end >> eval_with_fields is_pow_of_2 sextract ctz >> dump_insn_details); >> } >> @@ -37,7 +38,7 @@ my $bigendian = 0; >> # (default is little endian, 0). >> sub set_endian >> { >> - $bigendian = @_; >> + ($bigendian) = @_; >> } >> >> sub open_bin >> @@ -52,18 +53,58 @@ sub close_bin >> close(BIN) or die "can't close output file: $!"; >> } >> >> +sub insnv(%) >> +{ >> + my (%args) = @_; >> + >> + # Default to big-endian order, so that the instruction bytes are >> + # emitted in the same order as they are written in the >> + # configuration file. >> + $args{bigendian} = 1 unless defined $args{bigendian}; >> + >> + for (my $bitcur = 0; $bitcur < $args{width}; $bitcur += 8) { >> + my $value = $args{value} >> ($args{bigendian} >> + ? $args{width} - $bitcur - 8 >> + : $bitcur); >> + >> + print BIN pack("C", $value & 0xff); >> + $bytecount += 1; >> + } > > Looks like bytecount is no longer used? bytecount is an exported variable, a quick git grep shows that it's being used in risugen_arm.pm (sub thumb_align4). > Otherwise, > Reviewed-by: Richard Henderson > > > r~ >