[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