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