Nashe Mncube
67dd2019ac
Recommit [AArch64][SVE]Use FeatureUseFixedOverScalableIfEqualCost for A510/A520 ( #134606 )
...
Recommit. This work was done by #132246 but failed buildbots due to the
test introduced needing updates
Inefficient SVE codegen occurs on at least two in-order cores, those
being Cortex-A510 and Cortex-A520. For example a simple vector add
```
void foo(float a, float b, float dst, unsigned n) {
for (unsigned i = 0; i < n; ++i)
dst[i] = a[i] + b[i];
}
```
Vectorizes the inner loop into the following interleaved sequence of
instructions.
```
add x12, x1, x10
ld1b { z0.b }, p0/z, [x1, x10]
add x13, x2, x10
ld1b { z1.b }, p0/z, [x2, x10]
ldr z2, [x12, #1 , mul vl]
ldr z3, [x13, #1 , mul vl]
dech x11
add x12, x0, x10
fadd z0.s, z1.s, z0.s
fadd z1.s, z3.s, z2.s
st1b { z0.b }, p0, [x0, x10]
addvl x10, x10, #2
str z1, [x12, #1 , mul vl]
```
By adjusting the target features to prefer fixed over scalable if the
cost is equal we get the following vectorized loop.
```
ldp q0, q3, [x11, #-16]
subs x13, x13, #8
ldp q1, q2, [x10, #-16]
add x10, x10, #32
add x11, x11, #32
fadd v0.4s, v1.4s, v0.4s
fadd v1.4s, v2.4s, v3.4s
stp q0, q1, [x12, #-16]
add x12, x12, #32
```
Which is more efficient.
2025-04-07 14:09:43 +01:00
..
2025-04-07 14:09:43 +01:00
2025-03-04 17:19:06 -06:00
2025-04-04 15:44:26 +01:00
2025-01-14 22:07:38 +00:00
2025-03-26 21:03:50 +00:00
2025-03-28 21:48:59 +00:00
2025-04-04 15:44:26 +01:00
2025-04-04 15:44:26 +01:00
2025-03-25 12:57:24 +00:00
2025-04-04 15:44:26 +01:00
2024-11-21 08:06:56 +00:00
2025-04-04 15:44:26 +01:00
2024-11-06 11:53:33 +00:00
2025-02-27 17:43:24 +00:00
2024-12-29 19:05:08 +00:00
2024-11-06 11:53:33 +00:00
2025-03-26 21:03:50 +00:00
2024-09-04 16:28:39 +05:30
2025-03-15 21:32:48 +00:00
2024-09-19 09:41:25 +01:00
2025-03-25 12:57:24 +00:00
2025-04-05 16:22:47 +01:00
2025-01-23 22:29:30 +00:00
2025-04-04 15:44:26 +01:00
2025-01-05 15:50:42 +00:00
2025-04-05 16:22:47 +01:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-04-04 15:34:45 +02:00
2025-03-26 21:03:50 +00:00
2025-04-04 15:44:26 +01:00
2025-01-30 10:37:00 +00:00
2025-04-04 11:48:01 +01:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-01-14 22:07:38 +00:00
2025-03-26 21:03:50 +00:00
2025-01-29 08:09:50 +00:00
2025-01-29 08:09:50 +00:00
2025-01-29 08:09:50 +00:00
2025-03-25 12:57:24 +00:00
2024-12-05 14:36:40 +01:00
2025-03-28 21:48:59 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2025-04-04 15:44:26 +01:00
2025-04-04 15:44:26 +01:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2024-12-05 14:36:40 +01:00
2025-03-25 12:57:24 +00:00
2024-08-27 11:55:47 +01:00
2024-12-05 14:36:40 +01:00
2025-03-14 15:50:49 +00:00
2024-12-15 20:46:52 +00:00
2024-11-21 08:06:56 +00:00
2025-02-09 11:20:20 +00:00
2025-02-27 17:43:24 +00:00
2025-04-05 16:22:47 +01:00
2024-11-06 11:53:33 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2024-11-21 08:06:56 +00:00
2025-03-25 12:57:24 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2025-04-02 17:23:00 +01:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2025-03-28 21:48:59 +00:00
2025-03-26 21:03:50 +00:00
2025-01-29 16:56:47 +01:00
2025-02-09 11:20:20 +00:00
2025-03-25 12:57:24 +00:00
2025-02-09 11:20:20 +00:00
2025-03-25 12:57:24 +00:00
2025-03-11 21:19:14 +00:00
2025-02-26 13:57:51 +00:00
2025-04-02 10:26:48 +01:00
2025-03-26 21:03:50 +00:00
2024-12-12 16:48:31 +08:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2024-12-10 20:09:18 +08:00
2025-03-26 21:03:50 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2025-01-27 21:35:36 +00:00
2025-03-25 12:57:24 +00:00
2025-04-04 15:44:26 +01:00
2024-12-05 14:36:40 +01:00
2025-01-29 08:09:50 +00:00
2025-02-20 17:01:49 +01:00
2025-03-27 20:29:37 +09:00
2025-04-04 15:44:26 +01:00
2024-12-18 09:25:45 +00:00
2024-12-18 09:25:45 +00:00
2024-12-18 19:06:34 +01:00
2025-02-28 12:56:12 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2024-08-11 20:38:36 +02:00
2025-03-25 12:57:24 +00:00
2024-12-18 19:06:34 +01:00
2025-01-29 08:09:50 +00:00
2024-11-21 08:06:56 +00:00
2025-03-25 12:57:24 +00:00
2025-01-29 08:09:50 +00:00
2025-03-25 12:57:24 +00:00
2025-01-29 08:09:50 +00:00
2025-03-25 12:57:24 +00:00
2025-04-04 15:44:26 +01:00
2024-10-02 10:28:54 +01:00
2025-03-09 15:05:35 +00:00
2024-12-16 11:55:48 +08:00
2024-11-06 11:53:33 +00:00
2024-11-06 11:53:33 +00:00
2025-03-09 18:13:06 +00:00
2024-11-06 11:53:33 +00:00
2025-02-17 16:40:37 +01:00
2024-11-06 11:53:33 +00:00
2025-03-16 11:37:58 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2024-11-07 14:09:45 +01:00
2025-01-29 16:56:47 +01:00
2025-03-25 12:57:24 +00:00
2024-11-21 08:06:56 +00:00
2024-09-14 21:21:55 +01:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2024-11-06 11:53:33 +00:00
2025-03-23 09:06:01 +00:00
2024-11-06 11:53:33 +00:00
2025-04-04 15:44:26 +01:00
2025-04-04 15:44:26 +01:00
2025-02-09 11:20:20 +00:00
2025-03-25 12:57:24 +00:00
2025-04-04 15:44:26 +01:00
2025-03-11 21:19:14 +00:00
2024-10-10 20:04:46 +01:00
2025-02-15 21:54:16 +01:00
2025-02-15 21:54:16 +01:00
2025-03-26 21:03:50 +00:00
2025-03-15 21:32:48 +00:00
2024-12-27 10:37:21 +08:00
2025-03-25 12:57:24 +00:00
2025-02-09 11:20:20 +00:00
2025-01-29 16:56:47 +01:00
2025-01-29 16:56:47 +01:00
2025-04-04 15:44:26 +01:00
2025-04-04 15:44:26 +01:00
2025-03-14 09:08:32 +08:00
2025-03-26 21:03:50 +00:00
2024-11-21 08:06:56 +00:00
2025-04-04 15:44:26 +01:00
2025-03-11 21:19:14 +00:00
2025-03-25 12:57:24 +00:00
2024-12-05 14:36:40 +01:00
2024-09-19 09:41:25 +01:00
2025-03-25 12:57:24 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-04-02 17:22:40 +01:00
2025-03-25 12:57:24 +00:00
2025-04-02 17:22:40 +01:00
2025-03-25 12:57:24 +00:00
2025-01-12 20:10:28 +00:00
2025-02-26 13:57:51 +00:00
2024-12-29 19:05:08 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2024-11-21 11:21:12 +00:00
2024-11-21 11:21:12 +00:00
2024-09-20 11:22:03 +01:00
2025-01-29 08:09:50 +00:00
2025-03-26 21:03:50 +00:00
2024-11-06 11:53:33 +00:00
2025-01-29 08:09:50 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-26 21:03:50 +00:00
2025-03-26 21:03:50 +00:00
2025-03-26 21:03:50 +00:00
2025-03-26 21:03:50 +00:00
2025-03-25 12:57:24 +00:00
2025-04-04 15:44:26 +01:00
2025-03-25 12:57:24 +00:00
2025-03-26 12:09:59 +00:00
2024-10-17 16:50:59 +01:00
2025-02-15 21:54:16 +01:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-04-04 15:44:26 +01:00
2025-04-04 15:44:26 +01:00
2025-03-26 21:03:50 +00:00
2025-02-17 09:51:35 +00:00
2025-04-04 15:44:26 +01:00
2025-04-04 15:44:26 +01:00
2025-04-04 15:44:26 +01:00
2025-04-04 15:44:26 +01:00
2025-04-04 15:44:26 +01:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2024-12-05 14:36:40 +01:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-28 21:48:59 +00:00
2025-01-29 08:09:50 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2024-08-21 12:02:54 +02:00
2025-03-25 12:57:24 +00:00
2025-03-26 21:03:50 +00:00
2024-08-19 12:40:20 +01:00
2024-12-11 21:11:05 +00:00
2025-03-25 12:57:24 +00:00
2024-10-16 06:10:19 +01:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-01-29 08:09:50 +00:00
2024-09-19 18:50:10 +01:00
2024-12-05 14:36:40 +01:00
2025-03-25 12:57:24 +00:00
2025-03-31 07:55:48 +01:00
2025-01-19 19:15:45 +00:00
2025-04-04 15:44:26 +01:00
2024-09-06 11:20:14 +02:00
2025-03-25 12:57:24 +00:00
2025-03-25 12:57:24 +00:00
2025-03-28 21:48:59 +00:00
2024-12-29 19:05:08 +00:00
2025-03-10 20:28:56 +00:00
2025-03-28 21:48:59 +00:00
2025-03-28 21:48:59 +00:00
2025-03-09 15:05:35 +00:00
2025-03-28 21:48:59 +00:00
2025-03-28 21:48:59 +00:00
2025-03-28 21:48:59 +00:00
2025-04-04 15:44:26 +01:00
2025-01-29 08:09:50 +00:00
2024-11-06 11:53:33 +00:00
2025-03-19 21:35:15 +00:00
2025-02-26 13:57:51 +00:00
2025-03-28 21:48:59 +00:00
2025-03-25 12:57:24 +00:00