Expansions for u/srem, using the udiv expansion. More unit tests for udiv and u/srem.
[oota-llvm.git] / include / llvm / Transforms / Utils / IntegerDivision.h
index a8008ee066d745dfe2f037acdd0665ef24458a57..cecc8075de7dec6a1963a506d922e68aa6c9f846 100644 (file)
@@ -23,6 +23,24 @@ 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
+  /// when more information about the operands are known. Currently only
+  /// implements 32bit scalar division, but future work is removing this
+  /// limitation.
+  ///
+  /// @brief Replace Div with generated code.
   bool expandDivision(BinaryOperator* Div);
 
 } // End llvm namespace