Commit 0e67d460 by Jan Hubicka Committed by Jan Hubicka

i386.c (standard_sse_constant_p): Accept vector and integer zeros too.

	* i386.c (standard_sse_constant_p): Accept vector and integer zeros too.
	* i386.h (EXTRA_CONSTRAINT): Recognize 'C'
	* i386.md (movti_internal): Use 'C'

	* xmmintrin.h (_mm_cmplt_epi*): New.

From-SVN: r58423
parent d5869ca0
Wed Oct 23 00:33:11 CEST 2002 Jan Hubicka <jh@suse,cz>
* i386.c (standard_sse_constant_p): Accept vector and integer zeros too.
* i386.h (EXTRA_CONSTRAINT): Recognize 'C'
* i386.md (movti_internal): Use 'C'
* xmmintrin.h (_mm_cmplt_epi*): New.
2002-10-22 Ulrich Weigand <uweigand@de.ibm.com> 2002-10-22 Ulrich Weigand <uweigand@de.ibm.com>
* config/s390/s390.md ("*movdi_64"): Fix op_type attribute. * config/s390/s390.md ("*movdi_64"): Fix op_type attribute.
......
...@@ -3749,8 +3749,8 @@ int ...@@ -3749,8 +3749,8 @@ int
standard_sse_constant_p (x) standard_sse_constant_p (x)
rtx x; rtx x;
{ {
if (GET_CODE (x) != CONST_DOUBLE) if (x == const0_rtx)
return -1; return 1;
return (x == CONST0_RTX (GET_MODE (x))); return (x == CONST0_RTX (GET_MODE (x)));
} }
......
...@@ -1425,9 +1425,10 @@ enum reg_class ...@@ -1425,9 +1425,10 @@ enum reg_class
the constraint letter C. If C is not defined as an extra the constraint letter C. If C is not defined as an extra
constraint, the value returned should be 0 regardless of VALUE. */ constraint, the value returned should be 0 regardless of VALUE. */
#define EXTRA_CONSTRAINT(VALUE, C) \ #define EXTRA_CONSTRAINT(VALUE, D) \
((C) == 'e' ? x86_64_sign_extended_value (VALUE, 0) \ ((D) == 'e' ? x86_64_sign_extended_value (VALUE, 0) \
: (C) == 'Z' ? x86_64_zero_extended_value (VALUE) \ : (D) == 'Z' ? x86_64_zero_extended_value (VALUE) \
: (D) == 'C' ? standard_sse_constant_p (VALUE) \
: 0) : 0)
/* Place additional restrictions on the register class to use when it /* Place additional restrictions on the register class to use when it
......
...@@ -18145,7 +18145,7 @@ ...@@ -18145,7 +18145,7 @@
(define_insn "movti_internal" (define_insn "movti_internal"
[(set (match_operand:TI 0 "nonimmediate_operand" "=x,x,m") [(set (match_operand:TI 0 "nonimmediate_operand" "=x,x,m")
(match_operand:TI 1 "general_operand" "O,xm,x"))] (match_operand:TI 1 "general_operand" "C,xm,x"))]
"TARGET_SSE && !TARGET_64BIT" "TARGET_SSE && !TARGET_64BIT"
"@ "@
xorps\t%0, %0 xorps\t%0, %0
......
...@@ -2308,6 +2308,24 @@ _mm_cmpeq_epi32 (__m128i __A, __m128i __B) ...@@ -2308,6 +2308,24 @@ _mm_cmpeq_epi32 (__m128i __A, __m128i __B)
} }
static __inline __m128i static __inline __m128i
_mm_cmplt_epi8 (__m128i __A, __m128i __B)
{
return (__m128i)__builtin_ia32_pcmpgtb128 ((__v16qi)__B, (__v16qi)__A);
}
static __inline __m128i
_mm_cmplt_epi16 (__m128i __A, __m128i __B)
{
return (__m128i)__builtin_ia32_pcmpgtw128 ((__v8hi)__B, (__v8hi)__A);
}
static __inline __m128i
_mm_cmplt_epi32 (__m128i __A, __m128i __B)
{
return (__m128i)__builtin_ia32_pcmpgtd128 ((__v4si)__B, (__v4si)__A);
}
static __inline __m128i
_mm_cmpgt_epi8 (__m128i __A, __m128i __B) _mm_cmpgt_epi8 (__m128i __A, __m128i __B)
{ {
return (__m128i)__builtin_ia32_pcmpgtb128 ((__v16qi)__A, (__v16qi)__B); return (__m128i)__builtin_ia32_pcmpgtb128 ((__v16qi)__A, (__v16qi)__B);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment