diff --git a/reference/opt/shaders-msl/vert/float-math.invariant-float-math.vert b/reference/opt/shaders-msl/vert/float-math.invariant-float-math.vert index 05e09e2d..d8f44bec 100644 --- a/reference/opt/shaders-msl/vert/float-math.invariant-float-math.vert +++ b/reference/opt/shaders-msl/vert/float-math.invariant-float-math.vert @@ -69,13 +69,13 @@ struct main0_in }; template -T spvFMul(T l, T r) +[[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template -vec spvFMulVectorMatrix(vec v, matrix m) +[[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) @@ -91,7 +91,7 @@ vec spvFMulVectorMatrix(vec v, matrix m) } template -vec spvFMulMatrixVector(matrix m, vec v) +[[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) @@ -102,7 +102,7 @@ vec spvFMulMatrixVector(matrix m, vec v) } template -matrix spvFMulMatrixMatrix(matrix l, matrix r) +[[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) diff --git a/reference/opt/shaders-msl/vert/no-contraction.vert b/reference/opt/shaders-msl/vert/no-contraction.vert index a48731ed..0b75dbcb 100644 --- a/reference/opt/shaders-msl/vert/no-contraction.vert +++ b/reference/opt/shaders-msl/vert/no-contraction.vert @@ -18,13 +18,13 @@ struct main0_in }; template -T spvFMul(T l, T r) +[[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template -vec spvFMulVectorMatrix(vec v, matrix m) +[[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) @@ -40,7 +40,7 @@ vec spvFMulVectorMatrix(vec v, matrix m) } template -vec spvFMulMatrixVector(matrix m, vec v) +[[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) @@ -51,7 +51,7 @@ vec spvFMulMatrixVector(matrix m, vec v) } template -matrix spvFMulMatrixMatrix(matrix l, matrix r) +[[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) @@ -67,13 +67,13 @@ matrix spvFMulMatrixMatrix(matrix l, matrix -T spvFAdd(T l, T r) +[[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template -T spvFSub(T l, T r) +[[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } diff --git a/reference/shaders-msl/vert/float-math.invariant-float-math.vert b/reference/shaders-msl/vert/float-math.invariant-float-math.vert index d603884c..06844caa 100644 --- a/reference/shaders-msl/vert/float-math.invariant-float-math.vert +++ b/reference/shaders-msl/vert/float-math.invariant-float-math.vert @@ -69,13 +69,13 @@ struct main0_in }; template -T spvFMul(T l, T r) +[[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template -vec spvFMulVectorMatrix(vec v, matrix m) +[[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) @@ -91,7 +91,7 @@ vec spvFMulVectorMatrix(vec v, matrix m) } template -vec spvFMulMatrixVector(matrix m, vec v) +[[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) @@ -102,7 +102,7 @@ vec spvFMulMatrixVector(matrix m, vec v) } template -matrix spvFMulMatrixMatrix(matrix l, matrix r) +[[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) diff --git a/reference/shaders-msl/vert/no-contraction.vert b/reference/shaders-msl/vert/no-contraction.vert index 907d9010..653dc26f 100644 --- a/reference/shaders-msl/vert/no-contraction.vert +++ b/reference/shaders-msl/vert/no-contraction.vert @@ -18,13 +18,13 @@ struct main0_in }; template -T spvFMul(T l, T r) +[[clang::optnone]] T spvFMul(T l, T r) { return fma(l, r, T(0)); } template -vec spvFMulVectorMatrix(vec v, matrix m) +[[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m) { vec res = vec(0); for (uint i = Rows; i > 0; --i) @@ -40,7 +40,7 @@ vec spvFMulVectorMatrix(vec v, matrix m) } template -vec spvFMulMatrixVector(matrix m, vec v) +[[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v) { vec res = vec(0); for (uint i = Cols; i > 0; --i) @@ -51,7 +51,7 @@ vec spvFMulMatrixVector(matrix m, vec v) } template -matrix spvFMulMatrixMatrix(matrix l, matrix r) +[[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r) { matrix res; for (uint i = 0; i < RCols; i++) @@ -67,13 +67,13 @@ matrix spvFMulMatrixMatrix(matrix l, matrix -T spvFAdd(T l, T r) +[[clang::optnone]] T spvFAdd(T l, T r) { return fma(T(1), l, r); } template -T spvFSub(T l, T r) +[[clang::optnone]] T spvFSub(T l, T r) { return fma(T(-1), r, l); } diff --git a/spirv_msl.cpp b/spirv_msl.cpp index 9e797f66..2b1e0626 100644 --- a/spirv_msl.cpp +++ b/spirv_msl.cpp @@ -4928,7 +4928,7 @@ void CompilerMSL::emit_custom_functions() // "fadd" intrinsic support case SPVFuncImplFAdd: statement("template"); - statement("T spvFAdd(T l, T r)"); + statement("[[clang::optnone]] T spvFAdd(T l, T r)"); begin_scope(); statement("return fma(T(1), l, r);"); end_scope(); @@ -4938,7 +4938,7 @@ void CompilerMSL::emit_custom_functions() // "fsub" intrinsic support case SPVFuncImplFSub: statement("template"); - statement("T spvFSub(T l, T r)"); + statement("[[clang::optnone]] T spvFSub(T l, T r)"); begin_scope(); statement("return fma(T(-1), r, l);"); end_scope(); @@ -4948,14 +4948,14 @@ void CompilerMSL::emit_custom_functions() // "fmul' intrinsic support case SPVFuncImplFMul: statement("template"); - statement("T spvFMul(T l, T r)"); + statement("[[clang::optnone]] T spvFMul(T l, T r)"); begin_scope(); statement("return fma(l, r, T(0));"); end_scope(); statement(""); statement("template"); - statement("vec spvFMulVectorMatrix(vec v, matrix m)"); + statement("[[clang::optnone]] vec spvFMulVectorMatrix(vec v, matrix m)"); begin_scope(); statement("vec res = vec(0);"); statement("for (uint i = Rows; i > 0; --i)"); @@ -4972,7 +4972,7 @@ void CompilerMSL::emit_custom_functions() statement(""); statement("template"); - statement("vec spvFMulMatrixVector(matrix m, vec v)"); + statement("[[clang::optnone]] vec spvFMulMatrixVector(matrix m, vec v)"); begin_scope(); statement("vec res = vec(0);"); statement("for (uint i = Cols; i > 0; --i)"); @@ -4984,8 +4984,7 @@ void CompilerMSL::emit_custom_functions() statement(""); statement("template"); - statement( - "matrix spvFMulMatrixMatrix(matrix l, matrix r)"); + statement("[[clang::optnone]] matrix spvFMulMatrixMatrix(matrix l, matrix r)"); begin_scope(); statement("matrix res;"); statement("for (uint i = 0; i < RCols; i++)");