diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-02 09:07:00 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-06-02 09:07:00 +0000 |
commit | f0dd3debeb32c85a6aae502acb4ee280bd95bb9e (patch) | |
tree | 1a46abf87b3bfec77fc9f40db121f3c193579003 /gcc/config/i386/constraints.md | |
parent | 07c46636ce59515e30fddc0217bcb7dfe31173ba (diff) | |
download | gcc-f0dd3debeb32c85a6aae502acb4ee280bd95bb9e.tar.gz |
* config/i386/i386.h (enum reg_class) [SSE_FIRST_REG]: New.
(SSE_CLASS_P): Use reg_class_subset_p between SSE_REGS.
(REG_CLASS_NAMES): Add "FIRST_SSE_REG" string.
(REG_CLASS_CONTENTS): Add members of FIRST_SSE_REG class.
* config/i386/constraints.md ("z"): New register constraint
for members of SSE_FIRST_REG class.
* config/i386/i386-modes.def (CCA, CCC, CCO, CCS): New compare modes.
* config/i386/i386.c (regclass_map): Change class of %xmm0 to
SSE_FIRST_REG class.
(put_condition_code) [EQ, NE]: Output suffixes for new compare modes.
(ix86_cc_modes_compatible): Handle CCA, CCC, CCO and CCS modes.
(IX86_BUILTIN_PCMPESTRI128): New for SSE4.2.
(IX86_BUILTIN_PCMPESTRM128): Likewise.
(IX86_BUILTIN_PCMPESTRA128): Likewise.
(IX86_BUILTIN_PCMPESTRC128): Likewise.
(IX86_BUILTIN_PCMPESTRO128): Likewise.
(IX86_BUILTIN_PCMPESTRS128): Likewise.
(IX86_BUILTIN_PCMPESTRZ128): Likewise.
(IX86_BUILTIN_PCMPISTRI128): Likewise.
(IX86_BUILTIN_PCMPISTRM128): Likewise.
(IX86_BUILTIN_PCMPISTRA128): Likewise.
(IX86_BUILTIN_PCMPISTRC128): Likewise.
(IX86_BUILTIN_PCMPISTRO128): Likewise.
(IX86_BUILTIN_PCMPISTRS128): Likewise.
(IX86_BUILTIN_PCMPISTRZ128): Likewise.
(struct builtin_description): Change "flag" field to unsigned.
(bdesc_pcmpestr): New builtin description table.
(bdesc_pcmpistr): Likewise.
(ix86_init_mmx_sse_builtins): Define int_ftype_v16qi_int_v16qi_int_int,
v16qi_ftype_v16qi_int_v16qi_int_int and int_ftype_v16qi_v16qi_int.
Initialize pcmp[ei]str[im] insns for SSE4.2.
(ix86_expand_sse_pcmpestr): New subroutine of ix86_expand_builtin.
(ix86_expand_sse_pcmpistr): Likewise.
(ix86_expand_builtin): Expand pcmp[ei]str[im] builtins for SSE4.2.
* config/i386/i386.md (UNSPEC_PCMPESTR): New for SSE4.2.
(UNSPEC_PCMPISTR): Likewise.
* config/i386/sse.md (sse4_2_pcmpestr): New insn patern and splitter.
(sse4_2_pcmpestri):New isns pattern.
(sse4_2_pcmpestrm): Likewise.
(sse4_2_pcmpestr_cconly): Likewise.
(sse4_2_pcmpistr): New insn patern and splitter.
(sse4_2_pcmpistri):New isns pattern.
(sse4_2_pcmpistrm): Likewise.
(sse4_2_pcmpistr_cconly): Likewise.
* config/i386/smmintrin.h: Enable pcmp[ei]str[im] intrinsics
in SSE4.2.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125279 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/constraints.md')
-rw-r--r-- | gcc/config/i386/constraints.md | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/config/i386/constraints.md b/gcc/config/i386/constraints.md index da700219ed8..281d01ff907 100644 --- a/gcc/config/i386/constraints.md +++ b/gcc/config/i386/constraints.md @@ -19,8 +19,8 @@ ;; Boston, MA 02110-1301, USA. ;;; Unused letters: -;;; B H TU W -;;; h jk vw z +;;; B H TU W +;;; h jk vw ;; Integer register constraints. ;; It is not necessary to define 'r' here. @@ -83,6 +83,9 @@ (define_register_constraint "x" "TARGET_SSE ? SSE_REGS : NO_REGS" "Any SSE register.") +(define_register_constraint "z" "TARGET_SSE ? SSE_FIRST_REG : NO_REGS" + "First SSE register (@code{%xmm0}).") + ;; We use the Y prefix to denote any number of conditional register sets: ;; 2 SSE2 enabled ;; i SSE2 inter-unit moves enabled |