For the kernel

uint aaa = 0xfffefffe;
...

It is finally compiled into:

(      12)  mov(1)          g127.7<1>:F     6.90887e-310F                   { 
align1 WE_all};


I debugged into the function and found that, %g outputs 8 bytes (4 bytes for 
aaa and 4 bytes following aaa with random value). And, to get the exact value 
of aaa (with real format uint), the hex format is a necessary.

-----Original Message----- 
From: Song, Ruiling 
Sent: Friday, July 31, 2015 4:02 PM
To: Guo, Yejun; beignet@lists.freedesktop.org
Subject: RE: [Beignet] [PATCH] output float immediate value with %f instead of 
%g

> 
> In disassemble, a float immediate value is printf with %g, it outputs 
> a wrong value with 8 bytes, change it to be %f with the correct 4 
> bytes. At some cases, the real data type is not float, so also print the 
> value in hex format.

As far as I know, %g will select %f or %e automatically, which is good for 
formatting.
The compiler would convert the float to double, then printf will output the 
double (8 bytes) value.
I am not quite sure on this. So I don't think this will bring in any issue. 
What kind of problem do you meet?

I agree with output the hex value at first glance of the patch, but the output 
asm would looks like a little messy, so I don't think it is a good idea to 
output the hex value.
    (    1308)  mul(16)         g110<1>:F       g112<8,8,1>:F   1e-30F 
(0xda24260) { align1 WE_normal 1H };

Thanks!
Ruiling
_______________________________________________
Beignet mailing list
Beignet@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to