mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 00:32:55 +00:00
Clean up the Legal/Expand logic for SPARC popc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200141 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5356e75b5b
commit
9df203d30e
@ -1463,8 +1463,8 @@ SparcTargetLowering::SparcTargetLowering(TargetMachine &TM)
|
||||
setOperationAction(ISD::BR_CC, MVT::i64, Custom);
|
||||
setOperationAction(ISD::SELECT_CC, MVT::i64, Custom);
|
||||
|
||||
if (Subtarget->usePopc())
|
||||
setOperationAction(ISD::CTPOP, MVT::i64, Legal);
|
||||
setOperationAction(ISD::CTPOP, MVT::i64,
|
||||
Subtarget->usePopc() ? Legal : Expand);
|
||||
setOperationAction(ISD::CTTZ , MVT::i64, Expand);
|
||||
setOperationAction(ISD::CTTZ_ZERO_UNDEF, MVT::i64, Expand);
|
||||
setOperationAction(ISD::CTLZ , MVT::i64, Expand);
|
||||
@ -1520,7 +1520,6 @@ SparcTargetLowering::SparcTargetLowering(TargetMachine &TM)
|
||||
setOperationAction(ISD::FSINCOS, MVT::f32, Expand);
|
||||
setOperationAction(ISD::FREM , MVT::f32, Expand);
|
||||
setOperationAction(ISD::FMA , MVT::f32, Expand);
|
||||
setOperationAction(ISD::CTPOP, MVT::i32, Expand);
|
||||
setOperationAction(ISD::CTTZ , MVT::i32, Expand);
|
||||
setOperationAction(ISD::CTTZ_ZERO_UNDEF, MVT::i32, Expand);
|
||||
setOperationAction(ISD::CTLZ , MVT::i32, Expand);
|
||||
@ -1570,8 +1569,8 @@ SparcTargetLowering::SparcTargetLowering(TargetMachine &TM)
|
||||
|
||||
setStackPointerRegisterToSaveRestore(SP::O6);
|
||||
|
||||
if (Subtarget->isV9() && Subtarget->usePopc())
|
||||
setOperationAction(ISD::CTPOP, MVT::i32, Legal);
|
||||
setOperationAction(ISD::CTPOP, MVT::i32,
|
||||
Subtarget->usePopc() ? Legal : Expand);
|
||||
|
||||
if (Subtarget->isV9() && Subtarget->hasHardQuad()) {
|
||||
setOperationAction(ISD::LOAD, MVT::f128, Legal);
|
||||
|
@ -41,6 +41,10 @@ SparcSubtarget::SparcSubtarget(const std::string &TT, const std::string &CPU,
|
||||
|
||||
// Parse features string.
|
||||
ParseSubtargetFeatures(CPUName, FS);
|
||||
|
||||
// Popc is a v9-only instruction.
|
||||
if (!IsV9)
|
||||
UsePopc = false;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
; RUN: llc < %s -march=sparcv9 -disable-sparc-delay-filler -disable-sparc-leaf-proc | FileCheck %s
|
||||
; RUN: llc < %s -march=sparcv9 | FileCheck %s -check-prefix=OPT
|
||||
; RUN: llc < %s -march=sparcv9 -mattr=+popc -disable-sparc-delay-filler -disable-sparc-leaf-proc | FileCheck %s
|
||||
; RUN: llc < %s -march=sparcv9 -mattr=+popc | FileCheck %s -check-prefix=OPT
|
||||
|
||||
; CHECK-LABEL: ret2:
|
||||
; CHECK: or %g0, %i1, %i0
|
||||
|
Loading…
x
Reference in New Issue
Block a user