mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-21 04:31:04 +08:00
2d63a517e4
AVX-512 ISA adds 512-bit zmm registers. This patch updates _dl_runtime_profile to pass zmm registers to run-time audit. It also changes _dl_x86_64_save_sse and _dl_x86_64_restore_sse to upport zmm registers, which are called when only when RTLD_PREPARE_FOREIGN_CALL is used. Its performance impact is minimum. * config.h.in (HAVE_AVX512_SUPPORT): New #undef. (HAVE_AVX512_ASM_SUPPORT): Likewise. * sysdeps/x86_64/bits/link.h (La_x86_64_zmm): New. (La_x86_64_vector): Add zmm. * sysdeps/x86_64/Makefile (tests): Add tst-audit10. (modules-names): Add tst-auditmod10a and tst-auditmod10b. ($(objpfx)tst-audit10): New target. ($(objpfx)tst-audit10.out): Likewise. (tst-audit10-ENV): New. (AVX512-CFLAGS): Likewise. (CFLAGS-tst-audit10.c): Likewise. (CFLAGS-tst-auditmod10a.c): Likewise. (CFLAGS-tst-auditmod10b.c): Likewise. * sysdeps/x86_64/configure.ac: Set config-cflags-avx512, HAVE_AVX512_SUPPORT and HAVE_AVX512_ASM_SUPPORT. * sysdeps/x86_64/configure: Regenerated. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Add AVX-512 zmm register support. (_dl_x86_64_save_sse): Likewise. (_dl_x86_64_restore_sse): Likewise. * sysdeps/x86_64/dl-trampoline.h: Updated to support different size vector registers. * sysdeps/x86_64/link-defines.sym (YMM_SIZE): New. (ZMM_SIZE): Likewise. * sysdeps/x86_64/tst-audit10.c: New file. * sysdeps/x86_64/tst-auditmod10a.c: Likewise. * sysdeps/x86_64/tst-auditmod10b.c: Likewise.
31 lines
1.3 KiB
Plaintext
31 lines
1.3 KiB
Plaintext
#include "link.h"
|
|
#include <stddef.h>
|
|
|
|
--
|
|
VECTOR_SIZE sizeof (La_x86_64_vector)
|
|
XMM_SIZE sizeof (La_x86_64_xmm)
|
|
YMM_SIZE sizeof (La_x86_64_ymm)
|
|
ZMM_SIZE sizeof (La_x86_64_zmm)
|
|
|
|
LR_SIZE sizeof (struct La_x86_64_regs)
|
|
LR_RDX_OFFSET offsetof (struct La_x86_64_regs, lr_rdx)
|
|
LR_R8_OFFSET offsetof (struct La_x86_64_regs, lr_r8)
|
|
LR_R9_OFFSET offsetof (struct La_x86_64_regs, lr_r9)
|
|
LR_RCX_OFFSET offsetof (struct La_x86_64_regs, lr_rcx)
|
|
LR_RSI_OFFSET offsetof (struct La_x86_64_regs, lr_rsi)
|
|
LR_RDI_OFFSET offsetof (struct La_x86_64_regs, lr_rdi)
|
|
LR_RBP_OFFSET offsetof (struct La_x86_64_regs, lr_rbp)
|
|
LR_RSP_OFFSET offsetof (struct La_x86_64_regs, lr_rsp)
|
|
LR_XMM_OFFSET offsetof (struct La_x86_64_regs, lr_xmm)
|
|
LR_VECTOR_OFFSET offsetof (struct La_x86_64_regs, lr_vector)
|
|
|
|
LRV_SIZE sizeof (struct La_x86_64_retval)
|
|
LRV_RAX_OFFSET offsetof (struct La_x86_64_retval, lrv_rax)
|
|
LRV_RDX_OFFSET offsetof (struct La_x86_64_retval, lrv_rdx)
|
|
LRV_XMM0_OFFSET offsetof (struct La_x86_64_retval, lrv_xmm0)
|
|
LRV_XMM1_OFFSET offsetof (struct La_x86_64_retval, lrv_xmm1)
|
|
LRV_ST0_OFFSET offsetof (struct La_x86_64_retval, lrv_st0)
|
|
LRV_ST1_OFFSET offsetof (struct La_x86_64_retval, lrv_st1)
|
|
LRV_VECTOR0_OFFSET offsetof (struct La_x86_64_retval, lrv_vector0)
|
|
LRV_VECTOR1_OFFSET offsetof (struct La_x86_64_retval, lrv_vector1)
|