[llvm] Add FPMR register and update dependencies of FP8 instructions (PR #102910)
Paul Walker via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 14 10:20:31 PDT 2024
================
@@ -10306,15 +10316,47 @@ class sve2_fp8_mla_long_long_by_indexed_elem<bits<2> TT, string mnemonic>
let Constraints = "$Zda = $_Zda";
let DestructiveInstType = DestructiveOther;
let ElementSize = ZPR32.ElementSize;
+ let Uses = [FPMR, FPCR];
+}
+
+class sve_fp8_dot_indexed<bit bf, ZPRRegOp dst_ty, Operand iop_ty, string mnemonic>
+: I<(outs dst_ty:$Zda), (ins dst_ty:$_Zda, ZPR8:$Zn, ZPR3b8:$Zm, iop_ty:$iop),
+ mnemonic, "\t$Zda, $Zn, $Zm$iop", "", []>, Sched<[]> {
+ bits<5> Zda;
+ bits<5> Zn;
+ bits<3> Zm;
+ let Inst{31-23} = 0b011001000;
+ let Inst{22} = bf;
+ let Inst{21} = 0b1;
+ let Inst{18-16} = Zm;
+ let Inst{15-12} = 0b0100;
+ let Inst{10} = 0b1;
+ let Inst{9-5} = Zn;
+ let Inst{4-0} = Zda;
+
+ let Uses = [FPMR, FPCR];
+ let Constraints = "$Zda = $_Zda";
+ let DestructiveInstType = DestructiveOther;
+ let hasSideEffects = 0;
+ let mayRaiseFPException = 1;
}
// FP8 Widening Dot-Product - Indexed Group
-multiclass sve2_fp8_dot_indexed<string mnemonic>{
- def NAME : sve_float_dot_indexed<0b0, ZPR16, ZPR8, ZPR3b8, VectorIndexH, mnemonic> {
+multiclass sve2_fp8_dot_indexed_h<string asm>{
+ def NAME : sve_fp8_dot_indexed<0b0, ZPR16, VectorIndexH, asm> {
bits<3> iop;
+
let Inst{20-19} = iop{2-1};
- let Inst{11} = iop{0};
- let Inst{10} = 0b1;
+ let Inst{11} = iop{0};
+ }
+}
+
+multiclass sve2_fp8_dot_indexed_s<string asm>{
+ def NAME : sve_fp8_dot_indexed<0b1, ZPR32, VectorIndexS32b, asm> {
+ bits<3> iop;
+
+ let Inst{20-19} = iop{1-0};
+ let Inst{11} = 0b0;
----------------
paulwalker-arm wrote:
With the above suggestion, this line can be deleted.
https://github.com/llvm/llvm-project/pull/102910
More information about the llvm-commits
mailing list