2 types derived from Avx
System.Private.CoreLib (2)
src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Avx2.cs (1)
12
public abstract class Avx2 :
Avx
src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Fma.cs (1)
11
public abstract class Fma :
Avx
212 references to Avx
Microsoft.ML.CpuMath (177)
AvxIntrinsics.cs (131)
73
=>
Avx
.ExtractVector128(x, 1);
80
Vector256<int> idx256 =
Avx
.LoadVector256(idx);
113
Vector256<float> partialSum =
Avx
.HorizontalAdd(vector, vector);
114
return
Avx
.HorizontalAdd(partialSum, partialSum);
121
Vector256<float> x1 =
Avx
.Shuffle(vector, vector, 0xB1);
125
Vector256<float> partialMax =
Avx
.Max(vector, x1);
128
x1 =
Avx
.Shuffle(partialMax, partialMax, 0x02);
133
return
Avx
.Max(partialMax, x1);
140
Vector256<float> xSign =
Avx
.And(xDst1, signMask); // result = 0x8000 0000 if xDst1 is negative or 0x0000 0000 otherwise
141
Vector256<float> xDst1Abs =
Avx
.Xor(xDst1, xSign);
142
Vector256<float> xCond =
Avx
.Compare(xDst1Abs, xThreshold, FloatComparisonMode.OrderedGreaterThanNonSignaling); // result = 0xFFFF FFFF if true
143
Vector256<float> x2 =
Avx
.Xor(xSign, xThreshold); // -xThreshold if xDst1 is negative and +xThreshold otherwise
144
return
Avx
.And(
Avx
.Subtract(xDst1, x2), xCond);
152
return Fma.MultiplyAdd(
Avx
.LoadVector256(psrc1), src2, src3);
156
Vector256<float> product =
Avx
.Multiply(src2,
Avx
.LoadVector256(psrc1));
157
return
Avx
.Add(product, src3);
170
Vector256<float> product =
Avx
.Multiply(src1, src2);
171
return
Avx
.Add(product, src3);
215
Vector256<float> x01 =
Avx
.LoadVector256(pMatTemp);
216
Vector256<float> x11 =
Avx
.LoadVector256(pMatTemp += ccol);
217
Vector256<float> x21 =
Avx
.LoadVector256(pMatTemp += ccol);
218
Vector256<float> x31 =
Avx
.LoadVector256(pMatTemp += ccol);
219
Vector256<float> x02 =
Avx
.LoadVector256(pSrcCurrent);
231
res0 =
Avx
.HorizontalAdd(res0, res1);
232
res2 =
Avx
.HorizontalAdd(res2, res3);
233
res0 =
Avx
.HorizontalAdd(res0, res2);
286
x2 =
Avx
.Multiply(x2, x1);
287
result =
Avx
.Add(result, x2);
292
Avx
.StoreAligned(pDstCurrent, result);
345
Vector256<float> x02 =
Avx
.LoadVector256(pMatTemp);
346
Vector256<float> x12 =
Avx
.LoadVector256(pMatTemp += crow);
347
Vector256<float> x22 =
Avx
.LoadVector256(pMatTemp += crow);
348
Vector256<float> x32 =
Avx
.LoadVector256(pMatTemp += crow);
350
x02 =
Avx
.Multiply(x01, x02);
353
x22 =
Avx
.Multiply(x21, x22);
356
x02 =
Avx
.Add(x02, x22);
357
Avx
.StoreAligned(pDstCurrent, x02);
393
Vector256<float> x02 =
Avx
.LoadVector256(pMatTemp);
394
Vector256<float> x12 =
Avx
.LoadVector256(pMatTemp += crow);
395
Vector256<float> x22 =
Avx
.LoadVector256(pMatTemp += crow);
396
Vector256<float> x32 =
Avx
.LoadVector256(pMatTemp += crow);
397
Vector256<float> x3 =
Avx
.LoadVector256(pDstCurrent);
399
x02 =
Avx
.Multiply(x01, x02);
402
x22 =
Avx
.Multiply(x21, x22);
405
x02 =
Avx
.Add(x02, x22);
406
x3 =
Avx
.Add(x02, x3);
407
Avx
.StoreAligned(pDstCurrent, x3);
432
Vector256<float> dstVector =
Avx
.LoadVector256(pDstCurrent);
433
dstVector =
Avx
.Add(dstVector, scalarVector256);
434
Avx
.Store(pDstCurrent, dstVector);
482
Vector256<float> temp =
Avx
.LoadVector256(pDstCurrent);
483
temp =
Avx
.Multiply(scaleVector256, temp);
484
Avx
.Store(pDstCurrent, temp);
497
Vector256<float> result =
Avx
.LoadVector256(pDstCurrent);
499
Vector256<float> leadingMask =
Avx
.LoadVector256(((float*)(pLeadingAlignmentMask)) + (misalignment * 8));
500
Vector256<float> trailingMask =
Avx
.LoadVector256(((float*)(pTrailingAlignmentMask)) + ((8 - misalignment) * 8));
502
Vector256<float> temp =
Avx
.And(result, trailingMask);
503
result =
Avx
.Multiply(scaleVector256, result);
506
result =
Avx
.And(result, leadingMask);
507
result =
Avx
.Or(result, temp);
509
Avx
.Store(pDstCurrent, result);
530
Vector256<float> temp =
Avx
.LoadVector256(pDstCurrent);
531
temp =
Avx
.Multiply(scaleVector256, temp);
532
Avx
.Store(pDstCurrent, temp);
551
Vector256<float> result =
Avx
.LoadVector256(pDstCurrent);
553
Vector256<float> trailingMask =
Avx
.LoadVector256(((float*)(pTrailingAlignmentMask)) + (remainder * 8));
554
Vector256<float> leadingMask =
Avx
.LoadVector256(((float*)(pLeadingAlignmentMask)) + ((8 - remainder) * 8));
556
Vector256<float> temp =
Avx
.And(result, leadingMask);
557
result =
Avx
.Multiply(scaleVector256, result);
560
result =
Avx
.And(result, trailingMask);
561
result =
Avx
.Or(result, temp);
563
Avx
.Store(pDstCurrent, result);
584
Vector256<float> srcVector =
Avx
.LoadVector256(pSrcCurrent);
585
srcVector =
Avx
.Multiply(srcVector, scaleVector256);
586
Avx
.Store(pDstCurrent, srcVector);
630
Vector256<float> dstVector =
Avx
.LoadVector256(pDstCurrent);
631
dstVector =
Avx
.Add(dstVector, b256);
632
dstVector =
Avx
.Multiply(dstVector, a256);
633
Avx
.Store(pDstCurrent, dstVector);
678
Vector256<float> dstVector =
Avx
.LoadVector256(pDstCurrent);
681
Avx
.Store(pDstCurrent, dstVector);
735
Vector256<float> dstVector =
Avx
.LoadVector256(pDstCurrent);
737
Avx
.Store(pResCurrent, dstVector);
838
Vector256<float> srcVector =
Avx
.LoadVector256(pSrcCurrent);
839
Vector256<float> dstVector =
Avx
.LoadVector256(pDstCurrent);
841
Vector256<float> result =
Avx
.Add(srcVector, dstVector);
842
Avx
.Store(pDstCurrent, result);
891
Vector256<float> srcVector =
Avx
.LoadVector256(pSrcCurrent);
893
dstVector =
Avx
.Add(dstVector, srcVector);
938
Vector256<float> src1Vector =
Avx
.LoadVector256(pSrc1Current);
939
Vector256<float> src2Vector =
Avx
.LoadVector256(pSrc2Current);
940
src2Vector =
Avx
.Multiply(src1Vector, src2Vector);
941
Avx
.Store(pDstCurrent, src2Vector);
996
result =
Avx
.Add(result,
Avx
.LoadVector256(pValues));
1009
Vector256<float> mask =
Avx
.LoadVector256(((float*)(pLeadingAlignmentMask)) + (misalignment * 8));
1010
Vector256<float> temp =
Avx
.And(mask,
Avx
.LoadVector256(pValues));
1011
result =
Avx
.Add(result, temp);
1032
result =
Avx
.Add(result,
Avx
.LoadVector256(pValues));
1051
Vector256<float> mask =
Avx
.LoadVector256(((float*)(pTrailingAlignmentMask)) + (remainder * 8));
1052
Vector256<float> temp =
Avx
.And(mask,
Avx
.LoadVector256(pValues));
1053
result =
Avx
.Add(result, temp);
1073
Vector256<float> srcVector =
Avx
.LoadVector256(pSrcCurrent);
1118
Vector256<float> srcVector =
Avx
.LoadVector256(pSrcCurrent);
1119
srcVector =
Avx
.Subtract(srcVector, meanVector256);
1165
Vector256<float> srcVector =
Avx
.LoadVector256(pSrcCurrent);
1166
result256 =
Avx
.Add(result256,
Avx
.And(srcVector, _absMask256));
1210
Vector256<float> srcVector =
Avx
.LoadVector256(pSrcCurrent);
1211
srcVector =
Avx
.Subtract(srcVector, meanVector256);
1212
result256 =
Avx
.Add(result256,
Avx
.And(srcVector, _absMask256));
1258
Vector256<float> srcVector =
Avx
.LoadVector256(pSrcCurrent);
1259
result256 =
Avx
.Max(result256,
Avx
.And(srcVector, _absMask256));
1303
Vector256<float> srcVector =
Avx
.LoadVector256(pSrcCurrent);
1304
srcVector =
Avx
.Subtract(srcVector, meanVector256);
1305
result256 =
Avx
.Max(result256,
Avx
.And(srcVector, _absMask256));
1355
Vector256<float> dstVector =
Avx
.LoadVector256(pDstCurrent);
1466
Vector256<float> distanceVector =
Avx
.Subtract(
Avx
.LoadVector256(pSrcCurrent),
1467
Avx
.LoadVector256(pDstCurrent));
1521
Vector256<float> xDst1 =
Avx
.LoadVector256(pDst1Current);
1525
Avx
.Store(pDst1Current, xDst1);
1526
Avx
.Store(pDst2Current, xDst2);
CpuMathUtils.netcoreapp.cs (13)
29
=>
Avx
.IsSupported ? Vector256Alignment : (Sse.IsSupported ? Vector128Alignment : FloatAlignment);
44
if (
Avx
.IsSupported)
131
if (
Avx
.IsSupported)
178
else if (
Avx
.IsSupported)
215
else if (
Avx
.IsSupported)
251
else if (
Avx
.IsSupported)
281
else if (
Avx
.IsSupported)
311
else if (
Avx
.IsSupported)
344
else if (
Avx
.IsSupported)
378
else if (
Avx
.IsSupported)
417
else if (
Avx
.IsSupported)
548
else if (
Avx
.IsSupported)
591
else if (
Avx
.IsSupported)
FactorizationMachine\AvxIntrinsics.cs (31)
26
Vector256<float> product =
Avx
.Multiply(src1, src2);
27
return
Avx
.Add(product, src3);
40
Vector256<float> product =
Avx
.Multiply(src1, src2);
41
return
Avx
.Subtract(src3, product);
52
Contracts.Assert(
Avx
.IsSupported);
78
Vector256<float> x =
Avx
.BroadcastScalarToVector256(px + i);
79
Vector256<float> xx =
Avx
.Multiply(x, x);
89
Vector256<float> vjfBuffer =
Avx
.LoadVector256(vjf + k);
90
tmp = MultiplyAddNegated(
Avx
.Multiply(vjfBuffer, vjfBuffer), xx, tmp);
103
Vector256<float> vjfprimeBuffer =
Avx
.LoadVector256(vjfprime + k);
104
Vector256<float> q =
Avx
.LoadVector256(qffprime + k);
106
Avx
.Store(qffprime + k, q);
117
Vector256<float> qffBuffer =
Avx
.LoadVector256(qff + k);
132
Vector256<float> qffprimeBuffer =
Avx
.LoadVector256(qffprime + k);
133
Vector256<float> qfprimefBuffer =
Avx
.LoadVector256(qfprimef + k);
140
tmp =
Avx
.Add(y,
Avx
.Permute2x128(y, y, 1));
141
tmp =
Avx
.HorizontalAdd(tmp, tmp);
142
y =
Avx
.HorizontalAdd(tmp, tmp);
153
Contracts.Assert(
Avx
.IsSupported);
187
Vector256<float> x =
Avx
.BroadcastScalarToVector256(px + i);
194
Vector256<float> sx =
Avx
.Multiply(s, x);
198
Vector256<float> v =
Avx
.LoadVector256(vjfprime + k);
199
Vector256<float> q =
Avx
.LoadVector256(qfprimef + k);
202
Vector256<float> gLatent =
Avx
.Multiply(lambdav, v);
210
gLatent =
Avx
.Multiply(wei, gLatent);
213
Vector256<float> h = MultiplyAdd(gLatent, gLatent,
Avx
.LoadVector256(hvjfprime + k));
216
v = MultiplyAddNegated(lr,
Avx
.Multiply(
Avx
.ReciprocalSqrt(h), gLatent), v);
217
Avx
.Store(vjfprime + k, v);
218
Avx
.Store(hvjfprime + k, h);
FactorizationMachine\FactorizationMachineInterface.netcoreapp.cs (2)
33
if (
Avx
.IsSupported)
65
if (
Avx
.IsSupported)
System.Numerics.Tensors (4)
System\Numerics\Tensors\netcore\TensorPrimitives.Reciprocal.cs (4)
162
if (
Avx
.IsSupported)
164
if (typeof(T) == typeof(float)) return
Avx
.Reciprocal(x.AsSingle()).As<float, T>();
228
if (
Avx
.IsSupported)
230
if (typeof(T) == typeof(float)) return
Avx
.ReciprocalSqrt(x.AsSingle()).As<float, T>();
System.Private.CoreLib (30)
src\libraries\System.Private.CoreLib\src\System\Buffers\Text\Base64Helper\Base64DecoderHelper.cs (2)
810
Avx
.Store(dest, str.AsByte());
1361
str =
Avx
.LoadVector256(src).AsSByte();
src\libraries\System.Private.CoreLib\src\System\Buffers\Text\Base64Helper\Base64EncoderHelper.cs (3)
264
Vector256<sbyte> str =
Avx
.LoadVector256(src).AsSByte();
378
str =
Avx
.LoadVector256(src).AsSByte();
743
Avx
.Store(dest, str.AsByte());
src\libraries\System.Private.CoreLib\src\System\Buffers\Text\Base64Url\Base64UrlDecoder.cs (2)
693
Vector256<ushort> utf16VectorLower =
Avx
.LoadVector256(src);
694
Vector256<ushort> utf16VectorUpper =
Avx
.LoadVector256(src + 16);
src\libraries\System.Private.CoreLib\src\System\Collections\BitArray.cs (1)
783
Avx
.Store((byte*)destination + i, normalized);
src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\Vector256.cs (9)
435
Vector256<double> result =
Avx
.Subtract(upperBits.AsDouble(), Create(0x45300000_80100000).AsDouble()); // Compute in double precision: (upper - (2^84 + 2^63 + 2^52)) + lower
436
return
Avx
.Add(result, lowerBits.AsDouble());
468
Vector256<double> result =
Avx
.Subtract(upperBits.AsDouble(), Create(0x45300000_00100000UL).AsDouble()); // Compute in double precision: (upper - (2^84 + 2^52)) + lower
469
return
Avx
.Add(result, lowerBits.AsDouble());
563
Vector256<float> lower =
Avx
.ConvertToVector256Single(lowerBits);
564
Vector256<float> upper =
Avx
.ConvertToVector256Single(upperBits);
579
Vector256<float> result =
Avx
.Multiply(upper, Create(65536.0f));
580
return
Avx
.Add(result, lower);
1253
if (
Avx
.IsSupported)
src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\VectorMath.cs (4)
2606
if (
Avx
.IsSupported)
2608
result = (TVectorSingle)(object)
Avx
.ConvertToVector128Single((Vector256<double>)(object)vector);
2923
if (
Avx
.IsSupported)
2925
result = (TVectorDouble)(object)
Avx
.ConvertToVector256Double((Vector128<float>)(object)vector);
src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Avx2.cs (1)
23
public new abstract class X64 :
Avx
.X64
src\libraries\System.Private.CoreLib\src\System\Runtime\Intrinsics\X86\Fma.cs (1)
22
public new abstract class X64 :
Avx
.X64
src\libraries\System.Private.CoreLib\src\System\Text\Ascii.cs (1)
116
if (
Avx
.IsSupported)
src\libraries\System.Private.CoreLib\src\System\Text\Ascii.Equality.cs (4)
95
else if (
Avx
.IsSupported && length >= (uint)Vector256<TLeft>.Count)
306
else if (
Avx
.IsSupported && length >= (uint)Vector256<TRight>.Count)
479
[CompExactlyDependsOn(typeof(
Avx
))]
552
[CompExactlyDependsOn(typeof(
Avx
))]
src\libraries\System.Private.CoreLib\src\System\Text\Ascii.Utility.cs (2)
1631
[CompExactlyDependsOn(typeof(
Avx
))]
1640
Avx
.IsSupported ? (vector.AsByte() & Vector256.Create((byte)0x80)) == Vector256<byte>.Zero:
System.Runtime.Intrinsics (1)
artifacts\obj\System.Runtime.Intrinsics\Debug\net10.0\System.Runtime.Intrinsics.Forwards.cs (1)
25
[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Runtime.Intrinsics.X86.
Avx
))]