claudiu.zissulescu-iancule...@oracle.com writes:
> From: Indu Bhagat <indu.bha...@oracle.com>
>
> Define new constants to be used by the MTE pattern definitions.
>
> gcc/
>
>       * config/aarch64/aarch64.md (MEMTAG_TAG_MASK): New define
>       constant.
>       (MEMTAG_ADDR_MASK): Likewise.
>       (irg, subp, ldg): Use new constants.
>
> Signed-off-by: Claudiu Zissulescu <claudiu.zissulescu-iancule...@oracle.com>
> ---
>  gcc/config/aarch64/aarch64.md | 18 ++++++++++++++----
>  1 file changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
> index 27efc9155dc..bade8af7997 100644
> --- a/gcc/config/aarch64/aarch64.md
> +++ b/gcc/config/aarch64/aarch64.md
> @@ -440,6 +440,16 @@ (define_constants
>     ; must not operate on inactive inputs if doing so could induce a fault.
>     (SVE_STRICT_GP 1)])
>  
> +;; These constants are used as a const_int in MTE instructions
> +(define_constants
> +  [; 0xf0ff...
> +   ; Tag mask for the 4-bit tag stored in the top 8 bits of a pointer.
> +   (MEMTAG_TAG_MASK -1080863910568919041)
> +
> +   ;  0x00ff...
> +   ; Tag mask 56-bit address used by subp instruction.
> +   (MEMTAG_ADDR_MASK 72057594037927935)])
> +
>  (include "constraints.md")
>  (include "predicates.md")
>  (include "iterators.md")
> @@ -8556,7 +8566,7 @@ (define_insn "irg"
>    [(set (match_operand:DI 0 "register_operand" "=rk")
>       (ior:DI
>        (and:DI (match_operand:DI 1 "register_operand" "rk")
> -              (const_int -1080863910568919041)) ;; 0xf0ff...
> +              (const_int MEMTAG_TAG_MASK)) ;; 0xf0ff...

I think we can drop the comments now, since the name of the constant
makes it clear enough.  Same for the uses below.

OK with that change.  Thanks for doing this.

Richard

>        (ashift:DI (unspec:QI [(match_operand:DI 2 "register_operand" "r")]
>                    UNSPEC_GEN_TAG_RND)
>                   (const_int 56))))]
> @@ -8599,9 +8609,9 @@ (define_insn "subp"
>    [(set (match_operand:DI 0 "register_operand" "=r")
>       (minus:DI
>         (and:DI (match_operand:DI 1 "register_operand" "rk")
> -               (const_int 72057594037927935)) ;; 0x00ff...
> +               (const_int MEMTAG_ADDR_MASK)) ;; 0x00ff...
>         (and:DI (match_operand:DI 2 "register_operand" "rk")
> -               (const_int 72057594037927935))))] ;; 0x00ff...
> +               (const_int MEMTAG_ADDR_MASK))))] ;; 0x00ff...
>    "TARGET_MEMTAG"
>    "subp\\t%0, %1, %2"
>    [(set_attr "type" "memtag")]
> @@ -8611,7 +8621,7 @@ (define_insn "subp"
>  (define_insn "ldg"
>    [(set (match_operand:DI 0 "register_operand" "+r")
>       (ior:DI
> -      (and:DI (match_dup 0) (const_int -1080863910568919041)) ;; 0xf0ff...
> +      (and:DI (match_dup 0) (const_int MEMTAG_TAG_MASK)) ;; 0xf0ff...
>        (ashift:DI
>         (mem:QI (unspec:DI
>          [(and:DI (plus:DI (match_operand:DI 1 "register_operand" "rk")

Reply via email to