Add NVPTXPeephole pass to reduce unnecessary address cast
authorJingyue Wu <jingyue@google.com>
Wed, 24 Jun 2015 20:20:16 +0000 (20:20 +0000)
committerJingyue Wu <jingyue@google.com>
Wed, 24 Jun 2015 20:20:16 +0000 (20:20 +0000)
commit9c71150bfbe4cf452c54b9d42436fa90905d0a87
treed88d645d7f90ed0e7650a7d8d27e1c98c0499713
parenta9e77abc6830bba7aa5a4974e09372caca3be32c
Add NVPTXPeephole pass to reduce unnecessary address cast

Summary:
This patch first change the register that holds local address for stack
frame to %SPL. Then the new NVPTXPeephole pass will try to scan the
following pattern

   %vreg0<def> = LEA_ADDRi64 <fi#0>, 4
   %vreg1<def> = cvta_to_local %vreg0

and transform it into

   %vreg1<def> = LEA_ADDRi64 %VRFrameLocal, 4

Patched by Xuetian Weng

Test Plan: test/CodeGen/NVPTX/local-stack-frame.ll

Reviewers: jholewinski, jingyue

Reviewed By: jingyue

Subscribers: eliben, jholewinski, llvm-commits

Differential Revision: http://reviews.llvm.org/D10549

llvm-svn: 240587
llvm/lib/Target/NVPTX/CMakeLists.txt
llvm/lib/Target/NVPTX/NVPTX.h
llvm/lib/Target/NVPTX/NVPTXFrameLowering.cpp
llvm/lib/Target/NVPTX/NVPTXPeephole.cpp [new file with mode: 0644]
llvm/lib/Target/NVPTX/NVPTXRegisterInfo.td
llvm/lib/Target/NVPTX/NVPTXTargetMachine.cpp
llvm/test/CodeGen/NVPTX/call-with-alloca-buffer.ll
llvm/test/CodeGen/NVPTX/local-stack-frame.ll