| /* { dg-additional-options "-O2 -fno-schedule-insns" } */ |
| /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */ |
| |
| #include "arm_sve.h" |
| |
| /* |
| ** foo: |
| ** ptrue (p[0-7])\.d, all |
| ** pfalse (p[0-7])\.b |
| ** ptrue (p[0-7])\.s, all |
| ** trn1 (p[0-7])\.d, \2\.d, \3\.d |
| ** trn1 \2\.d, \1\.d, \3\.d |
| ** faddv (h[0-31]), \4\, (z[0-31]).h |
| ** faddv (h[0-31]), \2\, \6\.h |
| ** str \5, [x0] |
| ** str \7, [x0, 2] |
| ** ret |
| */ |
| void foo(svfloat16_t in, float16_t *dst) { |
| const svbool_t pg_q0 = svdupq_n_b16(1, 0, 1, 0, 0, 0, 0, 0); |
| const svbool_t pg_f0 = svdupq_n_b16(1, 0, 0, 0, 0, 0, 0, 0); |
| dst[0] = svaddv_f16(pg_f0, in); |
| dst[1] = svaddv_f16(pg_q0, in); |
| } |
| |