-
X-Received: by 10.140.47.102 with SMTP id l93mr299741qga.5.1404565549245; Sat, 05 Jul
2014 06:05:49 -0700 (PDT)
X-Received: by 10.140.47.102 with SMTP id l93mr299741qga.5.1404565549245; Sat, 05 Jul
2014 06:05:49 -0700 (PDT)
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!uq10no1794021igb.0!news-out.
google.com!a8ni6411qaq.1!nntp.google.com!i13no6161905qae.1!postnews.google.com!
glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Sat, 5 Jul 2014 06:05:49 -0700 (PDT)
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=78.30.113.174;
posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
NNTP-Posting-Host: 78.30.113.174
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a...@g...com>
Subject: [asm] i dont (quite) get it
From: firr <p...@g...com>
Injection-Date: Sat, 05 Jul 2014 13:05:49 +0000
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:206186
[ ukryj 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
- 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
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-03 Trybik
- 2025-07-04 Renault Symbioz
- 2025-07-04 Architektura IIIRP: Wyjątkowa, a prymitywniejsza niż stodoła pod zaborami
- 2025-07-04 Warszawa => International Freight Forwarder <=
- 2025-07-04 Wrocław => SAP ABAP Developer <=
- 2025-07-04 Warszawa => Mid/Senior IT Recruiter <=
- 2025-07-04 Białystok => Kotlin Developer <=
- 2025-07-04 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2025-07-04 Warszawa => Specjalista wsparcia IT - analiza techniczna sprzętu IT <
- 2025-07-04 Zakrzewo => Konsultant SAP HCM <=
- 2025-07-04 Łódź => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-04 Szczecin => Key Account Manager IT <=
- 2025-07-04 Warszawa => Technik IT - Konfiguracja i Wsparcie Sprzętowe <=
- 2025-07-04 Warszawa => Technique IT - Hardware Configuration and Support <=
- 2025-07-04 Warszawa => Specjalista ds. Sprzętu IT i Wsparcia Technicznego <=