mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 11:02:59 +02:00
[NVPTX] Set ctlz_zero_undef to Expand so LegalizeDAG will convert it to ctlz. Remove the now unneccessary isel patterns. NFC
llvm-svn: 267265
This commit is contained in:
parent
a338f25008
commit
0c0d9161b6
@ -257,9 +257,9 @@ NVPTXTargetLowering::NVPTXTargetLowering(const NVPTXTargetMachine &TM,
|
|||||||
setOperationAction(ISD::CTLZ, MVT::i16, Legal);
|
setOperationAction(ISD::CTLZ, MVT::i16, Legal);
|
||||||
setOperationAction(ISD::CTLZ, MVT::i32, Legal);
|
setOperationAction(ISD::CTLZ, MVT::i32, Legal);
|
||||||
setOperationAction(ISD::CTLZ, MVT::i64, Legal);
|
setOperationAction(ISD::CTLZ, MVT::i64, Legal);
|
||||||
setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::i16, Legal);
|
setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::i16, Expand);
|
||||||
setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::i32, Legal);
|
setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::i32, Expand);
|
||||||
setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::i64, Legal);
|
setOperationAction(ISD::CTLZ_ZERO_UNDEF, MVT::i64, Expand);
|
||||||
setOperationAction(ISD::CTTZ, MVT::i16, Expand);
|
setOperationAction(ISD::CTTZ, MVT::i16, Expand);
|
||||||
setOperationAction(ISD::CTTZ, MVT::i32, Expand);
|
setOperationAction(ISD::CTTZ, MVT::i32, Expand);
|
||||||
setOperationAction(ISD::CTTZ, MVT::i64, Expand);
|
setOperationAction(ISD::CTTZ, MVT::i64, Expand);
|
||||||
|
@ -2576,13 +2576,10 @@ let hasSideEffects = 0 in {
|
|||||||
|
|
||||||
// 32-bit has a direct PTX instruction
|
// 32-bit has a direct PTX instruction
|
||||||
def : Pat<(ctlz Int32Regs:$a), (CLZr32 Int32Regs:$a)>;
|
def : Pat<(ctlz Int32Regs:$a), (CLZr32 Int32Regs:$a)>;
|
||||||
def : Pat<(ctlz_zero_undef Int32Regs:$a), (CLZr32 Int32Regs:$a)>;
|
|
||||||
|
|
||||||
// For 64-bit, the result in PTX is actually 32-bit so we zero-extend
|
// For 64-bit, the result in PTX is actually 32-bit so we zero-extend
|
||||||
// to 64-bit to match the LLVM semantics
|
// to 64-bit to match the LLVM semantics
|
||||||
def : Pat<(ctlz Int64Regs:$a), (CVT_u64_u32 (CLZr64 Int64Regs:$a), CvtNONE)>;
|
def : Pat<(ctlz Int64Regs:$a), (CVT_u64_u32 (CLZr64 Int64Regs:$a), CvtNONE)>;
|
||||||
def : Pat<(ctlz_zero_undef Int64Regs:$a),
|
|
||||||
(CVT_u64_u32 (CLZr64 Int64Regs:$a), CvtNONE)>;
|
|
||||||
|
|
||||||
// For 16-bit, we zero-extend to 32-bit, then trunc the result back
|
// For 16-bit, we zero-extend to 32-bit, then trunc the result back
|
||||||
// to 16-bits (ctlz of a 16-bit value is guaranteed to require less
|
// to 16-bits (ctlz of a 16-bit value is guaranteed to require less
|
||||||
@ -2592,10 +2589,6 @@ def : Pat<(ctlz Int16Regs:$a),
|
|||||||
(SUBi16ri (CVT_u16_u32 (CLZr32
|
(SUBi16ri (CVT_u16_u32 (CLZr32
|
||||||
(CVT_u32_u16 Int16Regs:$a, CvtNONE)),
|
(CVT_u32_u16 Int16Regs:$a, CvtNONE)),
|
||||||
CvtNONE), 16)>;
|
CvtNONE), 16)>;
|
||||||
def : Pat<(ctlz_zero_undef Int16Regs:$a),
|
|
||||||
(SUBi16ri (CVT_u16_u32 (CLZr32
|
|
||||||
(CVT_u32_u16 Int16Regs:$a, CvtNONE)),
|
|
||||||
CvtNONE), 16)>;
|
|
||||||
|
|
||||||
// Population count
|
// Population count
|
||||||
let hasSideEffects = 0 in {
|
let hasSideEffects = 0 in {
|
||||||
|
Loading…
Reference in New Issue
Block a user