summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorFedor Sergeev <fedor.sergeev@oracle.com>2017-11-20 22:33:58 +0000
committerFedor Sergeev <fedor.sergeev@oracle.com>2017-11-20 22:33:58 +0000
commita476117e3aa6ef32306e39259d4da42aaca88e11 (patch)
tree11663c32c3f9b61b909d8d1d2a075288190e4af3 /clang/test
parent2bc260aba2b4bba4700ae30ab1d0edfc32925fee (diff)
downloadbcm5719-llvm-a476117e3aa6ef32306e39259d4da42aaca88e11.tar.gz
bcm5719-llvm-a476117e3aa6ef32306e39259d4da42aaca88e11.zip
[Sparc] efficient pattern for UINT_TO_FP conversion
Summary: while investigating performance degradation of imagick benchmark there were found inefficient pattern for UINT_TO_FP conversion. That pattern causes RAW hazard in assembly code. Specifically, uitofp IR operator results in poor assembler : st %i0, [%fp - 952] ldd [%fp - 952], %f0 it stores 32-bit integer register into memory location and then loads 64-bit floating point data from that location. That is exactly RAW hazard case. To optimize that case it is possible to use SPISD::ITOF and SPISD::XTOF for conversion from integer to floating point data type and to use ISD::BITCAST to copy from integer register into floating point register. The fix is to write custom UINT_TO_FP pattern using SPISD::ITOF, SPISD::XTOF, ISD::BITCAST. Patch by Alexey Lapshin Reviewers: fedor.sergeev, jyknight, dcederman, lero_chris Reviewed By: jyknight Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D36875 llvm-svn: 318704
Diffstat (limited to 'clang/test')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud