aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/frontend-passes.c
diff options
context:
space:
mode:
authorWilco Dijkstra <wilco@gcc.gnu.org>2016-07-28 14:34:41 +0000
committerWilco Dijkstra <wilco@gcc.gnu.org>2016-07-28 14:34:41 +0000
commit63715e5e78532916b334027d72fb59931798a5f7 (patch)
treeb4e6979e9b9496ff2dcd879e250d4ca26ddc2176 /gcc/fortran/frontend-passes.c
parentdde23f43f9b80286ebed873431d7707a800f9043 (diff)
downloadgcc-63715e5e78532916b334027d72fb59931798a5f7.zip
gcc-63715e5e78532916b334027d72fb59931798a5f7.tar.gz
gcc-63715e5e78532916b334027d72fb59931798a5f7.tar.bz2
On AArch64 the UXTB and UXTH instructions are aliases of UBFM,
which does a shift as part of its operation. An AND immediate is a simpler operation, and might be faster on some implementations, so it is better to emit this this instead of UBFM. Benchmarking showed no difference on implementations where UBFM has the same performance as AND, and minor speedups across several benchmarks on an implementation where UBFM is slower than AND. Bootstrapped and tested on aarch64-none-elf. gcc/ * config/aarch64/aarch64.md (zero_extend<SHORT:mode><GPI:mode>2_aarch64): Change output statement and type. (<optab>qihi2_aarch64): Likewise, and split into two. (extendqihi2_aarch64): New. (zero_extendqihi2_aarch64): New. * config/aarch64/iterators.md (ldrxt): Remove. * config/aarch64/aarch64.c (aarch64_rtx_costs): Change cost of uxtb/uxth. From-SVN: r238821
Diffstat (limited to 'gcc/fortran/frontend-passes.c')
0 files changed, 0 insertions, 0 deletions