diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2015-10-27 18:30:55 +0000 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@gcc.gnu.org> | 2015-10-27 18:30:55 +0000 |
commit | 0d8e1702cfe8da6c3af6485aaba8c3d006cd3791 (patch) | |
tree | f9da31709df6731bb4287085027287d1e4804521 /gcc | |
parent | b7ddd3f14f3a5f3b9023b2b360c05c6426f37500 (diff) | |
download | gcc-0d8e1702cfe8da6c3af6485aaba8c3d006cd3791.zip gcc-0d8e1702cfe8da6c3af6485aaba8c3d006cd3791.tar.gz gcc-0d8e1702cfe8da6c3af6485aaba8c3d006cd3791.tar.bz2 |
[AArch64] Handle vector float modes properly in aarch64_output_simd_mov_immediate
* config/aarch64/aarch64.c (aarch64_output_simd_mov_immediate):
Handle floating point inner modes properly.
From-SVN: r229454
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f26446c..ac7bba4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2015-10-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + * config/aarch64/aarch64.c (aarch64_output_simd_mov_immediate): + Handle floating point inner modes properly. + 2015-10-27 Alan Hayward <alan.hayward@arm.com> * tree-vect-looop.c diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 4965041..5c8604f 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -11450,9 +11450,11 @@ aarch64_output_simd_mov_immediate (rtx const_vector, lane_count = width / info.element_width; mode = GET_MODE_INNER (mode); - if (mode == SFmode || mode == DFmode) + if (GET_MODE_CLASS (mode) == MODE_FLOAT) { gcc_assert (info.shift == 0 && ! info.mvn); + /* For FP zero change it to a CONST_INT 0 and use the integer SIMD + move immediate path. */ if (aarch64_float_const_zero_rtx_p (info.value)) info.value = GEN_INT (0); else @@ -11476,6 +11478,7 @@ aarch64_output_simd_mov_immediate (rtx const_vector, mnemonic = info.mvn ? "mvni" : "movi"; shift_op = info.msl ? "msl" : "lsl"; + gcc_assert (CONST_INT_P (info.value)); if (lane_count == 1) snprintf (templ, sizeof (templ), "%s\t%%d0, " HOST_WIDE_INT_PRINT_HEX, mnemonic, UINTVAL (info.value)); |