Lines Matching +full:0 +full:- +full:32

1 // SPDX-License-Identifier: GPL-2.0-only
22 const u8 x0f = 0x0f; in raid6_2data_recov_avx2()
24 p = (u8 *)ptrs[disks-2]; in raid6_2data_recov_avx2()
25 q = (u8 *)ptrs[disks-1]; in raid6_2data_recov_avx2()
32 ptrs[disks-2] = dp; in raid6_2data_recov_avx2()
35 ptrs[disks-1] = dq; in raid6_2data_recov_avx2()
42 ptrs[disks-2] = p; in raid6_2data_recov_avx2()
43 ptrs[disks-1] = q; in raid6_2data_recov_avx2()
46 pbmul = raid6_vgfmul[raid6_gfexi[failb-faila]]; in raid6_2data_recov_avx2()
53 asm volatile("vpbroadcastb %0, %%ymm7" : : "m" (x0f)); in raid6_2data_recov_avx2()
57 asm volatile("vmovdqa %0, %%ymm1" : : "m" (q[0])); in raid6_2data_recov_avx2()
58 asm volatile("vmovdqa %0, %%ymm9" : : "m" (q[32])); in raid6_2data_recov_avx2()
59 asm volatile("vmovdqa %0, %%ymm0" : : "m" (p[0])); in raid6_2data_recov_avx2()
60 asm volatile("vmovdqa %0, %%ymm8" : : "m" (p[32])); in raid6_2data_recov_avx2()
61 asm volatile("vpxor %0, %%ymm1, %%ymm1" : : "m" (dq[0])); in raid6_2data_recov_avx2()
62 asm volatile("vpxor %0, %%ymm9, %%ymm9" : : "m" (dq[32])); in raid6_2data_recov_avx2()
63 asm volatile("vpxor %0, %%ymm0, %%ymm0" : : "m" (dp[0])); in raid6_2data_recov_avx2()
64 asm volatile("vpxor %0, %%ymm8, %%ymm8" : : "m" (dp[32])); in raid6_2data_recov_avx2()
67 * 1 = dq[0] ^ q[0] in raid6_2data_recov_avx2()
68 * 9 = dq[32] ^ q[32] in raid6_2data_recov_avx2()
69 * 0 = dp[0] ^ p[0] in raid6_2data_recov_avx2()
70 * 8 = dp[32] ^ p[32] in raid6_2data_recov_avx2()
73 asm volatile("vbroadcasti128 %0, %%ymm4" : : "m" (qmul[0])); in raid6_2data_recov_avx2()
74 asm volatile("vbroadcasti128 %0, %%ymm5" : : "m" (qmul[16])); in raid6_2data_recov_avx2()
90 * 5 = qx[0] in raid6_2data_recov_avx2()
91 * 15 = qx[32] in raid6_2data_recov_avx2()
94 asm volatile("vbroadcasti128 %0, %%ymm4" : : "m" (pbmul[0])); in raid6_2data_recov_avx2()
95 asm volatile("vbroadcasti128 %0, %%ymm1" : : "m" (pbmul[16])); in raid6_2data_recov_avx2()
110 * 1 = pbmul[px[0]] in raid6_2data_recov_avx2()
111 * 13 = pbmul[px[32]] in raid6_2data_recov_avx2()
118 * 13 = db[32] = DQ[32] in raid6_2data_recov_avx2()
120 asm volatile("vmovdqa %%ymm1, %0" : "=m" (dq[0])); in raid6_2data_recov_avx2()
121 asm volatile("vmovdqa %%ymm13,%0" : "=m" (dq[32])); in raid6_2data_recov_avx2()
125 asm volatile("vmovdqa %%ymm0, %0" : "=m" (dp[0])); in raid6_2data_recov_avx2()
126 asm volatile("vmovdqa %%ymm8, %0" : "=m" (dp[32])); in raid6_2data_recov_avx2()
128 bytes -= 64; in raid6_2data_recov_avx2()
134 asm volatile("vmovdqa %0, %%ymm1" : : "m" (*q)); in raid6_2data_recov_avx2()
135 asm volatile("vmovdqa %0, %%ymm0" : : "m" (*p)); in raid6_2data_recov_avx2()
136 asm volatile("vpxor %0, %%ymm1, %%ymm1" : : "m" (*dq)); in raid6_2data_recov_avx2()
137 asm volatile("vpxor %0, %%ymm0, %%ymm0" : : "m" (*dp)); in raid6_2data_recov_avx2()
139 /* 1 = dq ^ q; 0 = dp ^ p */ in raid6_2data_recov_avx2()
141 asm volatile("vbroadcasti128 %0, %%ymm4" : : "m" (qmul[0])); in raid6_2data_recov_avx2()
142 asm volatile("vbroadcasti128 %0, %%ymm5" : : "m" (qmul[16])); in raid6_2data_recov_avx2()
157 asm volatile("vbroadcasti128 %0, %%ymm4" : : "m" (pbmul[0])); in raid6_2data_recov_avx2()
158 asm volatile("vbroadcasti128 %0, %%ymm1" : : "m" (pbmul[16])); in raid6_2data_recov_avx2()
170 asm volatile("vmovdqa %%ymm1, %0" : "=m" (dq[0])); in raid6_2data_recov_avx2()
173 asm volatile("vmovdqa %%ymm0, %0" : "=m" (dp[0])); in raid6_2data_recov_avx2()
175 bytes -= 32; in raid6_2data_recov_avx2()
176 p += 32; in raid6_2data_recov_avx2()
177 q += 32; in raid6_2data_recov_avx2()
178 dp += 32; in raid6_2data_recov_avx2()
179 dq += 32; in raid6_2data_recov_avx2()
191 const u8 x0f = 0x0f; in raid6_datap_recov_avx2()
193 p = (u8 *)ptrs[disks-2]; in raid6_datap_recov_avx2()
194 q = (u8 *)ptrs[disks-1]; in raid6_datap_recov_avx2()
200 ptrs[disks-1] = dq; in raid6_datap_recov_avx2()
206 ptrs[disks-1] = q; in raid6_datap_recov_avx2()
213 asm volatile("vpbroadcastb %0, %%ymm7" : : "m" (x0f)); in raid6_datap_recov_avx2()
217 asm volatile("vmovdqa %0, %%ymm3" : : "m" (dq[0])); in raid6_datap_recov_avx2()
218 asm volatile("vmovdqa %0, %%ymm8" : : "m" (dq[32])); in raid6_datap_recov_avx2()
219 asm volatile("vpxor %0, %%ymm3, %%ymm3" : : "m" (q[0])); in raid6_datap_recov_avx2()
220 asm volatile("vpxor %0, %%ymm8, %%ymm8" : : "m" (q[32])); in raid6_datap_recov_avx2()
223 * 3 = q[0] ^ dq[0] in raid6_datap_recov_avx2()
224 * 8 = q[32] ^ dq[32] in raid6_datap_recov_avx2()
226 asm volatile("vbroadcasti128 %0, %%ymm0" : : "m" (qmul[0])); in raid6_datap_recov_avx2()
228 asm volatile("vbroadcasti128 %0, %%ymm1" : : "m" (qmul[16])); in raid6_datap_recov_avx2()
245 * 1 = qmul[q[0] ^ dq[0]] in raid6_datap_recov_avx2()
246 * 14 = qmul[q[32] ^ dq[32]] in raid6_datap_recov_avx2()
248 asm volatile("vmovdqa %0, %%ymm2" : : "m" (p[0])); in raid6_datap_recov_avx2()
249 asm volatile("vmovdqa %0, %%ymm12" : : "m" (p[32])); in raid6_datap_recov_avx2()
254 * 2 = p[0] ^ qmul[q[0] ^ dq[0]] in raid6_datap_recov_avx2()
255 * 12 = p[32] ^ qmul[q[32] ^ dq[32]] in raid6_datap_recov_avx2()
258 asm volatile("vmovdqa %%ymm1, %0" : "=m" (dq[0])); in raid6_datap_recov_avx2()
259 asm volatile("vmovdqa %%ymm14, %0" : "=m" (dq[32])); in raid6_datap_recov_avx2()
260 asm volatile("vmovdqa %%ymm2, %0" : "=m" (p[0])); in raid6_datap_recov_avx2()
261 asm volatile("vmovdqa %%ymm12,%0" : "=m" (p[32])); in raid6_datap_recov_avx2()
263 bytes -= 64; in raid6_datap_recov_avx2()
268 asm volatile("vmovdqa %0, %%ymm3" : : "m" (dq[0])); in raid6_datap_recov_avx2()
269 asm volatile("vpxor %0, %%ymm3, %%ymm3" : : "m" (q[0])); in raid6_datap_recov_avx2()
273 asm volatile("vbroadcasti128 %0, %%ymm0" : : "m" (qmul[0])); in raid6_datap_recov_avx2()
274 asm volatile("vbroadcasti128 %0, %%ymm1" : : "m" (qmul[16])); in raid6_datap_recov_avx2()
285 asm volatile("vmovdqa %0, %%ymm2" : : "m" (p[0])); in raid6_datap_recov_avx2()
290 asm volatile("vmovdqa %%ymm1, %0" : "=m" (dq[0])); in raid6_datap_recov_avx2()
291 asm volatile("vmovdqa %%ymm2, %0" : "=m" (p[0])); in raid6_datap_recov_avx2()
293 bytes -= 32; in raid6_datap_recov_avx2()
294 p += 32; in raid6_datap_recov_avx2()
295 q += 32; in raid6_datap_recov_avx2()
296 dq += 32; in raid6_datap_recov_avx2()