Skip to content

Commit a9cb38c

Browse files
committed
spec/simd.dd: Clarify whether a vector type or intrisinc requires AVX or AVX2 support
1 parent 10de19b commit a9cb38c

File tree

1 file changed

+35
-29
lines changed

1 file changed

+35
-29
lines changed

spec/simd.dd

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -167,17 +167,17 @@ $(H2 $(LNAME2 x86_64_vec, X86 And X86$(UNDERSCORE)64 Vector Extension Implementa
167167
$(TROW ulong2, 2 $(D ulong)s, $(D unsigned long __attribute__((vector_size(16)))))
168168
$(TROW float4, 4 $(D float)s, $(D float __attribute__((vector_size(16)))))
169169
$(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)))))
181181
)
182182

183183
$(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
187187
$(TROW =,$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
188188
$(TROW +,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
189189
$(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))
191191
$(TROW /,$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(Y),$(Y))
192192
$(TROW $(CODE_AMP),$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
193193
$(TROW |,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
194194
$(TROW $(D ^),$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
195195
$(TROW +=,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y))
196196
$(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))
198198
$(TROW /=,$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(N),$(Y),$(Y))
199199
$(TROW $(CODE_AMP)=,$(N),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(Y),$(N),$(N))
200200
$(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
207207
$(TABLE2 Supported 256-bit Vector Operators,
208208
$(THEAD Operator,void32,byte32,ubyte32,short16,ushort16,int8,uint8,long4,ulong4,float8,double4)
209209
$(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))
225225
$(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))
227227
)
228+
$(BR)
229+
$(AVX) Only supported on $(D D_AVX) targets
230+
$(BR)
231+
$(AVX2) Only supported on $(D D_AVX2) targets
228232

229233
$(P Operators not listed are not supported at all.)
230234

@@ -241,4 +245,6 @@ Macros:
241245
TITLE=Vector Extensions
242246
Y=$(TIMES)
243247
N=$(NDASH)
248+
AVX=$(DAGGER)
249+
AVX2=$(DAGGER_CAP)
244250
CORE_SIMD=$(LINK2 $(ROOT_DIR)phobos/core_simd.html, $(D core.simd))

0 commit comments

Comments
 (0)