Commit f45d8c45 by Uros Bizjak

i386.md (and<mode>3): Change runtime operand mode checks to compile-time "mode…

i386.md (and<mode>3): Change runtime operand mode checks to compile-time "mode == <MODE>mode" checks.

	* config/i386/i386.md (and<mode>3): Change runtime operand mode checks
	to compile-time "mode == <MODE>mode" checks.
	(and splitter): Ditto.

From-SVN: r186993
parent 3efc2959
2012-04-30 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (and<mode>3): Change runtime operand mode checks
to compile-time "mode == <MODE>mode" checks.
(and splitter): Ditto.
2012-04-30 Richard Henderson <rth@redhat.com> 2012-04-30 Richard Henderson <rth@redhat.com>
* config/arm/arm.md (UNSPEC_LL): New. * config/arm/arm.md (UNSPEC_LL): New.
...@@ -40,7 +46,7 @@ ...@@ -40,7 +46,7 @@
* config/arm/arm-protos.h (ldm_stm_operation_p): New parameters. * config/arm/arm-protos.h (ldm_stm_operation_p): New parameters.
* config/arm/arm.c (ldm_stm_operation_p): New parameters. * config/arm/arm.c (ldm_stm_operation_p): New parameters.
* config/arm/predicates.md (load_multiple_operation): Add arguments. * config/arm/predicates.md (load_multiple_operation): Add arguments.
(store_multiple_operation): Likewise. (store_multiple_operation): Likewise.
2012-04-30 Uros Bizjak <ubizjak@gmail.com> 2012-04-30 Uros Bizjak <ubizjak@gmail.com>
......
...@@ -7695,7 +7695,7 @@ ...@@ -7695,7 +7695,7 @@
(match_operand:SWIM 2 "<general_szext_operand>")))] (match_operand:SWIM 2 "<general_szext_operand>")))]
"" ""
{ {
enum machine_mode mode = GET_MODE (operands[1]); enum machine_mode mode = <MODE>mode;
rtx (*insn) (rtx, rtx); rtx (*insn) (rtx, rtx);
if (CONST_INT_P (operands[2]) && REG_P (operands[0])) if (CONST_INT_P (operands[2]) && REG_P (operands[0]))
...@@ -7710,30 +7710,28 @@ ...@@ -7710,30 +7710,28 @@
mode = QImode; mode = QImode;
} }
if (mode == GET_MODE (operands[1])) if (mode == <MODE>mode)
{ {
ix86_expand_binary_operator (AND, <MODE>mode, operands); ix86_expand_binary_operator (AND, <MODE>mode, operands);
DONE; DONE;
} }
operands[1] = gen_lowpart (mode, operands[1]); if (<MODE>mode == DImode)
if (GET_MODE (operands[0]) == DImode)
insn = (mode == SImode) insn = (mode == SImode)
? gen_zero_extendsidi2 ? gen_zero_extendsidi2
: (mode == HImode) : (mode == HImode)
? gen_zero_extendhidi2 ? gen_zero_extendhidi2
: gen_zero_extendqidi2; : gen_zero_extendqidi2;
else if (GET_MODE (operands[0]) == SImode) else if (<MODE>mode == SImode)
insn = (mode == HImode) insn = (mode == HImode)
? gen_zero_extendhisi2 ? gen_zero_extendhisi2
: gen_zero_extendqisi2; : gen_zero_extendqisi2;
else if (GET_MODE (operands[0]) == HImode) else if (<MODE>mode == HImode)
insn = gen_zero_extendqihi2; insn = gen_zero_extendqihi2;
else else
gcc_unreachable (); gcc_unreachable ();
emit_insn (insn (operands[0], operands[1])); emit_insn (insn (operands[0], gen_lowpart (mode, operands[1])));
DONE; DONE;
}) })
...@@ -7884,9 +7882,7 @@ ...@@ -7884,9 +7882,7 @@
mode = QImode; mode = QImode;
} }
operands[1] = gen_lowpart (mode, operands[1]); if (<MODE>mode == DImode)
if (GET_MODE (operands[0]) == DImode)
insn = (mode == SImode) insn = (mode == SImode)
? gen_zero_extendsidi2 ? gen_zero_extendsidi2
: (mode == HImode) : (mode == HImode)
...@@ -7894,14 +7890,15 @@ ...@@ -7894,14 +7890,15 @@
: gen_zero_extendqidi2; : gen_zero_extendqidi2;
else else
{ {
/* Zero extend to SImode to avoid partial register stalls. */ if (<MODE>mode != SImode)
operands[0] = gen_lowpart (SImode, operands[0]); /* Zero extend to SImode to avoid partial register stalls. */
operands[0] = gen_lowpart (SImode, operands[0]);
insn = (mode == HImode) insn = (mode == HImode)
? gen_zero_extendhisi2 ? gen_zero_extendhisi2
: gen_zero_extendqisi2; : gen_zero_extendqisi2;
} }
emit_insn (insn (operands[0], operands[1])); emit_insn (insn (operands[0], gen_lowpart (mode, operands[1])));
DONE; DONE;
}) })
......
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