1 /* { dg-do run } */ 2 /* { dg-require-effective-target arm_v8_2a_fp16_scalar_hw } */ 3 /* { dg-add-options arm_v8_2a_fp16_scalar } */ 4 /* { dg-skip-if "" { arm*-*-* } } */ 5 6 #include <arm_fp16.h> 7 8 /* Input values. */ 9 #define A 13.4 10 #define B __builtin_inff () 11 #define C -34.8 12 #define D -__builtin_inff () 13 #define E 63.1 14 #define F 0.0 15 #define G -4.8 16 #define H 0.0 17 18 #define I 0.7 19 #define J -__builtin_inff () 20 #define K 11.23 21 #define L 98 22 #define M 87.1 23 #define N -0.0 24 #define O -1.1 25 #define P 7 26 27 float16_t input_1[] = { A, B, C, D, I, J, K, L }; 28 float16_t input_2[] = { E, F, G, H, M, N, O, P }; 29 uint16_t expected[] = { 0x629B /* A * E. */, 30 0x4000 /* FP16_C (2.0f). */, 31 0x5939 /* C * G. */, 32 0xC000 /* FP16_C (-2.0f). */, 33 0x53A0 /* I * M. */, 34 0x4000 /* FP16_C (2.0f). */, 35 0xCA2C /* K * O. */, 36 0x615C /* L * P. */ }; 37 38 #define TEST_MSG "VMULXH_F16" 39 #define INSN_NAME vmulxh_f16 40 41 #define INPUT_1 input_1 42 #define INPUT_2 input_2 43 #define EXPECTED expected 44 45 #define INPUT_TYPE float16_t 46 #define OUTPUT_TYPE float16_t 47 #define OUTPUT_TYPE_SIZE 16 48 49 /* Include the template for unary scalar operations. */ 50 #include "binary_scalar_op.inc" 51