aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/CMakeLists.txt
diff options
context:
space:
mode:
authorSam Parker <sam.parker@arm.com>2019-06-07 07:35:30 +0000
committerSam Parker <sam.parker@arm.com>2019-06-07 07:35:30 +0000
commitc5ef502ee8160c37823d21e622b2575a5504e815 (patch)
tree7e3f2f79313f58bfd1afd5c6ade9790feed72b12 /llvm/lib/CodeGen/CMakeLists.txt
parent04b418f2460153969ccf7e72a2ee90aad6c8fd35 (diff)
downloadllvm-c5ef502ee8160c37823d21e622b2575a5504e815.zip
llvm-c5ef502ee8160c37823d21e622b2575a5504e815.tar.gz
llvm-c5ef502ee8160c37823d21e622b2575a5504e815.tar.bz2
[CodeGen] Generic Hardware Loop Support
Patch which introduces a target-independent framework for generating hardware loops at the IR level. Most of the code has been taken from PowerPC CTRLoops and PowerPC has been ported over to use this generic pass. The target dependent parts have been moved into TargetTransformInfo, via isHardwareLoopProfitable, with HardwareLoopInfo introduced to transfer information from the backend. Three generic intrinsics have been introduced: - void @llvm.set_loop_iterations Takes as a single operand, the number of iterations to be executed. - i1 @llvm.loop_decrement(anyint) Takes the maximum number of elements processed in an iteration of the loop body and subtracts this from the total count. Returns false when the loop should exit. - anyint @llvm.loop_decrement_reg(anyint, anyint) Takes the number of elements remaining to be processed as well as the maximum numbe of elements processed in an iteration of the loop body. Returns the updated number of elements remaining. llvm-svn: 362774
Diffstat (limited to 'llvm/lib/CodeGen/CMakeLists.txt')
-rw-r--r--llvm/lib/CodeGen/CMakeLists.txt1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/CMakeLists.txt b/llvm/lib/CodeGen/CMakeLists.txt
index fedf042..dcbd4e5 100644
--- a/llvm/lib/CodeGen/CMakeLists.txt
+++ b/llvm/lib/CodeGen/CMakeLists.txt
@@ -33,6 +33,7 @@ add_llvm_library(LLVMCodeGen
GCRootLowering.cpp
GCStrategy.cpp
GlobalMerge.cpp
+ HardwareLoops.cpp
IfConversion.cpp
ImplicitNullChecks.cpp
IndirectBrExpandPass.cpp