aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2013-05-08 16:43:01 +0200
committerUros Bizjak <uros@gcc.gnu.org>2013-05-08 16:43:01 +0200
commite61e7d28462eb89a7933ea77ef17a511a07e8418 (patch)
treef5eb5769d5a09301cc8fbfe68abd971516690867 /gcc
parent4fbfcf44ba41e67136d3f470c98f657335052e84 (diff)
downloadgcc-e61e7d28462eb89a7933ea77ef17a511a07e8418.zip
gcc-e61e7d28462eb89a7933ea77ef17a511a07e8418.tar.gz
gcc-e61e7d28462eb89a7933ea77ef17a511a07e8418.tar.bz2
sse.md (PEXTR_MODE, [...]): Remove.
* config/i386/sse.md (PEXTR_MODE, PEXTR_MODEx): Remove. (*vec_extract<mode>): Use VI12_128 mode iterator. (*vec_extract<mode>_mem): Ditto. (*vec_extract*_mem splitters): Merge splitters using VI_128 mode attribute. From-SVN: r198713
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog20
-rw-r--r--gcc/config/i386/sse.md55
2 files changed, 31 insertions, 44 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a615f7f..aa0274f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,17 +1,23 @@
+2013-05-08 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/sse.md (PEXTR_MODE, PEXTR_MODEx): Remove.
+ (*vec_extract<mode>): Use VI12_128 mode iterator.
+ (*vec_extract<mode>_mem): Ditto.
+ (*vec_extract*_mem splitters): Merge splitters using VI_128 mode
+ attribute.
+
2013-05-08 Diego Novillo <dnovillo@google.com>
PR bootstrap/54659
Revert:
-
2012-08-17 Diego Novillo <dnovillo@google.com>
- PR bootstrap/54281
- * configure.ac: Add libintl.h to AC_CHECK_HEADERS list.
- * config.in: Regenerate.
- * configure: Regenerate.
- * intl.h: Always include libintl.h if HAVE_LIBINTL_H is
- set.
+ PR bootstrap/54281
+ * configure.ac: Add libintl.h to AC_CHECK_HEADERS list.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * intl.h: Always include libintl.h if HAVE_LIBINTL_H is set.
2013-05-08 Jan Hubicka <jh@suse.cz>
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index fc921e2..5f1fb2c 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -7268,17 +7268,10 @@
(set_attr "prefix" "maybe_vex,maybe_vex,orig,orig,vex")
(set_attr "mode" "TI,TI,V4SF,SF,SF")])
-;; Modes handled by pextr patterns.
-(define_mode_iterator PEXTR_MODEx
- [V16QI V8HI])
-
-(define_mode_iterator PEXTR_MODE
- [(V16QI "TARGET_SSE4_1") V8HI])
-
(define_insn "*vec_extract<mode>"
[(set (match_operand:<ssescalarmode> 0 "nonimmediate_operand" "=r,m")
(vec_select:<ssescalarmode>
- (match_operand:PEXTR_MODE 1 "register_operand" "x,x")
+ (match_operand:VI12_128 1 "register_operand" "x,x")
(parallel
[(match_operand:SI 2 "const_0_to_<ssescalarnummask>_operand")])))]
"TARGET_SSE4_1"
@@ -7345,21 +7338,14 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
-(define_insn_and_split "*vec_extract<mode>_mem"
+(define_insn "*vec_extract<mode>_mem"
[(set (match_operand:<ssescalarmode> 0 "register_operand" "=r")
(vec_select:<ssescalarmode>
- (match_operand:PEXTR_MODEx 1 "memory_operand" "o")
+ (match_operand:VI12_128 1 "memory_operand" "o")
(parallel
[(match_operand 2 "const_0_to_<ssescalarnummask>_operand")])))]
"TARGET_SSE"
- "#"
- "&& reload_completed"
- [(set (match_dup 0) (match_dup 1))]
-{
- int offs = INTVAL (operands[2]) * GET_MODE_SIZE (<ssescalarmode>mode);
-
- operands[1] = adjust_address (operands[1], <ssescalarmode>mode, offs);
-})
+ "#")
(define_insn "*vec_extract<ssevecmodelower>_0"
[(set (match_operand:SWI48 0 "nonimmediate_operand" "=r ,r,x ,m")
@@ -7382,16 +7368,11 @@
(define_split
[(set (match_operand:SWI48x 0 "nonimmediate_operand")
(vec_select:SWI48x
- (match_operand:<ssevecmode> 1 "nonimmediate_operand")
+ (match_operand:<ssevecmode> 1 "register_operand")
(parallel [(const_int 0)])))]
"TARGET_SSE && reload_completed"
[(set (match_dup 0) (match_dup 1))]
-{
- if (REG_P (operands[1]))
- operands[1] = gen_rtx_REG (<MODE>mode, REGNO (operands[1]));
- else
- operands[1] = adjust_address (operands[1], <MODE>mode, 0);
-})
+ "operands[1] = gen_rtx_REG (<MODE>mode, REGNO (operands[1]));")
(define_insn "*vec_extractv4si"
[(set (match_operand:SI 0 "nonimmediate_operand" "=rm")
@@ -7420,18 +7401,13 @@
(set_attr "prefix" "maybe_vex")
(set_attr "mode" "TI")])
-(define_insn_and_split "*vec_extractv4si_mem"
+(define_insn "*vec_extractv4si_mem"
[(set (match_operand:SI 0 "register_operand" "=x,r")
(vec_select:SI
(match_operand:V4SI 1 "memory_operand" "o,o")
(parallel [(match_operand 2 "const_0_to_3_operand")])))]
"TARGET_SSE"
- "#"
- "&& reload_completed"
- [(set (match_dup 0) (match_dup 1))]
-{
- operands[1] = adjust_address (operands[1], SImode, INTVAL (operands[2]) * 4);
-})
+ "#")
(define_insn "*vec_extractv2di_1"
[(set (match_operand:DI 0 "nonimmediate_operand" "=rm,m,x,x,x,x,r")
@@ -7457,13 +7433,18 @@
(set_attr "mode" "TI,V2SF,TI,TI,V4SF,DI,DI")])
(define_split
- [(set (match_operand:DI 0 "register_operand")
- (vec_select:DI
- (match_operand:V2DI 1 "memory_operand")
- (parallel [(const_int 1)])))]
+ [(set (match_operand:<ssescalarmode> 0 "register_operand")
+ (vec_select:<ssescalarmode>
+ (match_operand:VI_128 1 "memory_operand")
+ (parallel
+ [(match_operand 2 "const_0_to_<ssescalarnummask>_operand")])))]
"TARGET_SSE && reload_completed"
[(set (match_dup 0) (match_dup 1))]
- "operands[1] = adjust_address (operands[1], DImode, 8);")
+{
+ int offs = INTVAL (operands[2]) * GET_MODE_SIZE (<ssescalarmode>mode);
+
+ operands[1] = adjust_address (operands[1], <ssescalarmode>mode, offs);
+})
(define_insn "*vec_dupv4si"
[(set (match_operand:V4SI 0 "register_operand" "=x,x,x")