[PATCH v3 02/21] memory: add a few defines for octo (128-bit) values

Frédéric Pétrot posted 21 patches 4 years, 3 months ago
There is a newer version of this series
[PATCH v3 02/21] memory: add a few defines for octo (128-bit) values
Posted by Frédéric Pétrot 4 years, 3 months ago
Introducing unsigned quad, signed quad, and octo accesses types
to handle load and store by 128-bit processors.

Signed-off-by: Frédéric Pétrot <frederic.petrot@univ-grenoble-alpes.fr>
---
 include/exec/memop.h | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/include/exec/memop.h b/include/exec/memop.h
index c554bb0ee8..476ea6cdae 100644
--- a/include/exec/memop.h
+++ b/include/exec/memop.h
@@ -85,10 +85,13 @@ typedef enum MemOp {
     MO_UB    = MO_8,
     MO_UW    = MO_16,
     MO_UL    = MO_32,
+    MO_UQ    = MO_64,
     MO_SB    = MO_SIGN | MO_8,
     MO_SW    = MO_SIGN | MO_16,
     MO_SL    = MO_SIGN | MO_32,
-    MO_UQ     = MO_64,
+    MO_SQ    = MO_SIGN | MO_64,
+    MO_Q     = MO_64,
+    MO_O     = MO_128,
 
     MO_LEUW  = MO_LE | MO_UW,
     MO_LEUL  = MO_LE | MO_UL,
@@ -105,9 +108,12 @@ typedef enum MemOp {
 #ifdef NEED_CPU_H
     MO_TEUW  = MO_TE | MO_UW,
     MO_TEUL  = MO_TE | MO_UL,
+    MO_TEUQ  = MO_TE | MO_UQ,
     MO_TESW  = MO_TE | MO_SW,
     MO_TESL  = MO_TE | MO_SL,
     MO_TEQ   = MO_TE | MO_UQ,
+    MO_TESQ  = MO_TE | MO_SQ,
+    MO_TEO   = MO_TE | MO_O,
 #endif
 
     MO_SSIZE = MO_SIZE | MO_SIGN,
-- 
2.33.0


Re: [PATCH v3 02/21] memory: add a few defines for octo (128-bit) values
Posted by Richard Henderson 4 years, 3 months ago
On 10/19/21 2:47 AM, Frédéric Pétrot wrote:
> Introducing unsigned quad, signed quad, and octo accesses types
> to handle load and store by 128-bit processors.
> 
> Signed-off-by: Frédéric Pétrot <frederic.petrot@univ-grenoble-alpes.fr>
> ---
>   include/exec/memop.h | 8 +++++++-
>   1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/include/exec/memop.h b/include/exec/memop.h
> index c554bb0ee8..476ea6cdae 100644
> --- a/include/exec/memop.h
> +++ b/include/exec/memop.h
> @@ -85,10 +85,13 @@ typedef enum MemOp {
>       MO_UB    = MO_8,
>       MO_UW    = MO_16,
>       MO_UL    = MO_32,
> +    MO_UQ    = MO_64,
>       MO_SB    = MO_SIGN | MO_8,
>       MO_SW    = MO_SIGN | MO_16,
>       MO_SL    = MO_SIGN | MO_32,
> -    MO_UQ     = MO_64,
> +    MO_SQ    = MO_SIGN | MO_64,
> +    MO_Q     = MO_64,
> +    MO_O     = MO_128,

There's no point in removing MO_Q in one patch and adding it back in the next.  And I 
guess we might as well name MO_O to MO_UO now.

> @@ -105,9 +108,12 @@ typedef enum MemOp {
>   #ifdef NEED_CPU_H
>       MO_TEUW  = MO_TE | MO_UW,
>       MO_TEUL  = MO_TE | MO_UL,
> +    MO_TEUQ  = MO_TE | MO_UQ,
>       MO_TESW  = MO_TE | MO_SW,
>       MO_TESL  = MO_TE | MO_SL,
>       MO_TEQ   = MO_TE | MO_UQ,
> +    MO_TESQ  = MO_TE | MO_SQ,

These should have been renamed at the same time as MO_Q.  Though it seems you are missing 
a rename of these throughout target/?  Surely this patch does not build as-is.


r~