Home | History | Annotate | Download | only in Analysis

Lines Matching refs:A1

1278   APInt A0(Bits, 1, true), A1(Bits, 0, true);
1286 APInt A2 = A0 - Q*A1; A0 = A1; A1 = A2;
1293 X = AM.slt(0) ? -A1 : A1;
1350 // When we have a pair of subscripts of the form [c1 + a1*i] and [c2 + a2*i],
1351 // where i is an induction variable, c1 and c2 are loop invariant, and a1
1883 // When we have a pair of subscripts of the form [c1 + a1*i] and [c2 + a2*j]
1889 // For a dependence to exist, c1 + a1*i must equal c2 + a2*j for some
1893 // c1 + a1*i = c2 + a2*j
1894 // a1*i - a2*j = c2 - c1
1897 // range of the maximum and minimum possible values of a1*i - a2*j.
1898 // Considering the signs of a1 and a2, we have 4 possible cases:
1900 // 1) If a1 >= 0 and a2 >= 0, then
1901 // a1*0 - a2*N2 <= c2 - c1 <= a1*N1 - a2*0
1902 // -a2*N2 <= c2 - c1 <= a1*N1
1904 // 2) If a1 >= 0 and a2 <= 0, then
1905 // a1*0 - a2*0 <= c2 - c1 <= a1*N1 - a2*N2
1906 // 0 <= c2 - c1 <= a1*N1 - a2*N2
1908 // 3) If a1 <= 0 and a2 >= 0, then
1909 // a1*N1 - a2*N2 <= c2 - c1 <= a1*0 - a2*0
1910 // a1*N1 - a2*N2 <= c2 - c1 <= 0
1912 // 4) If a1 <= 0 and a2 <= 0, then
1913 // a1*N1 - a2*0 <= c2 - c1 <= a1*0 - a2*N2
1914 // a1*N1 <= c2 - c1 <= -a2*N2
1917 bool DependenceAnalysis::symbolicRDIVtest(const SCEV *A1,
1925 DEBUG(dbgs() << "\t A1 = " << *A1);
1926 DEBUG(dbgs() << ", type = " << *A1->getType() << "\n");
1930 const SCEV *N1 = collectUpperBound(Loop1, A1->getType());
1931 const SCEV *N2 = collectUpperBound(Loop2, A1->getType());
1938 if (SE->isKnownNonNegative(A1)) {
1940 // A1 >= 0 && A2 >= 0
1942 // make sure that c2 - c1 <= a1*N1
1943 const SCEV *A1N1 = SE->getMulExpr(A1, N1);
1944 DEBUG(dbgs() << "\t A1*N1 = " << *A1N1 << "\n");
1961 // a1 >= 0 && a2 <= 0
1963 // make sure that c2 - c1 <= a1*N1 - a2*N2
1964 const SCEV *A1N1 = SE->getMulExpr(A1, N1);
1967 DEBUG(dbgs() << "\t A1*N1 - A2*N2 = " << *A1N1_A2N2 << "\n");
1980 else if (SE->isKnownNonPositive(A1)) {
1982 // a1 <= 0 && a2 >= 0
1984 // make sure that a1*N1 - a2*N2 <= c2 - c1
1985 const SCEV *A1N1 = SE->getMulExpr(A1, N1);
1988 DEBUG(dbgs() << "\t A1*N1 - A2*N2 = " << *A1N1_A2N2 << "\n");
2001 // a1 <= 0 && a2 <= 0
2003 // make sure that a1*N1 <= c2 - c1
2004 const SCEV *A1N1 = SE->getMulExpr(A1, N1);
2005 DEBUG(dbgs() << "\t A1*N1 = " << *A1N1 << "\n");
2027 // When we have a pair of subscripts of the form [c1 + a1*i] and [c2 - a2*i]
2028 // where i is an induction variable, c1 and c2 are loop invariant, and a1 and
2093 // When we have a pair of subscripts of the form [c1 + a1*i] and [c2 + a2*j]
2095 // and a1 and a2 are constant, we can solve it exactly with an easy adaptation
2102 // [c1 + a1*i + a2*j][c2].