133 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_saturating_multiply_accumulate_s16(int16x4_t arg_i16x4, int32_t arg_i32, int16_t arg_i16,8 int32x4_t arg_i32x4, int16x8_t arg_i16x8) {9 vqdmlal_lane_s16(arg_i32x4, arg_i16x4, arg_i16x4, 0);10 vqdmlal_lane_s16(arg_i32x4, arg_i16x4, arg_i16x4, 3);11 vqdmlal_lane_s16(arg_i32x4, arg_i16x4, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}12 vqdmlal_lane_s16(arg_i32x4, arg_i16x4, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}13 14 vqdmlalh_lane_s16(arg_i32, arg_i16, arg_i16x4, 0);15 vqdmlalh_lane_s16(arg_i32, arg_i16, arg_i16x4, 3);16 vqdmlalh_lane_s16(arg_i32, arg_i16, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}17 vqdmlalh_lane_s16(arg_i32, arg_i16, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}18 19 vqdmlal_high_lane_s16(arg_i32x4, arg_i16x8, arg_i16x4, 0);20 vqdmlal_high_lane_s16(arg_i32x4, arg_i16x8, arg_i16x4, 3);21 vqdmlal_high_lane_s16(arg_i32x4, arg_i16x8, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}22 vqdmlal_high_lane_s16(arg_i32x4, arg_i16x8, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}23 24 vqdmlal_laneq_s16(arg_i32x4, arg_i16x4, arg_i16x8, 0);25 vqdmlal_laneq_s16(arg_i32x4, arg_i16x4, arg_i16x8, 7);26 vqdmlal_laneq_s16(arg_i32x4, arg_i16x4, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}27 vqdmlal_laneq_s16(arg_i32x4, arg_i16x4, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}28 29 vqdmlalh_laneq_s16(arg_i32, arg_i16, arg_i16x8, 0);30 vqdmlalh_laneq_s16(arg_i32, arg_i16, arg_i16x8, 7);31 vqdmlalh_laneq_s16(arg_i32, arg_i16, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}32 vqdmlalh_laneq_s16(arg_i32, arg_i16, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}33 34 vqdmlal_high_laneq_s16(arg_i32x4, arg_i16x8, arg_i16x8, 0);35 vqdmlal_high_laneq_s16(arg_i32x4, arg_i16x8, arg_i16x8, 7);36 vqdmlal_high_laneq_s16(arg_i32x4, arg_i16x8, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}37 vqdmlal_high_laneq_s16(arg_i32x4, arg_i16x8, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}38 39 vqdmlsl_lane_s16(arg_i32x4, arg_i16x4, arg_i16x4, 0);40 vqdmlsl_lane_s16(arg_i32x4, arg_i16x4, arg_i16x4, 3);41 vqdmlsl_lane_s16(arg_i32x4, arg_i16x4, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}42 vqdmlsl_lane_s16(arg_i32x4, arg_i16x4, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}43 44 vqdmlslh_lane_s16(arg_i32, arg_i16, arg_i16x4, 0);45 vqdmlslh_lane_s16(arg_i32, arg_i16, arg_i16x4, 3);46 vqdmlslh_lane_s16(arg_i32, arg_i16, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}47 vqdmlslh_lane_s16(arg_i32, arg_i16, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}48 49 vqdmlsl_high_lane_s16(arg_i32x4, arg_i16x8, arg_i16x4, 0);50 vqdmlsl_high_lane_s16(arg_i32x4, arg_i16x8, arg_i16x4, 3);51 vqdmlsl_high_lane_s16(arg_i32x4, arg_i16x8, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}52 vqdmlsl_high_lane_s16(arg_i32x4, arg_i16x8, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}53 54 vqdmlsl_laneq_s16(arg_i32x4, arg_i16x4, arg_i16x8, 0);55 vqdmlsl_laneq_s16(arg_i32x4, arg_i16x4, arg_i16x8, 7);56 vqdmlsl_laneq_s16(arg_i32x4, arg_i16x4, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}57 vqdmlsl_laneq_s16(arg_i32x4, arg_i16x4, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}58 59 vqdmlslh_laneq_s16(arg_i32, arg_i16, arg_i16x8, 0);60 vqdmlslh_laneq_s16(arg_i32, arg_i16, arg_i16x8, 7);61 vqdmlslh_laneq_s16(arg_i32, arg_i16, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}62 vqdmlslh_laneq_s16(arg_i32, arg_i16, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}63 64 vqdmlsl_high_laneq_s16(arg_i32x4, arg_i16x8, arg_i16x8, 0);65 vqdmlsl_high_laneq_s16(arg_i32x4, arg_i16x8, arg_i16x8, 7);66 vqdmlsl_high_laneq_s16(arg_i32x4, arg_i16x8, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}67 vqdmlsl_high_laneq_s16(arg_i32x4, arg_i16x8, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}68 69}70 71void test_saturating_multiply_accumulate_s32(int32_t arg_i32, int32x4_t arg_i32x4, int64_t arg_i64, int64x2_t arg_i64x2, int32x2_t arg_i32x2) {72 vqdmlal_lane_s32(arg_i64x2, arg_i32x2, arg_i32x2, 0);73 vqdmlal_lane_s32(arg_i64x2, arg_i32x2, arg_i32x2, 1);74 vqdmlal_lane_s32(arg_i64x2, arg_i32x2, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}75 vqdmlal_lane_s32(arg_i64x2, arg_i32x2, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}76 77 vqdmlals_lane_s32(arg_i64, arg_i32, arg_i32x2, 0);78 vqdmlals_lane_s32(arg_i64, arg_i32, arg_i32x2, 1);79 vqdmlals_lane_s32(arg_i64, arg_i32, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}80 vqdmlals_lane_s32(arg_i64, arg_i32, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}81 82 vqdmlal_high_lane_s32(arg_i64x2, arg_i32x4, arg_i32x2, 0);83 vqdmlal_high_lane_s32(arg_i64x2, arg_i32x4, arg_i32x2, 1);84 vqdmlal_high_lane_s32(arg_i64x2, arg_i32x4, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}85 vqdmlal_high_lane_s32(arg_i64x2, arg_i32x4, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}86 87 vqdmlal_laneq_s32(arg_i64x2, arg_i32x2, arg_i32x4, 0);88 vqdmlal_laneq_s32(arg_i64x2, arg_i32x2, arg_i32x4, 3);89 vqdmlal_laneq_s32(arg_i64x2, arg_i32x2, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}90 vqdmlal_laneq_s32(arg_i64x2, arg_i32x2, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}91 92 vqdmlals_laneq_s32(arg_i64, arg_i32, arg_i32x4, 0);93 vqdmlals_laneq_s32(arg_i64, arg_i32, arg_i32x4, 3);94 vqdmlals_laneq_s32(arg_i64, arg_i32, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}95 vqdmlals_laneq_s32(arg_i64, arg_i32, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}96 97 vqdmlal_high_laneq_s32(arg_i64x2, arg_i32x4, arg_i32x4, 0);98 vqdmlal_high_laneq_s32(arg_i64x2, arg_i32x4, arg_i32x4, 3);99 vqdmlal_high_laneq_s32(arg_i64x2, arg_i32x4, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}100 vqdmlal_high_laneq_s32(arg_i64x2, arg_i32x4, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}101 102 vqdmlsl_lane_s32(arg_i64x2, arg_i32x2, arg_i32x2, 0);103 vqdmlsl_lane_s32(arg_i64x2, arg_i32x2, arg_i32x2, 1);104 vqdmlsl_lane_s32(arg_i64x2, arg_i32x2, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}105 vqdmlsl_lane_s32(arg_i64x2, arg_i32x2, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}106 107 vqdmlsls_lane_s32(arg_i64, arg_i32, arg_i32x2, 0);108 vqdmlsls_lane_s32(arg_i64, arg_i32, arg_i32x2, 1);109 vqdmlsls_lane_s32(arg_i64, arg_i32, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}110 vqdmlsls_lane_s32(arg_i64, arg_i32, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}111 112 vqdmlsl_high_lane_s32(arg_i64x2, arg_i32x4, arg_i32x2, 0);113 vqdmlsl_high_lane_s32(arg_i64x2, arg_i32x4, arg_i32x2, 1);114 vqdmlsl_high_lane_s32(arg_i64x2, arg_i32x4, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}115 vqdmlsl_high_lane_s32(arg_i64x2, arg_i32x4, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}116 117 vqdmlsl_laneq_s32(arg_i64x2, arg_i32x2, arg_i32x4, 0);118 vqdmlsl_laneq_s32(arg_i64x2, arg_i32x2, arg_i32x4, 3);119 vqdmlsl_laneq_s32(arg_i64x2, arg_i32x2, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}120 vqdmlsl_laneq_s32(arg_i64x2, arg_i32x2, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}121 122 vqdmlsls_laneq_s32(arg_i64, arg_i32, arg_i32x4, 0);123 vqdmlsls_laneq_s32(arg_i64, arg_i32, arg_i32x4, 3);124 vqdmlsls_laneq_s32(arg_i64, arg_i32, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}125 vqdmlsls_laneq_s32(arg_i64, arg_i32, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}126 127 vqdmlsl_high_laneq_s32(arg_i64x2, arg_i32x4, arg_i32x4, 0);128 vqdmlsl_high_laneq_s32(arg_i64x2, arg_i32x4, arg_i32x4, 3);129 vqdmlsl_high_laneq_s32(arg_i64x2, arg_i32x4, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}130 vqdmlsl_high_laneq_s32(arg_i64x2, arg_i32x4, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}131 132}133