[AArch64] Move one_match > zero_match case to just before simple_sequence.

* config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Move
	one_match > zero_match case to just before simple_sequence.

From-SVN: r214008
This commit is contained in:
Kyrylo Tkachov 2014-08-15 09:02:27 +00:00 committed by Kyrylo Tkachov
parent 4b5337e60e
commit 2c274197e9
2 changed files with 23 additions and 18 deletions

View File

@ -1,3 +1,8 @@
2014-08-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64.c (aarch64_expand_mov_immediate): Move
one_match > zero_match case to just before simple_sequence.
2014-08-15 Richard Biener <rguenther@suse.de>
* data-streamer.h (streamer_string_index, string_for_index):

View File

@ -1132,24 +1132,6 @@ aarch64_expand_mov_immediate (rtx dest, rtx imm)
return;
}
if (one_match > zero_match)
{
/* Set either first three quarters or all but the third. */
mask = 0xffffll << (16 - first_not_ffff_match);
emit_insn (gen_rtx_SET (VOIDmode, dest,
GEN_INT (val | mask | 0xffffffff00000000ull)));
/* Now insert other two quarters. */
for (i = first_not_ffff_match + 16, mask <<= (first_not_ffff_match << 1);
i < 64; i += 16, mask <<= 16)
{
if ((val & mask) != mask)
emit_insn (gen_insv_immdi (dest, GEN_INT (i),
GEN_INT ((val >> i) & 0xffff)));
}
return;
}
if (zero_match == 2)
goto simple_sequence;
@ -1266,6 +1248,24 @@ aarch64_expand_mov_immediate (rtx dest, rtx imm)
}
}
if (one_match > zero_match)
{
/* Set either first three quarters or all but the third. */
mask = 0xffffll << (16 - first_not_ffff_match);
emit_insn (gen_rtx_SET (VOIDmode, dest,
GEN_INT (val | mask | 0xffffffff00000000ull)));
/* Now insert other two quarters. */
for (i = first_not_ffff_match + 16, mask <<= (first_not_ffff_match << 1);
i < 64; i += 16, mask <<= 16)
{
if ((val & mask) != mask)
emit_insn (gen_insv_immdi (dest, GEN_INT (i),
GEN_INT ((val >> i) & 0xffff)));
}
return;
}
simple_sequence:
first = true;
mask = 0xffff;