|
@@ -8568,6 +8568,26 @@ SpirvEmitter::processIntrinsicCallExpr(const CallExpr *callExpr) {
|
|
const Expr *falseExpr = callExpr->getArg(2);
|
|
const Expr *falseExpr = callExpr->getArg(2);
|
|
retVal = doConditional(callExpr, cond, falseExpr, trueExpr);
|
|
retVal = doConditional(callExpr, cond, falseExpr, trueExpr);
|
|
break;
|
|
break;
|
|
|
|
+ }
|
|
|
|
+ case hlsl::IntrinsicOp::IOP_min: {
|
|
|
|
+ glslOpcode =
|
|
|
|
+ isFloatType ? (spirvOptions.finiteMathOnly ? GLSLstd450::GLSLstd450FMin
|
|
|
|
+ : GLSLstd450::GLSLstd450NMin)
|
|
|
|
+ : isSintType ? GLSLstd450::GLSLstd450SMin
|
|
|
|
+ : GLSLstd450::GLSLstd450UMin;
|
|
|
|
+ retVal = processIntrinsicUsingGLSLInst(callExpr, glslOpcode, true, srcLoc,
|
|
|
|
+ srcRange);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case hlsl::IntrinsicOp::IOP_max: {
|
|
|
|
+ glslOpcode =
|
|
|
|
+ isFloatType ? (spirvOptions.finiteMathOnly ? GLSLstd450::GLSLstd450FMax
|
|
|
|
+ : GLSLstd450::GLSLstd450NMax)
|
|
|
|
+ : isSintType ? GLSLstd450::GLSLstd450SMax
|
|
|
|
+ : GLSLstd450::GLSLstd450UMax;
|
|
|
|
+ retVal = processIntrinsicUsingGLSLInst(callExpr, glslOpcode, true, srcLoc,
|
|
|
|
+ srcRange);
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
INTRINSIC_SPIRV_OP_CASE(ddx, DPdx, true);
|
|
INTRINSIC_SPIRV_OP_CASE(ddx, DPdx, true);
|
|
INTRINSIC_SPIRV_OP_CASE(ddx_coarse, DPdxCoarse, false);
|
|
INTRINSIC_SPIRV_OP_CASE(ddx_coarse, DPdxCoarse, false);
|
|
@@ -8610,9 +8630,7 @@ SpirvEmitter::processIntrinsicCallExpr(const CallExpr *callExpr) {
|
|
INTRINSIC_OP_CASE(lerp, FMix, true);
|
|
INTRINSIC_OP_CASE(lerp, FMix, true);
|
|
INTRINSIC_OP_CASE(log, Log, true);
|
|
INTRINSIC_OP_CASE(log, Log, true);
|
|
INTRINSIC_OP_CASE(log2, Log2, true);
|
|
INTRINSIC_OP_CASE(log2, Log2, true);
|
|
- INTRINSIC_OP_CASE_SINT_UINT_FLOAT(max, SMax, UMax, NMax, true);
|
|
|
|
INTRINSIC_OP_CASE(umax, UMax, true);
|
|
INTRINSIC_OP_CASE(umax, UMax, true);
|
|
- INTRINSIC_OP_CASE_SINT_UINT_FLOAT(min, SMin, UMin, NMin, true);
|
|
|
|
INTRINSIC_OP_CASE(umin, UMin, true);
|
|
INTRINSIC_OP_CASE(umin, UMin, true);
|
|
INTRINSIC_OP_CASE(normalize, Normalize, false);
|
|
INTRINSIC_OP_CASE(normalize, Normalize, false);
|
|
INTRINSIC_OP_CASE(pow, Pow, true);
|
|
INTRINSIC_OP_CASE(pow, Pow, true);
|