Re: [Linux-ia64] [hinkelbein@ti.uni-mannheim.de: Re: Strange problems building bigloo on ia64]

From: CH Gowri Kumar <gkumar_at_csa.iisc.ernet.in>
Date: 2003-05-20 00:21:06
Comments inline.

>         .file   "waw.c"
>         .pred.safe_across_calls p1-p5,p16-p63
>         .text
>         .align 16
>         .global f#
>         .proc f#
> f:
>         .prologue
>         .body
>         .mii
>         addl r3 = @ltoff(sh#), gp
>         cmp4.eq p8, p9 = 0, r32
>         ;;
>         nop.i 0
>         .mmi
>         ld8 r2 = [r3]
>         ;;
>         ld4 r14 = [r2]
>         nop.i 0
>         ;;
>         .mii
>         (p9) cmp4.eq p6, p7 = 1, r14     ! it is this stuff that triggers the
> asm warning.
>         (p8) cmp4.eq p6, p7 = 2, r14     !
>         ;;                               !
>         (p6) mov r8 = r0                 !
>         .mib                             !
>         (p7) addl r8 = 13, r0            !

It is at this place the assembler is cribbing.
There are two statements which are writing to the same register ofcourse
with appropriate predicate registers.

(p6) mov r8 = r0
(p7) addl r8 = r13,r0

But the predicate register p6 and p7 are set by the just above statements
>         (p9) cmp4.eq p6, p7 = 1, r14     
>         (p8) cmp4.eq p6, p7 = 2, r14     
which are again dependent on the predicates p8 and p9 which are set by the
statment:
>         cmp4.eq p8, p9 = 0, r32

I feel that the assembler is not able to recognize that the two statements 
which are writing to the same register(r8) are mutually exclusive ( only 
one of them can be executed), as it is two levels dependant on predicate 
registers.

Anyway, it's just a warning, not an error.

Regards,
Gowri Kumar
Received on Mon May 19 07:22:00 2003

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:14 EST