OSDN Git Service

[WIP][Agar] Build fit to CSP.
[csp-qt/common_source_project-fm7.git] / source / src / vm / fm7 / vram / sse2 / api_vramvec.c
1 /*\r
2  * api_vramvec.cpp\r
3  * Convert VRAM -> VirtualVram(Vector Version)\r
4  * (C) 2012 K.Ohta <whatisthis.sowhat@gmail.com>\r
5  */\r
6 \r
7 \r
8 #include "api_vram.h"\r
9 #include "api_vram.h"\r
10 \r
11 /*\r
12 * Definition of Convertsion Tables.\r
13 */\r
14 // Reduce Tables 20120131\r
15 \r
16 extern v8si *aPlanes;\r
17 \r
18 \r
19 v8hi_t lshift_6bit8v_SSE2(v8hi_t v)\r
20 {\r
21    v8hi_t r;\r
22    register v8hi_t cbuf;\r
23    register v8hi_t mask;\r
24    v8hi_t ret;\r
25    mask.v = (v8si){0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8};\r
26  \r
27    cbuf.v =\r
28         aPlanes[B2 + v.b[0]] |\r
29         aPlanes[B3 + v.b[1]] |\r
30         aPlanes[R0 + v.b[2]] |\r
31         aPlanes[R1 + v.b[3]] |\r
32         aPlanes[R2 + v.b[4]] |\r
33         aPlanes[R3 + v.b[5]];\r
34    \r
35    mask.v = mask.v & cbuf.v;\r
36 #if ((__GNUC__ == 4) && (__GCC_MINOR__ >= 7)) || (__GNUC__ > 4) //GCC 4.7 or later.\r
37    r.v = mask.v != (v8si){0, 0, 0, 0, 0, 0, 0, 0};\r
38    r.v = r.v & (v8si) {0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03};\r
39    cbuf.v = cbuf.v |  r.v;\r
40 #else\r
41    if(mask.s[0] != 0) cbuf.s[0] |= 0x03;\r
42    if(mask.s[1] != 0) cbuf.s[1] |= 0x03;\r
43    if(mask.s[2] != 0) cbuf.s[2] |= 0x03;\r
44    if(mask.s[3] != 0) cbuf.s[3] |= 0x03;\r
45    if(mask.s[4] != 0) cbuf.s[4] |= 0x03;\r
46    if(mask.s[5] != 0) cbuf.s[5] |= 0x03;\r
47    if(mask.s[6] != 0) cbuf.s[6] |= 0x03;\r
48    if(mask.s[7] != 0) cbuf.s[7] |= 0x03;\r
49 #endif  \r
50 //   ret = cbuf;\r
51    return cbuf;\r
52 }\r
53 \r
54 \r
55 \r
56 \r