Vectorizing

Peter <[email protected]> Thu, 12 Jan 2017 14:18:19 +0000
Newsgroups gmane.comp.compilers.gpc
Message-ID <[email protected]>
I've managed to get some Pascal code to vectorize!

See attached example.
I used GNU Pascal version 20070904, based on gcc-4.3.6.  (64bit)
Earlier 4.3.x might work, please try it.

Caveats;
Array to vectorize must start with lower bound zero.
Must use While loop (For loop did'nt work).
32 bit Integers not working, floats or 64bit Ints only.


gpc -O3 -ftree-vectorizer-verbose=2  av.pas

av.pas:19: note: LOOP VECTORIZED.
av.pas:0: note: vectorized 1 loops in function.


Regards,
Peter

_______________________________________________
Gpc mailing list
[email protected]
https://www.g-n-u.de/mailman/listinfo/gpc
av.pas (text/x-pascal, 395 B)
{ Vectorize test for gpc 4.3.x }

{ gpc -O3 -ftree-vectorizer-verbose=3 av.pas -o av }


program av;

type
    d256 = array [0..255] of Single;

var
    a,b,c : d256;


procedure loop1;
var i : Integer;
begin
    i := 0;
    while i < 256 do
    begin
        a[i] := b[i] + c[i];
        i := succ(i);
    end;
end;


begin
    b[17] := 5;
    c[17] := 2;

    loop1;
    writeln (a[17]);
end.