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/i386-modes.def | |
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/i386-modes.def')
-rw-r--r-- | gcc/config/i386/i386-modes.def | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/config/i386/i386-modes.def b/gcc/config/i386/i386-modes.def index 2efccda0aec..c772e06685c 100644 --- a/gcc/config/i386/i386-modes.def +++ b/gcc/config/i386/i386-modes.def @@ -53,11 +53,19 @@ ADJUST_ALIGNMENT (XF, TARGET_128BIT_LONG_DOUBLE ? 16 : 4); mode is used to simulate comparisons of (a-b) and (a+b) against zero using sub/cmp/add operations. + Add CCA to indicate that only the Above flag is valid. + Add CCC to indicate that only the Carry flag is valid. + Add CCO to indicate that only the Overflow flag is valid. + Add CCS to indicate that only the Sign flag is valid. Add CCZ to indicate that only the Zero flag is valid. */ CC_MODE (CCGC); CC_MODE (CCGOC); CC_MODE (CCNO); +CC_MODE (CCA); +CC_MODE (CCC); +CC_MODE (CCO); +CC_MODE (CCS); CC_MODE (CCZ); CC_MODE (CCFP); CC_MODE (CCFPU); |