[prev in list] [next in list] [prev in thread] [next in thread] 

List:       qemu-devel
Subject:    [Bug 1885350] Re: RISCV dynamic rounding mode is not behaving correctly
From:       Mina Magdy <1885350 () bugs ! launchpad ! net>
Date:       2020-06-30 20:59:25
Message-ID: 159355076509.18036.506736375392887824.malone () soybean ! canonical ! com
[Download RAW message or body]

Thank you Alistair Francis.

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1885350

Title:
  RISCV dynamic rounding mode is not behaving correctly

Status in QEMU:
  New

Bug description:
  Hello,

  I've gone through the RISC-V code in latest QEMU release
  (qemu-5.0.0-rc2) and when checking the Floating point encodings I
  found the rounding mode is only updated if the opcode field "rm" is
  changed "ctx->frm == rm". But according to RISC-V Volume I:
  Unprivileged ISA, there's a dynamic mode when rm=7 where the rounding
  mode is set with frm value.

  So for the same rm value (=7) and when changing frm value seeking
  different rounding modes, and according to the below code, the
  rounding mode won't be updated. Please correct me if I got this
  implementation wrong.

  static void gen_set_rm(DisasContext *ctx, int rm)
  {
      TCGv_i32 t0;
      if (ctx->frm == rm) {
          return;
      }
      ctx->frm = rm;
      t0 = tcg_const_i32(rm);
      gen_helper_set_rounding_mode(cpu_env, t0);
      tcg_temp_free_i32(t0);
  }

  
  My testcase:
  I set statically the rm field in the instruction to 7 and before this execution I \
changed the value of frm field in fcsr register. For the 1st time it worked \
(according to the code above, the rm is updated so the round mode will also be \
updated). But when changing fcsr register an re-execute the instruction, there's no \
difference and the rounding mode is the same like the previous frm value.

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1885350/+subscriptions


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic