[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:
parent
4b5337e60e
commit
2c274197e9
2 changed files with 23 additions and 18 deletions
|
@ -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):
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue