@@ -115,30 +115,70 @@ FUNCTION_NAME:
115
115
vbroadcasti32x4 zmm16 , [ rk_1 ] ;zmm16 has rk-1 and rk-2
116
116
sub arg3 , 256
117
117
118
+ %if fetch_dist != 0
119
+ ; check if there is at least 1.5KB (fetch distance) + 256B in the buffer
120
+ cmp arg3 , (fetch_dist + 256 )
121
+ jb _fold_256_B_loop
122
+
123
+ align 16
124
+ _fold_and_prefetch_256_B_loop:
125
+ add arg2 , 256
126
+ PREFETCH [ arg2 + fetch_dist + 0 ]
127
+ vmovdqu8 zmm3 , [ arg2 + 16 * 0 ]
128
+ vpshufb zmm3 , zmm3 , zmm18
129
+ vpclmulqdq zmm1 , zmm0 , zmm16 , 0x00
130
+ vpclmulqdq zmm0 , zmm0 , zmm16 , 0x11
131
+ vpternlogq zmm0 , zmm1 , zmm3 , 0x96
132
+
133
+ PREFETCH [ arg2 + fetch_dist + 64 ]
134
+ vmovdqu8 zmm9 , [ arg2 + 16 * 4 ]
135
+ vpshufb zmm9 , zmm9 , zmm18
136
+ vpclmulqdq zmm5 , zmm4 , zmm16 , 0x00
137
+ vpclmulqdq zmm4 , zmm4 , zmm16 , 0x11
138
+ vpternlogq zmm4 , zmm5 , zmm9 , 0x96
139
+
140
+ PREFETCH [ arg2 + fetch_dist + 64 * 2 ]
141
+ vmovdqu8 zmm11 , [ arg2 + 16 * 8 ]
142
+ vpshufb zmm11 , zmm11 , zmm18
143
+ vpclmulqdq zmm12 , zmm7 , zmm16 , 0x00
144
+ vpclmulqdq zmm7 , zmm7 , zmm16 , 0x11
145
+ vpternlogq zmm7 , zmm12 , zmm11 , 0x96
146
+
147
+ PREFETCH [ arg2 + fetch_dist + 64 * 3 ]
148
+ vmovdqu8 zmm17 , [ arg2 + 16 * 12 ]
149
+ vpshufb zmm17 , zmm17 , zmm18
150
+ vpclmulqdq zmm14 , zmm8 , zmm16 , 0x00
151
+ vpclmulqdq zmm8 , zmm8 , zmm16 , 0x11
152
+ vpternlogq zmm8 , zmm14 , zmm17 , 0x96
153
+
154
+ sub arg3 , 256
155
+
156
+ ; check if there is another 1.5KB (fetch distance) + 256B in the buffer
157
+ cmp arg3 , (fetch_dist + 256 )
158
+ jge _fold_and_prefetch_256_B_loop
159
+ %endif
160
+
161
+ align 16
118
162
_fold_256_B_loop:
119
163
add arg2 , 256
120
- PREFETCH [ arg2 + fetch_dist + 0 ]
121
164
vmovdqu8 zmm3 , [ arg2 + 16 * 0 ]
122
165
vpshufb zmm3 , zmm3 , zmm18
123
166
vpclmulqdq zmm1 , zmm0 , zmm16 , 0x00
124
167
vpclmulqdq zmm0 , zmm0 , zmm16 , 0x11
125
168
vpternlogq zmm0 , zmm1 , zmm3 , 0x96
126
169
127
- PREFETCH [ arg2 + fetch_dist + 64 ]
128
170
vmovdqu8 zmm9 , [ arg2 + 16 * 4 ]
129
171
vpshufb zmm9 , zmm9 , zmm18
130
172
vpclmulqdq zmm5 , zmm4 , zmm16 , 0x00
131
173
vpclmulqdq zmm4 , zmm4 , zmm16 , 0x11
132
174
vpternlogq zmm4 , zmm5 , zmm9 , 0x96
133
175
134
- PREFETCH [ arg2 + fetch_dist + 64 * 2 ]
135
176
vmovdqu8 zmm11 , [ arg2 + 16 * 8 ]
136
177
vpshufb zmm11 , zmm11 , zmm18
137
178
vpclmulqdq zmm12 , zmm7 , zmm16 , 0x00
138
179
vpclmulqdq zmm7 , zmm7 , zmm16 , 0x11
139
180
vpternlogq zmm7 , zmm12 , zmm11 , 0x96
140
181
141
- PREFETCH [ arg2 + fetch_dist + 64 * 3 ]
142
182
vmovdqu8 zmm17 , [ arg2 + 16 * 12 ]
143
183
vpshufb zmm17 , zmm17 , zmm18
144
184
vpclmulqdq zmm14 , zmm8 , zmm16 , 0x00
0 commit comments