mirror of
https://github.com/qemu/qemu.git
synced 2024-12-11 12:43:55 +08:00
target/riscv: rvv-1.0: single-width floating-point reduction
Signed-off-by: Frank Chang <frank.chang@sifive.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20211210075704.23951-54-frank.chang@sifive.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
a70b3a73e7
commit
08b60eebc4
@ -2637,9 +2637,15 @@ GEN_OPIVV_WIDEN_TRANS(vwredsum_vs, reduction_widen_check)
|
||||
GEN_OPIVV_WIDEN_TRANS(vwredsumu_vs, reduction_widen_check)
|
||||
|
||||
/* Vector Single-Width Floating-Point Reduction Instructions */
|
||||
GEN_OPFVV_TRANS(vfredsum_vs, reduction_check)
|
||||
GEN_OPFVV_TRANS(vfredmax_vs, reduction_check)
|
||||
GEN_OPFVV_TRANS(vfredmin_vs, reduction_check)
|
||||
static bool freduction_check(DisasContext *s, arg_rmrr *a)
|
||||
{
|
||||
return reduction_check(s, a) &&
|
||||
require_rvf(s);
|
||||
}
|
||||
|
||||
GEN_OPFVV_TRANS(vfredsum_vs, freduction_check)
|
||||
GEN_OPFVV_TRANS(vfredmax_vs, freduction_check)
|
||||
GEN_OPFVV_TRANS(vfredmin_vs, freduction_check)
|
||||
|
||||
/* Vector Widening Floating-Point Reduction Instructions */
|
||||
GEN_OPFVV_WIDEN_TRANS(vfwredsum_vs, reduction_check)
|
||||
|
@ -4173,14 +4173,14 @@ GEN_VEXT_FRED(vfredsum_vs_w, uint32_t, uint32_t, H4, H4, float32_add)
|
||||
GEN_VEXT_FRED(vfredsum_vs_d, uint64_t, uint64_t, H8, H8, float64_add)
|
||||
|
||||
/* Maximum value */
|
||||
GEN_VEXT_FRED(vfredmax_vs_h, uint16_t, uint16_t, H2, H2, float16_maxnum)
|
||||
GEN_VEXT_FRED(vfredmax_vs_w, uint32_t, uint32_t, H4, H4, float32_maxnum)
|
||||
GEN_VEXT_FRED(vfredmax_vs_d, uint64_t, uint64_t, H8, H8, float64_maxnum)
|
||||
GEN_VEXT_FRED(vfredmax_vs_h, uint16_t, uint16_t, H2, H2, float16_maximum_number)
|
||||
GEN_VEXT_FRED(vfredmax_vs_w, uint32_t, uint32_t, H4, H4, float32_maximum_number)
|
||||
GEN_VEXT_FRED(vfredmax_vs_d, uint64_t, uint64_t, H8, H8, float64_maximum_number)
|
||||
|
||||
/* Minimum value */
|
||||
GEN_VEXT_FRED(vfredmin_vs_h, uint16_t, uint16_t, H2, H2, float16_minnum)
|
||||
GEN_VEXT_FRED(vfredmin_vs_w, uint32_t, uint32_t, H4, H4, float32_minnum)
|
||||
GEN_VEXT_FRED(vfredmin_vs_d, uint64_t, uint64_t, H8, H8, float64_minnum)
|
||||
GEN_VEXT_FRED(vfredmin_vs_h, uint16_t, uint16_t, H2, H2, float16_minimum_number)
|
||||
GEN_VEXT_FRED(vfredmin_vs_w, uint32_t, uint32_t, H4, H4, float32_minimum_number)
|
||||
GEN_VEXT_FRED(vfredmin_vs_d, uint64_t, uint64_t, H8, H8, float64_minimum_number)
|
||||
|
||||
/* Vector Widening Floating-Point Reduction Instructions */
|
||||
/* Unordered reduce 2*SEW = 2*SEW + sum(promote(SEW)) */
|
||||
|
Loading…
Reference in New Issue
Block a user