@@ -167,18 +167,21 @@ $(H2 $(LNAME2 x86_64_vec, X86 And X86$(UNDERSCORE)64 Vector Extension Implementa
167
167
$(TROW ulong2, 2 $(D ulong)s, $(D unsigned long __attribute__((vector_size(16)))))
168
168
$(TROW float4, 4 $(D float)s, $(D float __attribute__((vector_size(16)))))
169
169
$(TROW double2, 2 $(D double)s, $(D double __attribute__((vector_size(16)))))
170
- $(TROW void32, 32 bytes of untyped data, $(I no equivalent))
171
- $(TROW byte32, 32 $(D byte)s, $(D signed char __attribute__((vector_size(32)))))
172
- $(TROW ubyte32, 32 $(D ubyte)s, $(D unsigned char __attribute__((vector_size(32)))))
173
- $(TROW short16, 16 $(D short)s, $(D short __attribute__((vector_size(32)))))
174
- $(TROW ushort16, 16 $(D ushort)s, $(D ushort __attribute__((vector_size(32)))))
175
- $(TROW int8, 8 $(D int)s, $(D int __attribute__((vector_size(32)))))
176
- $(TROW uint8, 8 $(D uint)s, $(D unsigned __attribute__((vector_size(32)))))
177
- $(TROW long4, 4 $(D long)s, $(D long __attribute__((vector_size(32)))))
178
- $(TROW ulong4, 4 $(D ulong)s, $(D unsigned long __attribute__((vector_size(32)))))
179
- $(TROW float8, 8 $(D float)s, $(D float __attribute__((vector_size(32)))))
180
- $(TROW double4, 4 $(D double)s, $(D double __attribute__((vector_size(32)))))
170
+ $(TROW void32, 32 bytes of untyped data $(AVX) , $(I no equivalent))
171
+ $(TROW byte32, 32 $(D byte)s $(AVX) , $(D signed char __attribute__((vector_size(32)))))
172
+ $(TROW ubyte32, 32 $(D ubyte)s $(AVX) , $(D unsigned char __attribute__((vector_size(32)))))
173
+ $(TROW short16, 16 $(D short)s $(AVX) , $(D short __attribute__((vector_size(32)))))
174
+ $(TROW ushort16, 16 $(D ushort)s $(AVX) , $(D ushort __attribute__((vector_size(32)))))
175
+ $(TROW int8, 8 $(D int)s $(AVX) , $(D int __attribute__((vector_size(32)))))
176
+ $(TROW uint8, 8 $(D uint)s $(AVX) , $(D unsigned __attribute__((vector_size(32)))))
177
+ $(TROW long4, 4 $(D long)s $(AVX) , $(D long __attribute__((vector_size(32)))))
178
+ $(TROW ulong4, 4 $(D ulong)s $(AVX) , $(D unsigned long __attribute__((vector_size(32)))))
179
+ $(TROW float8, 8 $(D float)s $(AVX) , $(D float __attribute__((vector_size(32)))))
180
+ $(TROW double4, 4 $(D double)s $(AVX) , $(D double __attribute__((vector_size(32)))))
181
181
)
182
+ $(BR)
183
+ $(AVX) Only supported on $(D D_AVX) targets
184
+ $(BR)$(BR)
182
185
183
186
$(P Note: for 32 bit gcc, it's $(D long long) instead of $(D long).)
184
187
@@ -187,14 +190,14 @@ $(H2 $(LNAME2 x86_64_vec, X86 And X86$(UNDERSCORE)64 Vector Extension Implementa
187
190
$(TROW =,$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
188
191
$(TROW +,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
189
192
$(TROW -,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
190
- $(TROW *,$(N),$(N),$(N),$(Y),$(Y),$(N ),$(N ),$(N),$(N),$(Y),$(Y))
193
+ $(TROW *,$(N),$(N),$(N),$(Y),$(Y),$(AVX ),$(AVX ),$(N),$(N),$(Y),$(Y))
191
194
$(TROW /,$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(Y),$(Y))
192
195
$(TROW $(CODE_AMP),$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
193
196
$(TROW |,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
194
197
$(TROW $(D ^),$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
195
198
$(TROW +=,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
196
199
$(TROW -=,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
197
- $(TROW *=,$(N),$(N),$(N),$(Y),$(Y),$(N ),$(N ),$(N),$(N),$(Y),$(Y))
200
+ $(TROW *=,$(N),$(N),$(N),$(Y),$(Y),$(AVX ),$(AVX ),$(N),$(N),$(Y),$(Y))
198
201
$(TROW /=,$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(Y),$(Y))
199
202
$(TROW $(CODE_AMP)=,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
200
203
$(TROW |=,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
@@ -203,28 +206,34 @@ $(H2 $(LNAME2 x86_64_vec, X86 And X86$(UNDERSCORE)64 Vector Extension Implementa
203
206
$(TROW $(I unary)+,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
204
207
$(TROW $(I unary)-,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
205
208
)
209
+ $(BR)
210
+ $(AVX) Only supported on $(D D_AVX) targets
211
+ $(BR)$(BR)
206
212
207
213
$(TABLE2 Supported 256-bit Vector Operators,
208
214
$(THEAD Operator,void32,byte32,ubyte32,short16,ushort16,int8,uint8,long4,ulong4,float8,double4)
209
215
$(TROW =,$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
210
- $(TROW +,$(N),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ))
211
- $(TROW -,$(N),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ))
212
- $(TROW *,$(N),$(N),$(N),$(N ),$(N ),$(N ),$(N ),$(N),$(N),$(Y),$(Y))
216
+ $(TROW +,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ))
217
+ $(TROW -,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ))
218
+ $(TROW *,$(N),$(N),$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N),$(Y),$(Y))
213
219
$(TROW /,$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(Y),$(Y))
214
- $(TROW $(CODE_AMP),$(N),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(N),$(N))
215
- $(TROW |,$(N),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(N),$(N))
216
- $(TROW $(D ^),$(N),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(N),$(N))
217
- $(TROW +=,$(N),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ))
218
- $(TROW -=,$(N),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ))
219
- $(TROW *=,$(N),$(N),$(N),$(N ),$(N ),$(N ),$(N ),$(N),$(N),$(Y),$(Y))
220
+ $(TROW $(CODE_AMP),$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
221
+ $(TROW |,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
222
+ $(TROW $(D ^),$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
223
+ $(TROW +=,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ))
224
+ $(TROW -=,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ))
225
+ $(TROW *=,$(N),$(N),$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N),$(Y),$(Y))
220
226
$(TROW /=,$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(Y),$(Y))
221
- $(TROW $(CODE_AMP)=,$(N),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(N),$(N))
222
- $(TROW |=,$(N),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(N),$(N))
223
- $(TROW $(D ^=),$(N),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(N),$(N))
224
- $(TROW $(I unary)$(D ~),$(N),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(N),$(N))
227
+ $(TROW $(CODE_AMP)=,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
228
+ $(TROW |=,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
229
+ $(TROW $(D ^=),$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
230
+ $(TROW $(I unary)$(D ~),$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
225
231
$(TROW $(I unary)+,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
226
- $(TROW $(I unary)-,$(N),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y ),$(Y),$(Y))
232
+ $(TROW $(I unary)-,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(Y),$(Y))
227
233
)
234
+ $(BR)
235
+ $(AVX2) Only supported on $(D D_AVX2) targets
236
+ $(BR)$(BR)
228
237
229
238
$(P Operators not listed are not supported at all.)
230
239
@@ -241,4 +250,6 @@ Macros:
241
250
TITLE=Vector Extensions
242
251
Y=$(TIMES)
243
252
N=$(NDASH)
253
+ AVX=$(DAGGER)
254
+ AVX2=$(DAGGER)
244
255
CORE_SIMD=$(LINK2 $(ROOT_DIR)phobos/core_simd.html, $(D core.simd))
0 commit comments