Commit 044b3892 by H.J. Lu Committed by H.J. Lu

re PR target/15084 (-O/-O2 generate wrong code on structure modification)

2004-05-17  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/15084
	* config/i386/i386.md (*movsi_insv_1_rex64): Changed to DImode
	and renamed to movdi_insv_1_rex64.
	(insv): Support SImode for 32bit and DImode for 64bit.

From-SVN: r81936
parent b5e792e2
2004-05-17 H.J. Lu <hongjiu.lu@intel.com>
PR target/15084
* config/i386/i386.md (*movsi_insv_1_rex64): Changed to DImode
and renamed to movdi_insv_1_rex64.
(insv): Support SImode for 32bit and DImode for 64bit.
2004-05-17 Richard Sandiford <rsandifo@redhat.com> 2004-05-17 Richard Sandiford <rsandifo@redhat.com>
* config/mips/mips.h (MASK_DEBUG_G, TARGET_DEBUG_G_MODE): Delete. * config/mips/mips.h (MASK_DEBUG_G, TARGET_DEBUG_G_MODE): Delete.
......
...@@ -1775,11 +1775,11 @@ ...@@ -1775,11 +1775,11 @@
[(set_attr "type" "imov") [(set_attr "type" "imov")
(set_attr "mode" "QI")]) (set_attr "mode" "QI")])
(define_insn "*movsi_insv_1_rex64" (define_insn "movdi_insv_1_rex64"
[(set (zero_extract:SI (match_operand 0 "ext_register_operand" "+Q") [(set (zero_extract:DI (match_operand 0 "ext_register_operand" "+Q")
(const_int 8) (const_int 8)
(const_int 8)) (const_int 8))
(match_operand:SI 1 "nonmemory_operand" "Qn"))] (match_operand:DI 1 "nonmemory_operand" "Qn"))]
"TARGET_64BIT" "TARGET_64BIT"
"mov{b}\t{%b1, %h0|%h0, %b1}" "mov{b}\t{%b1, %h0|%h0, %b1}"
[(set_attr "type" "imov") [(set_attr "type" "imov")
...@@ -12614,10 +12614,10 @@ ...@@ -12614,10 +12614,10 @@
}) })
(define_expand "insv" (define_expand "insv"
[(set (zero_extract:SI (match_operand 0 "ext_register_operand" "") [(set (zero_extract (match_operand 0 "ext_register_operand" "")
(match_operand:SI 1 "immediate_operand" "") (match_operand 1 "immediate_operand" "")
(match_operand:SI 2 "immediate_operand" "")) (match_operand 2 "immediate_operand" ""))
(match_operand:SI 3 "register_operand" ""))] (match_operand 3 "register_operand" ""))]
"" ""
{ {
/* Handle extractions from %ah et al. */ /* Handle extractions from %ah et al. */
...@@ -12628,6 +12628,13 @@ ...@@ -12628,6 +12628,13 @@
matches the predicate, so check it again here. */ matches the predicate, so check it again here. */
if (! register_operand (operands[0], VOIDmode)) if (! register_operand (operands[0], VOIDmode))
FAIL; FAIL;
if (TARGET_64BIT)
emit_insn (gen_movdi_insv_1_rex64 (operands[0], operands[3]));
else
emit_insn (gen_movsi_insv_1 (operands[0], operands[3]));
DONE;
}) })
;; %%% bts, btr, btc, bt. ;; %%% bts, btr, btc, bt.
......
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