================
@@ -1526,19 +1527,28 @@ class VOP3PWMMA_Profile<list<ValueType> ArgTy, bit 
_IsSWMMAC, int _IndexType,
   bit IsAB_BF16 = !or(!eq(ArgTy[1], v16i16), !eq(ArgTy[1], v8i16), 
!eq(ArgTy[1], v4i16),
                       !eq(ArgTy[1], v16bf16), !eq(ArgTy[1], v8bf16), 
!eq(ArgTy[1], v4bf16));
   bit IsF16BF16 = !or(IsAB_F16, IsAB_BF16);
+  bit IsAB_F4F6F8 = !and(!not(IsIU), !or(!eq(ArgTy[1], v8i32), !eq(ArgTy[1], 
v16i32),
+                                         !eq(ArgTy[1], v24i32), !eq(ArgTy[1], 
v32i32),
+                                         !eq(ArgTy[1], v48i32), !eq(ArgTy[1], 
v64i32)));
 
   bit IsC_F64 = !eq(ArgTy[3], v8f64);
   bit IsC_F32 = !or(!eq(ArgTy[3], v8f32), !eq(ArgTy[3], v4f32));
   bit IsC_BF16 = !or(!eq(ArgTy[3], v8i16), !eq(ArgTy[3], v4i16),
                      !eq(ArgTy[3], v8bf16), !eq(ArgTy[3], v4bf16));
   bit IsC_F16 = !or(!eq(ArgTy[3], v8f16), !eq(ArgTy[3], v4f16));
 
-  bit NegLo01 = !not(NoABMods);
+  bit NegLo0 = !not(NoABMods);
+  bit NegLo1 = !not(NoABMods);
   bit NegLo2 = !and(!not(IsIU), IsWMMA);
-  bit NegHi01 = IsF16BF16; // Only F16BF16 can have neg_hi[0:1]
+  bit NegHi0 = !and(IsF16BF16, !not(NoABMods)); // Only F16BF16 can have 
neg_hi[0]
----------------
shiltian wrote:

In the long run, I wonder if it would be better to make all of these arguments, 
like `bit<3> HasNegLo`, `bit<3> HasNegHi`, etc. I feel like the HW team can 
always surprise us in future targets.

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

Reply via email to