This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Auto-vectorization with gcj


Andrew Haley wrote:

Dietmar Lippold writes:
> I tried to test auto-vectorization with the following java program:
> > public class Test {
> private static int[] a = new int[256];
> private static int[] b = new int[256];
> private static int[] c = new int[256];
> > public static final void main(String[] args) {
> for (int i = 0; i < 256; i++) {
> b[i] = i;
> c[i] = i;
> }
> for (int i = 0; i < 256; i++) {
> a[i] = b[i] + c[i];
> }
> }
> }
> > When I compile it with
> > gcj -msse2 -O2 -ftree-vectorize -ftree-vectorizer-verbose=5 -c Test.java
> > I get the following message:
> > Test.java:9: note: not vectorized: multiple exits.
> Test.java:14: note: not vectorized: multiple exits.
> Test.java:7: note: vectorized 0 loops in function.
> > Is it not possible to use auto-vectorization with gcj until now?


Not as far as I am aware, no.  You may be the first person ever to
try it.

I don't know why the compiler believes the loops have multiple exits.


The possibility of throwing an ArrayBoundsException would be considered an exit. In order to vectorize this loop we first need value range propagation, so that the array bounds checks can be eliminated.


However, compiling with --no-bounds-check would work around the issue and should permit the loop to be vectorized.

Bryce



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]