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