================
@@ -608,12 +610,41 @@ def DOT2_BF16_Profile
 let SubtargetPredicate = HasDot12Insts  in {
 
 defm V_DOT2_F32_BF16 : VOP3PInstDotWithDual<"v_dot2_f32_bf16", 
DOT2_BF16_Profile,
-  int_amdgcn_fdot2_f32_bf16>;
+  int_amdgcn_fdot2_f32_bf16, 0xD, "v_dot2acc_f32_bf16">;
 
 } // End SubtargetPredicate = HasDot12Insts
 
 } // End let IsDOT = 1
 
+let IsDOT = 1, OtherPredicates = [HasOnlyDualDot2AccF32F16] in
+def V_DOT2ACC_F32_F16_PSEUDO : VOP3P_Pseudo<"", 
VOP3P_Profile<VOP_F32_V2F16_V2F16_F32, VOP3_REGULAR>> {
+  let Constraints = "$vdst = $src2";
+}
+
+let SubtargetPredicate = HasOnlyDualDot2AccF32F16 in
+def : GCNPat<
+  (f32 (AMDGPUfdot2 (v2f16 (VOP3PNoModsDOT v2f16:$src0)),
+                    (v2f16 (VOP3PNoModsDOT v2f16:$src1)),
+                    (f32 (VOP3PNoModsF32 f32:$src2)),
+                    (i1 DSTCLAMP.NONE))),
+  (f32 (V_DOT2ACC_F32_F16_PSEUDO (i32 8), $src0, (i32 8), $src1, (i32 8), 
$src2))
+>;
+
+let IsDOT = 1, OtherPredicates = [HasOnlyDualDot2AccF32BF16] in
+def V_DOT2ACC_F32_BF16_PSEUDO : VOP3P_Pseudo<"", DOT2_BF16_Profile> {
+  let Constraints = "$vdst = $src2";
----------------
mbrkusanin wrote:

can be above with other `let`s

https://github.com/llvm/llvm-project/pull/179226
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to