On 8/30/21 11:38 PM, Philippe Mathieu-Daudé wrote:
> On 8/30/21 7:16 PM, Frédéric Pétrot wrote:
>> Adding the support for the 128-bit arithmetic and logic instructions.
>> Remember that all (i) instructions are now acting on 128-bit registers, that
>> a few others are added to cope with values that are held on 64 bits within
>> the 128-bit registers, and that the ones that cope with values on 32-bit
>> must also be modified for proper sign extension.
>> Most algorithms taken from Hackers' delight.
>>
>> Signed-off-by: Frédéric Pétrot <frederic.pet...@univ-grenoble-alpes.fr>
>> Co-authored-by: Fabien Portas <fabien.por...@grenoble-inp.org>
>> ---
>>  target/riscv/insn32.decode              |  13 +
>>  target/riscv/insn_trans/trans_rvi.c.inc | 955 +++++++++++++++++++++++-
>>  target/riscv/translate.c                |  25 +
>>  3 files changed, 976 insertions(+), 17 deletions(-)
> 
>> diff --git a/target/riscv/insn_trans/trans_rvi.c.inc 
>> b/target/riscv/insn_trans/trans_rvi.c.inc
>> index 772330a766..0401ba3d69 100644
>> --- a/target/riscv/insn_trans/trans_rvi.c.inc
>> +++ b/target/riscv/insn_trans/trans_rvi.c.inc
>> @@ -26,14 +26,20 @@ static bool trans_illegal(DisasContext *ctx, arg_empty 
>> *a)
>>  
>>  static bool trans_c64_illegal(DisasContext *ctx, arg_empty *a)
>>  {
>> -     REQUIRE_64BIT(ctx);
>> -     return trans_illegal(ctx, a);
>> +    REQUIRE_64_OR_128BIT(ctx);
>> +    return trans_illegal(ctx, a);
>>  }
>>  
>>  static bool trans_lui(DisasContext *ctx, arg_lui *a)
>>  {
>>      if (a->rd != 0) {
>>          tcg_gen_movi_tl(cpu_gpr[a->rd], a->imm);
>> +#if defined(TARGET_RISCV128)
>> +        if (is_128bit(ctx)) {
> 
> Maybe this could allow the compiler eventually elide the
> code and avoid superfluous #ifdef'ry:
> 
>            if (TARGET_LONG_BITS >= 128) {

Actually:

             if (TARGET_LONG_BITS >= 128 && is_128bit(ctx)) {

> 
>> +            tcg_gen_ext_i64_i128(cpu_gpr[a->rd], cpu_gprh[a->rd],
>> +                                 cpu_gpr[a->rd]);
>> +        }
>> +#endif
>>      }
>>      return true;
>>  }
> 

Reply via email to