mirror of
https://github.com/qemu/qemu.git
synced 2025-08-09 01:50:43 +00:00
target/arm: Update WHILE for PREDDESC
Since b64ee454a4
, all predicate operations should be
using these field macros for predicates.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20210309155305.11301-8-richard.henderson@linaro.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
f556a201b5
commit
e610906c56
@ -2850,8 +2850,8 @@ uint64_t HELPER(sve_cntp)(void *vn, void *vg, uint32_t pred_desc)
|
|||||||
|
|
||||||
uint32_t HELPER(sve_while)(void *vd, uint32_t count, uint32_t pred_desc)
|
uint32_t HELPER(sve_while)(void *vd, uint32_t count, uint32_t pred_desc)
|
||||||
{
|
{
|
||||||
uintptr_t oprsz = extract32(pred_desc, 0, SIMD_OPRSZ_BITS) + 2;
|
intptr_t oprsz = FIELD_EX32(pred_desc, PREDDESC, OPRSZ);
|
||||||
intptr_t esz = extract32(pred_desc, SIMD_DATA_SHIFT, 2);
|
intptr_t esz = FIELD_EX32(pred_desc, PREDDESC, ESZ);
|
||||||
uint64_t esz_mask = pred_esz_masks[esz];
|
uint64_t esz_mask = pred_esz_masks[esz];
|
||||||
ARMPredicateReg *d = vd;
|
ARMPredicateReg *d = vd;
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
|
@ -3097,7 +3097,8 @@ static bool trans_WHILE(DisasContext *s, arg_WHILE *a)
|
|||||||
TCGv_i64 op0, op1, t0, t1, tmax;
|
TCGv_i64 op0, op1, t0, t1, tmax;
|
||||||
TCGv_i32 t2, t3;
|
TCGv_i32 t2, t3;
|
||||||
TCGv_ptr ptr;
|
TCGv_ptr ptr;
|
||||||
unsigned desc, vsz = vec_full_reg_size(s);
|
unsigned vsz = vec_full_reg_size(s);
|
||||||
|
unsigned desc = 0;
|
||||||
TCGCond cond;
|
TCGCond cond;
|
||||||
|
|
||||||
if (!sve_access_check(s)) {
|
if (!sve_access_check(s)) {
|
||||||
@ -3161,8 +3162,8 @@ static bool trans_WHILE(DisasContext *s, arg_WHILE *a)
|
|||||||
/* Scale elements to bits. */
|
/* Scale elements to bits. */
|
||||||
tcg_gen_shli_i32(t2, t2, a->esz);
|
tcg_gen_shli_i32(t2, t2, a->esz);
|
||||||
|
|
||||||
desc = (vsz / 8) - 2;
|
desc = FIELD_DP32(desc, PREDDESC, OPRSZ, vsz / 8);
|
||||||
desc = deposit32(desc, SIMD_DATA_SHIFT, 2, a->esz);
|
desc = FIELD_DP32(desc, PREDDESC, ESZ, a->esz);
|
||||||
t3 = tcg_const_i32(desc);
|
t3 = tcg_const_i32(desc);
|
||||||
|
|
||||||
ptr = tcg_temp_new_ptr();
|
ptr = tcg_temp_new_ptr();
|
||||||
|
Loading…
Reference in New Issue
Block a user