On Tue, Oct 13, 2020 at 10:30 AM Hongyu Wang <wwwhhhyyy...@gmail.com> wrote:
>
> Hi:
>
> This patch is about to support User Interrupt (UINTR) instructions.
>
> This feature defines user interrupts as new events in the architecture.  They 
> are delivered to software operating in 64-bit mode with CPL = 3 without any 
> change to segmentation state.
>
> For more details, please refer to 
> https://software.intel.com/content/dam/develop/external/us/en/documents/architecture-instruction-set-extensions-programming-reference.pdf
>
> Bootstrap ok, regression test on i386/x86 backend is ok.
>
> OK for master?
>
> gcc/
> * common/config/i386/cpuinfo.h (get_available_features):
> Detect UINTR.
> * common/config/i386/i386-common.c (OPTION_MASK_ISA2_UINTR_SET
> OPTION_MASK_ISA2_UINTR_UNSET): New.
> (ix86_handle_option): Handle -muintr.
> * common/config/i386/i386-cpuinfo.h (enum processor_features):
> Add FEATURE_UINTR.
> * common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY
> for uintr.
> * config.gcc: Add uintrintrin.h to extra_headers.
> * config/i386/uintrintrin.h: New.
> * config/i386/cpuid.h (bit_UINTR): New.
> * config/i386/driver-i386.c (host_detect_local_cpu): Detect UINTR.
> * config/i386/i386-builtin-types.def: Add new types.
> * config/i386/i386-builtin.def: Add new builtins.
> * config/i386/i386-builtins.c (ix86_init_mmx_sse_builtins): Add
> __builtin_ia32_testui.
> * config/i386/i386-builtins.h (ix86_builtins): Add
> IX86_BUILTIN_TESTUI.
> * config/i386/i386-c.c (ix86_target_macros_internal): Define
> __UINTR__.
> * config/i386/i386-expand.c (ix86_expand_special_args_builtin):
> Handle UINT8_FTYPE_VOID.
> (ix86_expand_builtin): Handle IX86_BUILTIN_TESTUI.
> * config/i386/i386-options.c (isa2_opts): Add -muintr.
> (ix86_valid_target_attribute_inner_p): Handle UINTR.
> (ix86_option_override_internal): Add TARGET_64BIT check for UINTR.
> * config/i386/i386.h (TARGET_UINTR, TARGET_UINTR_P, PTA_UINTR): New.
> (PTA_SAPPHIRRAPIDS): Add PTA_UINTR.
> * config/i386/i386.opt: Add -muintr.
> * config/i386/i386.md
> (define_int_iterator UINTR_UNSPECV): New.
> (define_int_attr uintr_unspecv): New.
> (uintr_<uintr_unspecv>, uintr_senduipi, testui):
> New define_insn patterns.
> * config/i386/x86gprintrin.h: Include uintrintrin.h
> * doc/invoke.texi: Document -muintr.
> * doc/extend.texi: Document uintr.
>
> gcc/testsuite/
>
> * gcc.target/i386/funcspec-56.inc: Add new target attribute.
> * gcc.target/i386/uintr-1.c: New test.
> * gcc.target/i386/uintr-2.c: Ditto.
> * gcc.target/i386/uintr-3.c: Ditto.
> * gcc.target/i386/uintr-4.c: Ditto.
> * gcc.target/i386/uintr-5.c: Ditto.

Please also add -muintr to g++.dg/other/i386-{2,3}.C and
gcc.target/i386-sse-{12,13,14,22,23}.c. This will test new intrinsics
header.

OK with the above change.

Thanks,
Uros.

Reply via email to