================
@@ -1054,6 +1055,68 @@ Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned
BuiltinID,
Value *Mul = Builder.CreateNUWMul(M, A);
return Builder.CreateNUWAdd(Mul, B);
}
+ case Builtin::BI__builtin_hlsl_mul: {
+ Value *Op0 = EmitScalarExpr(E->getArg(0));
+ Value *Op1 = EmitScalarExpr(E->getArg(1));
+ QualType QTy0 = E->getArg(0)->getType();
+ QualType QTy1 = E->getArg(1)->getType();
+
+ bool IsVec0 = QTy0->isVectorType();
+ bool IsVec1 = QTy1->isVectorType();
+ bool IsMat0 = QTy0->isConstantMatrixType();
+ bool IsMat1 = QTy1->isConstantMatrixType();
+
+ if (IsVec0 && IsVec1) {
+ // Case 5: vector * vector -> scalar (dot product)
----------------
farzonl wrote:
But yeah like Deric said the more intrinsics we can write in hlsl the less we
have to do to handle custom semantic checking in SemaHLSL and the less custom
codgen we have to do.
https://github.com/llvm/llvm-project/pull/184882
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits