[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