[NVPTX] Emit .pragma "nounroll" for loops marked with nounroll
authorJingyue Wu <jingyue@google.com>
Sun, 1 Feb 2015 02:27:45 +0000 (02:27 +0000)
committerJingyue Wu <jingyue@google.com>
Sun, 1 Feb 2015 02:27:45 +0000 (02:27 +0000)
commit0220df0dfd285c80c1d80658bf0d7b2914ced469
treeac7e5b3aa14e2c9374f99f31302aff1fdbbd6bb6
parent152ac396db5b6c156816979b1590702088f22518
[NVPTX] Emit .pragma "nounroll" for loops marked with nounroll

Summary:
CUDA driver can unroll loops when jit-compiling PTX. To prevent CUDA
driver from unrolling a loop marked with llvm.loop.unroll.disable is not
unrolled by CUDA driver, we need to emit .pragma "nounroll" at the
header of that loop.

This patch also extracts getting unroll metadata from loop ID metadata
into a shared helper function.

Test Plan: test/CodeGen/NVPTX/nounroll.ll

Reviewers: eliben, meheff, jholewinski

Reviewed By: jholewinski

Subscribers: jholewinski, llvm-commits

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

llvm-svn: 227703
llvm/include/llvm/CodeGen/AsmPrinter.h
llvm/include/llvm/Transforms/Utils/UnrollLoop.h
llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h
llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
llvm/lib/Transforms/Utils/LoopUnroll.cpp
llvm/test/CodeGen/NVPTX/nounroll.ll [new file with mode: 0644]