summaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.md
diff options
context:
space:
mode:
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2012-04-30 17:12:42 +0000
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>2012-04-30 17:12:42 +0000
commitdf65c84d18307823b0092f07160f0e638d99026d (patch)
treeb4a2b0e3b39a2d6b1964154e1da6439810870008 /gcc/config/i386/i386.md
parentffca20e919eda910d3f8189c436cbdb4f9bd156d (diff)
downloadgcc-df65c84d18307823b0092f07160f0e638d99026d.tar.gz
* config/i386/i386.md (and<mode>3): Change runtime operand mode checks
to compile-time "mode == <MODE>mode" checks. (and splitter): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@186993 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r--gcc/config/i386/i386.md25
1 files changed, 11 insertions, 14 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index c98efaa933a..9047a31a01b 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -7695,7 +7695,7 @@
(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);
if (CONST_INT_P (operands[2]) && REG_P (operands[0]))
@@ -7710,30 +7710,28 @@
mode = QImode;
}
- if (mode == GET_MODE (operands[1]))
+ if (mode == <MODE>mode)
{
ix86_expand_binary_operator (AND, <MODE>mode, operands);
DONE;
}
- operands[1] = gen_lowpart (mode, operands[1]);
-
- if (GET_MODE (operands[0]) == DImode)
+ if (<MODE>mode == DImode)
insn = (mode == SImode)
? gen_zero_extendsidi2
: (mode == HImode)
? gen_zero_extendhidi2
: gen_zero_extendqidi2;
- else if (GET_MODE (operands[0]) == SImode)
+ else if (<MODE>mode == SImode)
insn = (mode == HImode)
? gen_zero_extendhisi2
: gen_zero_extendqisi2;
- else if (GET_MODE (operands[0]) == HImode)
+ else if (<MODE>mode == HImode)
insn = gen_zero_extendqihi2;
else
gcc_unreachable ();
- emit_insn (insn (operands[0], operands[1]));
+ emit_insn (insn (operands[0], gen_lowpart (mode, operands[1])));
DONE;
})
@@ -7884,9 +7882,7 @@
mode = QImode;
}
- operands[1] = gen_lowpart (mode, operands[1]);
-
- if (GET_MODE (operands[0]) == DImode)
+ if (<MODE>mode == DImode)
insn = (mode == SImode)
? gen_zero_extendsidi2
: (mode == HImode)
@@ -7894,14 +7890,15 @@
: gen_zero_extendqidi2;
else
{
- /* Zero extend to SImode to avoid partial register stalls. */
- operands[0] = gen_lowpart (SImode, operands[0]);
+ if (<MODE>mode != SImode)
+ /* Zero extend to SImode to avoid partial register stalls. */
+ operands[0] = gen_lowpart (SImode, operands[0]);
insn = (mode == HImode)
? gen_zero_extendhisi2
: gen_zero_extendqisi2;
}
- emit_insn (insn (operands[0], operands[1]));
+ emit_insn (insn (operands[0], gen_lowpart (mode, operands[1])));
DONE;
})