diff --git a/onnxruntime/core/mlas/lib/platform.cpp b/onnxruntime/core/mlas/lib/platform.cpp index 528e71bcffed1..455f97d001b5f 100644 --- a/onnxruntime/core/mlas/lib/platform.cpp +++ b/onnxruntime/core/mlas/lib/platform.cpp @@ -34,6 +34,9 @@ Module Name: #define POWER_10_ANDUP (POWER_10) #include #define __power_10_andup() (_system_configuration.implementation & POWER_10_ANDUP) +#elif defined(__FreeBSD__) +#include +#include #endif #endif diff --git a/onnxruntime/core/mlas/lib/power/qgemm_kernel_power10.cpp b/onnxruntime/core/mlas/lib/power/qgemm_kernel_power10.cpp index b00e37bfeccb1..7dec7b96e7461 100644 --- a/onnxruntime/core/mlas/lib/power/qgemm_kernel_power10.cpp +++ b/onnxruntime/core/mlas/lib/power/qgemm_kernel_power10.cpp @@ -880,14 +880,14 @@ MlasQgemmStoreVectorMMA { size_t RowCount; __vector signed int vsum0, vsum1, vsum2, vsum3; -#if defined(_AIX) && defined(__clang__) +#if (defined(_AIX) || defined(__FreeBSD__)) && defined(__clang__) __vector signed int columnsum = *reinterpret_cast(&ColumnSumBuffer[pos]); #else __vector signed int columnsum = *reinterpret_cast(&ColumnSumBuffer[pos]); #endif C += VectorCount; if (ZeroPointB != nullptr) { -#if defined(_AIX) && defined(__clang__) +#if (defined(_AIX) || defined(__FreeBSD__)) && defined(__clang__) __vector signed int zeropoint = *reinterpret_cast(&ZeroPointB[pos]); #else __vector signed int zeropoint = *reinterpret_cast(&ZeroPointB[pos]); diff --git a/onnxruntime/core/mlas/lib/qlmul.cpp b/onnxruntime/core/mlas/lib/qlmul.cpp index e518483a4acdd..6f54d86842f82 100644 --- a/onnxruntime/core/mlas/lib/qlmul.cpp +++ b/onnxruntime/core/mlas/lib/qlmul.cpp @@ -325,7 +325,7 @@ MlasQLinearMulKernel( } while (N >= 4) { -#if defined(_AIX) && defined(__clang__) +#if (defined(_AIX) || defined(__FreeBSD__)) && defined(__clang__) __vector int IntegerAVector {InputA[0], InputA[1], InputA[2], InputA[3]}; #else __vector int32_t IntegerAVector {InputA[0], InputA[1], InputA[2], InputA[3]}; @@ -334,7 +334,7 @@ MlasQLinearMulKernel( auto ValueAVector = vec_mul(ScaleAVector, vec_ctf(IntegerVector, 0)); if (!IsScalarB) { -#if defined(_AIX) && defined(__clang__) +#if (defined(_AIX) || defined(__FreeBSD__)) && defined(__clang__) __vector int IntegerBVector {InputB[0], InputB[1], InputB[2], InputB[3]}; #else __vector int32_t IntegerBVector {InputB[0], InputB[1], InputB[2], InputB[3]};