1 # NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
2 # RUN: llvm-mca -march=aarch64 -mcpu=exynos-m3 -resource-pressure=false -noalias=false < %s | FileCheck %s -check-prefixes=ALL,M3
3 # RUN: llvm-mca -march=aarch64 -mcpu=exynos-m4 -resource-pressure=false -noalias=false < %s | FileCheck %s -check-prefixes=ALL,M4
4 # RUN: llvm-mca -march=aarch64 -mcpu=exynos-m5 -resource-pressure=false -noalias=false < %s | FileCheck %s -check-prefixes=ALL,M5
18 str d0
, [sp
, x0
, lsl
#3]
19 str q0
, [sp
, x0
, lsl
#4]
24 str h0
, [sp
, w0
, sxtw
#1]
25 str q0
, [sp
, w0
, uxtw
#4]
27 str s0
, [sp
, w0
, sxtw
]
28 str q0
, [sp
, w0
, uxtw
]
34 stp q0
, q1
, [sp
, #32]!
39 # ALL: Iterations: 100
40 # ALL-NEXT: Instructions: 2200
42 # M3-NEXT: Total Cycles: 3203
43 # M3-NEXT: Total uOps: 2900
45 # M4-NEXT: Total Cycles: 3203
46 # M4-NEXT: Total uOps: 3000
48 # M5-NEXT: Total Cycles: 2803
49 # M5-NEXT: Total uOps: 2500
51 # ALL: Dispatch Width: 6
53 # M3-NEXT: uOps Per Cycle: 0.91
55 # M3-NEXT: Block RThroughput: 22.0
57 # M4-NEXT: uOps Per Cycle: 0.94
59 # M4-NEXT: Block RThroughput: 12.5
61 # M5-NEXT: uOps Per Cycle: 0.89
63 # M5-NEXT: Block RThroughput: 11.0
65 # ALL: Instruction Info:
66 # ALL-NEXT: [1]: #uOps
67 # ALL-NEXT: [2]: Latency
68 # ALL-NEXT: [3]: RThroughput
69 # ALL-NEXT: [4]: MayLoad
70 # ALL-NEXT: [5]: MayStore
71 # ALL-NEXT: [6]: HasSideEffects (U)
73 # ALL: [1] [2] [3] [4] [5] [6] Instructions:
75 # M3-NEXT: 1 1 1.00 * stur d0, [sp, #2]
76 # M3-NEXT: 1 1 1.00 * stur q0, [sp, #16]
77 # M3-NEXT: 1 1 1.00 * str b0, [sp], #1
78 # M3-NEXT: 1 1 1.00 * str q0, [sp], #16
79 # M3-NEXT: 1 1 1.00 * str h0, [sp, #2]!
80 # M3-NEXT: 1 1 1.00 * str q0, [sp, #16]!
81 # M3-NEXT: 1 1 1.00 * str s0, [sp, #4]
82 # M3-NEXT: 1 1 1.00 * str q0, [sp, #16]
83 # M3-NEXT: 1 1 1.00 * str d0, [sp, x0, lsl #3]
84 # M3-NEXT: 2 3 1.00 * str q0, [sp, x0, lsl #4]
85 # M3-NEXT: 1 1 1.00 * str b0, [sp, x0]
86 # M3-NEXT: 1 1 1.00 * str q0, [sp, x0]
87 # M3-NEXT: 2 3 1.00 * str h0, [sp, w0, sxtw #1]
88 # M3-NEXT: 2 3 1.00 * str q0, [sp, w0, uxtw #4]
89 # M3-NEXT: 2 3 1.00 * str s0, [sp, w0, sxtw]
90 # M3-NEXT: 2 3 1.00 * str q0, [sp, w0, uxtw]
91 # M3-NEXT: 1 1 1.00 * stp d0, d1, [sp], #16
92 # M3-NEXT: 2 1 1.00 * stp q0, q1, [sp], #32
93 # M3-NEXT: 1 1 1.00 * stp s0, s1, [sp, #8]!
94 # M3-NEXT: 2 1 1.00 * stp q0, q1, [sp, #32]!
95 # M3-NEXT: 1 1 1.00 * stp d0, d1, [sp, #16]
96 # M3-NEXT: 1 1 1.00 * stp q0, q1, [sp, #32]
98 # M4-NEXT: 1 1 0.50 * stur d0, [sp, #2]
99 # M4-NEXT: 1 1 0.50 * stur q0, [sp, #16]
100 # M4-NEXT: 1 1 0.50 * str b0, [sp], #1
101 # M4-NEXT: 1 1 0.50 * str q0, [sp], #16
102 # M4-NEXT: 1 1 0.50 * str h0, [sp, #2]!
103 # M4-NEXT: 1 1 0.50 * str q0, [sp, #16]!
104 # M4-NEXT: 1 1 0.50 * str s0, [sp, #4]
105 # M4-NEXT: 1 1 0.50 * str q0, [sp, #16]
106 # M4-NEXT: 1 1 0.50 * str d0, [sp, x0, lsl #3]
107 # M4-NEXT: 2 3 0.50 * str q0, [sp, x0, lsl #4]
108 # M4-NEXT: 1 1 0.50 * str b0, [sp, x0]
109 # M4-NEXT: 1 1 0.50 * str q0, [sp, x0]
110 # M4-NEXT: 2 3 0.50 * str h0, [sp, w0, sxtw #1]
111 # M4-NEXT: 2 3 0.50 * str q0, [sp, w0, uxtw #4]
112 # M4-NEXT: 2 3 0.50 * str s0, [sp, w0, sxtw]
113 # M4-NEXT: 2 3 0.50 * str q0, [sp, w0, uxtw]
114 # M4-NEXT: 1 1 0.50 * stp d0, d1, [sp], #16
115 # M4-NEXT: 2 1 1.00 * stp q0, q1, [sp], #32
116 # M4-NEXT: 1 1 0.50 * stp s0, s1, [sp, #8]!
117 # M4-NEXT: 2 1 1.00 * stp q0, q1, [sp, #32]!
118 # M4-NEXT: 1 1 0.50 * stp d0, d1, [sp, #16]
119 # M4-NEXT: 2 1 1.00 * stp q0, q1, [sp, #32]
121 # M5-NEXT: 1 1 0.50 * stur d0, [sp, #2]
122 # M5-NEXT: 1 1 0.50 * stur q0, [sp, #16]
123 # M5-NEXT: 1 1 0.50 * str b0, [sp], #1
124 # M5-NEXT: 1 1 0.50 * str q0, [sp], #16
125 # M5-NEXT: 1 1 0.50 * str h0, [sp, #2]!
126 # M5-NEXT: 1 1 0.50 * str q0, [sp, #16]!
127 # M5-NEXT: 1 1 0.50 * str s0, [sp, #4]
128 # M5-NEXT: 1 1 0.50 * str q0, [sp, #16]
129 # M5-NEXT: 1 1 0.50 * str d0, [sp, x0, lsl #3]
130 # M5-NEXT: 2 3 0.50 * str q0, [sp, x0, lsl #4]
131 # M5-NEXT: 1 1 0.50 * str b0, [sp, x0]
132 # M5-NEXT: 1 1 0.50 * str q0, [sp, x0]
133 # M5-NEXT: 1 1 0.50 * str h0, [sp, w0, sxtw #1]
134 # M5-NEXT: 2 3 0.50 * str q0, [sp, w0, uxtw #4]
135 # M5-NEXT: 1 1 0.50 * str s0, [sp, w0, sxtw]
136 # M5-NEXT: 2 3 0.50 * str q0, [sp, w0, uxtw]
137 # M5-NEXT: 1 1 0.50 * stp d0, d1, [sp], #16
138 # M5-NEXT: 1 1 1.00 * stp q0, q1, [sp], #32
139 # M5-NEXT: 1 1 0.50 * stp s0, s1, [sp, #8]!
140 # M5-NEXT: 1 1 1.00 * stp q0, q1, [sp, #32]!
141 # M5-NEXT: 1 1 0.50 * stp d0, d1, [sp, #16]
142 # M5-NEXT: 1 1 1.00 * stp q0, q1, [sp, #32]