Browse Source

Zfa: fix NX handling for the fround/froundnx family

The initial implementation (together with the SAIL code and the tests)
had gotten the NX variants backwards (as in 'an inexact result is ok'
vs. 'set NX is inexact').  Update all 4 instructions.

Signed-off-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
pull/1353/head
Philipp Tomsich 3 years ago
parent
commit
e25fb13bcd
  1. 2
      riscv/insns/fround_d.h
  2. 2
      riscv/insns/fround_h.h
  3. 2
      riscv/insns/fround_q.h
  4. 2
      riscv/insns/fround_s.h
  5. 2
      riscv/insns/froundnx_d.h
  6. 2
      riscv/insns/froundnx_h.h
  7. 2
      riscv/insns/froundnx_q.h
  8. 2
      riscv/insns/froundnx_s.h

2
riscv/insns/fround_d.h

@ -1,5 +1,5 @@
require_extension('D');
require_extension(EXT_ZFA);
require_fp;
WRITE_FRD_D(f64_roundToInt(FRS1_D, RM, true));
WRITE_FRD_D(f64_roundToInt(FRS1_D, RM, false));
set_fp_exceptions;

2
riscv/insns/fround_h.h

@ -1,5 +1,5 @@
require_extension(EXT_ZFH);
require_extension(EXT_ZFA);
require_fp;
WRITE_FRD_H(f16_roundToInt(FRS1_H, RM, true));
WRITE_FRD_H(f16_roundToInt(FRS1_H, RM, false));
set_fp_exceptions;

2
riscv/insns/fround_q.h

@ -1,5 +1,5 @@
require_extension('Q');
require_extension(EXT_ZFA);
require_fp;
WRITE_FRD(f128_roundToInt(f128(FRS1), RM, true));
WRITE_FRD(f128_roundToInt(f128(FRS1), RM, false));
set_fp_exceptions;

2
riscv/insns/fround_s.h

@ -1,5 +1,5 @@
require_extension('F');
require_extension(EXT_ZFA);
require_fp;
WRITE_FRD_F(f32_roundToInt(FRS1_F, RM, true));
WRITE_FRD_F(f32_roundToInt(FRS1_F, RM, false));
set_fp_exceptions;

2
riscv/insns/froundnx_d.h

@ -1,5 +1,5 @@
require_extension('D');
require_extension(EXT_ZFA);
require_fp;
WRITE_FRD_D(f64_roundToInt(FRS1_D, RM, false));
WRITE_FRD_D(f64_roundToInt(FRS1_D, RM, true));
set_fp_exceptions;

2
riscv/insns/froundnx_h.h

@ -1,5 +1,5 @@
require_extension(EXT_ZFH);
require_extension(EXT_ZFA);
require_fp;
WRITE_FRD_H(f16_roundToInt(FRS1_H, RM, false));
WRITE_FRD_H(f16_roundToInt(FRS1_H, RM, true));
set_fp_exceptions;

2
riscv/insns/froundnx_q.h

@ -1,5 +1,5 @@
require_extension('Q');
require_extension(EXT_ZFA);
require_fp;
WRITE_FRD(f128_roundToInt(f128(FRS1), RM, false));
WRITE_FRD(f128_roundToInt(f128(FRS1), RM, true));
set_fp_exceptions;

2
riscv/insns/froundnx_s.h

@ -1,5 +1,5 @@
require_extension('F');
require_extension(EXT_ZFA);
require_fp;
WRITE_FRD_F(f32_roundToInt(FRS1_F, RM, false));
WRITE_FRD_F(f32_roundToInt(FRS1_F, RM, true));
set_fp_exceptions;

Loading…
Cancel
Save