Skip to content

Commit

Permalink
Move to non-native simd aliases (#1442)
Browse files Browse the repository at this point in the history
* Move to non-native simd

* should in theory make arm64ec work as neon
  • Loading branch information
baconpaul authored Nov 1, 2024
1 parent f27674e commit b9d6703
Show file tree
Hide file tree
Showing 13 changed files with 105 additions and 88 deletions.
2 changes: 2 additions & 0 deletions libs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ add_subdirectory(sst/sst-cpputils)
# set(SST_PLUGININFRA_FILESYSTEM_FORCE_PLATFORM ON CACHE BOOL "Force platform filesystem")
set(SST_PLUGININFRA_PROVIDE_TINYXML ON CACHE BOOL "Get TinyXML") # need this for UserDefaults
set(SST_PLUGININFRA_PROVIDE_MINIZ ON CACHE BOOL "Get MiniZ") # need this for UserDefaults
set(SST_BASIC_BLOCKS_SIMD_OMIT_NATIVE_ALIASES ON CACHE BOOL "No Native Aliases for SCXT") # Makes ARM64EC use neon basically

add_subdirectory(sst/sst-basic-blocks)
add_subdirectory(sst/sst-plugininfra)
add_subdirectory(sst/sst-filters)
Expand Down
2 changes: 1 addition & 1 deletion libs/sst/sst-filters
Submodule sst-filters updated 40 files
+33 −6 .github/workflows/build-pr.yml
+19 −18 CMakeLists.txt
+1,259 −22 cmake/CPM.cmake
+14 −0 examples/filter_plot_tool/filter_plot_tool.cpp
+14 −0 examples/filters_example_plugin/FilterPlotComponent.cpp
+14 −0 examples/filters_example_plugin/FilterPlotComponent.h
+37 −24 examples/filters_example_plugin/FiltersPlugin.cpp
+14 −0 examples/filters_example_plugin/FiltersPlugin.h
+14 −0 examples/filters_example_plugin/FiltersPluginEditor.cpp
+14 −0 examples/filters_example_plugin/FiltersPluginEditor.h
+61 −35 include-extras/sst/filters/FilterPlotter.h
+41 −36 include/sst/filters/CutoffWarp.h
+75 −72 include/sst/filters/CytomicSVF.h
+50 −52 include/sst/filters/DiodeLadder.h
+4 −4 include/sst/filters/FilterCoefficientMaker_Impl.h
+156 −155 include/sst/filters/HalfRateFilter.h
+25 −25 include/sst/filters/K35Filter.h
+122 −109 include/sst/filters/OBXDFilter.h
+4 −4 include/sst/filters/QuadFilterUnit.h
+418 −372 include/sst/filters/QuadFilterUnit_Impl.h
+9 −9 include/sst/filters/ResonanceWarp.h
+58 −53 include/sst/filters/TriPoleFilter.h
+37 −38 include/sst/filters/VintageLadders.h
+1 −22 include/sst/utilities/globals.h
+9 −9 include/sst/utilities/shared.h
+2 −2 scripts/fix_file_comments.pl
+14 −0 tests/BasicFiltersTest.cpp
+14 −0 tests/BiquadTest.cpp
+1 −0 tests/CMakeLists.txt
+14 −0 tests/CutoffWarpTest.cpp
+14 −3 tests/CytomicSVFTests.cpp
+14 −0 tests/DiodeLadderTest.cpp
+14 −1 tests/HalfRateTest.cpp
+14 −0 tests/K35FilterTest.cpp
+14 −0 tests/OBXDFilterTest.cpp
+14 −0 tests/ResonanceWarpTest.cpp
+18 −3 tests/TestUtils.h
+14 −0 tests/TriPoleFilterTest.cpp
+14 −0 tests/VintageLaddersTest.cpp
+14 −0 tests/tests.cpp
4 changes: 2 additions & 2 deletions src/configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
#ifndef SCXT_SRC_CONFIGURATION_H
#define SCXT_SRC_CONFIGURATION_H

#include <cstdint>
#include "infrastructure/sse_include.h"
#include <stddef.h> // for size_t
#include <cstdint> // for uint16_t etc...

namespace scxt
{
Expand Down
163 changes: 89 additions & 74 deletions src/dsp/generator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@
*/

#include "generator.h"
#include "infrastructure/sse_include.h"

#include "sst/basic-blocks/simd/setup.h"

#include "resampling.h"
#include "data_tables.h"
Expand Down Expand Up @@ -99,7 +100,7 @@ namespace scxt::dsp
{
constexpr float I16InvScale = (1.f / (16384.f * 32768.f));
constexpr float I16InvScale2 = (1.f / (32768.f));
const __m128 I16InvScale_m128 = _mm_set1_ps(I16InvScale);
const auto I16InvScale_m128 = SIMD_MM(set1_ps)(I16InvScale);

inline float getFadeGainToAmp(float g)
{
Expand Down Expand Up @@ -327,42 +328,48 @@ void KernelOp<InterpolationTypes::Sinc, float>::Process(
#endif

// float32 path (SSE)
__m128 lipol0, tmp[4], sL4, sR4;
lipol0 = _mm_setzero_ps();
lipol0 = _mm_cvtsi32_ss(lipol0, ks.SampleSubPos & 0xffff);
lipol0 = _mm_shuffle_ps(lipol0, lipol0, _MM_SHUFFLE(0, 0, 0, 0));
tmp[0] = _mm_add_ps(_mm_mul_ps(*((__m128 *)&sincTable.SincOffsetF32[m0]), lipol0),
*((__m128 *)&sincTable.SincTableF32[m0]));
tmp[1] = _mm_add_ps(_mm_mul_ps(*((__m128 *)&sincTable.SincOffsetF32[m0 + 4]), lipol0),
*((__m128 *)&sincTable.SincTableF32[m0 + 4]));
tmp[2] = _mm_add_ps(_mm_mul_ps(*((__m128 *)&sincTable.SincOffsetF32[m0 + 8]), lipol0),
*((__m128 *)&sincTable.SincTableF32[m0 + 8]));
tmp[3] = _mm_add_ps(_mm_mul_ps(*((__m128 *)&sincTable.SincOffsetF32[m0 + 12]), lipol0),
*((__m128 *)&sincTable.SincTableF32[m0 + 12]));
sL4 = _mm_mul_ps(tmp[0], _mm_loadu_ps(readSampleL));
sL4 = _mm_add_ps(sL4, _mm_mul_ps(tmp[1], _mm_loadu_ps(readSampleL + 4)));
sL4 = _mm_add_ps(sL4, _mm_mul_ps(tmp[2], _mm_loadu_ps(readSampleL + 8)));
sL4 = _mm_add_ps(sL4, _mm_mul_ps(tmp[3], _mm_loadu_ps(readSampleL + 12)));
SIMD_M128 lipol0, tmp[4], sL4, sR4;
lipol0 = SIMD_MM(setzero_ps)();
lipol0 = SIMD_MM(cvtsi32_ss)(lipol0, ks.SampleSubPos & 0xffff);
lipol0 = SIMD_MM(shuffle_ps)(lipol0, lipol0, SIMD_MM_SHUFFLE(0, 0, 0, 0));
tmp[0] = SIMD_MM(add_ps)(SIMD_MM(mul_ps)(*((SIMD_M128 *)&sincTable.SincOffsetF32[m0]), lipol0),
*((SIMD_M128 *)&sincTable.SincTableF32[m0]));
tmp[1] =
SIMD_MM(add_ps)(SIMD_MM(mul_ps)(*((SIMD_M128 *)&sincTable.SincOffsetF32[m0 + 4]), lipol0),
*((SIMD_M128 *)&sincTable.SincTableF32[m0 + 4]));
tmp[2] =
SIMD_MM(add_ps)(SIMD_MM(mul_ps)(*((SIMD_M128 *)&sincTable.SincOffsetF32[m0 + 8]), lipol0),
*((SIMD_M128 *)&sincTable.SincTableF32[m0 + 8]));
tmp[3] =
SIMD_MM(add_ps)(SIMD_MM(mul_ps)(*((SIMD_M128 *)&sincTable.SincOffsetF32[m0 + 12]), lipol0),
*((SIMD_M128 *)&sincTable.SincTableF32[m0 + 12]));
sL4 = SIMD_MM(mul_ps)(tmp[0], SIMD_MM(loadu_ps)(readSampleL));
sL4 = SIMD_MM(add_ps)(sL4, SIMD_MM(mul_ps)(tmp[1], SIMD_MM(loadu_ps)(readSampleL + 4)));
sL4 = SIMD_MM(add_ps)(sL4, SIMD_MM(mul_ps)(tmp[2], SIMD_MM(loadu_ps)(readSampleL + 8)));
sL4 = SIMD_MM(add_ps)(sL4, SIMD_MM(mul_ps)(tmp[3], SIMD_MM(loadu_ps)(readSampleL + 12)));
// sL4 = sst::basic_blocks::mechanics::sum_ps_to_ss(sL4);
sL4 = _mm_hadd_ps(sL4, sL4);
sL4 = _mm_hadd_ps(sL4, sL4);
sL4 = SIMD_MM(hadd_ps)(sL4, sL4);
sL4 = SIMD_MM(hadd_ps)(sL4, sL4);

_mm_store_ss(&OutputL[i], sL4);
SIMD_MM(store_ss)(&OutputL[i], sL4);

if constexpr (LOOP_ACTIVE)
{
if (ks.fadeActive)
{
sR4 = _mm_mul_ps(tmp[0], _mm_loadu_ps(readFadeSampleL));
sR4 = _mm_add_ps(sR4, _mm_mul_ps(tmp[1], _mm_loadu_ps(readFadeSampleL + 4)));
sR4 = _mm_add_ps(sR4, _mm_mul_ps(tmp[2], _mm_loadu_ps(readFadeSampleL + 8)));
sR4 = _mm_add_ps(sR4, _mm_mul_ps(tmp[3], _mm_loadu_ps(readFadeSampleL + 12)));
sR4 = SIMD_MM(mul_ps)(tmp[0], SIMD_MM(loadu_ps)(readFadeSampleL));
sR4 = SIMD_MM(add_ps)(sR4,
SIMD_MM(mul_ps)(tmp[1], SIMD_MM(loadu_ps)(readFadeSampleL + 4)));
sR4 = SIMD_MM(add_ps)(sR4,
SIMD_MM(mul_ps)(tmp[2], SIMD_MM(loadu_ps)(readFadeSampleL + 8)));
sR4 = SIMD_MM(add_ps)(sR4,
SIMD_MM(mul_ps)(tmp[3], SIMD_MM(loadu_ps)(readFadeSampleL + 12)));
// sR4 = sst::basic_blocks::mechanics::sum_ps_to_ss(sR4);
sR4 = _mm_hadd_ps(sR4, sR4);
sR4 = _mm_hadd_ps(sR4, sR4);
sR4 = SIMD_MM(hadd_ps)(sR4, sR4);
sR4 = SIMD_MM(hadd_ps)(sR4, sR4);

float fadeVal{0.f};
_mm_store_ss(&fadeVal, sR4);
SIMD_MM(store_ss)(&fadeVal, sR4);
auto fadeGain(
getFadeGain(ks.SamplePos, GD->loopUpperBound - ks.loopFade, GD->loopUpperBound));
auto aOut = getFadeGainToAmp(1.f - fadeGain);
Expand All @@ -378,30 +385,33 @@ void KernelOp<InterpolationTypes::Sinc, float>::Process(
auto readFadeSampleR{ks.ReadFadeSample[1]};
auto OutputR{ks.Output[1]};

sR4 = _mm_mul_ps(tmp[0], _mm_loadu_ps(readSampleR));
sR4 = _mm_add_ps(sR4, _mm_mul_ps(tmp[1], _mm_loadu_ps(readSampleR + 4)));
sR4 = _mm_add_ps(sR4, _mm_mul_ps(tmp[2], _mm_loadu_ps(readSampleR + 8)));
sR4 = _mm_add_ps(sR4, _mm_mul_ps(tmp[3], _mm_loadu_ps(readSampleR + 12)));
sR4 = SIMD_MM(mul_ps)(tmp[0], SIMD_MM(loadu_ps)(readSampleR));
sR4 = SIMD_MM(add_ps)(sR4, SIMD_MM(mul_ps)(tmp[1], SIMD_MM(loadu_ps)(readSampleR + 4)));
sR4 = SIMD_MM(add_ps)(sR4, SIMD_MM(mul_ps)(tmp[2], SIMD_MM(loadu_ps)(readSampleR + 8)));
sR4 = SIMD_MM(add_ps)(sR4, SIMD_MM(mul_ps)(tmp[3], SIMD_MM(loadu_ps)(readSampleR + 12)));
// sR4 = sst::basic_blocks::mechanics::sum_ps_to_ss(sR4);
sR4 = _mm_hadd_ps(sR4, sR4);
sR4 = _mm_hadd_ps(sR4, sR4);
sR4 = SIMD_MM(hadd_ps)(sR4, sR4);
sR4 = SIMD_MM(hadd_ps)(sR4, sR4);

_mm_store_ss(&OutputR[i], sR4);
SIMD_MM(store_ss)(&OutputR[i], sR4);

if constexpr (LOOP_ACTIVE)
{
if (ks.fadeActive)
{
sR4 = _mm_mul_ps(tmp[0], _mm_loadu_ps(readFadeSampleR));
sR4 = _mm_add_ps(sR4, _mm_mul_ps(tmp[1], _mm_loadu_ps(readFadeSampleR + 4)));
sR4 = _mm_add_ps(sR4, _mm_mul_ps(tmp[2], _mm_loadu_ps(readFadeSampleR + 8)));
sR4 = _mm_add_ps(sR4, _mm_mul_ps(tmp[3], _mm_loadu_ps(readFadeSampleR + 12)));
sR4 = SIMD_MM(mul_ps)(tmp[0], SIMD_MM(loadu_ps)(readFadeSampleR));
sR4 = SIMD_MM(add_ps)(
sR4, SIMD_MM(mul_ps)(tmp[1], SIMD_MM(loadu_ps)(readFadeSampleR + 4)));
sR4 = SIMD_MM(add_ps)(
sR4, SIMD_MM(mul_ps)(tmp[2], SIMD_MM(loadu_ps)(readFadeSampleR + 8)));
sR4 = SIMD_MM(add_ps)(
sR4, SIMD_MM(mul_ps)(tmp[3], SIMD_MM(loadu_ps)(readFadeSampleR + 12)));
// sR4 = sst::basic_blocks::mechanics::sum_ps_to_ss(sR4);
sR4 = _mm_hadd_ps(sR4, sR4);
sR4 = _mm_hadd_ps(sR4, sR4);
sR4 = SIMD_MM(hadd_ps)(sR4, sR4);
sR4 = SIMD_MM(hadd_ps)(sR4, sR4);

float fadeVal{0.f};
_mm_store_ss(&fadeVal, sR4);
SIMD_MM(store_ss)(&fadeVal, sR4);
auto fadeGain(getFadeGain(ks.SamplePos, GD->loopUpperBound - ks.loopFade,
GD->loopUpperBound));
auto aOut = getFadeGainToAmp(1.f - fadeGain);
Expand Down Expand Up @@ -435,41 +445,43 @@ void KernelOp<InterpolationTypes::Sinc, int16_t>::Process(

// int16
// SSE2 path
__m128i lipol0, tmp, sL8A, sR8A, tmp2, sL8B, sR8B;
__m128 fL = _mm_setzero_ps(), fR = _mm_setzero_ps();
lipol0 = _mm_set1_epi16(ks.SampleSubPos & 0xffff);

tmp = _mm_add_epi16(_mm_mulhi_epi16(*((__m128i *)&sincTable.SincOffsetI16[m0]), lipol0),
*((__m128i *)&sincTable.SincTableI16[m0]));
sL8A = _mm_madd_epi16(tmp, _mm_loadu_si128((__m128i *)readSampleL));
SIMD_M128I lipol0, tmp, sL8A, sR8A, tmp2, sL8B, sR8B;
auto fL = SIMD_MM(setzero_ps)(), fR = SIMD_MM(setzero_ps)();
lipol0 = SIMD_MM(set1_epi16)(ks.SampleSubPos & 0xffff);

tmp = SIMD_MM(add_epi16)(
SIMD_MM(mulhi_epi16)(*((SIMD_M128I *)&sincTable.SincOffsetI16[m0]), lipol0),
*((SIMD_M128I *)&sincTable.SincTableI16[m0]));
sL8A = SIMD_MM(madd_epi16)(tmp, SIMD_MM(loadu_si128)((SIMD_M128I *)readSampleL));
if constexpr (stereo)
sR8A = _mm_madd_epi16(tmp, _mm_loadu_si128((__m128i *)readSampleR));
sR8A = SIMD_MM(madd_epi16)(tmp, SIMD_MM(loadu_si128)((SIMD_M128I *)readSampleR));

tmp2 = _mm_add_epi16(_mm_mulhi_epi16(*((__m128i *)&sincTable.SincOffsetI16[m0 + 8]), lipol0),
*((__m128i *)&sincTable.SincTableI16[m0 + 8]));
sL8B = _mm_madd_epi16(tmp2, _mm_loadu_si128((__m128i *)(readSampleL + 8)));
tmp2 = SIMD_MM(add_epi16)(
SIMD_MM(mulhi_epi16)(*((SIMD_M128I *)&sincTable.SincOffsetI16[m0 + 8]), lipol0),
*((SIMD_M128I *)&sincTable.SincTableI16[m0 + 8]));
sL8B = SIMD_MM(madd_epi16)(tmp2, SIMD_MM(loadu_si128)((SIMD_M128I *)(readSampleL + 8)));
if constexpr (stereo)
sR8B = _mm_madd_epi16(tmp2, _mm_loadu_si128((__m128i *)(readSampleR + 8)));
sR8B = SIMD_MM(madd_epi16)(tmp2, SIMD_MM(loadu_si128)((SIMD_M128I *)(readSampleR + 8)));

sL8A = _mm_add_epi32(sL8A, sL8B);
sL8A = SIMD_MM(add_epi32)(sL8A, sL8B);
if constexpr (stereo)
sR8A = _mm_add_epi32(sR8A, sR8B);
sR8A = SIMD_MM(add_epi32)(sR8A, sR8B);

int l alignas(16)[4], r alignas(16)[4];
_mm_store_si128((__m128i *)&l, sL8A);
SIMD_MM(store_si128)((SIMD_M128I *)&l, sL8A);
if constexpr (stereo)
_mm_store_si128((__m128i *)&r, sR8A);
SIMD_MM(store_si128)((SIMD_M128I *)&r, sR8A);
l[0] = (l[0] + l[1]) + (l[2] + l[3]);
if constexpr (stereo)
r[0] = (r[0] + r[1]) + (r[2] + r[3]);

fL = _mm_mul_ss(_mm_cvtsi32_ss(fL, l[0]), I16InvScale_m128);
fL = SIMD_MM(mul_ss)(SIMD_MM(cvtsi32_ss)(fL, l[0]), I16InvScale_m128);
if constexpr (stereo)
fR = _mm_mul_ss(_mm_cvtsi32_ss(fR, r[0]), I16InvScale_m128);
fR = SIMD_MM(mul_ss)(SIMD_MM(cvtsi32_ss)(fR, r[0]), I16InvScale_m128);

_mm_store_ss(&OutputL[i], fL);
SIMD_MM(store_ss)(&OutputL[i], fL);
if constexpr (stereo)
_mm_store_ss(&OutputR[i], fR);
SIMD_MM(store_ss)(&OutputR[i], fR);

if constexpr (LOOP_ACTIVE)
{
Expand All @@ -481,34 +493,37 @@ void KernelOp<InterpolationTypes::Sinc, int16_t>::Process(
readFadeSampleR = ks.ReadFadeSample[1];
}

sL8A = _mm_madd_epi16(tmp, _mm_loadu_si128((__m128i *)readFadeSampleL));
sL8A = SIMD_MM(madd_epi16)(tmp, SIMD_MM(loadu_si128)((SIMD_M128I *)readFadeSampleL));
if constexpr (stereo)
sR8A = _mm_madd_epi16(tmp, _mm_loadu_si128((__m128i *)readFadeSampleR));
sL8B = _mm_madd_epi16(tmp2, _mm_loadu_si128((__m128i *)(readFadeSampleL + 8)));
sR8A =
SIMD_MM(madd_epi16)(tmp, SIMD_MM(loadu_si128)((SIMD_M128I *)readFadeSampleR));
sL8B = SIMD_MM(madd_epi16)(tmp2,
SIMD_MM(loadu_si128)((SIMD_M128I *)(readFadeSampleL + 8)));
if constexpr (stereo)
sR8B = _mm_madd_epi16(tmp2, _mm_loadu_si128((__m128i *)(readFadeSampleR + 8)));
sR8B = SIMD_MM(madd_epi16)(
tmp2, SIMD_MM(loadu_si128)((SIMD_M128I *)(readFadeSampleR + 8)));

sL8A = _mm_add_epi32(sL8A, sL8B);
sL8A = SIMD_MM(add_epi32)(sL8A, sL8B);
if constexpr (stereo)
sR8A = _mm_add_epi32(sR8A, sR8B);
sR8A = SIMD_MM(add_epi32)(sR8A, sR8B);

int l alignas(16)[4], r alignas(16)[4];
_mm_store_si128((__m128i *)&l, sL8A);
SIMD_MM(store_si128)((SIMD_M128I *)&l, sL8A);
if constexpr (stereo)
_mm_store_si128((__m128i *)&r, sR8A);
SIMD_MM(store_si128)((SIMD_M128I *)&r, sR8A);
l[0] = (l[0] + l[1]) + (l[2] + l[3]);
if constexpr (stereo)
r[0] = (r[0] + r[1]) + (r[2] + r[3]);

fL = _mm_mul_ss(_mm_cvtsi32_ss(fL, l[0]), I16InvScale_m128);
fL = SIMD_MM(mul_ss)(SIMD_MM(cvtsi32_ss)(fL, l[0]), I16InvScale_m128);
if constexpr (stereo)
fR = _mm_mul_ss(_mm_cvtsi32_ss(fR, r[0]), I16InvScale_m128);
fR = SIMD_MM(mul_ss)(SIMD_MM(cvtsi32_ss)(fR, r[0]), I16InvScale_m128);

float fadeValL{0.f};
float fadeValR{0.f};
_mm_store_ss(&fadeValL, fL);
SIMD_MM(store_ss)(&fadeValL, fL);
if constexpr (stereo)
_mm_store_ss(&fadeValR, fR);
SIMD_MM(store_ss)(&fadeValR, fR);

auto fadeGain(
getFadeGain(ks.SamplePos, GD->loopUpperBound - ks.loopFade, GD->loopUpperBound));
Expand Down
3 changes: 2 additions & 1 deletion src/dsp/processor/processor.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,9 @@
#include <optional>
#include <vector>
#include <utility>
#include <cmath>

#include "infrastructure/sse_include.h"
#include "sst/basic-blocks/simd/setup.h"
#include "sst/basic-blocks/mechanics/block-ops.h"

#include "datamodel/metadata.h"
Expand Down
3 changes: 2 additions & 1 deletion src/dsp/processor/processor_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@

#include "processor.h"
#include "datamodel/metadata.h"
#include "infrastructure/sse_include.h"

#include "sst/basic-blocks/simd/setup.h"

#include <sst/filters/HalfRateFilter.h>
#include "sst/basic-blocks/dsp/BlockInterpolators.h"
Expand Down
4 changes: 2 additions & 2 deletions src/engine/bus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,13 @@

#include "bus.h"

#include "sst/basic-blocks/simd/setup.h"

#include "configuration.h"

#include "dsp/data_tables.h"
#include "engine.h"

#include "infrastructure/sse_include.h"

#include "dsp/data_tables.h"
#include "tuning/equal.h"

Expand Down
2 changes: 1 addition & 1 deletion src/engine/group.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
#include "bus.h"
#include "part.h"

#include "infrastructure/sse_include.h"
#include "sst/basic-blocks/simd/setup.h"

#include "sst/basic-blocks/mechanics/block-ops.h"
#include "sst/basic-blocks/dsp/PanLaws.h"
Expand Down
2 changes: 0 additions & 2 deletions src/engine/group.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@
#ifndef SCXT_SRC_ENGINE_GROUP_H
#define SCXT_SRC_ENGINE_GROUP_H

#include <infrastructure/sse_include.h>

#include <memory>
#include <vector>
#include <cassert>
Expand Down
2 changes: 1 addition & 1 deletion src/engine/part.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@

#include "selection/selection_manager.h"

#include "infrastructure/sse_include.h"
#include "sst/basic-blocks/simd/setup.h"
#include "sst/basic-blocks/mechanics/block-ops.h"

namespace scxt::engine
Expand Down

0 comments on commit b9d6703

Please sign in to comment.