@@ -167,17 +167,17 @@ $(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
182
183
183
$(P Note: for 32 bit gcc, it's $(D long long) instead of $(D long).)
@@ -187,14 +187,14 @@ $(H2 $(LNAME2 x86_64_vec, X86 And X86$(UNDERSCORE)64 Vector Extension Implementa
187
187
$(TROW =,$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
188
188
$(TROW +,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
189
189
$(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))
190
+ $(TROW *,$(N),$(N),$(N),$(Y),$(Y),$(AVX ),$(AVX ),$(N),$(N),$(Y),$(Y))
191
191
$(TROW /,$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(Y),$(Y))
192
192
$(TROW $(CODE_AMP),$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
193
193
$(TROW |,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
194
194
$(TROW $(D ^),$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
195
195
$(TROW +=,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
196
196
$(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))
197
+ $(TROW *=,$(N),$(N),$(N),$(Y),$(Y),$(AVX ),$(AVX ),$(N),$(N),$(Y),$(Y))
198
198
$(TROW /=,$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(Y),$(Y))
199
199
$(TROW $(CODE_AMP)=,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
200
200
$(TROW |=,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
@@ -207,24 +207,28 @@ $(H2 $(LNAME2 x86_64_vec, X86 And X86$(UNDERSCORE)64 Vector Extension Implementa
207
207
$(TABLE2 Supported 256-bit Vector Operators,
208
208
$(THEAD Operator,void32,byte32,ubyte32,short16,ushort16,int8,uint8,long4,ulong4,float8,double4)
209
209
$(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 ))
213
- $(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 /=,$(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))
210
+ $(TROW +,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ))
211
+ $(TROW -,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ))
212
+ $(TROW *,$(N),$(N),$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N),$(AVX ),$(AVX ))
213
+ $(TROW /,$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(AVX ),$(AVX ))
214
+ $(TROW $(CODE_AMP),$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
215
+ $(TROW |,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
216
+ $(TROW $(D ^),$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
217
+ $(TROW +=,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ))
218
+ $(TROW -=,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ))
219
+ $(TROW *=,$(N),$(N),$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N),$(AVX ),$(AVX ))
220
+ $(TROW /=,$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(AVX ),$(AVX ))
221
+ $(TROW $(CODE_AMP)=,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
222
+ $(TROW |=,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
223
+ $(TROW $(D ^=),$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
224
+ $(TROW $(I unary)$(D ~),$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(N),$(N))
225
225
$(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 ))
226
+ $(TROW $(I unary)-,$(N),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX2 ),$(AVX ),$(AVX ))
227
227
)
228
+ $(BR)
229
+ $(AVX) Only supported on $(D D_AVX) targets
230
+ $(BR)
231
+ $(AVX2) Only supported on $(D D_AVX2) targets
228
232
229
233
$(P Operators not listed are not supported at all.)
230
234
@@ -241,4 +245,6 @@ Macros:
241
245
TITLE=Vector Extensions
242
246
Y=$(TIMES)
243
247
N=$(NDASH)
248
+ AVX=$(DAGGER)
249
+ AVX2=$(DAGGER_CAP)
244
250
CORE_SIMD=$(LINK2 $(ROOT_DIR)phobos/core_simd.html, $(D core.simd))
0 commit comments