[llvm] [AArch64] C1-Premium SME defintions (PR #212482)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 29 02:46:27 PDT 2026
================
@@ -0,0 +1,367 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=aarch64 -mcpu=c1-premium -instruction-tables -mattr=sme2p2 < %p/../Inputs/sme-instructions.s | FileCheck %s --check-prefix=NONSTREAMING
+# RUN: llvm-mca -mtriple=aarch64 -mcpu=c1-premium -instruction-tables -mattr=+sme2p2,+mca-streaming-sched < %p/../Inputs/sme-instructions.s | FileCheck %s --check-prefix=STREAMING
+
+# NONSTREAMING: Instruction Info:
+# NONSTREAMING-NEXT: [1]: #uOps
+# NONSTREAMING-NEXT: [2]: Latency
+# NONSTREAMING-NEXT: [3]: RThroughput
+# NONSTREAMING-NEXT: [4]: MayLoad
+# NONSTREAMING-NEXT: [5]: MayStore
+# NONSTREAMING-NEXT: [6]: HasSideEffects (U)
+
+# STREAMING: Instruction Info:
+# STREAMING-NEXT: [1]: #uOps
+# STREAMING-NEXT: [2]: Latency
+# STREAMING-NEXT: [3]: RThroughput
+# STREAMING-NEXT: [4]: MayLoad
+# STREAMING-NEXT: [5]: MayStore
+# STREAMING-NEXT: [6]: HasSideEffects (U)
+
+# NONSTREAMING: [1] [2] [3] [4] [5] [6] Instructions:
+# NONSTREAMING-NEXT: 1 1 0.13 addspl x0, x1, #10
+# NONSTREAMING-NEXT: 1 1 0.13 addspl x0, sp, #10
+# NONSTREAMING-NEXT: 1 1 0.13 addsvl x0, x1, #10
+# NONSTREAMING-NEXT: 1 1 0.13 addsvl x0, sp, #10
+# NONSTREAMING-NEXT: 1 1 0.13 rdsvl x1, #10
+# NONSTREAMING-NEXT: 1 2 0.50 cntp x0, pn0.h, vlx2
+# NONSTREAMING-NEXT: 1 2 0.50 pext p0.h, pn8[0]
+# NONSTREAMING-NEXT: 1 3 0.50 pext { p0.h, p1.h }, pn8[0]
+# NONSTREAMING-NEXT: 1 1 0.50 ptrue pn8.h
+# NONSTREAMING-NEXT: 1 1 0.50 whilege pn8.h, x0, x0, vlx2
+# NONSTREAMING-NEXT: 1 1 0.50 whilegt pn8.h, x0, x0, vlx2
+# NONSTREAMING-NEXT: 1 1 0.50 whilehi pn8.h, x0, x0, vlx2
+# NONSTREAMING-NEXT: 1 1 0.50 whilehs pn8.h, x0, x0, vlx2
+# NONSTREAMING-NEXT: 1 1 0.50 whilele pn8.h, x0, x0, vlx2
+# NONSTREAMING-NEXT: 1 1 0.50 whilelo pn8.h, x0, x0, vlx2
+# NONSTREAMING-NEXT: 1 1 0.50 whilels pn8.h, x0, x0, vlx2
+# NONSTREAMING-NEXT: 1 1 0.50 whilelt pn8.h, x0, x0, vlx2
+# NONSTREAMING-NEXT: 1 4 0.50 bfmlslb z0.s, z1.h, z2.h
+# NONSTREAMING-NEXT: 1 4 0.50 bfmlslb z0.s, z1.h, z2.h[0]
+# NONSTREAMING-NEXT: 1 4 0.50 bfmlslt z0.s, z1.h, z2.h
+# NONSTREAMING-NEXT: 1 4 0.50 bfmlslt z0.s, z1.h, z2.h[0]
+# NONSTREAMING-NEXT: 1 2 0.50 fclamp z0.s, z1.s, z2.s
+# NONSTREAMING-NEXT: 1 4 0.50 fdot z0.s, z1.h, z2.h
+# NONSTREAMING-NEXT: 1 4 0.50 fdot z0.s, z1.h, z2.h[0]
+# NONSTREAMING-NEXT: 1 2 1.00 psel p0, p0, p0.b[w12, 0]
+# NONSTREAMING-NEXT: 1 2 0.50 revd z0.q, p0/m, z0.q
+# NONSTREAMING-NEXT: 1 2 0.50 sclamp z0.s, z1.s, z2.s
+# NONSTREAMING-NEXT: 1 2 0.50 uclamp z0.s, z1.s, z2.s
+# NONSTREAMING-NEXT: 1 3 0.50 sdot z0.s, z0.h, z0.h
+# NONSTREAMING-NEXT: 1 3 0.50 sdot z0.s, z0.h, z0.h[0]
+# NONSTREAMING-NEXT: 1 3 0.50 udot z0.s, z0.h, z0.h
+# NONSTREAMING-NEXT: 1 3 0.50 udot z0.s, z0.h, z0.h[0]
+# NONSTREAMING-NEXT: 1 8 1.00 sqcvtn z0.h, { z0.s, z1.s }
+# NONSTREAMING-NEXT: 1 2 0.50 sqcvtun z0.h, { z0.s, z1.s }
+# NONSTREAMING-NEXT: 1 8 1.00 uqcvtn z0.h, { z0.s, z1.s }
+# NONSTREAMING-NEXT: 1 2 0.50 whilege { p0.h, p1.h }, x0, x0
+# NONSTREAMING-NEXT: 1 2 0.50 whilegt { p0.h, p1.h }, x0, x0
+# NONSTREAMING-NEXT: 1 2 0.50 whilehi { p0.h, p1.h }, x0, x0
+# NONSTREAMING-NEXT: 1 2 0.50 whilehs { p0.h, p1.h }, x0, x0
+# NONSTREAMING-NEXT: 1 2 0.50 whilele { p0.h, p1.h }, x0, x0
+# NONSTREAMING-NEXT: 1 2 0.50 whilelo { p0.h, p1.h }, x0, x0
+# NONSTREAMING-NEXT: 1 2 0.50 whilels { p0.h, p1.h }, x0, x0
+# NONSTREAMING-NEXT: 1 2 0.50 whilelt { p0.h, p1.h }, x0, x0
+# NONSTREAMING-NEXT: 1 4 0.50 bfmlslb z0.s, z1.h, z2.h
+# NONSTREAMING-NEXT: 1 4 0.50 bfmlslt z0.s, z1.h, z2.h
+# NONSTREAMING-NEXT: 1 2 0.50 fclamp z0.s, z1.s, z2.s
+# NONSTREAMING-NEXT: 1 4 0.50 fdot z0.s, z1.h, z2.h
+# NONSTREAMING-NEXT: 1 2 0.50 revd z0.q, p0/m, z0.q
+# NONSTREAMING-NEXT: 1 2 2.00 U rprfm pldkeep, x0, [x0]
+# NONSTREAMING-NEXT: 1 2 0.50 sclamp z0.s, z1.s, z2.s
+# NONSTREAMING-NEXT: 1 2 0.50 uclamp z0.s, z1.s, z2.s
+# NONSTREAMING-NEXT: 1 3 0.50 sdot z0.s, z0.h, z0.h
+# NONSTREAMING-NEXT: 1 3 0.50 udot z0.s, z0.h, z0.h
+# NONSTREAMING-NEXT: 1 8 1.00 sqcvtn z0.h, { z0.s, z1.s }
+# NONSTREAMING-NEXT: 1 8 1.00 U sqcvtun z0.b, { z0.s - z3.s }
+# NONSTREAMING-NEXT: 1 8 1.00 uqcvtn z0.h, { z0.s, z1.s }
+# NONSTREAMING-NEXT: 1 8 1.00 sqrshrn z0.h, { z0.s, z1.s }, #16
+# NONSTREAMING-NEXT: 1 8 1.00 uqrshrn z0.h, { z0.s, z1.s }, #16
+# NONSTREAMING-NEXT: 1 8 1.00 U sqrshrn z0.b, { z0.s - z3.s }, #32
+# NONSTREAMING-NEXT: 1 8 1.00 U sqrshrun z0.b, { z0.s - z3.s }, #32
+# NONSTREAMING-NEXT: 1 8 1.00 U uqrshrn z0.b, { z0.s - z3.s }, #32
+
+# STREAMING: [1] [2] [3] [4] [5] [6] Instructions:
+# STREAMING-NEXT: 1 1 0.13 addspl x0, x1, #10
+# STREAMING-NEXT: 1 1 0.13 addspl x0, sp, #10
+# STREAMING-NEXT: 1 1 0.13 addsvl x0, x1, #10
+# STREAMING-NEXT: 1 1 0.13 addsvl x0, sp, #10
+# STREAMING-NEXT: 1 1 0.13 rdsvl x1, #10
+# STREAMING-NEXT: 1 2 0.50 cntp x0, pn0.h, vlx2
+# STREAMING-NEXT: 1 2 0.50 pext p0.h, pn8[0]
+# STREAMING-NEXT: 1 3 0.50 pext { p0.h, p1.h }, pn8[0]
+# STREAMING-NEXT: 1 1 0.50 ptrue pn8.h
+# STREAMING-NEXT: 1 1 0.50 whilege pn8.h, x0, x0, vlx2
+# STREAMING-NEXT: 1 1 0.50 whilegt pn8.h, x0, x0, vlx2
+# STREAMING-NEXT: 1 1 0.50 whilehi pn8.h, x0, x0, vlx2
+# STREAMING-NEXT: 1 1 0.50 whilehs pn8.h, x0, x0, vlx2
+# STREAMING-NEXT: 1 1 0.50 whilele pn8.h, x0, x0, vlx2
+# STREAMING-NEXT: 1 1 0.50 whilelo pn8.h, x0, x0, vlx2
+# STREAMING-NEXT: 1 1 0.50 whilels pn8.h, x0, x0, vlx2
+# STREAMING-NEXT: 1 1 0.50 whilelt pn8.h, x0, x0, vlx2
+# STREAMING-NEXT: 1 4 1.00 bfmlslb z0.s, z1.h, z2.h
+# STREAMING-NEXT: 1 4 1.00 bfmlslb z0.s, z1.h, z2.h[0]
+# STREAMING-NEXT: 1 4 1.00 bfmlslt z0.s, z1.h, z2.h
+# STREAMING-NEXT: 1 4 1.00 bfmlslt z0.s, z1.h, z2.h[0]
+# STREAMING-NEXT: 1 5 1.00 fclamp z0.s, z1.s, z2.s
+# STREAMING-NEXT: 1 4 1.00 fdot z0.s, z1.h, z2.h
----------------
walkerkd wrote:
rthrouhput should be 0.5 (and the following instruction)
3.3 SVE FP data processing instructions / 3-2 SVE Floating-point instructions.,Half-precision floating-point dot product
https://github.com/llvm/llvm-project/pull/212482
More information about the llvm-commits
mailing list