blob: 8ab117c4dcd7a731abc7e1b039e1faf0dfa09a5d [file] [log] [blame]
/* { dg-options "-O2 -fno-tree-loop-distribute-patterns" } */
/* { dg-final { check-function-bodies "**" "" "" { target lp64 } } } */
#include "ldp_stp_14.h"
/*
** const_2_float_0:
** str xzr, \[x0\]
** ret
*/
CONST_FN (2, float, 0);
/*
** const_4_float_0:
** stp xzr, xzr, \[x0\]
** ret
*/
CONST_FN (4, float, 0);
/* No preference between vectorizing or not vectorizing here. */
CONST_FN (8, float, 0);
/*
** const_16_float_0:
** movi v([0-9]+)\.4s, .*
** stp q\1, q\1, \[x0\]
** stp q\1, q\1, \[x0, #?32\]
** ret
*/
CONST_FN (16, float, 0);
/*
** const_2_float_1:
** fmov v([0-9]+)\.2s, .*
** str d\1, \[x0\]
** ret
*/
CONST_FN (2, float, 1);
/*
** const_4_float_1:
** fmov v([0-9]+)\.4s, .*
** str q\1, \[x0\]
** ret
*/
CONST_FN (4, float, 1);
/*
** dup_2_float:
** stp s0, s0, \[x0\]
** ret
*/
DUP_FN (2, float);
/* No preference between vectorizing or not vectorizing here. */
DUP_FN (4, float);
/*
** dup_8_float:
** dup v([0-9]+)\.4s, v0.s\[0\]
** stp q\1, q\1, \[x0\]
** ret
*/
DUP_FN (8, float);
/*
** cons2_1_float:
** stp s0, s1, \[x0\]
** ret
*/
CONS2_FN (1, float);
/*
** cons2_2_float:
** stp s0, s1, \[x0\]
** stp s0, s1, \[x0, #?8\]
** ret
*/
CONS2_FN (2, float);
/*
** cons2_4_float: { target aarch64_little_endian }
** ins v0.s\[1\], v1.s\[0\]
** stp d0, d0, \[x0\]
** stp d0, d0, \[x0, #?16\]
** ret
*/
/*
** cons2_4_float: { target aarch64_big_endian }
** ins v1.s\[1\], v0.s\[0\]
** stp d1, d1, \[x0\]
** stp d1, d1, \[x0, #?16\]
** ret
*/
CONS2_FN (4, float);
/*
** cons2_8_float:
** dup v([0-9]+)\.4s, .*
** ...
** stp q\1, q\1, \[x0\]
** stp q\1, q\1, \[x0, #?32\]
** ret
*/
CONS2_FN (8, float);
/*
** cons4_1_float:
** stp s0, s1, \[x0\]
** stp s2, s3, \[x0, #?8\]
** ret
*/
CONS4_FN (1, float);
/*
** cons4_2_float:
** stp s0, s1, \[x0\]
** stp s2, s3, \[x0, #?8\]
** stp s0, s1, \[x0, #?16\]
** stp s2, s3, \[x0, #?24\]
** ret
*/
CONS4_FN (2, float);
/*
** cons4_4_float:
** ins v([0-9]+)\.s.*
** ...
** stp q\1, q\1, \[x0\]
** stp q\1, q\1, \[x0, #?32\]
** ret
*/
CONS4_FN (4, float);