Hi,

Thanks for the fast reply. Only one more thing: is there some way that
I could force it to be signed??

On Tue, Feb 9, 2010 at 3:17 PM, Richard Guenther
<richard.guent...@gmail.com> wrote:
> On Tue, Feb 9, 2010 at 6:01 PM, Cristianno Martins
> <cristiannomart...@gmail.com> wrote:
>> Hi everyone,
>>
>> First of all, I already find [and fix] the problem that I had
>> described in the last email.
>> Now, I need a help with a pretty intriguing issue, described below.
>>
>> Well, such as I told in the last email, I'm working on a
>> implementation of a heuristic for loop skewing transformation. To
>> expose the issue, I will show how it happens with an example.
>>
>> First, the code used to compile is very simple, and can be seen below
>> (the matrix dimensions were minimized for simplification).
>> <code>
>>  #define m 20
>>  #define n 30
>>  int a[m][n];
>>  int main() {
>>     int i, j;
>>     for(i = 0; i < m; i++)
>>        for(j = 0; j < n; j++)
>>           a[i][j] = 1;
>>
>>     return a[1][1] + a[2][2];
>>  }
>> </code>
>>
>> After the skewing pass, if I call
>>
>> <code>
>>  cloog_prog_clast pc = scop_to_clast (scop);
>>  printf ("\nCLAST generated by CLooG: \n");
>>  print_clast_stmt (stdout, pc.stmt);
>> </code>
>>
>> I get the following result:
>>
>> <terminal>
>>  CLAST generated by CLooG:
>>  for (scat_1=0;scat_1<=48;scat_1++) {
>>     for (scat_3=max(scat_1-29,0);scat_3<=min(scat_1,19);scat_3++) {
>>        b[scat_3][scat_1-scat_3] = 1 ;
>>     }
>>  }
>> <terminal>
>>
>> Going ahead with this, such as can be seen in
>> simple_test.c.105t.graphite [attached], the code is correctly
>> generated (in gimple), but the important bb is:
>>
>> <file>
>>  <bb 3>:
>>      # graphite_IV.5_17 = PHI <0(2), graphite_IV.5_5(9)>
>>      # .MEM_37 = PHI <.MEM_13(D)(2), .MEM_38(9)>
>>      D.3185_12 = graphite_IV.5_17 + 0x0ffffffe3;
>>      D.3186_11 = MAX_EXPR <D.3185_12, 0>; # this is the line in question
>
> It looks like D.3185 is unsigned.
>
> Richard.
>
>>      D.3187_23 = MIN_EXPR <graphite_IV.5_17, 19>;
>>      D.3188_24 = D.3187_23 + 1;
>>      D.3189_25 = D.3186_11 < D.3188_24;
>>      if (D.3189_25 != 0)
>>        goto <bb 4>;
>>      else
>>        goto <bb 8>;
>> </file>
>>
>> Curiously, the line marked above doesn't work in assembly. The
>> D.3186_11 is assigned to -29, although zero is greater than that, and
>> the code inside the loop body never runs.
>> Moreover, If I get the clast code generated by cloog after the skewing
>> (above), and put it on the source file (compiling without skeking),
>> the max expr appears in gimple as an if statement, and the code
>> executes perfectly.
>>
>> Does someone have any idea how could I fix it??
>>
>> Thanks in advance,
>>
>> On Sun, Feb 7, 2010 at 7:31 PM, Cristianno Martins
>> <cristiannomart...@gmail.com> wrote:
>>>
>>> Hello everyone,
>>>
>>> I've working on graphite lately, and I did an loop skewing
>>> implementation, starting from the loop interchange code [in
>>> gcc/graphite-interchange.c].
>>> However, after the transformation, if I print the clast generated by
>>> Cloog, what I get is a almost the same loop as the original one.
>>> Moreover, if I write the pbb transformed domain and scattering into a
>>> file, and run the cloog command with that file, the result is exactly
>>> what I want from the beggining.
>>> For better comprehension of the problem, some interesting data are showed 
>>> below.
>>>
>>> But, first, for short, my question is: am I forgetting something
>>> important that I must be doing (like a function call)?
>>>
>>>
>>>> [...]
>>>
>>> Thanks in advance,
>>>
>>> --
>>> Cristianno Martins
>>
>> --
>> Cristianno Martins
>>
>



-- 
Cristianno Martins
Mestrando em Computação
Universidade Estadual de Campinas
cristianno.mart...@students.ic.unicamp.br

cel: (19) 8825-5731 [oi]
      (19) 8240-3217 [tim]
skype: cristiannomartins
gTalk: cristiannomartins
msn: cristiannomart...@hotmail.com

Reply via email to