[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v7 83/92] target/arm: Implement aarch64 SUDOT, USDOT
From: |
Richard Henderson |
Subject: |
[PATCH v7 83/92] target/arm: Implement aarch64 SUDOT, USDOT |
Date: |
Mon, 24 May 2021 18:03:49 -0700 |
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/arm/cpu.h | 5 +++++
target/arm/translate-a64.c | 25 +++++++++++++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/target/arm/cpu.h b/target/arm/cpu.h
index c75601b221..b2b684df55 100644
--- a/target/arm/cpu.h
+++ b/target/arm/cpu.h
@@ -4206,6 +4206,11 @@ static inline bool isar_feature_aa64_rcpc_8_4(const
ARMISARegisters *id)
return FIELD_EX64(id->id_aa64isar1, ID_AA64ISAR1, LRCPC) >= 2;
}
+static inline bool isar_feature_aa64_i8mm(const ARMISARegisters *id)
+{
+ return FIELD_EX64(id->id_aa64isar1, ID_AA64ISAR1, I8MM) != 0;
+}
+
static inline bool isar_feature_aa64_ccidx(const ARMISARegisters *id)
{
return FIELD_EX64(id->id_aa64mmfr2, ID_AA64MMFR2, CCIDX) != 0;
diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
index a8edd2d281..c875481784 100644
--- a/target/arm/translate-a64.c
+++ b/target/arm/translate-a64.c
@@ -12175,6 +12175,13 @@ static void
disas_simd_three_reg_same_extra(DisasContext *s, uint32_t insn)
}
feature = dc_isar_feature(aa64_dp, s);
break;
+ case 0x03: /* USDOT */
+ if (size != MO_32) {
+ unallocated_encoding(s);
+ return;
+ }
+ feature = dc_isar_feature(aa64_i8mm, s);
+ break;
case 0x18: /* FCMLA, #0 */
case 0x19: /* FCMLA, #90 */
case 0x1a: /* FCMLA, #180 */
@@ -12215,6 +12222,10 @@ static void
disas_simd_three_reg_same_extra(DisasContext *s, uint32_t insn)
u ? gen_helper_gvec_udot_b : gen_helper_gvec_sdot_b);
return;
+ case 0x3: /* USDOT */
+ gen_gvec_op4_ool(s, is_q, rd, rn, rm, rd, 0, gen_helper_gvec_usdot_b);
+ return;
+
case 0x8: /* FCMLA, #0 */
case 0x9: /* FCMLA, #90 */
case 0xa: /* FCMLA, #180 */
@@ -13360,6 +13371,13 @@ static void disas_simd_indexed(DisasContext *s,
uint32_t insn)
return;
}
break;
+ case 0x0f: /* SUDOT, USDOT */
+ if (is_scalar || (size & 1) || !dc_isar_feature(aa64_i8mm, s)) {
+ unallocated_encoding(s);
+ return;
+ }
+ size = MO_32;
+ break;
case 0x11: /* FCMLA #0 */
case 0x13: /* FCMLA #90 */
case 0x15: /* FCMLA #180 */
@@ -13474,6 +13492,13 @@ static void disas_simd_indexed(DisasContext *s,
uint32_t insn)
u ? gen_helper_gvec_udot_idx_b
: gen_helper_gvec_sdot_idx_b);
return;
+ case 0x0f: /* SUDOT, USDOT */
+ gen_gvec_op4_ool(s, is_q, rd, rn, rm, rd, index,
+ extract32(insn, 23, 1)
+ ? gen_helper_gvec_usdot_idx_b
+ : gen_helper_gvec_sudot_idx_b);
+ return;
+
case 0x11: /* FCMLA #0 */
case 0x13: /* FCMLA #90 */
case 0x15: /* FCMLA #180 */
--
2.25.1
- [PATCH v7 74/92] target/arm: Implement SVE2 FCVTXNT, FCVTX, (continued)
- [PATCH v7 74/92] target/arm: Implement SVE2 FCVTXNT, FCVTX, Richard Henderson, 2021/05/24
- [PATCH v7 75/92] target/arm: Implement SVE2 FLOGB, Richard Henderson, 2021/05/24
- [PATCH v7 73/92] target/arm: Implement SVE2 FCVTLT, Richard Henderson, 2021/05/24
- [PATCH v7 76/92] target/arm: Share table of sve load functions, Richard Henderson, 2021/05/24
- [PATCH v7 77/92] target/arm: Tidy do_ldrq, Richard Henderson, 2021/05/24
- [PATCH v7 79/92] target/arm: Implement 128-bit ZIP, UZP, TRN, Richard Henderson, 2021/05/24
- [PATCH v7 78/92] target/arm: Implement SVE2 LD1RO, Richard Henderson, 2021/05/24
- [PATCH v7 82/92] target/arm: Implement SVE2 fp multiply-add long, Richard Henderson, 2021/05/24
- [PATCH v7 80/92] target/arm: Implement SVE2 bitwise shift immediate, Richard Henderson, 2021/05/24
- [PATCH v7 81/92] target/arm: Move endian adjustment macros to vec_internal.h, Richard Henderson, 2021/05/24
- [PATCH v7 83/92] target/arm: Implement aarch64 SUDOT, USDOT,
Richard Henderson <=
- [PATCH v7 85/92] target/arm: Remove unused fpst from VDOT_scalar, Richard Henderson, 2021/05/24
- [PATCH v7 87/92] target/arm: Split out do_neon_ddda, Richard Henderson, 2021/05/24
- [PATCH v7 84/92] target/arm: Split out do_neon_ddda_fpst, Richard Henderson, 2021/05/24
- [PATCH v7 88/92] target/arm: Split decode of VSDOT and VUDOT, Richard Henderson, 2021/05/24
- [PATCH v7 89/92] target/arm: Implement aarch32 VSUDOT, VUSDOT, Richard Henderson, 2021/05/24
- [PATCH v7 86/92] target/arm: Fix decode for VDOT (indexed), Richard Henderson, 2021/05/24
- [PATCH v7 90/92] target/arm: Implement integer matrix multiply accumulate, Richard Henderson, 2021/05/24
- [PATCH v7 92/92] target/arm: Enable SVE2 and related extensions, Richard Henderson, 2021/05/24
- [PATCH v7 91/92] linux-user/aarch64: Enable hwcap bits for sve2 and related extensions, Richard Henderson, 2021/05/24
- Re: [PATCH v7 00/92] target/arm: Implement SVE2, no-reply, 2021/05/24