Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- typedef struct vector
- {
- float s1, s2, s3, s4;
- } vector;
- int main()
- {
- vector a, b, c, d, result1, result2, resultCheck;
- // zmienic wartosci!!!
- // TODO!!
- a.s1 = 11;
- a.s2 = 12;
- a.s3 = 13;
- a.s4 = 14;
- b.s1 = 1;
- b.s2 = 2;
- b.s3 = 3;
- b.s4 = 4;
- c.s1 = 17;
- c.s2 = -8;
- c.s3 = -11;
- c.s4 = -2.4;
- d.s1 = 6.6;
- d.s2 = -1;
- d.s3 = 0;
- d.s4 = 0;
- // do sprawdzania
- // asm(
- // "movups %1, %%xmm0\n\t"
- // "movups %2, %%xmm1\n\t"
- // "shufps $0x21, %%xmm0, %%xmm0\n\t"
- // "movups %%xmm0, %0\n"
- // : "=g"(resultCheck) //%0
- // : "g"(a), "g"(b), "g"(c), "g"(d), "g"(d)
- // : //%1 %2 %3 %4 %5
- // );
- // printf("Wektor %f %f %f %f",resultCheck.s1, resultCheck.s2, resultCheck.s3, resultCheck.s4);
- asm(
- // wektor A i B
- // 1 Nawias lewe mnozenie
- "movups %1, %%xmm0\n\t"
- "movups %2, %%xmm1\n\t"
- // 00 01 10 11
- "shufps $0x21, %%xmm0, %%xmm0\n\t"
- // 01 00 11 10
- "shufps $0x4E, %%xmm1, %%xmm1\n\t"
- "mulps %%xmm1, %%xmm0\n\t"
- "movaps %%xmm0, %%xmm4\n\t" //wynik do [4]
- // ----
- // 1 Nawias prawe mnozenie
- "movups %1, %%xmm0\n\t"
- "movups %2, %%xmm1\n\t"
- // 01 00 11 10
- "shufps $0x4E, %%xmm0, %%xmm0\n\t"
- // 00 01 10 11
- "shufps $0x21, %%xmm1, %%xmm1\n\t"
- "mulps %%xmm1, %%xmm0\n\t"
- // Odejmowanie Lewe - Prawe
- "subps %%xmm0, %%xmm4\n\t" // xmm4 - xmm0, wynik do [4]
- // wektor C i D
- // 1 Nawias lewe mnozenie
- "movups %3, %%xmm0\n\t"
- "movups %4, %%xmm1\n\t"
- // 10 01 01 00
- "shufps $0x94, %%xmm0, %%xmm0\n\t"
- // 11 11 10 11
- "shufps $0xFB, %%xmm1, %%xmm1\n\t"
- "mulps %%xmm1, %%xmm0\n\t"
- "movaps %%xmm0, %%xmm3\n\t" //wynik do [3]
- // 1 Nawias prawe mnozenie
- "movups %3, %%xmm0\n\t"
- "movups %4, %%xmm1\n\t"
- // 11 11 10 11
- "shufps $0xFB, %%xmm0, %%xmm0\n\t"
- // 10 01 01 00
- "shufps $0x94, %%xmm1, %%xmm1\n\t"
- "mulps %%xmm1, %%xmm0\n\t"
- // Odejmowanie Lewe -
- "subps %%xmm0, %%xmm3" // xmm4 - xmm0, wynik do [4]
- "movups %%xmm0, %0\n"
- : "=g"(resultCheck) //%0
- : "g"(a), "g"(b), "g"(c), "g"(d), "g"(d)
- : //%1 %2 %3 %4 %5
- );
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement