Disable support for modulo expressions
authorJohannes Doerfert <doerfert@cs.uni-saarland.de>
Thu, 10 Sep 2015 12:56:46 +0000 (12:56 +0000)
committerJohannes Doerfert <doerfert@cs.uni-saarland.de>
Thu, 10 Sep 2015 12:56:46 +0000 (12:56 +0000)
  The support for modulo expressions is not comlete and makes the new
  domain generation harder. As the currently broken domain generation
  needs to be replaced, we will first swap in the new, fixed domain
  generation and make it compatible with the modulo expressions later.

llvm-svn: 247278

polly/lib/Support/SCEVValidator.cpp
polly/test/Isl/CodeGen/if-conditions-in-vector-code.ll
polly/test/Isl/CodeGen/inner_scev_sdiv_in_rtc.ll
polly/test/Isl/CodeGen/srem-in-other-bb.ll
polly/test/ScopInfo/NonAffine/non_affine_but_srem.ll
polly/test/ScopInfo/multidim_srem.ll
polly/test/ScopInfo/reduction_alternating_base.ll

index 85bda18..4514219 100644 (file)
@@ -350,17 +350,23 @@ public:
   }
 
   ValidatorResult visitSRemInstruction(Instruction *SRem, const SCEV *S) {
-    assert(SRem->getOpcode() == Instruction::SRem &&
-           "Assumed SRem instruction!");
-
-    auto *Divisor = SRem->getOperand(1);
-    auto *CI = dyn_cast<ConstantInt>(Divisor);
-    if (!CI)
-      return visitGenericInst(SRem, S);
-
-    auto *Dividend = SRem->getOperand(0);
-    auto *DividendSCEV = SE.getSCEV(Dividend);
-    return visit(DividendSCEV);
+    // TODO: FIXME: SRem instructions in the domain description are currently
+    //              not compatible with the domain generation. Once this is
+    //              fixed we need to enable this handling again.
+    return ValidatorResult(SCEVType::INVALID);
+#if 0
+        assert(SRem->getOpcode() == Instruction::SRem &&
+               "Assumed SRem instruction!");
+
+        auto *Divisor = SRem->getOperand(1);
+        auto *CI = dyn_cast<ConstantInt>(Divisor);
+        if (!CI)
+          return visitGenericInst(SRem, S);
+
+        auto *Dividend = SRem->getOperand(0);
+        auto *DividendSCEV = SE.getSCEV(Dividend);
+        return visit(DividendSCEV);
+#endif
   }
 
   ValidatorResult visitUnknown(const SCEVUnknown *Expr) {
index d629c92..2a29eaa 100644 (file)
@@ -4,6 +4,12 @@
 ; RUN: opt %loadPolly -polly-detect-unprofitable -polly-codegen -polly-vectorizer=polly -S < %s | \
 ; RUN:     FileCheck %s
 ;
+; TODO: The new domain generation cannot handle modulo domain constraints,
+;       hence modulo handling has been disabled completely. Once this is
+;       resolved this test should work again. Until then we approximate the
+;       whole loop body.
+; XFAIL: *
+
 ;    void foo(float *A) {
 ;      for (long i = 0; i < 16; i++) {
 ;        if (i % 2)
index 5966249..c6c66e1 100644 (file)
@@ -1,6 +1,11 @@
 ; RUN: opt %loadPolly -polly-codegen -polly-no-early-exit \
 ; RUN:     -polly-detect-unprofitable -S < %s | FileCheck %s
 ;
+; TODO: The new domain generation cannot handle modulo domain constraints,
+;       hence modulo handling has been disabled completely. Once this is
+;       resolved this test should work again.
+; XFAIL: *
+;
 ; This will just check that we generate valid code here.
 ;
 ; CHECK: polly.start:
index 9d181be..d98abde 100644 (file)
@@ -1,6 +1,11 @@
 ; RUN: opt %loadPolly -polly-codegen -S -polly-no-early-exit \
 ; RUN:     -polly-detect-unprofitable < %s | FileCheck %s
 ;
+; TODO: The new domain generation cannot handle modulo domain constraints,
+;       hence modulo handling has been disabled completely. Once this is
+;       resolved this test should work again.
+; XFAIL: *
+;
 ;    void pos(float *A, long n) {
 ;      for (long i = 0; i < 100; i++)
 ;        A[n % 42] += 1;
index 17fe4da..d5aaaf0 100644 (file)
@@ -1,6 +1,11 @@
 ; RUN: opt %loadPolly -polly-scops -polly-detect-unprofitable \
 ; RUN:                -analyze < %s | FileCheck %s
 ;
+; TODO: The new domain generation cannot handle modulo domain constraints,
+;       hence modulo handling has been disabled completely. Once this is
+;       resolved this test should work again.
+; XFAIL: *
+;
 ;    void pos(float *A, long n) {
 ;      for (long i = 0; i < 100; i++)
 ;        A[n % 42] += 1;
index 3be1cef..500ae6e 100644 (file)
@@ -1,5 +1,10 @@
 ; RUN: opt %loadPolly -analyze -polly-scops -S < %s | FileCheck %s
 ;
+; TODO: The new domain generation cannot handle modulo domain constraints,
+;       hence modulo handling has been disabled completely. Once this is
+;       resolved this test should work again.
+; XFAIL: *
+;
 ;    void foo(long n, float A[][n][n]) {
 ;      for (long i = 0; i < 200; i++)
 ;        for (long j = 0; j < n; j++)
index 8d490e5..ca23ff8 100644 (file)
@@ -1,5 +1,9 @@
 ; RUN: opt %loadPolly -polly-detect-unprofitable -polly-scops -analyze < %s | FileCheck %s
 ;
+; TODO: The new domain generation cannot handle modulo domain constraints,
+;       hence modulo handling has been disabled completely. Once this is
+;       resolved this test should work again.
+; XFAIL: *
 ;
 ;    void f(int *A) {
 ;      for (int i = 0; i < 1024; i++)