diff options
| author | Justin Lebar <jlebar@google.com> | 2017-01-18 00:08:10 +0000 |
|---|---|---|
| committer | Justin Lebar <jlebar@google.com> | 2017-01-18 00:08:10 +0000 |
| commit | c7d20128bd5a3a584c7b68fb859b974b2d1b13d5 (patch) | |
| tree | 92ceac5447f657f298c7f946902913a3a133c234 /llvm/lib/Target/NVPTX | |
| parent | 47087814f19f676e2fbda45cebde70f94acc7890 (diff) | |
| download | bcm5719-llvm-c7d20128bd5a3a584c7b68fb859b974b2d1b13d5.tar.gz bcm5719-llvm-c7d20128bd5a3a584c7b68fb859b974b2d1b13d5.zip | |
[NVPTX] Add lowering for llvm.bitreverse.
Reviewers: tra
Subscribers: llvm-commits, jholewinski
Differential Revision: https://reviews.llvm.org/D28720
llvm-svn: 292301
Diffstat (limited to 'llvm/lib/Target/NVPTX')
| -rw-r--r-- | llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp | 3 | ||||
| -rw-r--r-- | llvm/lib/Target/NVPTX/NVPTXInstrInfo.td | 10 |
2 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp index f553a808845..1691f21619b 100644 --- a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp @@ -203,6 +203,9 @@ NVPTXTargetLowering::NVPTXTargetLowering(const NVPTXTargetMachine &TM, setOperationAction(ISD::SRA_PARTS, MVT::i64 , Custom); setOperationAction(ISD::SRL_PARTS, MVT::i64 , Custom); + setOperationAction(ISD::BITREVERSE, MVT::i32, Legal); + setOperationAction(ISD::BITREVERSE, MVT::i64, Legal); + if (STI.hasROT64()) { setOperationAction(ISD::ROTL, MVT::i64, Legal); setOperationAction(ISD::ROTR, MVT::i64, Legal); diff --git a/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td b/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td index a3ef5c87a78..e88a8c93e42 100644 --- a/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td +++ b/llvm/lib/Target/NVPTX/NVPTXInstrInfo.td @@ -1138,6 +1138,16 @@ defm SHL : SHIFT<"shl.b", shl>; defm SRA : SHIFT<"shr.s", sra>; defm SRL : SHIFT<"shr.u", srl>; +// Bit-reverse +def BREV32 : + NVPTXInst<(outs Int32Regs:$dst), (ins Int32Regs:$a), + "brev.b32 \t$dst, $a;", + [(set Int32Regs:$dst, (bitreverse Int32Regs:$a))]>; +def BREV64 : + NVPTXInst<(outs Int64Regs:$dst), (ins Int64Regs:$a), + "brev.b64 \t$dst, $a;", + [(set Int64Regs:$dst, (bitreverse Int64Regs:$a))]>; + // // Rotate: Use ptx shf instruction if available. // |

