llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-directx

Author: Kaitlin Peng (kmpeng)

<details>
<summary>Changes</summary>

Fixes #<!-- -->152585.

The `dot2add` DXILOpFunction should be `dx.op.dot2AddHalf.f32` (i.e. it has [a 
single overload that's a 
float](https://github.com/microsoft/DirectXShaderCompiler/blob/main/utils/hct/hctdb.py#L3960),
 rather than no overloads). It was also being defined for too low of a DXIL 
version - [dxc says 
SM6.4](https://github.com/microsoft/DirectXShaderCompiler/blob/main/utils/hct/hctdb.py#L740).

---
Full diff: https://github.com/llvm/llvm-project/pull/152781.diff


3 Files Affected:

- (modified) clang/test/CodeGenHLSL/builtins/dot2add.hlsl (+1-1) 
- (modified) llvm/lib/Target/DirectX/DXIL.td (+5-5) 
- (modified) llvm/test/CodeGen/DirectX/dot2add.ll (+2-2) 


``````````diff
diff --git a/clang/test/CodeGenHLSL/builtins/dot2add.hlsl 
b/clang/test/CodeGenHLSL/builtins/dot2add.hlsl
index c345e17476e08..7c3a48e476306 100644
--- a/clang/test/CodeGenHLSL/builtins/dot2add.hlsl
+++ b/clang/test/CodeGenHLSL/builtins/dot2add.hlsl
@@ -1,5 +1,5 @@
 // RUN: %clang_cc1 -finclude-default-header -fnative-half-type -triple \
-// RUN:   dxil-pc-shadermodel6.3-compute %s -emit-llvm -o - | \
+// RUN:   dxil-pc-shadermodel6.4-compute %s -emit-llvm -o - | \
 // RUN:   FileCheck %s --check-prefixes=CHECK,CHECK-DXIL
 // RUN: %clang_cc1 -finclude-default-header -fnative-half-type -triple \
 // RUN:   spirv-pc-vulkan-compute %s -emit-llvm -o - | \
diff --git a/llvm/lib/Target/DirectX/DXIL.td b/llvm/lib/Target/DirectX/DXIL.td
index 492e0784cedd0..c65ead45e2c7e 100644
--- a/llvm/lib/Target/DirectX/DXIL.td
+++ b/llvm/lib/Target/DirectX/DXIL.td
@@ -1108,11 +1108,11 @@ def RawBufferStore : DXILOp<140, rawBufferStore> {
 def Dot2AddHalf : DXILOp<162, dot2AddHalf> {
   let Doc = "2D half dot product with accumulate to float";
   let intrinsics = [IntrinSelect<int_dx_dot2add>];
-  let arguments = [FloatTy, HalfTy, HalfTy, HalfTy, HalfTy];
-  let result = FloatTy;
-  let overloads = [Overloads<DXIL1_0, []>];
-  let stages = [Stages<DXIL1_0, [all_stages]>];
-  let attributes = [Attributes<DXIL1_0, [ReadNone]>];
+  let arguments = [OverloadTy, HalfTy, HalfTy, HalfTy, HalfTy];
+  let result = OverloadTy;
+  let overloads = [Overloads<DXIL1_4, [FloatTy]>];
+  let stages = [Stages<DXIL1_4, [all_stages]>];
+  let attributes = [Attributes<DXIL1_4, [ReadNone]>];
 }
 
 def Dot4AddI8Packed : DXILOp<163, dot4AddPacked> {
diff --git a/llvm/test/CodeGen/DirectX/dot2add.ll 
b/llvm/test/CodeGen/DirectX/dot2add.ll
index 3a2bbcc074f2d..5e1cf405752ba 100644
--- a/llvm/test/CodeGen/DirectX/dot2add.ll
+++ b/llvm/test/CodeGen/DirectX/dot2add.ll
@@ -1,4 +1,4 @@
-; RUN: opt -S -dxil-op-lower -mtriple=dxil-pc-shadermodel6.3-compute %s | 
FileCheck %s
+; RUN: opt -S -dxil-op-lower -mtriple=dxil-pc-shadermodel6.4-compute %s | 
FileCheck %s
 
 define noundef float @dot2add_simple(<2 x half> noundef %a, <2 x half> noundef 
%b, float %acc) {
 entry:
@@ -7,7 +7,7 @@ entry:
   %bx = extractelement <2 x half> %b, i32 0
   %by = extractelement <2 x half> %b, i32 1
 
-; CHECK: call float @dx.op.dot2AddHalf(i32 162, float %acc, half %ax, half 
%ay, half %bx, half %by)
+; CHECK: call float @dx.op.dot2AddHalf.f32(i32 162, float %acc, half %ax, half 
%ay, half %bx, half %by)
   %ret = call float @llvm.dx.dot2add(float %acc, half %ax, half %ay, half %bx, 
half %by)
   ret float %ret
 }

``````````

</details>


https://github.com/llvm/llvm-project/pull/152781
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to