1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
#define CP_4_BY_8(base_i, base_j, tmp) \
do \
{ \
for (tmp = 0; tmp < 4; tmp++) \
{ \
t0 = A[base_i + tmp][base_j + 0]; \
t1 = A[base_i + tmp][base_j + 1]; \
t2 = A[base_i + tmp][base_j + 2]; \
t3 = A[base_i + tmp][base_j + 3]; \
t4 = A[base_i + tmp][base_j + 4]; \
t5 = A[base_i + tmp][base_j + 5]; \
t6 = A[base_i + tmp][base_j + 6]; \
t7 = A[base_i + tmp][base_j + 7]; \
B[base_i + tmp][base_j + 0] = t0; \
B[base_i + tmp][base_j + 1] = t1; \
B[base_i + tmp][base_j + 2] = t2; \
B[base_i + tmp][base_j + 3] = t3; \
B[base_i + tmp][base_j + 4] = t4; \
B[base_i + tmp][base_j + 5] = t5; \
B[base_i + tmp][base_j + 6] = t6; \
B[base_i + tmp][base_j + 7] = t7; \
} \
} while (0)
#define SWAP(x, y, tmp) \
do \
{ \
tmp = x; x = y; y = tmp; \
} while (0)
#define B_SMALL_TRANSPOSE(base_i, base_j, tmp) \
do \
{ \
SWAP(B[base_i + 0][base_j + 1], B[base_i + 1][base_j + 0], tmp); \
SWAP(B[base_i + 0][base_j + 2], B[base_i + 2][base_j + 0], tmp); \
SWAP(B[base_i + 0][base_j + 3], B[base_i + 3][base_j + 0], tmp); \
\
SWAP(B[base_i + 1][base_j + 2], B[base_i + 2][base_j + 1], tmp); \
SWAP(B[base_i + 1][base_j + 3], B[base_i + 3][base_j + 1], tmp); \
\
SWAP(B[base_i + 2][base_j + 3], B[base_i + 3][base_j + 2], tmp); \
} while (0)
#define B_SWAP_4_BY_4(i1, j1, i2, j2, tmp) \
do \
{ \
for (tmp = 0; tmp < 4; tmp++) \
{ \
t0 = B[i1 + tmp][j1 + 0]; \
t1 = B[i1 + tmp][j1 + 1]; \
t2 = B[i1 + tmp][j1 + 2]; \
t3 = B[i1 + tmp][j1 + 3]; \
\
t4 = B[i2 + tmp][j2 + 0]; \
t5 = B[i2 + tmp][j2 + 1]; \
t6 = B[i2 + tmp][j2 + 2]; \
t7 = B[i2 + tmp][j2 + 3]; \
\
B[i2 + tmp][j2 + 0] = t0; \
B[i2 + tmp][j2 + 1] = t1; \
B[i2 + tmp][j2 + 2] = t2; \
B[i2 + tmp][j2 + 3] = t3; \
\
B[i1 + tmp][j1 + 0] = t4; \
B[i1 + tmp][j1 + 1] = t5; \
B[i1 + tmp][j1 + 2] = t6; \
B[i1 + tmp][j1 + 3] = t7; \
} \
} while (0)
|