mirror of https://github.com/SixLabors/ImageSharp
4 changed files with 86 additions and 67 deletions
@ -0,0 +1,81 @@ |
|||||
|
// Copyright (c) Six Labors.
|
||||
|
// Licensed under the Apache License, Version 2.0.
|
||||
|
|
||||
|
#if SUPPORTS_RUNTIME_INTRINSICS
|
||||
|
using System.Runtime.Intrinsics.X86; |
||||
|
#endif
|
||||
|
using BenchmarkDotNet.Environments; |
||||
|
using BenchmarkDotNet.Jobs; |
||||
|
|
||||
|
namespace SixLabors.ImageSharp.Benchmarks |
||||
|
{ |
||||
|
public partial class Config |
||||
|
{ |
||||
|
private const string On = "1"; |
||||
|
private const string Off = "0"; |
||||
|
|
||||
|
// See https://github.com/SixLabors/ImageSharp/pull/1229#discussion_r440477861
|
||||
|
// * EnableHWIntrinsic
|
||||
|
// * EnableSSE
|
||||
|
// * EnableSSE2
|
||||
|
// * EnableAES
|
||||
|
// * EnablePCLMULQDQ
|
||||
|
// * EnableSSE3
|
||||
|
// * EnableSSSE3
|
||||
|
// * EnableSSE41
|
||||
|
// * EnableSSE42
|
||||
|
// * EnablePOPCNT
|
||||
|
// * EnableAVX
|
||||
|
// * EnableFMA
|
||||
|
// * EnableAVX2
|
||||
|
// * EnableBMI1
|
||||
|
// * EnableBMI2
|
||||
|
// * EnableLZCNT
|
||||
|
//
|
||||
|
// `FeatureSIMD` ends up impacting all SIMD support(including `System.Numerics`) but not things
|
||||
|
// like `LZCNT`, `BMI1`, or `BMI2`
|
||||
|
// `EnableSSE3_4` is a legacy switch that exists for compat and is basically the same as `EnableSSE3`
|
||||
|
private const string EnableAES = "COMPlus_EnableAES"; |
||||
|
private const string EnableAVX = "COMPlus_EnableAVX"; |
||||
|
private const string EnableAVX2 = "COMPlus_EnableAVX2"; |
||||
|
private const string EnableBMI1 = "COMPlus_EnableBMI1"; |
||||
|
private const string EnableBMI2 = "COMPlus_EnableBMI2"; |
||||
|
private const string EnableFMA = "COMPlus_EnableFMA"; |
||||
|
private const string EnableHWIntrinsic = "COMPlus_EnableHWIntrinsic"; |
||||
|
private const string EnableLZCNT = "COMPlus_EnableLZCNT"; |
||||
|
private const string EnablePCLMULQDQ = "COMPlus_EnablePCLMULQDQ"; |
||||
|
private const string EnablePOPCNT = "COMPlus_EnablePOPCNT"; |
||||
|
private const string EnableSSE = "COMPlus_EnableSSE"; |
||||
|
private const string EnableSSE2 = "COMPlus_EnableSSE2"; |
||||
|
private const string EnableSSE3 = "COMPlus_EnableSSE3"; |
||||
|
private const string EnableSSE3_4 = "COMPlus_EnableSSE3_4"; |
||||
|
private const string EnableSSE41 = "COMPlus_EnableSSE41"; |
||||
|
private const string EnableSSE42 = "COMPlus_EnableSSE42"; |
||||
|
private const string EnableSSSE3 = "COMPlus_EnableSSSE3"; |
||||
|
private const string FeatureSIMD = "COMPlus_FeatureSIMD"; |
||||
|
|
||||
|
public class HwIntrinsics_SSE_AVX : Config |
||||
|
{ |
||||
|
public HwIntrinsics_SSE_AVX() |
||||
|
{ |
||||
|
#if SUPPORTS_RUNTIME_INTRINSICS
|
||||
|
if (Avx.IsSupported) |
||||
|
{ |
||||
|
this.AddJob(Job.Default.WithRuntime(CoreRuntime.Core31) |
||||
|
.WithId("AVX").AsBaseline()); |
||||
|
} |
||||
|
|
||||
|
if (Sse.IsSupported) |
||||
|
{ |
||||
|
this.AddJob(Job.Default.WithRuntime(CoreRuntime.Core31) |
||||
|
.WithEnvironmentVariables(new EnvironmentVariable(EnableAVX, Off)) |
||||
|
.WithId("SSE")); |
||||
|
} |
||||
|
#endif
|
||||
|
this.AddJob(Job.Default.WithRuntime(CoreRuntime.Core31) |
||||
|
.WithEnvironmentVariables(new EnvironmentVariable(EnableHWIntrinsic, Off)) |
||||
|
.WithId("No HwIntrinsics")); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,54 +0,0 @@ |
|||||
// Copyright (c) Six Labors.
|
|
||||
// Licensed under the Apache License, Version 2.0.
|
|
||||
|
|
||||
namespace SixLabors.ImageSharp.Tests |
|
||||
{ |
|
||||
public static partial class TestEnvironment |
|
||||
{ |
|
||||
internal static class Features |
|
||||
{ |
|
||||
public const string On = "1"; |
|
||||
public const string Off = "0"; |
|
||||
|
|
||||
// See https://github.com/SixLabors/ImageSharp/pull/1229#discussion_r440477861
|
|
||||
// * EnableHWIntrinsic
|
|
||||
// * EnableSSE
|
|
||||
// * EnableSSE2
|
|
||||
// * EnableAES
|
|
||||
// * EnablePCLMULQDQ
|
|
||||
// * EnableSSE3
|
|
||||
// * EnableSSSE3
|
|
||||
// * EnableSSE41
|
|
||||
// * EnableSSE42
|
|
||||
// * EnablePOPCNT
|
|
||||
// * EnableAVX
|
|
||||
// * EnableFMA
|
|
||||
// * EnableAVX2
|
|
||||
// * EnableBMI1
|
|
||||
// * EnableBMI2
|
|
||||
// * EnableLZCNT
|
|
||||
//
|
|
||||
// `FeatureSIMD` ends up impacting all SIMD support(including `System.Numerics`) but not things
|
|
||||
// like `LZCNT`, `BMI1`, or `BMI2`
|
|
||||
// `EnableSSE3_4` is a legacy switch that exists for compat and is basically the same as `EnableSSE3`
|
|
||||
public const string EnableAES = "COMPlus_EnableAES"; |
|
||||
public const string EnableAVX = "COMPlus_EnableAVX"; |
|
||||
public const string EnableAVX2 = "COMPlus_EnableAVX2"; |
|
||||
public const string EnableBMI1 = "COMPlus_EnableBMI1"; |
|
||||
public const string EnableBMI2 = "COMPlus_EnableBMI2"; |
|
||||
public const string EnableFMA = "COMPlus_EnableFMA"; |
|
||||
public const string EnableHWIntrinsic = "COMPlus_EnableHWIntrinsic"; |
|
||||
public const string EnableLZCNT = "COMPlus_EnableLZCNT"; |
|
||||
public const string EnablePCLMULQDQ = "COMPlus_EnablePCLMULQDQ"; |
|
||||
public const string EnablePOPCNT = "COMPlus_EnablePOPCNT"; |
|
||||
public const string EnableSSE = "COMPlus_EnableSSE"; |
|
||||
public const string EnableSSE2 = "COMPlus_EnableSSE2"; |
|
||||
public const string EnableSSE3 = "COMPlus_EnableSSE3"; |
|
||||
public const string EnableSSE3_4 = "COMPlus_EnableSSE3_4"; |
|
||||
public const string EnableSSE41 = "COMPlus_EnableSSE41"; |
|
||||
public const string EnableSSE42 = "COMPlus_EnableSSE42"; |
|
||||
public const string EnableSSSE3 = "COMPlus_EnableSSSE3"; |
|
||||
public const string FeatureSIMD = "COMPlus_FeatureSIMD"; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue