[clang] [llvm] [AArch64] Implement intrinsics for SME FP8 FMOPA (PR #118115)

via cfe-commits cfe-commits at lists.llvm.org
Wed Dec 4 07:52:06 PST 2024


================
@@ -305,6 +305,21 @@ multiclass sme_outer_product_fp32<bit S, bits<2> sz, ZPRRegOp zpr_ty, string mne
   def : SME_ZA_Tile_TwoPred_TwoVec_Pat<NAME, op, timm32_0_3, nxv4i1, nxv4f32>;
 }
 
+multiclass sme2_fp8_fmopa_za32<string mnemonic, SDPatternOperator intrinsic> {
+    def NAME : sme_fp_outer_product_inst<0, 0b01, 0b00, TileOp32, ZPR8, mnemonic>, SMEPseudo2Instr<NAME, 1> {
+      bits<2> ZAda;
+      let Inst{1-0} = ZAda;
+      let Inst{2}   = 0b0;
+
----------------
CarolineConcatto wrote:

nit:
Can you do this:
....
```
  let Uses = [FPMR, FPCR]; 
  let mayStore = 1
  let mayLoad = 1
}
 def NAME # _PSEUDO : sme_outer_product_pseudo<ZPR8, SMEMatrixTileS>, SMEPseudo2Instr<NAME, 0>;
```

So it is similar to what is being done for previous instructions.

https://github.com/llvm/llvm-project/pull/118115


More information about the cfe-commits mailing list