[llvm] [AArch64] C1-Premium SME definitions (PR #212482)

Asher Dobrescu via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 5 06:42:02 PDT 2026


================
@@ -0,0 +1,301 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=aarch64 -mcpu=c1-premium -instruction-tables -mattr=+mca-streaming-sched < %p/../Inputs/streaming-cme-instructions.s 2>&1 | FileCheck %s --check-prefixes=STREAMING
+# RUN: llvm-mca -mtriple=aarch64 -mcpu=c1-premium -instruction-tables < %p/../Inputs/streaming-cme-instructions.s 2>&1 | FileCheck %s --check-prefix=NONSTREAMING
+
+# STREAMING:         warning: AArch64 streaming SVE scheduling is enabled via '-mattr=+mca-streaming-sched'; llvm-mca results are approximate.
+
+# 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      2     0.50                        fadd	s0, s1, s2
+# NONSTREAMING-NEXT:  1      3     0.50                        fcvtzs	w0, s1
+# NONSTREAMING-NEXT:  1      2     0.50                        frintz	s0, s1
+# NONSTREAMING-NEXT:  1      3     1.00                        scvtf	s0, w0
+# NONSTREAMING-NEXT:  1      3     1.00                        fmov	d0, x0
+# NONSTREAMING-NEXT:  1      4     0.50                        fnmadd	s0, s1, s2, s3
+# NONSTREAMING-NEXT:  1      6     0.25    *                   ldr	s0, [x0]
+# NONSTREAMING-NEXT:  1      7     0.25    *                   ldr	q0, [x0, x1, lsl #4]
+# NONSTREAMING-NEXT:  1      2     0.50           *            str	s0, [x0]
+# NONSTREAMING-NEXT:  1      2     0.50                        fadd	v0.4s, v1.4s, v2.4s
+# NONSTREAMING-NEXT:  1      4     0.50                        bfdot	v0.4s, v1.8h, v2.8h
+# NONSTREAMING-NEXT:  1      2     0.50                        add	z0.s, z1.s, z2.s
+# NONSTREAMING-NEXT:  1      4     1.00                        andv	b0, p7, z31.b
+# NONSTREAMING-NEXT:  1      8     1.00                        clastb	w0, p0, w0, z2.s
+# NONSTREAMING-NEXT:  1      5     1.00                        mov	z0.s, p0/m, w0
+# NONSTREAMING-NEXT:  1      3     1.00                        mov	z0.s, w0
+# NONSTREAMING-NEXT:  1      2     0.50                        fmov	z0.h, #1.00000000
+# NONSTREAMING-NEXT:  1      2     0.50                        ext	z0.b, z0.b, z1.b, #1
+# NONSTREAMING-NEXT:  1      2     0.50                        tbl	z0.b, { z0.b, z1.b }, z2.b
+# NONSTREAMING-NEXT:  1      2     0.50                        fadd	z0.s, p0/m, z0.s, z1.s
+# NONSTREAMING-NEXT:  1      3     0.50                        fmul	z0.s, p0/m, z0.s, z1.s
+# NONSTREAMING-NEXT:  1      2     0.50                        fmin	z0.s, p0/m, z0.s, z1.s
+# NONSTREAMING-NEXT:  1      2     0.50                        fmov	z0.s, p0/m, #1.00000000
+# NONSTREAMING-NEXT:  1      4     0.50                        bfdot	z0.s, z1.h, z2.h
+# NONSTREAMING-NEXT:  1      6     0.25    *                   ld1w	{ z0.s }, p0/z, [x0]
+# NONSTREAMING-NEXT:  1      8     1.00    *                   ld2w	{ z0.s, z1.s }, p0/z, [x0]
+# NONSTREAMING-NEXT:  1      9     0.50    *                   ld1d	{ z0.d }, p0/z, [x0, z0.d, uxtw]
+# NONSTREAMING-NEXT:  1      2     0.50           *            st1w	{ z0.s }, p0, [x0]
+# NONSTREAMING-NEXT:  1      4     0.50           *            st2w	{ z0.s, z1.s }, p0, [x0]
+# NONSTREAMING-NEXT:  1      2     0.50           *            st1w	{ z0.s }, p0, [x0, z0.s, uxtw]
+# NONSTREAMING-NEXT:  1      2     0.50                        eor3	z0.d, z0.d, z1.d, z2.d
+# NONSTREAMING-NEXT:  1      4     0.50                        sabalb	z0.s, z1.h, z2.h
+# NONSTREAMING-NEXT:  1      4     0.50                        sadalp	z0.d, p0/m, z1.s
+# NONSTREAMING-NEXT:  1      4     0.50                        ssra	z0.d, z1.d, #1
+# NONSTREAMING-NEXT:  1      4     0.50                        mla	z0.d, p0/m, z1.d, z2.d
+# NONSTREAMING-NEXT:  1      7     1.00                        index	z0.s, w0, #1
+# NONSTREAMING-NEXT:  1      7     1.00                        index	z0.s, #0, w0
+# NONSTREAMING-NEXT:  1      7     1.00                        index	z0.s, w0, w1
+# NONSTREAMING-NEXT:  1      5     1.00                        insr	z0.s, w0
+# NONSTREAMING-NEXT:  1      5     1.00                        lasta	d0, p7, z31.d
+# NONSTREAMING-NEXT:  1      4     1.00                        faddv	d0, p0, z1.d
+# NONSTREAMING-NEXT:  1      4     1.00                        fmaxnmv	d0, p0, z1.d
+# NONSTREAMING-NEXT:  1      8     1.00                        sqcvtn	z0.h, { z0.s, z1.s }
+# NONSTREAMING-NEXT:  1      8     2.00                        uaddv	d0, p7, z31.b
+
+# STREAMING:         [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# STREAMING-NEXT:     1      4     0.50                        fadd	s0, s1, s2
+# STREAMING-NEXT:     1      4     0.50                        fcvtzs	w0, s1
+# STREAMING-NEXT:     1      4     0.50                        frintz	s0, s1
+# STREAMING-NEXT:     1      4     1.00                        scvtf	s0, w0
+# STREAMING-NEXT:     1      4     1.00                        fmov	d0, x0
+# STREAMING-NEXT:     1      4     0.50                        fnmadd	s0, s1, s2, s3
+# STREAMING-NEXT:     1      2     1.00    *                   ldr	s0, [x0]
+# STREAMING-NEXT:     1      2     1.00    *                   ldr	q0, [x0, x1, lsl #4]
+# STREAMING-NEXT:     1      2     1.00           *            str	s0, [x0]
+# STREAMING-NEXT:     1      2     0.50                        fadd	v0.4s, v1.4s, v2.4s
+# STREAMING-NEXT:     1      4     0.50                        bfdot	v0.4s, v1.8h, v2.8h
+# STREAMING-NEXT:     1      2     0.50                        add	z0.s, z1.s, z2.s
+# STREAMING-NEXT:     1      16    1.50                        andv	b0, p7, z31.b
+# STREAMING-NEXT:     1      8     1.00                        clastb	w0, p0, w0, z2.s
+# STREAMING-NEXT:     1      5     1.00                        mov	z0.s, p0/m, w0
+# STREAMING-NEXT:     1      4     1.00                        mov	z0.s, w0
+# STREAMING-NEXT:     1      1     0.50                        fmov	z0.h, #1.00000000
+# STREAMING-NEXT:     1      4     0.50                        ext	z0.b, z0.b, z1.b, #1
+# STREAMING-NEXT:     1      4     1.00                        tbl	z0.b, { z0.b, z1.b }, z2.b
+# STREAMING-NEXT:     1      2     0.50                        fadd	z0.s, p0/m, z0.s, z1.s
+# STREAMING-NEXT:     1      4     0.50                        fmul	z0.s, p0/m, z0.s, z1.s
+# STREAMING-NEXT:     1      4     0.50                        fmin	z0.s, p0/m, z0.s, z1.s
+# STREAMING-NEXT:     1      1     0.50                        fmov	z0.s, p0/m, #1.00000000
+# STREAMING-NEXT:     1      4     0.50                        bfdot	z0.s, z1.h, z2.h
+# STREAMING-NEXT:     1      2     1.00    *                   ld1w	{ z0.s }, p0/z, [x0]
+# STREAMING-NEXT:     1      2     1.00    *                   ld2w	{ z0.s, z1.s }, p0/z, [x0]
+# STREAMING-NEXT:     1      9     0.50    *                   ld1d	{ z0.d }, p0/z, [x0, z0.d, uxtw]
+# STREAMING-NEXT:     1      2     1.00           *            st1w	{ z0.s }, p0, [x0]
+# STREAMING-NEXT:     1      2     1.00           *            st2w	{ z0.s, z1.s }, p0, [x0]
+# STREAMING-NEXT:     1      2     0.50           *            st1w	{ z0.s }, p0, [x0, z0.s, uxtw]
+# STREAMING-NEXT:     1      2     0.50                        eor3	z0.d, z0.d, z1.d, z2.d
+# STREAMING-NEXT:     1      4     0.50                        sabalb	z0.s, z1.h, z2.h
+# STREAMING-NEXT:     1      4     0.50                        sadalp	z0.d, p0/m, z1.s
+# STREAMING-NEXT:     1      4     0.50                        ssra	z0.d, z1.d, #1
+# STREAMING-NEXT:     1      4     0.50                        mla	z0.d, p0/m, z1.d, z2.d
+# STREAMING-NEXT:     1      4     1.00                        index	z0.s, w0, #1
+# STREAMING-NEXT:     1      4     1.00                        index	z0.s, #0, w0
+# STREAMING-NEXT:     1      12    2.50                        index	z0.s, w0, w1
+# STREAMING-NEXT:     1      4     1.00                        insr	z0.s, w0
+# STREAMING-NEXT:     1      8     1.00                        lasta	d0, p7, z31.d
----------------
Asher8118 wrote:

This is showing incorrect execution information. For SIMD and FP scalar form, extract instruction should show L4 and T1 and use pipeline PERMF. Please also add an example for extract operation, scalar form, which is also showing incorrect execution information. It should show L8 T1 and use pipelines VXALU and PERMF.

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


More information about the llvm-commits mailing list