i386.md (movdi_extzv_1): New.

gcc/
2005-07-18  Jan Beulich  <jbeulich@novell.com>

	* i386.md (movdi_extzv_1): New.
	(zero_extendhidi2): Combine alternatives and never force use of
	REX64 prefix.
	(zero_extendqidi2): Likewise. Don't restrict input selection.

From-SVN: r102128
This commit is contained in:
Jan Beulich 2005-07-18 06:35:48 +00:00 committed by Jan Beulich
parent ba9bb602ee
commit 422edd6fff
2 changed files with 25 additions and 12 deletions

View File

@ -1,3 +1,10 @@
2005-07-18 Jan Beulich <jbeulich@novell.com>
* i386.md (movdi_extzv_1): New.
(zero_extendhidi2): Combine alternatives and never force use of
REX64 prefix.
(zero_extendqidi2): Likewise. Don't restrict input selection.
2005-07-17 Daniel Berlin <dberlin@dberlin.org>
Fix PR tree-optimization/22531

View File

@ -1685,6 +1685,16 @@
(set_attr "memory" "load")
(set_attr "mode" "QI")])
(define_insn "*movdi_extzv_1"
[(set (match_operand:DI 0 "register_operand" "=R")
(zero_extract:DI (match_operand 1 "ext_register_operand" "Q")
(const_int 8)
(const_int 8)))]
"TARGET_64BIT"
"movz{bl|x}\t{%h1, %k0|%k0, %h1}"
[(set_attr "type" "imovx")
(set_attr "mode" "DI")])
(define_insn "*movsi_extzv_1"
[(set (match_operand:SI 0 "register_operand" "=R")
(zero_extract:SI (match_operand 1 "ext_register_operand" "Q")
@ -3189,24 +3199,20 @@
"split_di (&operands[0], 1, &operands[3], &operands[4]);")
(define_insn "zero_extendhidi2"
[(set (match_operand:DI 0 "register_operand" "=r,r")
(zero_extend:DI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
[(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI (match_operand:HI 1 "nonimmediate_operand" "rm")))]
"TARGET_64BIT"
"@
movz{wl|x}\t{%1, %k0|%k0, %1}
movz{wq|x}\t{%1, %0|%0, %1}"
"movz{wl|x}\t{%1, %k0|%k0, %1}"
[(set_attr "type" "imovx")
(set_attr "mode" "SI,DI")])
(set_attr "mode" "DI")])
(define_insn "zero_extendqidi2"
[(set (match_operand:DI 0 "register_operand" "=r,r")
(zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "Q,m")))]
[(set (match_operand:DI 0 "register_operand" "=r")
(zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "rm")))]
"TARGET_64BIT"
"@
movz{bl|x}\t{%1, %k0|%k0, %1}
movz{bq|x}\t{%1, %0|%0, %1}"
"movz{bl|x}\t{%1, %k0|%k0, %1}"
[(set_attr "type" "imovx")
(set_attr "mode" "SI,DI")])
(set_attr "mode" "DI")])
;; Sign extension instructions