Index: llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp =================================================================== --- llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp +++ llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp @@ -1756,9 +1756,13 @@ "Not enough operands to replace all defs"); unsigned NumElems = MI.getNumOperands() - 1; Builder.setInstrAndDebugLoc(MI); + bool IsBigEndianTarget = + MI.getParent()->getParent()->getDataLayout().isBigEndian(); for (unsigned Idx = 0; Idx < NumElems; ++Idx) { Register DstReg = MI.getOperand(Idx).getReg(); - Builder.buildConstant(DstReg, Csts[Idx]); + unsigned CstsIdx = IsBigEndianTarget ? bigEndianByteAt(NumElems, Idx) + : littleEndianByteAt(NumElems, Idx); + Builder.buildConstant(DstReg, Csts[CstsIdx]); } MI.eraseFromParent();