================
@@ -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