Commit f2f3e54d by Uros Bizjak

i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.

	* config/i386/i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.
	Remove UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
	(*insvqi_1_mem_rex64): Move above insv<mode>_1.  Remove
	UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
	(UNSPEC_NOREX_MEM): Remove definition.

From-SVN: r247066
parent 7b9efd03
2017-04-21 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.
Remove UNSPEC_NOREX_MEM tag. Update corresponding peephole2 pattern.
(*insvqi_1_mem_rex64): Move above insv<mode>_1. Remove
UNSPEC_NOREX_MEM tag. Update corresponding peephole2 pattern.
(UNSPEC_NOREX_MEM): Remove definition.
2017-04-21 Richard Biener <rguenther@suse.de> 2017-04-21 Richard Biener <rguenther@suse.de>
PR tree-optimization/79547 PR tree-optimization/79547
...@@ -116,7 +124,7 @@ ...@@ -116,7 +124,7 @@
(build_array_type): Likewise. Add typeless_storage argument. (build_array_type): Likewise. Add typeless_storage argument.
2017-04-19 Eric Botcazou <ebotcazou@adacore.com> 2017-04-19 Eric Botcazou <ebotcazou@adacore.com>
Jakub Jelinek <jakub@redhat.com> Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/80426 PR tree-optimization/80426
* tree-vrp.c (extract_range_from_binary_expr_1): For an additive * tree-vrp.c (extract_range_from_binary_expr_1): For an additive
...@@ -158,7 +166,7 @@ ...@@ -158,7 +166,7 @@
are only used in debug insns. are only used in debug insns.
2017-04-19 Eric Botcazou <ebotcazou@adacore.com> 2017-04-19 Eric Botcazou <ebotcazou@adacore.com>
Vladimir Makarov <vmakarov@redhat.com> Vladimir Makarov <vmakarov@redhat.com>
* config/sparc/predicates.md (input_operand): Add comment. Return * config/sparc/predicates.md (input_operand): Add comment. Return
true for any memory operand when LRA is in progress. true for any memory operand when LRA is in progress.
...@@ -325,7 +333,7 @@ ...@@ -325,7 +333,7 @@
2017-04-12 Jan Hubicka <hubicka@ucw.cz> 2017-04-12 Jan Hubicka <hubicka@ucw.cz>
PR lto/69953 PR lto/69953
* ipa-visibility.c (non_local_p): Fix typos. * ipa-visibility.c (non_local_p): Fix typos.
(localize_node): When localizing symbol in same comdat group, (localize_node): When localizing symbol in same comdat group,
dissolve the group only when we know external symbols are going dissolve the group only when we know external symbols are going
......
...@@ -114,7 +114,6 @@ ...@@ -114,7 +114,6 @@
UNSPEC_STOS UNSPEC_STOS
UNSPEC_PEEPSIB UNSPEC_PEEPSIB
UNSPEC_INSN_FALSE_DEP UNSPEC_INSN_FALSE_DEP
UNSPEC_NOREX_MEM
;; For SSE/MMX support: ;; For SSE/MMX support:
UNSPEC_FIX_NOTRUNC UNSPEC_FIX_NOTRUNC
...@@ -2808,28 +2807,27 @@ ...@@ -2808,28 +2807,27 @@
operands[1] = copy_to_reg (operands[1]); operands[1] = copy_to_reg (operands[1]);
}) })
(define_insn "*extzv<mode>"
[(set (match_operand:SWI248 0 "register_operand" "=R")
(zero_extract:SWI248 (match_operand 1 "ext_register_operand" "Q")
(const_int 8)
(const_int 8)))]
""
"movz{bl|x}\t{%h1, %k0|%k0, %h1}"
[(set_attr "type" "imovx")
(set_attr "mode" "SI")])
(define_insn "*extzvqi_mem_rex64" (define_insn "*extzvqi_mem_rex64"
[(set (match_operand:QI 0 "norex_memory_operand" "=Bn") [(set (match_operand:QI 0 "norex_memory_operand" "=Bn")
(subreg:QI (subreg:QI
(zero_extract:SI (match_operand 1 "ext_register_operand" "Q") (zero_extract:SI (match_operand 1 "ext_register_operand" "Q")
(const_int 8) (const_int 8)
(const_int 8)) 0)) (const_int 8)) 0))]
(unspec [(const_int 0)] UNSPEC_NOREX_MEM)]
"TARGET_64BIT && reload_completed" "TARGET_64BIT && reload_completed"
"mov{b}\t{%h1, %0|%0, %h1}" "mov{b}\t{%h1, %0|%0, %h1}"
[(set_attr "type" "imov") [(set_attr "type" "imov")
(set_attr "mode" "QI")]) (set_attr "mode" "QI")])
(define_insn "*extzv<mode>"
[(set (match_operand:SWI248 0 "register_operand" "=R")
(zero_extract:SWI248 (match_operand 1 "ext_register_operand" "Q")
(const_int 8)
(const_int 8)))]
""
"movz{bl|x}\t{%h1, %k0|%k0, %h1}"
[(set_attr "type" "imovx")
(set_attr "mode" "SI")])
(define_insn "*extzvqi" (define_insn "*extzvqi"
[(set (match_operand:QI 0 "nonimmediate_operand" "=QBc,?R,m") [(set (match_operand:QI 0 "nonimmediate_operand" "=QBc,?R,m")
(subreg:QI (subreg:QI
...@@ -2867,13 +2865,11 @@ ...@@ -2867,13 +2865,11 @@
(set (match_operand:QI 2 "norex_memory_operand") (match_dup 0))] (set (match_operand:QI 2 "norex_memory_operand") (match_dup 0))]
"TARGET_64BIT "TARGET_64BIT
&& peep2_reg_dead_p (2, operands[0])" && peep2_reg_dead_p (2, operands[0])"
[(parallel [(set (match_dup 2)
[(set (match_dup 2) (subreg:QI
(subreg:QI (zero_extract:SI (match_dup 1)
(zero_extract:SI (match_dup 1) (const_int 8)
(const_int 8) (const_int 8)) 0))])
(const_int 8)) 0))
(unspec [(const_int 0)] UNSPEC_NOREX_MEM)])])
(define_expand "insv<mode>" (define_expand "insv<mode>"
[(set (zero_extract:SWI248 (match_operand:SWI248 0 "register_operand") [(set (zero_extract:SWI248 (match_operand:SWI248 0 "register_operand")
...@@ -2908,6 +2904,17 @@ ...@@ -2908,6 +2904,17 @@
DONE; DONE;
}) })
(define_insn "*insvqi_1_mem_rex64"
[(set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q")
(const_int 8)
(const_int 8))
(subreg:SI
(match_operand:QI 1 "norex_memory_operand" "Bn") 0))]
"TARGET_64BIT && reload_completed"
"mov{b}\t{%1, %h0|%h0, %1}"
[(set_attr "type" "imov")
(set_attr "mode" "QI")])
(define_insn "insv<mode>_1" (define_insn "insv<mode>_1"
[(set (zero_extract:SWI248 (match_operand 0 "ext_register_operand" "+Q,Q") [(set (zero_extract:SWI248 (match_operand 0 "ext_register_operand" "+Q,Q")
(const_int 8) (const_int 8)
...@@ -2923,18 +2930,6 @@ ...@@ -2923,18 +2930,6 @@
(set_attr "type" "imov") (set_attr "type" "imov")
(set_attr "mode" "QI")]) (set_attr "mode" "QI")])
(define_insn "*insvqi_1_mem_rex64"
[(set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q")
(const_int 8)
(const_int 8))
(subreg:SI
(match_operand:QI 1 "norex_memory_operand" "Bn") 0))
(unspec [(const_int 0)] UNSPEC_NOREX_MEM)]
"TARGET_64BIT && reload_completed"
"mov{b}\t{%1, %h0|%h0, %1}"
[(set_attr "type" "imov")
(set_attr "mode" "QI")])
(define_insn "*insvqi_1" (define_insn "*insvqi_1"
[(set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q,Q") [(set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q,Q")
(const_int 8) (const_int 8)
...@@ -2956,12 +2951,10 @@ ...@@ -2956,12 +2951,10 @@
(subreg:SI (match_dup 0) 0))] (subreg:SI (match_dup 0) 0))]
"TARGET_64BIT "TARGET_64BIT
&& peep2_reg_dead_p (2, operands[0])" && peep2_reg_dead_p (2, operands[0])"
[(parallel [(set (zero_extract:SI (match_dup 2)
[(set (zero_extract:SI (match_dup 2) (const_int 8)
(const_int 8) (const_int 8))
(const_int 8)) (subreg:SI (match_dup 1) 0))])
(subreg:SI (match_dup 1) 0))
(unspec [(const_int 0)] UNSPEC_NOREX_MEM)])])
(define_code_iterator any_extract [sign_extract zero_extract]) (define_code_iterator any_extract [sign_extract zero_extract])
......
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