[llvm] Revert "[DXIL] Add radians intrinsic" (PR #111399)

Justin Bogner via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 7 09:27:04 PDT 2024


https://github.com/bogner created https://github.com/llvm/llvm-project/pull/111399

Reverts llvm/llvm-project#110616

`llvm\test\CodeGen\DirectX\radians.ll` is failing after this change. @adam-yang please send a new PR with the issue resolved once you've had time to investigate.


>From 26ed065f2de8dfd92b06f9dd559c00c8c77c44da Mon Sep 17 00:00:00 2001
From: Justin Bogner <mail at justinbogner.com>
Date: Mon, 7 Oct 2024 09:26:23 -0700
Subject: [PATCH] Revert "[DXIL] Add radians intrinsic (#110616)"

This reverts commit 1e75d08659aeb1aabf92b59f33649c414d4ff8b7.
---
 llvm/include/llvm/IR/IntrinsicsDirectX.td     |  1 -
 .../Target/DirectX/DXILIntrinsicExpansion.cpp | 12 ---
 llvm/test/CodeGen/DirectX/radians.ll          | 79 -------------------
 3 files changed, 92 deletions(-)
 delete mode 100644 llvm/test/CodeGen/DirectX/radians.ll

diff --git a/llvm/include/llvm/IR/IntrinsicsDirectX.td b/llvm/include/llvm/IR/IntrinsicsDirectX.td
index f2b9e286ebb476..1adfcdc9a1ed2f 100644
--- a/llvm/include/llvm/IR/IntrinsicsDirectX.td
+++ b/llvm/include/llvm/IR/IntrinsicsDirectX.td
@@ -86,5 +86,4 @@ def int_dx_rsqrt  : DefaultAttrsIntrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>]
 def int_dx_wave_is_first_lane : DefaultAttrsIntrinsic<[llvm_i1_ty], [], [IntrConvergent]>;
 def int_dx_sign : DefaultAttrsIntrinsic<[LLVMScalarOrSameVectorWidth<0, llvm_i32_ty>], [llvm_any_ty], [IntrNoMem]>;
 def int_dx_step : DefaultAttrsIntrinsic<[LLVMMatchType<0>], [llvm_anyfloat_ty, LLVMMatchType<0>], [IntrNoMem]>;
-def int_dx_radians : DefaultAttrsIntrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>], [IntrNoMem]>;
 }
diff --git a/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp b/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
index 0bcd03c7fad38d..39e73a11d9d7ee 100644
--- a/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
+++ b/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
@@ -64,7 +64,6 @@ static bool isIntrinsicExpansion(Function &F) {
   case Intrinsic::dx_udot:
   case Intrinsic::dx_sign:
   case Intrinsic::dx_step:
-  case Intrinsic::dx_radians:
     return true;
   }
   return false;
@@ -443,14 +442,6 @@ static Value *expandStepIntrinsic(CallInst *Orig) {
   return Builder.CreateSelect(Cond, Zero, One);
 }
 
