aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/aarch64/aarch64.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/aarch64/aarch64.c')
-rw-r--r--gcc/config/aarch64/aarch64.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index b57416c..a0aff58 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -704,31 +704,35 @@ aarch64_split_simd_move (rtx dst, rtx src)
if (REG_P (dst) && REG_P (src))
{
+ rtx (*gen) (rtx, rtx);
+
gcc_assert (VECTOR_MODE_P (src_mode));
switch (src_mode)
{
case V16QImode:
- emit_insn (gen_aarch64_simd_movv16qi (dst, src));
+ gen = gen_aarch64_split_simd_movv16qi;
break;
case V8HImode:
- emit_insn (gen_aarch64_simd_movv8hi (dst, src));
+ gen = gen_aarch64_split_simd_movv8hi;
break;
case V4SImode:
- emit_insn (gen_aarch64_simd_movv4si (dst, src));
+ gen = gen_aarch64_split_simd_movv4si;
break;
case V2DImode:
- emit_insn (gen_aarch64_simd_movv2di (dst, src));
+ gen = gen_aarch64_split_simd_movv2di;
break;
case V4SFmode:
- emit_insn (gen_aarch64_simd_movv4sf (dst, src));
+ gen = gen_aarch64_split_simd_movv4sf;
break;
case V2DFmode:
- emit_insn (gen_aarch64_simd_movv2df (dst, src));
+ gen = gen_aarch64_split_simd_movv2df;
break;
default:
gcc_unreachable ();
}
+
+ emit_insn (gen (dst, src));
return;
}
}