]>
git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.target/aarch64/sve/acle/asm/bfdot_lane_f32.c
1 /* { dg-additional-options "-march=armv8.2-a+sve+bf16" } */
2 /* { dg-require-effective-target aarch64_asm_bf16_ok } */
3 /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
5 #include "test_sve_acle.h"
8 ** bfdot_lane_0_f32_tied1:
9 ** bfdot z0\.s, z4\.h, z5\.h\[0\]
12 TEST_DUAL_Z (bfdot_lane_0_f32_tied1
, svfloat32_t
, svbfloat16_t
,
13 z0
= svbfdot_lane_f32 (z0
, z4
, z5
, 0),
14 z0
= svbfdot_lane (z0
, z4
, z5
, 0))
17 ** bfdot_lane_0_f32_tied2:
18 ** mov (z[0-9]+)\.d, z0\.d
20 ** bfdot z0\.s, \1\.h, z1\.h\[0\]
23 TEST_DUAL_Z_REV (bfdot_lane_0_f32_tied2
, svfloat32_t
, svbfloat16_t
,
24 z0_res
= svbfdot_lane_f32 (z4
, z0
, z1
, 0),
25 z0_res
= svbfdot_lane (z4
, z0
, z1
, 0))
28 ** bfdot_lane_0_f32_tied3:
29 ** mov (z[0-9]+)\.d, z0\.d
31 ** bfdot z0\.s, z1\.h, \1\.h\[0\]
34 TEST_DUAL_Z_REV (bfdot_lane_0_f32_tied3
, svfloat32_t
, svbfloat16_t
,
35 z0_res
= svbfdot_lane_f32 (z4
, z1
, z0
, 0),
36 z0_res
= svbfdot_lane (z4
, z1
, z0
, 0))
39 ** bfdot_lane_0_f32_untied:
41 ** bfdot z0\.s, z4\.h, z5\.h\[0\]
44 TEST_DUAL_Z (bfdot_lane_0_f32_untied
, svfloat32_t
, svbfloat16_t
,
45 z0
= svbfdot_lane_f32 (z1
, z4
, z5
, 0),
46 z0
= svbfdot_lane (z1
, z4
, z5
, 0))
50 ** bfdot z0\.s, z4\.h, z5\.h\[1\]
53 TEST_DUAL_Z (bfdot_lane_1_f32
, svfloat32_t
, svbfloat16_t
,
54 z0
= svbfdot_lane_f32 (z0
, z4
, z5
, 1),
55 z0
= svbfdot_lane (z0
, z4
, z5
, 1))
59 ** bfdot z0\.s, z4\.h, z5\.h\[3\]
62 TEST_DUAL_Z (bfdot_lane_3_f32
, svfloat32_t
, svbfloat16_t
,
63 z0
= svbfdot_lane_f32 (z0
, z4
, z5
, 3),
64 z0
= svbfdot_lane (z0
, z4
, z5
, 3))
68 ** str d8, \[sp, -16\]!
69 ** mov (z[0-7])\.d, z8\.d
70 ** bfdot z0\.s, z1\.h, \1\.h\[1\]
74 TEST_DUAL_LANE_REG (bfdot_lane_z8_f32
, svfloat32_t
, svbfloat16_t
, z8
,
75 z0
= svbfdot_lane_f32 (z0
, z1
, z8
, 1),
76 z0
= svbfdot_lane (z0
, z1
, z8
, 1))
79 ** bfdot_lane_z16_f32:
80 ** mov (z[0-7])\.d, z16\.d
81 ** bfdot z0\.s, z1\.h, \1\.h\[1\]
84 TEST_DUAL_LANE_REG (bfdot_lane_z16_f32
, svfloat32_t
, svbfloat16_t
, z16
,
85 z0
= svbfdot_lane_f32 (z0
, z1
, z16
, 1),
86 z0
= svbfdot_lane (z0
, z1
, z16
, 1))