-static Value *expandRadiansIntrinsic(CallInst *Orig) {
-  Value *X = Orig->getOperand(0);
-  Type *Ty = X->getType();
-  IRBuilder<> Builder(Orig);
-  Value *PiOver180 = ConstantFP::get(Ty, llvm::numbers::pi / 180.0);
-  return Builder.CreateFMul(X, PiOver180);
-}
-
 static Intrinsic::ID getMaxForClamp(Type *ElemTy,
                                     Intrinsic::ID ClampIntrinsic) {
   if (ClampIntrinsic == Intrinsic::dx_uclamp)
@@ -570,9 +561,6 @@ static bool expandIntrinsic(Function &F, CallInst *Orig) {
     break;
   case Intrinsic::dx_step:
     Result = expandStepIntrinsic(Orig);
-  case Intrinsic::dx_radians:
-    Result = expandRadiansIntrinsic(Orig);
-    break;
   }
   if (Result) {
     Orig->replaceAllUsesWith(Result);
diff --git a/llvm/test/CodeGen/DirectX/radians.ll b/llvm/test/CodeGen/DirectX/radians.ll
deleted file mode 100644
index 73ec013775c3e9..00000000000000
--- a/llvm/test/CodeGen/DirectX/radians.ll
+++ /dev/null
@@ -1,79 +0,0 @@
-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
-; RUN: opt -S -dxil-intrinsic-expansion -scalarizer -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s
-
-declare half @llvm.dx.radians.f16(half)
-declare float @llvm.dx.radians.f32(float)
-
-declare <4 x half> @llvm.dx.radians.v4f16(<4 x half>)
-declare <4 x float> @llvm.dx.radians.v4f32(<4 x float>)
-
-define noundef half @radians_half(half noundef %a) {
-; CHECK-LABEL: define noundef half @radians_half(
-; CHECK-SAME: half noundef [[A:%.*]]) {
-; CHECK-NEXT:  [[ENTRY:.*:]]
-; CHECK-NEXT:    [[TMP0:%.*]] = fmul half [[A]], 0xH2478
-; CHECK-NEXT:    ret half [[TMP0]]
-;
-entry:
-  %elt.radians = call half @llvm.dx.radians.f16(half %a)
-  ret half %elt.radians
-}
-
-define noundef float @radians_float(float noundef %a) {
-; CHECK-LABEL: define noundef float @radians_float(
-; CHECK-SAME: float noundef [[A:%.*]]) {
-; CHECK-NEXT:  [[ENTRY:.*:]]
-; CHECK-NEXT:    [[TMP0:%.*]] = fmul float [[A]], 0x3F91DF46A0000000
-; CHECK-NEXT:    ret float [[TMP0]]
-;
-entry:
-  %elt.radians = call float @llvm.dx.radians.f32(float %a)
-  ret float %elt.radians
-}
-
-define noundef <4 x half> @radians_half_vector(<4 x half> noundef %a) {
-; CHECK-LABEL: define noundef <4 x half> @radians_half_vector(
-; CHECK-SAME: <4 x half> noundef [[A:%.*]]) {
-; CHECK-NEXT:  [[ENTRY:.*:]]
-; CHECK: [[ee0:%.*]] = extractelement <4 x half> [[A]], i64 0
-; CHECK: [[ie0:%.*]] = fmul half [[ee0]], 0xH2478
-; CHECK: [[ee1:%.*]] = extractelement <4 x half> [[A]], i64 1
-; CHECK: [[ie1:%.*]] = fmul half [[ee1]], 0xH2478
-; CHECK: [[ee2:%.*]] = extractelement <4 x half> [[A]], i64 2
-; CHECK: [[ie2:%.*]] = fmul half [[ee2]], 0xH2478
-; CHECK: [[ee3:%.*]] = extractelement <4 x half> [[A]], i64 3
-; CHECK: [[ie3:%.*]] = fmul half [[ee3]], 0xH2478
-; CHECK: [[TMP0:%.*]] = insertelement <4 x half> poison, half [[ie0]], i64 0
-; CHECK: [[TMP1:%.*]] = insertelement <4 x half> %[[TMP0]], half [[ie1]], i64 1
-; CHECK: [[TMP2:%.*]] = insertelement <4 x half> %[[TMP1]], half [[ie2]], i64 2
-; CHECK: [[TMP3:%.*]] = insertelement <4 x half> %[[TMP2]], half [[ie3]], i64 3
-; CHECK: ret <4 x half> [[TMP3]]
-;
-entry:
-  %elt.radians = call <4 x half> @llvm.dx.radians.v4f16(<4 x half> %a)
-  ret <4 x half> %elt.radians
-}
-
-define noundef <4 x float> @radians_float_vector(<4 x float> noundef %a) {
-; CHECK-LABEL: define noundef <4 x float> @radians_float_vector(
-; CHECK-SAME: <4 x float> noundef [[A:%.*]]) {
-; CHECK-NEXT:  [[ENTRY:.*:]]
-; CHECK: [[ee0:%.*]] = extractelement <4 x float> [[A]], i64 0
-; CHECK: [[ie0:%.*]] = fmul float [[ee0]], 0x3F91DF46A0000000
-; CHECK: [[ee1:%.*]] = extractelement <4 x float> [[A]], i64 1
-; CHECK: [[ie1:%.*]] = fmul float [[ee1]], 0x3F91DF46A0000000
-; CHECK: [[ee2:%.*]] = extractelement <4 x float> [[A]], i64 2
-; CHECK: [[ie2:%.*]] = fmul float [[ee2]], 0x3F91DF46A0000000
-; CHECK: [[ee3:%.*]] = extractelement <4 x float> [[A]], i64 3
-; CHECK: [[ie3:%.*]] = fmul float [[ee3]], 0x3F91DF46A0000000
-; CHECK: [[TMP0:%.*]] = insertelement <4 x float> poison, float [[ie0]], i64 0
-; CHECK: [[TMP1:%.*]] = insertelement <4 x float> %[[TMP0]], float [[ie1]], i64 1
-; CHECK: [[TMP2:%.*]] = insertelement <4 x float> %[[TMP1]], float [[ie2]], i64 2
-; CHECK: [[TMP3:%.*]] = insertelement <4 x float> %[[TMP2]], float [[ie3]], i64 3
-; CHECK: ret <4 x float> [[TMP3]]
-;
-entry:
-  %elt.radians = call <4 x float> @llvm.dx.radians.v4f32(<4 x float> %a)
-  ret <4 x float> %elt.radians
-}
-



More information about the llvm-commits mailing list