diff options
author | Yvan Roux <yvan.roux@linaro.org> | 2015-11-19 08:54:57 +0100 |
---|---|---|
committer | Linaro Code Review <review@review.linaro.org> | 2015-11-20 12:24:33 +0000 |
commit | 46d65a9e66c261a7e560d9a8cd4be0f47af28eda (patch) | |
tree | b892c6d28dbfb6ff41286a554322c7fb82791bac | |
parent | 45b4048b9a75609c51f4ff3421d4535f13b54271 (diff) |
gcc/
Backport from trunk r229454.
2015-10-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/aarch64/aarch64.c (aarch64_output_simd_mov_immediate):
Handle floating point inner modes properly.
Change-Id: I30d755f35f83e9ec5c2b28cb7043cd5503bb3331
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 7ace288da4b..d2a2a331ad4 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -11095,9 +11095,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 @@ -11121,6 +11123,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)); |