diff mbox series

[v4,3/3] target/ppc: Implement hashstp and hashchkp

Message ID 20220715205439.161110-4-victor.colombo@eldorado.org.br (mailing list archive)
State New, archived
Headers show
Series Implement Power ISA 3.1B hash insns | expand

Commit Message

Víctor Colombo July 15, 2022, 8:54 p.m. UTC
Implementation for instructions hashstp and hashchkp, the privileged
versions of hashst and hashchk, which were added in Power ISA 3.1B.

Signed-off-by: Víctor Colombo <victor.colombo@eldorado.org.br>
---
 target/ppc/excp_helper.c                   | 2 ++
 target/ppc/helper.h                        | 2 ++
 target/ppc/insn32.decode                   | 2 ++
 target/ppc/translate/fixedpoint-impl.c.inc | 2 ++
 4 files changed, 8 insertions(+)

Comments

Lucas Mateus Martins Araujo e Castro July 18, 2022, 6:23 p.m. UTC | #1
Reviewed-by: Lucas Mateus Castro <lucas.araujo@eldorado.org.br>

On 15/07/2022 17:54, Víctor Colombo wrote:
> Implementation for instructions hashstp and hashchkp, the privileged
> versions of hashst and hashchk, which were added in Power ISA 3.1B.
>
> Signed-off-by: Víctor Colombo<victor.colombo@eldorado.org.br>
> ---
>   target/ppc/excp_helper.c                   | 2 ++
>   target/ppc/helper.h                        | 2 ++
>   target/ppc/insn32.decode                   | 2 ++
>   target/ppc/translate/fixedpoint-impl.c.inc | 2 ++
>   4 files changed, 8 insertions(+)
>
> diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
> index fa5a737e22..847eff9213 100644
> --- a/target/ppc/excp_helper.c
> +++ b/target/ppc/excp_helper.c
> @@ -2255,6 +2255,8 @@ void helper_##op(CPUPPCState *env, target_ulong ea, target_ulong ra,          \
>
>   HELPER_HASH(HASHST, env->spr[SPR_HASHKEYR], true)
>   HELPER_HASH(HASHCHK, env->spr[SPR_HASHKEYR], false)
> +HELPER_HASH(HASHSTP, env->spr[SPR_HASHPKEYR], true)
> +HELPER_HASH(HASHCHKP, env->spr[SPR_HASHPKEYR], false)
>
>   #if !defined(CONFIG_USER_ONLY)
>
> diff --git a/target/ppc/helper.h b/target/ppc/helper.h
> index 5817af632b..122b2e9359 100644
> --- a/target/ppc/helper.h
> +++ b/target/ppc/helper.h
> @@ -6,6 +6,8 @@ DEF_HELPER_FLAGS_4(td, TCG_CALL_NO_WG, void, env, tl, tl, i32)
>   #endif
>   DEF_HELPER_4(HASHST, void, env, tl, tl, tl)
>   DEF_HELPER_4(HASHCHK, void, env, tl, tl, tl)
> +DEF_HELPER_4(HASHSTP, void, env, tl, tl, tl)
> +DEF_HELPER_4(HASHCHKP, void, env, tl, tl, tl)
>   #if !defined(CONFIG_USER_ONLY)
>   DEF_HELPER_2(store_msr, void, env, tl)
>   DEF_HELPER_1(rfi, void, env)
> diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode
> index 544514565c..da08960fca 100644
> --- a/target/ppc/insn32.decode
> +++ b/target/ppc/insn32.decode
> @@ -330,6 +330,8 @@ PEXTD           011111 ..... ..... ..... 0010111100 -   @X
>
>   HASHST          011111 ..... ..... ..... 1011010010 .   @X_DW
>   HASHCHK         011111 ..... ..... ..... 1011110010 .   @X_DW
> +HASHSTP         011111 ..... ..... ..... 1010010010 .   @X_DW
> +HASHCHKP        011111 ..... ..... ..... 1010110010 .   @X_DW
>
>   ## BCD Assist
>
> diff --git a/target/ppc/translate/fixedpoint-impl.c.inc b/target/ppc/translate/fixedpoint-impl.c.inc
> index 41c06de8a2..1ba56cbed5 100644
> --- a/target/ppc/translate/fixedpoint-impl.c.inc
> +++ b/target/ppc/translate/fixedpoint-impl.c.inc
> @@ -572,3 +572,5 @@ static bool do_hash(DisasContext *ctx, arg_X *a, bool priv,
>
>   TRANS(HASHST, do_hash, false, gen_helper_HASHST)
>   TRANS(HASHCHK, do_hash, false, gen_helper_HASHCHK)
> +TRANS(HASHSTP, do_hash, true, gen_helper_HASHSTP)
> +TRANS(HASHCHKP, do_hash, true, gen_helper_HASHCHKP)
> --
> 2.25.1
>
>
diff mbox series

Patch

diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
index fa5a737e22..847eff9213 100644
--- a/target/ppc/excp_helper.c
+++ b/target/ppc/excp_helper.c
@@ -2255,6 +2255,8 @@  void helper_##op(CPUPPCState *env, target_ulong ea, target_ulong ra,          \
 
 HELPER_HASH(HASHST, env->spr[SPR_HASHKEYR], true)
 HELPER_HASH(HASHCHK, env->spr[SPR_HASHKEYR], false)
+HELPER_HASH(HASHSTP, env->spr[SPR_HASHPKEYR], true)
+HELPER_HASH(HASHCHKP, env->spr[SPR_HASHPKEYR], false)
 
 #if !defined(CONFIG_USER_ONLY)
 
diff --git a/target/ppc/helper.h b/target/ppc/helper.h
index 5817af632b..122b2e9359 100644
--- a/target/ppc/helper.h
+++ b/target/ppc/helper.h
@@ -6,6 +6,8 @@  DEF_HELPER_FLAGS_4(td, TCG_CALL_NO_WG, void, env, tl, tl, i32)
 #endif
 DEF_HELPER_4(HASHST, void, env, tl, tl, tl)
 DEF_HELPER_4(HASHCHK, void, env, tl, tl, tl)
+DEF_HELPER_4(HASHSTP, void, env, tl, tl, tl)
+DEF_HELPER_4(HASHCHKP, void, env, tl, tl, tl)
 #if !defined(CONFIG_USER_ONLY)
 DEF_HELPER_2(store_msr, void, env, tl)
 DEF_HELPER_1(rfi, void, env)
diff --git a/target/ppc/insn32.decode b/target/ppc/insn32.decode
index 544514565c..da08960fca 100644
--- a/target/ppc/insn32.decode
+++ b/target/ppc/insn32.decode
@@ -330,6 +330,8 @@  PEXTD           011111 ..... ..... ..... 0010111100 -   @X
 
 HASHST          011111 ..... ..... ..... 1011010010 .   @X_DW
 HASHCHK         011111 ..... ..... ..... 1011110010 .   @X_DW
+HASHSTP         011111 ..... ..... ..... 1010010010 .   @X_DW
+HASHCHKP        011111 ..... ..... ..... 1010110010 .   @X_DW
 
 ## BCD Assist
 
diff --git a/target/ppc/translate/fixedpoint-impl.c.inc b/target/ppc/translate/fixedpoint-impl.c.inc
index 41c06de8a2..1ba56cbed5 100644
--- a/target/ppc/translate/fixedpoint-impl.c.inc
+++ b/target/ppc/translate/fixedpoint-impl.c.inc
@@ -572,3 +572,5 @@  static bool do_hash(DisasContext *ctx, arg_X *a, bool priv,
 
 TRANS(HASHST, do_hash, false, gen_helper_HASHST)
 TRANS(HASHCHK, do_hash, false, gen_helper_HASHCHK)
+TRANS(HASHSTP, do_hash, true, gen_helper_HASHSTP)
+TRANS(HASHCHKP, do_hash, true, gen_helper_HASHCHKP)