aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Transforms
diff options
context:
space:
mode:
authorMichael Ilseman <milseman@apple.com>2012-09-25 17:56:47 +0000
committerMichael Ilseman <milseman@apple.com>2012-09-25 17:56:47 +0000
commit13098443994339249fb3f085bbc4fbcdf9f033db (patch)
tree9499c4e27786d1e1d1957f38550c55d46d96e36d /include/llvm/Transforms
parenta3c3e1f8e2dc3572564426a420c293a271630c7b (diff)
downloadexternal_llvm-13098443994339249fb3f085bbc4fbcdf9f033db.zip
external_llvm-13098443994339249fb3f085bbc4fbcdf9f033db.tar.gz
external_llvm-13098443994339249fb3f085bbc4fbcdf9f033db.tar.bz2
Expansions for u/srem, using the udiv expansion. More unit tests for udiv and u/srem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164614 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Transforms')
-rw-r--r--include/llvm/Transforms/Utils/IntegerDivision.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/llvm/Transforms/Utils/IntegerDivision.h b/include/llvm/Transforms/Utils/IntegerDivision.h
index 8d3f53e..cecc807 100644
--- a/include/llvm/Transforms/Utils/IntegerDivision.h
+++ b/include/llvm/Transforms/Utils/IntegerDivision.h
@@ -23,6 +23,16 @@ namespace llvm {
namespace llvm {
+ /// Generate code to calculate the remainder of two integers, replacing Rem
+ /// with the generated code. This currently generates code using the udiv
+ /// expansion, but future work includes generating more specialized code,
+ /// e.g. when more information about the operands are known. Currently only
+ /// implements 32bit scalar division (due to udiv's limitation), but future
+ /// work is removing this limitation.
+ ///
+ /// @brief Replace Rem with generated code.
+ bool expandRemainder(BinaryOperator *Rem);
+
/// Generate code to divide two integers, replacing Div with the generated
/// code. This currently generates code similarly to compiler-rt's
/// implementations, but future work includes generating more specialized code