}
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) {
; 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)
; 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:
; 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;
; 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;
; 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++)
; 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++)