Commit 7fb43d73 by Derek Mauro Committed by Copybara-Service

Workaround for MSVC warning that designated initializers are a C++20 feature

https://google.github.io/styleguide/cppguide.html#Designated_initializers
recommends using designated initializers as does https://abseil.io/tips/172,
but apparently they are a non-standard extension prior to C++20.
For maximum compatibility, avoid using them here.

Fixes #1413

PiperOrigin-RevId: 516892890
Change-Id: Id7b7857891e39eb52132c3edf70e5bf4973755af
parent e5b65f17
...@@ -357,18 +357,18 @@ CrcMemcpy::ArchSpecificEngines CrcMemcpy::GetArchSpecificEngines() { ...@@ -357,18 +357,18 @@ CrcMemcpy::ArchSpecificEngines CrcMemcpy::GetArchSpecificEngines() {
case CpuType::kIntelHaswell: case CpuType::kIntelHaswell:
case CpuType::kIntelIvybridge: case CpuType::kIntelIvybridge:
return { return {
.temporal = new FallbackCrcMemcpyEngine(), /*.temporal=*/new FallbackCrcMemcpyEngine(),
.non_temporal = new CrcNonTemporalMemcpyAVXEngine(), /*.non_temporal=*/new CrcNonTemporalMemcpyAVXEngine(),
}; };
// INTEL_SANDYBRIDGE performs better with SSE than AVX. // INTEL_SANDYBRIDGE performs better with SSE than AVX.
case CpuType::kIntelSandybridge: case CpuType::kIntelSandybridge:
return { return {
.temporal = new FallbackCrcMemcpyEngine(), /*.temporal=*/new FallbackCrcMemcpyEngine(),
.non_temporal = new CrcNonTemporalMemcpyEngine(), /*.non_temporal=*/new CrcNonTemporalMemcpyEngine(),
}; };
default: default:
return {.temporal = new FallbackCrcMemcpyEngine(), return {/*.temporal=*/new FallbackCrcMemcpyEngine(),
.non_temporal = new FallbackCrcMemcpyEngine()}; /*.non_temporal=*/new FallbackCrcMemcpyEngine()};
} }
#else #else
// Get the underlying architecture. // Get the underlying architecture.
...@@ -386,8 +386,8 @@ CrcMemcpy::ArchSpecificEngines CrcMemcpy::GetArchSpecificEngines() { ...@@ -386,8 +386,8 @@ CrcMemcpy::ArchSpecificEngines CrcMemcpy::GetArchSpecificEngines() {
case CpuType::kAmdRome: case CpuType::kAmdRome:
case CpuType::kAmdNaples: case CpuType::kAmdNaples:
return { return {
.temporal = new AcceleratedCrcMemcpyEngine<1, 2>(), /*.temporal=*/new AcceleratedCrcMemcpyEngine<1, 2>(),
.non_temporal = new CrcNonTemporalMemcpyAVXEngine(), /*.non_temporal=*/new CrcNonTemporalMemcpyAVXEngine(),
}; };
// PCLMULQDQ is slow and we don't have wide enough issue width to take // PCLMULQDQ is slow and we don't have wide enough issue width to take
// advantage of it. For an unknown architecture, don't risk using CLMULs. // advantage of it. For an unknown architecture, don't risk using CLMULs.
...@@ -398,18 +398,18 @@ CrcMemcpy::ArchSpecificEngines CrcMemcpy::GetArchSpecificEngines() { ...@@ -398,18 +398,18 @@ CrcMemcpy::ArchSpecificEngines CrcMemcpy::GetArchSpecificEngines() {
case CpuType::kIntelHaswell: case CpuType::kIntelHaswell:
case CpuType::kIntelIvybridge: case CpuType::kIntelIvybridge:
return { return {
.temporal = new AcceleratedCrcMemcpyEngine<3, 0>(), /*.temporal=*/new AcceleratedCrcMemcpyEngine<3, 0>(),
.non_temporal = new CrcNonTemporalMemcpyAVXEngine(), /*.non_temporal=*/new CrcNonTemporalMemcpyAVXEngine(),
}; };
// INTEL_SANDYBRIDGE performs better with SSE than AVX. // INTEL_SANDYBRIDGE performs better with SSE than AVX.
case CpuType::kIntelSandybridge: case CpuType::kIntelSandybridge:
return { return {
.temporal = new AcceleratedCrcMemcpyEngine<3, 0>(), /*.temporal=*/new AcceleratedCrcMemcpyEngine<3, 0>(),
.non_temporal = new CrcNonTemporalMemcpyEngine(), /*.non_temporal=*/new CrcNonTemporalMemcpyEngine(),
}; };
default: default:
return {.temporal = new FallbackCrcMemcpyEngine(), return {/*.temporal=*/new FallbackCrcMemcpyEngine(),
.non_temporal = new FallbackCrcMemcpyEngine()}; /*.non_temporal=*/new FallbackCrcMemcpyEngine()};
} }
#endif // UNDEFINED_BEHAVIOR_SANITIZER #endif // UNDEFINED_BEHAVIOR_SANITIZER
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment