[clang] [llvm] Add normalize builtins and normalize HLSL function to DirectX and SPIR-V backend (PR #102683)
S. Bharadwaj Yadavalli via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 13 16:05:42 PDT 2024
================
@@ -229,6 +230,75 @@ static bool expandLog10Intrinsic(CallInst *Orig) {
return expandLogIntrinsic(Orig, numbers::ln2f / numbers::ln10f);
}
+static bool expandNormalizeIntrinsic(CallInst *Orig) {
+ Value *X = Orig->getOperand(0);
+ Type *Ty = Orig->getType();
+ Type *EltTy = Ty->getScalarType();
+ IRBuilder<> Builder(Orig->getParent());
+ Builder.SetInsertPoint(Orig);
+
+ auto *XVec = dyn_cast<FixedVectorType>(Ty);
+ if (!XVec) {
+ if (auto *constantFP = dyn_cast<ConstantFP>(X)) {
+ const APFloat &fpVal = constantFP->getValueAPF();
+ if (fpVal.isZero())
+ report_fatal_error(Twine("Invalid input scalar: length is zero"),
+ /* gen_crash_diag=*/false);
+ }
+ Value *Result = Builder.CreateFDiv(X, X);
+
+ Orig->replaceAllUsesWith(Result);
+ Orig->eraseFromParent();
+ return true;
+ }
+
+ Value *Elt = Builder.CreateExtractElement(X, (uint64_t)0);
----------------
bharadwajy wrote:
I see a build failure due to unused variable `Elt`.
https://github.com/llvm/llvm-project/pull/102683
More information about the cfe-commits
mailing list