brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.2 KiB · 2439fb7 Raw
131 lines · c
1// RUN: %clang_cc1 -triple aarch64-linux-gnu -target-feature +neon  -target-feature +v8.1a -ffreestanding -fsyntax-only -verify %s2 3#include <arm_neon.h>4// REQUIRES: aarch64-registered-target5 6void test_saturating_multiply_accumulate_by_element_s16(int16x8_t arg_i16x8, int16_t arg_i16, int16x4_t arg_i16x4) {7	vqrdmlah_lane_s16(arg_i16x4, arg_i16x4, arg_i16x4, 0);8	vqrdmlah_lane_s16(arg_i16x4, arg_i16x4, arg_i16x4, 3);9	vqrdmlah_lane_s16(arg_i16x4, arg_i16x4, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}10	vqrdmlah_lane_s16(arg_i16x4, arg_i16x4, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}11 12	vqrdmlahq_lane_s16(arg_i16x8, arg_i16x8, arg_i16x4, 0);13	vqrdmlahq_lane_s16(arg_i16x8, arg_i16x8, arg_i16x4, 3);14	vqrdmlahq_lane_s16(arg_i16x8, arg_i16x8, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}15	vqrdmlahq_lane_s16(arg_i16x8, arg_i16x8, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}16 17	vqrdmlah_laneq_s16(arg_i16x4, arg_i16x4, arg_i16x8, 0);18	vqrdmlah_laneq_s16(arg_i16x4, arg_i16x4, arg_i16x8, 7);19	vqrdmlah_laneq_s16(arg_i16x4, arg_i16x4, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}20	vqrdmlah_laneq_s16(arg_i16x4, arg_i16x4, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}21 22	vqrdmlahq_laneq_s16(arg_i16x8, arg_i16x8, arg_i16x8, 0);23	vqrdmlahq_laneq_s16(arg_i16x8, arg_i16x8, arg_i16x8, 7);24	vqrdmlahq_laneq_s16(arg_i16x8, arg_i16x8, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}25	vqrdmlahq_laneq_s16(arg_i16x8, arg_i16x8, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}26 27	vqrdmlsh_lane_s16(arg_i16x4, arg_i16x4, arg_i16x4, 0);28	vqrdmlsh_lane_s16(arg_i16x4, arg_i16x4, arg_i16x4, 3);29	vqrdmlsh_lane_s16(arg_i16x4, arg_i16x4, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}30	vqrdmlsh_lane_s16(arg_i16x4, arg_i16x4, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}31 32	vqrdmlshq_lane_s16(arg_i16x8, arg_i16x8, arg_i16x4, 0);33	vqrdmlshq_lane_s16(arg_i16x8, arg_i16x8, arg_i16x4, 3);34	vqrdmlshq_lane_s16(arg_i16x8, arg_i16x8, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}35	vqrdmlshq_lane_s16(arg_i16x8, arg_i16x8, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}36 37	vqrdmlsh_laneq_s16(arg_i16x4, arg_i16x4, arg_i16x8, 0);38	vqrdmlsh_laneq_s16(arg_i16x4, arg_i16x4, arg_i16x8, 7);39	vqrdmlsh_laneq_s16(arg_i16x4, arg_i16x4, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}40	vqrdmlsh_laneq_s16(arg_i16x4, arg_i16x4, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}41 42	vqrdmlshq_laneq_s16(arg_i16x8, arg_i16x8, arg_i16x8, 0);43	vqrdmlshq_laneq_s16(arg_i16x8, arg_i16x8, arg_i16x8, 7);44	vqrdmlshq_laneq_s16(arg_i16x8, arg_i16x8, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}45	vqrdmlshq_laneq_s16(arg_i16x8, arg_i16x8, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}46 47	vqrdmlahh_lane_s16(arg_i16, arg_i16, arg_i16x4, 0);48	vqrdmlahh_lane_s16(arg_i16, arg_i16, arg_i16x4, 3);49	vqrdmlahh_lane_s16(arg_i16, arg_i16, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}50	vqrdmlahh_lane_s16(arg_i16, arg_i16, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}51 52	vqrdmlahh_laneq_s16(arg_i16, arg_i16, arg_i16x8, 0);53	vqrdmlahh_laneq_s16(arg_i16, arg_i16, arg_i16x8, 7);54	vqrdmlahh_laneq_s16(arg_i16, arg_i16, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}55	vqrdmlahh_laneq_s16(arg_i16, arg_i16, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}56 57	vqrdmlshh_lane_s16(arg_i16, arg_i16, arg_i16x4, 0);58	vqrdmlshh_lane_s16(arg_i16, arg_i16, arg_i16x4, 3);59	vqrdmlshh_lane_s16(arg_i16, arg_i16, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}60	vqrdmlshh_lane_s16(arg_i16, arg_i16, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}61 62	vqrdmlshh_laneq_s16(arg_i16, arg_i16, arg_i16x8, 0);63	vqrdmlshh_laneq_s16(arg_i16, arg_i16, arg_i16x8, 7);64	vqrdmlshh_laneq_s16(arg_i16, arg_i16, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}65	vqrdmlshh_laneq_s16(arg_i16, arg_i16, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}66 67}68 69void test_saturating_multiply_accumulate_by_element_s32(int32x2_t arg_i32x2, int32x4_t arg_i32x4, int32_t arg_i32) {70	vqrdmlah_lane_s32(arg_i32x2, arg_i32x2, arg_i32x2, 0);71	vqrdmlah_lane_s32(arg_i32x2, arg_i32x2, arg_i32x2, 1);72	vqrdmlah_lane_s32(arg_i32x2, arg_i32x2, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}73	vqrdmlah_lane_s32(arg_i32x2, arg_i32x2, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}74 75	vqrdmlahq_lane_s32(arg_i32x4, arg_i32x4, arg_i32x2, 0);76	vqrdmlahq_lane_s32(arg_i32x4, arg_i32x4, arg_i32x2, 1);77	vqrdmlahq_lane_s32(arg_i32x4, arg_i32x4, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}78	vqrdmlahq_lane_s32(arg_i32x4, arg_i32x4, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}79 80	vqrdmlah_laneq_s32(arg_i32x2, arg_i32x2, arg_i32x4, 0);81	vqrdmlah_laneq_s32(arg_i32x2, arg_i32x2, arg_i32x4, 3);82	vqrdmlah_laneq_s32(arg_i32x2, arg_i32x2, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}83	vqrdmlah_laneq_s32(arg_i32x2, arg_i32x2, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}84 85	vqrdmlahq_laneq_s32(arg_i32x4, arg_i32x4, arg_i32x4, 0);86	vqrdmlahq_laneq_s32(arg_i32x4, arg_i32x4, arg_i32x4, 3);87	vqrdmlahq_laneq_s32(arg_i32x4, arg_i32x4, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}88	vqrdmlahq_laneq_s32(arg_i32x4, arg_i32x4, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}89 90	vqrdmlsh_lane_s32(arg_i32x2, arg_i32x2, arg_i32x2, 0);91	vqrdmlsh_lane_s32(arg_i32x2, arg_i32x2, arg_i32x2, 1);92	vqrdmlsh_lane_s32(arg_i32x2, arg_i32x2, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}93	vqrdmlsh_lane_s32(arg_i32x2, arg_i32x2, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}94 95	vqrdmlshq_lane_s32(arg_i32x4, arg_i32x4, arg_i32x2, 0);96	vqrdmlshq_lane_s32(arg_i32x4, arg_i32x4, arg_i32x2, 1);97	vqrdmlshq_lane_s32(arg_i32x4, arg_i32x4, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}98	vqrdmlshq_lane_s32(arg_i32x4, arg_i32x4, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}99 100	vqrdmlsh_laneq_s32(arg_i32x2, arg_i32x2, arg_i32x4, 0);101	vqrdmlsh_laneq_s32(arg_i32x2, arg_i32x2, arg_i32x4, 3);102	vqrdmlsh_laneq_s32(arg_i32x2, arg_i32x2, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}103	vqrdmlsh_laneq_s32(arg_i32x2, arg_i32x2, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}104 105	vqrdmlshq_laneq_s32(arg_i32x4, arg_i32x4, arg_i32x4, 0);106	vqrdmlshq_laneq_s32(arg_i32x4, arg_i32x4, arg_i32x4, 3);107	vqrdmlshq_laneq_s32(arg_i32x4, arg_i32x4, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}108	vqrdmlshq_laneq_s32(arg_i32x4, arg_i32x4, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}109 110	vqrdmlahs_lane_s32(arg_i32, arg_i32, arg_i32x2, 0);111	vqrdmlahs_lane_s32(arg_i32, arg_i32, arg_i32x2, 1);112	vqrdmlahs_lane_s32(arg_i32, arg_i32, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}113	vqrdmlahs_lane_s32(arg_i32, arg_i32, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}114 115	vqrdmlahs_laneq_s32(arg_i32, arg_i32, arg_i32x4, 0);116	vqrdmlahs_laneq_s32(arg_i32, arg_i32, arg_i32x4, 3);117	vqrdmlahs_laneq_s32(arg_i32, arg_i32, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}118	vqrdmlahs_laneq_s32(arg_i32, arg_i32, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}119 120	vqrdmlshs_lane_s32(arg_i32, arg_i32, arg_i32x2, 0);121	vqrdmlshs_lane_s32(arg_i32, arg_i32, arg_i32x2, 1);122	vqrdmlshs_lane_s32(arg_i32, arg_i32, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}123	vqrdmlshs_lane_s32(arg_i32, arg_i32, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}124 125	vqrdmlshs_laneq_s32(arg_i32, arg_i32, arg_i32x4, 0);126	vqrdmlshs_laneq_s32(arg_i32, arg_i32, arg_i32x4, 3);127	vqrdmlshs_laneq_s32(arg_i32, arg_i32, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}128	vqrdmlshs_laneq_s32(arg_i32, arg_i32, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}129 130}131