root/root-PPC-Avoid-non-simple-MVT-in-STBRX-optimization.patch
Mattias Ellert b8c8500439 Update to 6.16.00
Drop patches accepted upstream:
  root-adjust-allowed-test-difference-for-32-bit-ix86.patch
  root-crypto.patch
  root-js-syntax.patch
  root-missing-header.patch
  root-set-cache-file-dir.patch
  root-stressgraphics-ref.patch
  root-test-compilation-epel7.patch
  root-test-subdirs.patch
  root-unique-filenames.patch
Dropped subpackages:
  root-rootd (obsolete - use xrootd)
  root-proofd (obsolete - use root-xproofd)
  root-proof-pq2
New ROOT 7 subpackage:
  root-graf3d-eve7
  root-gui-webgui6
Make tutorial/v7/line.cxx run in batch mode
2019-02-15 12:57:22 +01:00

23 lines
1.3 KiB
Diff

diff -ur root-6.14.00.orig/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp root-6.14.00/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp
--- root-6.14.00.orig/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp 2018-06-13 12:10:40.000000000 +0200
+++ root-6.14.00/interpreter/llvm/src/lib/Target/PowerPC/PPCISelLowering.cpp 2018-06-27 17:06:55.739506085 +0200
@@ -11861,6 +11861,11 @@
N->getOperand(1).getValueType() == MVT::i16 ||
(Subtarget.hasLDBRX() && Subtarget.isPPC64() &&
N->getOperand(1).getValueType() == MVT::i64))) {
+ // STBRX can only handle simple types.
+ EVT mVT = cast<StoreSDNode>(N)->getMemoryVT();
+ if (mVT.isExtended())
+ break;
+
SDValue BSwapOp = N->getOperand(1).getOperand(0);
// Do an any-extend to 32-bits if this is a half-word input.
if (BSwapOp.getValueType() == MVT::i16)
@@ -11868,7 +11873,6 @@
// If the type of BSWAP operand is wider than stored memory width
// it need to be shifted to the right side before STBRX.
- EVT mVT = cast<StoreSDNode>(N)->getMemoryVT();
if (Op1VT.bitsGT(mVT)) {
int Shift = Op1VT.getSizeInBits() - mVT.getSizeInBits();
BSwapOp = DAG.getNode(ISD::SRL, dl, Op1VT, BSwapOp,