mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-16 11:05:54 +00:00
Only enable 64-bit bswap DAG combines for PPC64
Compiling in 32-bit mode on a P7 would assert after 64-bit DAG combines were added for bswap with load/store. This is because these combines are really only valid in 64-bit mode, regardless of the CPU (and this was not being checked). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178286 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3832eff354
commit
2544f221c5
@ -6606,6 +6606,7 @@ SDValue PPCTargetLowering::PerformDAGCombine(SDNode *N,
|
||||
(N->getOperand(1).getValueType() == MVT::i32 ||
|
||||
N->getOperand(1).getValueType() == MVT::i16 ||
|
||||
(TM.getSubtarget<PPCSubtarget>().hasLDBRX() &&
|
||||
TM.getSubtarget<PPCSubtarget>().isPPC64() &&
|
||||
N->getOperand(1).getValueType() == MVT::i64))) {
|
||||
SDValue BSwapOp = N->getOperand(1).getOperand(0);
|
||||
// Do an any-extend to 32-bits if this is a half-word input.
|
||||
@ -6629,6 +6630,7 @@ SDValue PPCTargetLowering::PerformDAGCombine(SDNode *N,
|
||||
N->getOperand(0).hasOneUse() &&
|
||||
(N->getValueType(0) == MVT::i32 || N->getValueType(0) == MVT::i16 ||
|
||||
(TM.getSubtarget<PPCSubtarget>().hasLDBRX() &&
|
||||
TM.getSubtarget<PPCSubtarget>().isPPC64() &&
|
||||
N->getValueType(0) == MVT::i64))) {
|
||||
SDValue Load = N->getOperand(0);
|
||||
LoadSDNode *LD = cast<LoadSDNode>(Load);
|
||||
|
@ -1,6 +1,7 @@
|
||||
; RUN: llc < %s -march=ppc32 | FileCheck %s -check-prefix=X32
|
||||
; RUN: llc < %s -march=ppc64 | FileCheck %s -check-prefix=X64
|
||||
; RUN: llc < %s -march=ppc64 -mcpu=pwr7 | FileCheck %s -check-prefix=PWR7
|
||||
; RUN: llc < %s -march=ppc32 -mcpu=pwr7 | FileCheck %s -check-prefix=X32
|
||||
|
||||
|
||||
define void @STWBRX(i32 %i, i8* %ptr, i32 %off) {
|
||||
|
Loading…
Reference in New Issue
Block a user