summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86InstrFMA3Info.h
diff options
context:
space:
mode:
authorQingShan Zhang <qshanz@cn.ibm.com>2018-07-02 05:46:09 +0000
committerQingShan Zhang <qshanz@cn.ibm.com>2018-07-02 05:46:09 +0000
commit3b2aa2b4b4b42fdeb2ee2c617dabddeb30c5441f (patch)
treeeeb3e0268bf5a5a86cc002b6af841750164b772e /llvm/lib/Target/X86/X86InstrFMA3Info.h
parent5b3db45e8f4d2600c32e18b136a31457e31b7aed (diff)
downloadbcm5719-llvm-3b2aa2b4b4b42fdeb2ee2c617dabddeb30c5441f.tar.gz
bcm5719-llvm-3b2aa2b4b4b42fdeb2ee2c617dabddeb30c5441f.zip
[PowerPC] Don't make it as pre-inc candidate if displacement isn't 4's multiple for i64 pre-inc load/store
For the below case, pre-inc prep think it's a good candidate to use pre-inc for the bucket, but 64bit integer load/store update (pre-inc) instruction on Power requires the displacement field should be DS-form (4's multiple). Since it can't satisfy the constraint, we have to do some fix ups later. As below, the original load/stores could be well-form, it makes things worse. unsigned long long result = 0; unsigned long long foo(char *p, unsigned long long n) { for (unsigned long long i = 0; i < n; i++) { unsigned long long x1 = *(unsigned long long *)(p - 50000 + i); unsigned long long x2 = *(unsigned long long *)(p - 61024 + i); unsigned long long x3 = *(unsigned long long *)(p - 62048 + i); unsigned long long x4 = *(unsigned long long *)(p - 64096 + i); result *= x1 * x2 * x3 * x4; } return result; } Patch by jedilyn(Kewen Lin). Differential Revision: https://reviews.llvm.org/D48813 --This line, and those below, will be ignored-- M lib/Target/PowerPC/PPCLoopPreIncPrep.cpp A test/CodeGen/PowerPC/preincprep-i64-check.ll llvm-svn: 336074
Diffstat (limited to 'llvm/lib/Target/X86/X86InstrFMA3Info.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud