[clang] [llvm] Add length HLSL function to DirectX Backend (PR #101256)
Farzon Lotfi via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 30 15:29:45 PDT 2024
================
@@ -18460,6 +18460,22 @@ Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID,
/*ReturnType=*/X->getType(), CGM.getHLSLRuntime().getLerpIntrinsic(),
ArrayRef<Value *>{X, Y, S}, nullptr, "hlsl.lerp");
}
+ case Builtin::BI__builtin_hlsl_elementwise_length: {
+ Value *X = EmitScalarExpr(E->getArg(0));
+
+ if (!E->getArg(0)->getType()->hasFloatingRepresentation())
+ llvm_unreachable("length operand must have a float representation");
+ // if the operand is a scalar, we can use the fabs llvm intrinsic directly
+ if (!E->getArg(0)->getType()->isVectorType()) {
+ llvm::Type *ResultType = ConvertType(E->getType());
----------------
farzonl wrote:
Is there a reason you don't just call `EmitFAbs`? Seems to be what others are doing in this file.
https://github.com/llvm/llvm-project/pull/101256
More information about the llvm-commits
mailing list