diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index cbaa13c..c118dff 100644
--- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -15450,16 +15450,17 @@
             if (auto *C = dyn_cast<ConstantSDNode>(Value)) {
               APInt Val = C1->getAPIntValue();
               APInt InsertVal = C->getAPIntValue().zextOrTrunc(STByteSize * 8);
-              if (DAG.getDataLayout().isBigEndian())
-                Offset = ChainByteSize - 1 - Offset;
-              Val.insertBits(InsertVal, Offset * 8);
-              SDValue NewSDVal =
-                  DAG.getConstant(Val, SDLoc(C), ChainValue.getValueType(),
-                                  C1->isTargetOpcode(), C1->isOpaque());
-              SDNode *NewST1 = DAG.UpdateNodeOperands(
-                  ST1, ST1->getChain(), NewSDVal, ST1->getOperand(2),
-                  ST1->getOperand(3));
-              return CombineTo(ST, SDValue(NewST1, 0));
+              // FIXME: Handle Big-endian mode.
+              if (!DAG.getDataLayout().isBigEndian()) {
+                Val.insertBits(InsertVal, Offset * 8);
+                SDValue NewSDVal =
+                    DAG.getConstant(Val, SDLoc(C), ChainValue.getValueType(),
+                                    C1->isTargetOpcode(), C1->isOpaque());
+                SDNode *NewST1 = DAG.UpdateNodeOperands(
+                    ST1, ST1->getChain(), NewSDVal, ST1->getOperand(2),
+                    ST1->getOperand(3));
+                return CombineTo(ST, SDValue(NewST1, 0));
+              }
             }
           }
         } // End ST subset of ST1 case.
diff --git a/llvm/test/CodeGen/PowerPC/constant-combines.ll b/llvm/test/CodeGen/PowerPC/constant-combines.ll
index bd14509..dd40b75 100644
--- a/llvm/test/CodeGen/PowerPC/constant-combines.ll
+++ b/llvm/test/CodeGen/PowerPC/constant-combines.ll
@@ -1,13 +1,14 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc -mtriple=powerpc64-unknown-linux-gnu   -o - %s | FileCheck --check-prefix=BE %s 
+; RUN: llc -mtriple=powerpc64-unknown-linux-gnu   -o - %s | FileCheck --check-prefix=BE %s
 ; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -o - %s | FileCheck --check-prefix=LE %s
 
 define void @fold_constant_stores_loaddr(i8* %i8_ptr) {
 ; BE-LABEL: fold_constant_stores_loaddr:
 ; BE:       # %bb.0: # %entry
-; BE-NEXT:    li 4, 85
-; BE-NEXT:    sldi 4, 4, 57
+; BE-NEXT:    li 4, 0
 ; BE-NEXT:    std 4, 0(3)
+; BE-NEXT:    li 4, -86
+; BE-NEXT:    stb 4, 0(3)
 ; BE-NEXT:    blr
 ;
 ; LE-LABEL: fold_constant_stores_loaddr:
@@ -26,9 +27,10 @@
 define void @fold_constant_stores_hiaddr(i8* %i8_ptr) {
 ; BE-LABEL: fold_constant_stores_hiaddr:
 ; BE:       # %bb.0: # %entry
-; BE-NEXT:    li 4, 85
-; BE-NEXT:    sldi 4, 4, 57
+; BE-NEXT:    li 4, 0
 ; BE-NEXT:    std 4, 0(3)
+; BE-NEXT:    li 4, -86
+; BE-NEXT:    stb 4, 0(3)
 ; BE-NEXT:    blr
 ;
 ; LE-LABEL: fold_constant_stores_hiaddr:
