blob: 47af7c494d9b9d1f4b63e802efc293348a40e270 [file] [log] [blame]
/* { dg-do assemble { target { aarch64*-*-* } } } */
/* { dg-require-effective-target arm_v8_2a_bf16_neon_ok } */
/* { dg-add-options arm_v8_2a_bf16_neon } */
/* { dg-additional-options "-save-temps" } */
/* { dg-final { check-function-bodies "**" "" {-O[^0]} } } */
/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
#include <arm_neon.h>
/*
**test_bfcvtn:
** bfcvtn v0.4h, v0.4s
** ret
*/
bfloat16x4_t test_bfcvtn (float32x4_t a)
{
return vcvt_bf16_f32 (a);
}
/*
**test_bfcvtnq:
** bfcvtn v0.4h, v0.4s
** ret
*/
bfloat16x8_t test_bfcvtnq (float32x4_t a)
{
return vcvtq_low_bf16_f32 (a);
}
/*
**test_bfcvtnq2:
** bfcvtn2 v0.8h, v1.4s
** ret
*/
bfloat16x8_t test_bfcvtnq2 (bfloat16x8_t inactive, float32x4_t a)
{
return vcvtq_high_bf16_f32 (inactive, a);
}
/*
**test_bfcvt:
** bfcvt h0, s0
** ret
*/
bfloat16_t test_bfcvt (float32_t a)
{
return vcvth_bf16_f32 (a);
}
/*
**test_vcvt_f32_bf16:
** shll v0.4s, v0.4h, #16
** ret
*/
float32x4_t test_vcvt_f32_bf16 (bfloat16x4_t a)
{
return vcvt_f32_bf16 (a);
}
/*
**test_vcvtq_low_f32_bf16:
** shll v0.4s, v0.4h, #16
** ret
*/
float32x4_t test_vcvtq_low_f32_bf16 (bfloat16x8_t a)
{
return vcvtq_low_f32_bf16 (a);
}
/*
**test_vcvtq_high_f32_bf16:
** shll2 v0.4s, v0.8h, #16
** ret
*/
float32x4_t test_vcvtq_high_f32_bf16 (bfloat16x8_t a)
{
return vcvtq_high_f32_bf16 (a);
}
/*
**test_vcvtah_f32_bf16:
** shl d0, d0, #16
** ret
*/
float32_t test_vcvtah_f32_bf16 (bfloat16_t a)
{
return vcvtah_f32_bf16 (a);
}