-
Data: 2014-07-05 15:05:49
Temat: [asm] i dont (quite) get it
Od: firr <p...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]przegladam jedna stronke i tam jest napisane
Żeby jednak w 100% wykorzystać moc obliczeniową, należy liczyć równocześnie 4
iloczyny skalarne.
sse-dotprod4.c:
void sse_dot4(float* v1x4, float* v2x4, float* results) {
__asm__ volatile (
// load 4 vectors from v1
"movups (%0), %%xmm0 \n"
"movups 16(%0), %%xmm1 \n"
"movups 32(%0), %%xmm2 \n"
"movups 48(%0), %%xmm3 \n"
// load 4 vectors from v2
"movups (%1), %%xmm4 \n"
"movups 16(%1), %%xmm5 \n"
"movups 32(%1), %%xmm6 \n"
"movups 48(%1), %%xmm7 \n"
// perfom parallel multiplications
"mulps %%xmm4, %%xmm0 \n" // xmm0 := |A3|A2|A1|A0|
"mulps %%xmm5, %%xmm1 \n" // xmm1 := |B3|B2|B1|B0|
"mulps %%xmm6, %%xmm2 \n" // xmm2 := |C3|C2|C1|C0|
"mulps %%xmm7, %%xmm3 \n" // xmm3 := |D3|D2|D1|D0|
// (xmm4-xmm7 are free)
// perfom additions
"movaps %%xmm0, %%xmm4 \n"
"unpcklps %%xmm1, %%xmm0 \n" // xmm0 := |B1|A1|B0|A0|
"unpckhps %%xmm1, %%xmm4 \n" // xmm4 := |B3|A3|B2|A2| (xmm1 is free)
"movaps %%xmm2, %%xmm1 \n"
"unpcklps %%xmm3, %%xmm2 \n" // xmm2 := |D1|C1|D0|C0|
"unpckhps %%xmm3, %%xmm1 \n" // xmm1 := |D3|C3|D2|C2| (xmm3 is free)
"addps %%xmm4, %%xmm0 \n" // xmm0 := | B13 | A13 | B02 | A02 | (xmm1 is
free)
"addps %%xmm1, %%xmm2 \n" // xmm2 := | D13 | C13 | D02 | C02 | (xmm3 is free)
"movaps %%xmm0, %%xmm1 \n"
"shufps $0b01000100, %%xmm2, %%xmm0 \n" // xmm0 := | D02 | C02 | B02 | A02 |
"shufps $0b11101110, %%xmm2, %%xmm1 \n" // xmm1 := | D13 | C13 | B13 | A13 |
"addps %%xmm1, %%xmm0 \n" // xmm0 := |D0123|C0123|B0123|A0123|
"movups %%xmm0, (%2) \n"
:
: "r" (v1x4), "r" (v2x4), "r" (results)
);
}
przez pare dobrych minut ne moglem pojac czemu to jest tak napisane gdy zwykle
pionowe sse moze sie spokojnie obejsc tutaj bez szufli
xxxx
yyyy
zzzz
XXXX
YYYY
ZZZZ
|
v
x*X+y*Y+z*Z
i mz bedzie to raczej chyba szybsze ze wzgledu na to ze 1) nie uzywa szufli
2) wogole operuje na mniejszej liczbie bajtów.. ta wersja wyzej jak rozumiem
mnozy wektory 4D a czesciej przydatne sa 3D do tego pytanie czemu az czetry na raz,
jesli to jest wlasciwie pozioma wersja to czmu np 4 a nie 2 albo 5? - akurat
rejestrow starczylo na 4?
z drugiej strony rozumiem ze taka pozioma wersja ma zalety co do tego poziomego
rozkladu wektorow
drugie pytanie czy taki sposob pisania zagwarantuje jakis standardowy prolog i epilog
takiej funkcji? (tj bez jakichs zmuleń) i co to jest -
: "r" (v1x4), "r" (v2x4), "r" (results)
?
czy jest to asm pod gcc? (w sumie po przyzwyczajeniu sie nie jest gorszy od
tego starego - jest chyba nawet lepszy pominawszy odwrocona kolejnosc)
Następne wpisy z tego wątku
- 05.07.14 17:49 feldmarszałek tusk
- 07.07.14 12:14 XJL
- 07.07.14 12:49 firr
- 07.07.14 15:13 feldmarszałek tusk
- 07.07.14 15:20 feldmarszałek tusk
- 07.07.14 16:38 feldmarszałek tusk
- 07.07.14 16:58 Stregor
- 07.07.14 17:16 feldmarszałek tusk
- 07.07.14 17:55 R.e.m.e.K
- 07.07.14 20:41 feldmarszałek tusk
- 07.07.14 21:26 feldmarszałek tusk
- 07.07.14 22:07 firr
- 08.07.14 08:41 Stregor
- 08.07.14 09:23 firr
Najnowsze wątki z tej grupy
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
Najnowsze wątki
- 2025-12-12 Warszawa => Dynamics 365 Commerce/POS Developer <=
- 2025-12-12 Wrocław => React Developer with knowledge of C++ <=
- 2025-12-12 Białystok => Programista React ze znajomością C++ <=
- 2025-12-12 Warszawa => Microsoft Dynamics 365 Finance Consultant <=
- 2025-12-11 To już efekt Żurka czy coś jeszcze GORSZEGO?
- 2025-12-11 Policjanci w mieście Łodzi zmierzą ci prędkość z błędem mniejszym niż producent w laboratorium :-)
- 2025-12-11 Warszawa => Senior Java Developer <=
- 2025-12-11 Kolejny prezent
- 2025-12-10 hameryka
- 2025-12-10 Tak im zależy na wlasnym kraju. :-(
- 2025-12-10 Czy "hipoteka przymusowa" podpada (powinna podpadać) pod ochronę immunitetem poselskim? [Ziobro]
- 2025-12-10 Żurek po raz kolejny wykazał jaki poziom reprezentuje
- 2025-12-10 Gdańsk => Microsoft Dynamics AX/365 SCM Consultant - Service & Suppor
- 2025-12-10 Rzeszów => Konsultant ERP Microsoft Dynamics 365 Commerce <=
- 2025-12-10 Chrzanów => Spedytor Międzynarodowy (handel ładunkami/prowadzenie f




2035 rok coraz mniej realny? Europa traci tempo w wyścigu o elektromobilność