GCC CM4 FPU - sqrtf

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Sobota Únor 11 19:46:32 CET 2017


Jeste jedna podotazka, stve me, ze prekladac kazdy mezivysledek strka do 
pameti, napr. takto

(786)          amp = (ph1*ph1 + ph2*ph2 + ph3*ph3) * 2.0; //-fno-math-errno
080017E8    vldr    s14, [r7, #56]    ; 0x38
080017EC    vldr    s15, [r7, #56]    ; 0x38
080017F0    vmul.f32    s14, s14, s15
080017F4    vldr    s13, [r7, #52]    ; 0x34
080017F8    vldr    s15, [r7, #52]    ; 0x34
080017FC    vmul.f32    s15, s13, s15
08001800    vadd.f32    s14, s14, s15
08001804    vldr    s13, [r7, #48]    ; 0x30
08001808    vldr    s15, [r7, #48]    ; 0x30
0800180C    vmul.f32    s15, s13, s15
08001810    vadd.f32    s15, s14, s15
08001814    vadd.f32    s15, s15, s15
*08001818    vstr    s15, [r7, #44]    ; 0x2c**
**(787)          asm volatile  ("vsqrt.f32 %0, %1" : "=w" (amp) : "w" 
(amp) );**
**0800181C    vldr    s15, [r7, #44]    ; 0x2c**
*08001820    vsqrt.f32    s15, s15
08001824    vstr    s15, [r7, #44]    ; 0x2c

program vypada takto:
          float amp;
...
         amp = (ph1*ph1 + ph2*ph2 + ph3*ph3) * 2.0;
         asm volatile  ("vsqrt.f32 %0, %1" : "=w" (amp) : "w" (amp) );

Optimalizace je na rychlost -Ofast

Jde s tim neco delat?

A jeste jedna podotazka, proc byva u inline assembleru volatile? Bez 
toho to prelozi stejne v tomto pripade.


Dne 11.02.2017 v 19:08 Jaroslav Buchta napsal(a):
> Nevite, jak donutit gcc aby misto knihovni funkce sqrtf pouzil 
> instrukci vsqrt.f32 ?
>
> Asi bych to tam dokazal nacpat assemblerem ale moc se mi to 
> nelibi.Ostatni FPU instrukce pouziva normalne.
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20170211/dacdf517/attachment.html>


Další informace o konferenci Hw-list