SOURCES (AC-branch): gcc-x86-sse2-bug.patch (NEW) - new - fixes ht...

blekot blekot at pld-linux.org
Thu Mar 2 20:10:01 CET 2006


Author: blekot                       Date: Thu Mar  2 19:10:00 2006 GMT
Module: SOURCES                       Tag: AC-branch
---- Log message:
- new
- fixes http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10984
- broke build (needs revert)

---- Files affected:
SOURCES:
   gcc-x86-sse2-bug.patch (NONE -> 1.1.2.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/gcc-x86-sse2-bug.patch
diff -u /dev/null SOURCES/gcc-x86-sse2-bug.patch:1.1.2.1
--- /dev/null	Thu Mar  2 20:10:00 2006
+++ SOURCES/gcc-x86-sse2-bug.patch	Thu Mar  2 20:09:55 2006
@@ -0,0 +1,138 @@
+===================================================================
+retrieving revision 1.350
+retrieving revision 1.351
+diff -u -r1.350 -r1.351
+--- gcc/gcc/config/i386/i386.h	2003/07/11 14:09:29	1.350
++++ gcc/gcc/config/i386/i386.h	2003/08/23 21:18:57	1.351
+@@ -3018,6 +3018,10 @@
+   {"const0_operand", {CONST_INT, CONST_DOUBLE}},			\
+   {"const1_operand", {CONST_INT}},					\
+   {"const248_operand", {CONST_INT}},					\
++  {"const_0_to_3_operand", {CONST_INT}},				\
++  {"const_0_to_7_operand", {CONST_INT}},				\
++  {"const_0_to_15_operand", {CONST_INT}},				\
++  {"const_0_to_255_operand", {CONST_INT}},				\
+   {"incdec_operand", {CONST_INT}},					\
+   {"mmx_reg_operand", {REG}},						\
+   {"reg_no_sp_operand", {SUBREG, REG}},					\
+===================================================================
+RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,v
+retrieving revision 1.480
+retrieving revision 1.481
+diff -u -r1.480 -r1.481
+--- gcc/gcc/config/i386/i386.md	2003/07/28 18:13:57	1.480
++++ gcc/gcc/config/i386/i386.md	2003/08/23 21:18:58	1.481
+@@ -3278,22 +3278,56 @@
+   ")
+ 
+ (define_insn "zero_extendsidi2_32"
+-  [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?*o")
+-	(zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "0,rm,r")))
++  [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?*o,!?y,!?Y")
++	(zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "0,rm,r,m,m")))
+    (clobber (reg:CC 17))]
+-  "!TARGET_64BIT"
+-  "#"
+-  [(set_attr "mode" "SI")])
++  "!TARGET_64BIT && !TARGET_INTER_UNIT_MOVES"
++  "@
++   #
++   #
++   #
++   movd\t{%1, %0|%0, %1}
++   movd\t{%1, %0|%0, %1}"
++  [(set_attr "mode" "SI,SI,SI,DI,TI")
++   (set_attr "type" "multi,multi,multi,mmxmov,ssemov")])
++
++(define_insn "*zero_extendsidi2_32_1"
++  [(set (match_operand:DI 0 "nonimmediate_operand" "=r,?r,?*o,!?y,!?Y")
++	(zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "0,rm,r,rm,rm")))
++   (clobber (reg:CC 17))]
++  "!TARGET_64BIT && TARGET_INTER_UNIT_MOVES"
++  "@
++   #
++   #
++   #
++   movd\t{%1, %0|%0, %1}
++   movd\t{%1, %0|%0, %1}"
++  [(set_attr "mode" "SI,SI,SI,DI,TI")
++   (set_attr "type" "multi,multi,multi,mmxmov,ssemov")])
+ 
+ (define_insn "zero_extendsidi2_rex64"
+-  [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o")
+-     (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "rm,0")))]
+-  "TARGET_64BIT"
++  [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o,!?y,!?Y")
++     (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "rm,0,m,m")))]
++  "TARGET_64BIT && !TARGET_INTER_UNIT_MOVES"
+   "@
+    mov\t{%k1, %k0|%k0, %k1}
+-   #"
+-  [(set_attr "type" "imovx,imov")
+-   (set_attr "mode" "SI,DI")])
++   #
++   movd\t{%1, %0|%0, %1}
++   movd\t{%1, %0|%0, %1}"
++  [(set_attr "type" "imovx,imov,mmxmov,ssemov")
++   (set_attr "mode" "SI,DI,DI,TI")])
++
++(define_insn "*zero_extendsidi2_rex64_1"
++  [(set (match_operand:DI 0 "nonimmediate_operand" "=r,o,!?y,!*?")
++     (zero_extend:DI (match_operand:SI 1 "nonimmediate_operand" "rm,0,rm,rm")))]
++  "TARGET_64BIT && TARGET_INTER_UNIT_MOVES"
++  "@
++   mov\t{%k1, %k0|%k0, %k1}
++   #
++   movd\t{%1, %0|%0, %1}
++   movd\t{%1, %0|%0, %1}"
++  [(set_attr "type" "imovx,imov,mmxmov,ssemov")
++   (set_attr "mode" "SI,DI,SI,SI")])
+ 
+ (define_split
+   [(set (match_operand:DI 0 "memory_operand" "")
+@@ -3315,7 +3349,8 @@
+   [(set (match_operand:DI 0 "nonimmediate_operand" "")
+ 	(zero_extend:DI (match_operand:SI 1 "general_operand" "")))
+    (clobber (reg:CC 17))]
+-  "!TARGET_64BIT && reload_completed"
++  "!TARGET_64BIT && reload_completed
++   && !SSE_REG_P (operands[0]) && !MMX_REG_P (operands[0])"
+   [(set (match_dup 3) (match_dup 1))
+    (set (match_dup 4) (const_int 0))]
+   "split_di (&operands[0], 1, &operands[3], &operands[4]);")
+@@ -21228,7 +21263,7 @@
+         (vec_merge:V4HI (match_operand:V4HI 1 "register_operand" "0")
+ 			(vec_duplicate:V4HI
+ 			 (truncate:HI (match_operand:SI 2 "nonimmediate_operand" "rm")))
+-			(match_operand:SI 3 "immediate_operand" "i")))]
++			(match_operand:SI 3 "const_0_to_15_operand" "N")))]
+   "TARGET_SSE || TARGET_3DNOW_A"
+   "pinsrw\t{%3, %2, %0|%0, %2, %3}"
+   [(set_attr "type" "mmxcvt")
+@@ -21238,7 +21273,7 @@
+   [(set (match_operand:SI 0 "register_operand" "=r")
+         (zero_extend:SI (vec_select:HI (match_operand:V4HI 1 "register_operand" "y")
+ 				       (parallel
+-					[(match_operand:SI 2 "immediate_operand" "i")]))))]
++					[(match_operand:SI 2 "const_0_to_3_operand" "N")]))))]
+   "TARGET_SSE || TARGET_3DNOW_A"
+   "pextrw\t{%2, %1, %0|%0, %1, %2}"
+   [(set_attr "type" "mmxcvt")
+@@ -22924,7 +22959,7 @@
+ 			(vec_duplicate:V8HI
+ 			 (truncate:HI
+ 			   (match_operand:SI 2 "nonimmediate_operand" "rm")))
+-			(match_operand:SI 3 "immediate_operand" "i")))]
++			(match_operand:SI 3 "const_0_to_255_operand" "N")))]
+   "TARGET_SSE2"
+   "pinsrw\t{%3, %2, %0|%0, %2, %3}"
+   [(set_attr "type" "ssecvt")
+@@ -22935,7 +22970,7 @@
+         (zero_extend:SI
+ 	  (vec_select:HI (match_operand:V8HI 1 "register_operand" "x")
+ 			 (parallel
+-			  [(match_operand:SI 2 "immediate_operand" "i")]))))]
++			  [(match_operand:SI 2 "const_0_to_7_operand" "N")]))))]
+   "TARGET_SSE2"
+   "pextrw\t{%2, %1, %0|%0, %1, %2}"
+   [(set_attr "type" "ssecvt")
================================================================


More information about the pld-cvs-commit mailing list