From: Claudiu Zissulescu <[email protected]>

Hi Tamar,

Please find the updated aarch64 patches with considering your
feedback. I have also included the test patch as I have updated a
number of them.

What is new:

 - Tagging a memory region is using now st2g instruction in the
   loop. Now the tagging loop has this structure:

        tbz     size, 4, .L1
        stg     tag, [tptr], 16
.L1:
        asr     size, size, 5
        cbz     size, .L2
.L3:
        st2g    tag, [tptr], 32
        subs    size, size, 1
        bne     .L3
.L2:   

 - The decision if a tagging loop is unrolled can be controlled using
   the architecture specific parameter
   `aarch64-tag-memory-loop-threshold`.

 - Update post/pre variants stg/st2g instructions.

Thank you,
Claudiu


Claudiu Zissulescu (2):
  aarch64: Add support for memetag-stack sanitizer using MTE insns
  aarch64: Add memtag-stack tests

 gcc/config/aarch64/aarch64-builtins.cc        |   7 +-
 gcc/config/aarch64/aarch64-linux.h            |   4 +-
 gcc/config/aarch64/aarch64-protos.h           |   3 +
 gcc/config/aarch64/aarch64.cc                 | 322 +++++++++++++++++-
 gcc/config/aarch64/aarch64.md                 | 127 +++++--
 gcc/config/aarch64/aarch64.opt                |   5 +
 gcc/config/aarch64/constraints.md             |  21 ++
 gcc/config/aarch64/iterators.md               |  20 ++
 gcc/config/aarch64/predicates.md              |  13 +-
 gcc/doc/invoke.texi                           |  11 +-
 .../gcc.target/aarch64/acle/memtag_1.c        |   4 +-
 .../gcc.target/aarch64/memtag/alloca-1.c      |  15 +
 .../gcc.target/aarch64/memtag/alloca-2.c      |  15 +
 .../gcc.target/aarch64/memtag/alloca-3.c      |  28 ++
 .../gcc.target/aarch64/memtag/arguments-1.c   |   3 +
 .../gcc.target/aarch64/memtag/arguments-2.c   |   3 +
 .../gcc.target/aarch64/memtag/arguments-3.c   |   3 +
 .../gcc.target/aarch64/memtag/arguments-4.c   |  16 +
 .../gcc.target/aarch64/memtag/arguments.c     |   3 +
 .../gcc.target/aarch64/memtag/basic-1.c       |  14 +
 .../gcc.target/aarch64/memtag/basic-3.c       |  28 ++
 .../gcc.target/aarch64/memtag/basic-struct.c  |  22 ++
 .../aarch64/memtag/cfi-mte-memtag-frame-1.c   |  11 +
 .../gcc.target/aarch64/memtag/large-array.c   |  23 ++
 .../aarch64/memtag/local-no-escape.c          |  22 ++
 .../gcc.target/aarch64/memtag/memtag.exp      |  32 ++
 .../gcc.target/aarch64/memtag/mte-sig.h       |  15 +
 .../aarch64/memtag/no-sanitize-attribute.c    |  18 +
 .../gcc.target/aarch64/memtag/texec-1.c       |  27 ++
 .../gcc.target/aarch64/memtag/texec-2.c       |  22 ++
 .../gcc.target/aarch64/memtag/texec-3.c       |  37 ++
 .../gcc.target/aarch64/memtag/value-init.c    |  14 +
 .../aarch64/memtag/vararray-gimple.c          |  16 +
 .../gcc.target/aarch64/memtag/vararray.c      |  15 +
 .../gcc.target/aarch64/memtag/vla-1.c         |  39 +++
 .../gcc.target/aarch64/memtag/vla-2.c         |  48 +++
 .../gcc.target/aarch64/memtag/zero-init.c     |  14 +
 gcc/testsuite/lib/target-supports.exp         |  43 +++
 38 files changed, 1039 insertions(+), 44 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/alloca-1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/alloca-2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/alloca-3.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/arguments-1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/arguments-2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/arguments-3.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/arguments-4.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/arguments.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/basic-1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/basic-3.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/basic-struct.c
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/memtag/cfi-mte-memtag-frame-1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/large-array.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/local-no-escape.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/memtag.exp
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/mte-sig.h
 create mode 100644 
gcc/testsuite/gcc.target/aarch64/memtag/no-sanitize-attribute.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/texec-1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/texec-2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/texec-3.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/value-init.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/vararray-gimple.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/vararray.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/vla-1.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/vla-2.c
 create mode 100644 gcc/testsuite/gcc.target/aarch64/memtag/zero-init.c

-- 
2.52.0

Reply via email to