brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.5 KiB · c65a2e6 Raw
127 lines · c
1// RUN: %clang_cc1 -triple aarch64-linux-gnu -target-feature +neon  -ffreestanding -fsyntax-only -verify %s2 3#include <arm_neon.h>4// REQUIRES: aarch64-registered-target5 6 7void test_fused_multiply_accumulate_f32(float32x2_t arg_f32x2, float32_t arg_f32, float32x4_t arg_f32x4) {8	vfma_lane_f32(arg_f32x2, arg_f32x2, arg_f32x2, 0);9	vfma_lane_f32(arg_f32x2, arg_f32x2, arg_f32x2, 1);10	vfma_lane_f32(arg_f32x2, arg_f32x2, arg_f32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}11	vfma_lane_f32(arg_f32x2, arg_f32x2, arg_f32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}12 13	vfmaq_lane_f32(arg_f32x4, arg_f32x4, arg_f32x2, 0);14	vfmaq_lane_f32(arg_f32x4, arg_f32x4, arg_f32x2, 1);15	vfmaq_lane_f32(arg_f32x4, arg_f32x4, arg_f32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}16	vfmaq_lane_f32(arg_f32x4, arg_f32x4, arg_f32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}17 18	vfmas_lane_f32(arg_f32, arg_f32, arg_f32x2, 0);19	vfmas_lane_f32(arg_f32, arg_f32, arg_f32x2, 1);20	vfmas_lane_f32(arg_f32, arg_f32, arg_f32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}21	vfmas_lane_f32(arg_f32, arg_f32, arg_f32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}22 23	vfma_laneq_f32(arg_f32x2, arg_f32x2, arg_f32x4, 0);24	vfma_laneq_f32(arg_f32x2, arg_f32x2, arg_f32x4, 3);25	vfma_laneq_f32(arg_f32x2, arg_f32x2, arg_f32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}26	vfma_laneq_f32(arg_f32x2, arg_f32x2, arg_f32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}27 28	vfmaq_laneq_f32(arg_f32x4, arg_f32x4, arg_f32x4, 0);29	vfmaq_laneq_f32(arg_f32x4, arg_f32x4, arg_f32x4, 3);30	vfmaq_laneq_f32(arg_f32x4, arg_f32x4, arg_f32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}31	vfmaq_laneq_f32(arg_f32x4, arg_f32x4, arg_f32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}32 33	vfmas_laneq_f32(arg_f32, arg_f32, arg_f32x4, 0);34	vfmas_laneq_f32(arg_f32, arg_f32, arg_f32x4, 3);35	vfmas_laneq_f32(arg_f32, arg_f32, arg_f32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}36	vfmas_laneq_f32(arg_f32, arg_f32, arg_f32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}37 38	vfms_lane_f32(arg_f32x2, arg_f32x2, arg_f32x2, 0);39	vfms_lane_f32(arg_f32x2, arg_f32x2, arg_f32x2, 1);40	vfms_lane_f32(arg_f32x2, arg_f32x2, arg_f32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}41	vfms_lane_f32(arg_f32x2, arg_f32x2, arg_f32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}42 43	vfmsq_lane_f32(arg_f32x4, arg_f32x4, arg_f32x2, 0);44	vfmsq_lane_f32(arg_f32x4, arg_f32x4, arg_f32x2, 1);45	vfmsq_lane_f32(arg_f32x4, arg_f32x4, arg_f32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}46	vfmsq_lane_f32(arg_f32x4, arg_f32x4, arg_f32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}47 48	vfmss_lane_f32(arg_f32, arg_f32, arg_f32x2, 0);49	vfmss_lane_f32(arg_f32, arg_f32, arg_f32x2, 1);50	vfmss_lane_f32(arg_f32, arg_f32, arg_f32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}51	vfmss_lane_f32(arg_f32, arg_f32, arg_f32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}52 53	vfms_laneq_f32(arg_f32x2, arg_f32x2, arg_f32x4, 0);54	vfms_laneq_f32(arg_f32x2, arg_f32x2, arg_f32x4, 3);55	vfms_laneq_f32(arg_f32x2, arg_f32x2, arg_f32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}56	vfms_laneq_f32(arg_f32x2, arg_f32x2, arg_f32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}57 58	vfmsq_laneq_f32(arg_f32x4, arg_f32x4, arg_f32x4, 0);59	vfmsq_laneq_f32(arg_f32x4, arg_f32x4, arg_f32x4, 3);60	vfmsq_laneq_f32(arg_f32x4, arg_f32x4, arg_f32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}61	vfmsq_laneq_f32(arg_f32x4, arg_f32x4, arg_f32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}62 63	vfmss_laneq_f32(arg_f32, arg_f32, arg_f32x4, 0);64	vfmss_laneq_f32(arg_f32, arg_f32, arg_f32x4, 3);65	vfmss_laneq_f32(arg_f32, arg_f32, arg_f32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}66	vfmss_laneq_f32(arg_f32, arg_f32, arg_f32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}67 68}69 70void test_fused_multiply_accumulate_f64(float64x2_t arg_f64x2, float64_t arg_f64, float64x1_t arg_f64x1) {71	vfma_lane_f64(arg_f64x1, arg_f64x1, arg_f64x1, 0);72	vfma_lane_f64(arg_f64x1, arg_f64x1, arg_f64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}73	vfma_lane_f64(arg_f64x1, arg_f64x1, arg_f64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}74 75	vfmaq_lane_f64(arg_f64x2, arg_f64x2, arg_f64x1, 0);76	vfmaq_lane_f64(arg_f64x2, arg_f64x2, arg_f64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}77	vfmaq_lane_f64(arg_f64x2, arg_f64x2, arg_f64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}78 79	vfmad_lane_f64(arg_f64, arg_f64, arg_f64x1, 0);80	vfmad_lane_f64(arg_f64, arg_f64, arg_f64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}81	vfmad_lane_f64(arg_f64, arg_f64, arg_f64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}82 83	vfma_laneq_f64(arg_f64x1, arg_f64x1, arg_f64x2, 0);84	vfma_laneq_f64(arg_f64x1, arg_f64x1, arg_f64x2, 1);85	vfma_laneq_f64(arg_f64x1, arg_f64x1, arg_f64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}86	vfma_laneq_f64(arg_f64x1, arg_f64x1, arg_f64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}87 88	vfmaq_laneq_f64(arg_f64x2, arg_f64x2, arg_f64x2, 0);89	vfmaq_laneq_f64(arg_f64x2, arg_f64x2, arg_f64x2, 1);90	vfmaq_laneq_f64(arg_f64x2, arg_f64x2, arg_f64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}91	vfmaq_laneq_f64(arg_f64x2, arg_f64x2, arg_f64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}92 93	vfmad_laneq_f64(arg_f64, arg_f64, arg_f64x2, 0);94	vfmad_laneq_f64(arg_f64, arg_f64, arg_f64x2, 1);95	vfmad_laneq_f64(arg_f64, arg_f64, arg_f64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}96	vfmad_laneq_f64(arg_f64, arg_f64, arg_f64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}97 98	vfms_lane_f64(arg_f64x1, arg_f64x1, arg_f64x1, 0);99	vfms_lane_f64(arg_f64x1, arg_f64x1, arg_f64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}100	vfms_lane_f64(arg_f64x1, arg_f64x1, arg_f64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}101 102	vfmsq_lane_f64(arg_f64x2, arg_f64x2, arg_f64x1, 0);103	vfmsq_lane_f64(arg_f64x2, arg_f64x2, arg_f64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}104	vfmsq_lane_f64(arg_f64x2, arg_f64x2, arg_f64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}105 106	vfmsd_lane_f64(arg_f64, arg_f64, arg_f64x1, 0);107	vfmsd_lane_f64(arg_f64, arg_f64, arg_f64x1, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}108	vfmsd_lane_f64(arg_f64, arg_f64, arg_f64x1, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}109 110	vfms_laneq_f64(arg_f64x1, arg_f64x1, arg_f64x2, 0);111	vfms_laneq_f64(arg_f64x1, arg_f64x1, arg_f64x2, 1);112	vfms_laneq_f64(arg_f64x1, arg_f64x1, arg_f64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}113	vfms_laneq_f64(arg_f64x1, arg_f64x1, arg_f64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}114 115	vfmsq_laneq_f64(arg_f64x2, arg_f64x2, arg_f64x2, 0);116	vfmsq_laneq_f64(arg_f64x2, arg_f64x2, arg_f64x2, 1);117	vfmsq_laneq_f64(arg_f64x2, arg_f64x2, arg_f64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}118	vfmsq_laneq_f64(arg_f64x2, arg_f64x2, arg_f64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}119 120	vfmsd_laneq_f64(arg_f64, arg_f64, arg_f64x2, 0);121	vfmsd_laneq_f64(arg_f64, arg_f64, arg_f64x2, 1);122	vfmsd_laneq_f64(arg_f64, arg_f64, arg_f64x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}123	vfmsd_laneq_f64(arg_f64, arg_f64, arg_f64x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}124 125}126 127