194 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_by_scalar_and_widen_s16(int16x4_t arg_i16x4, int16x8_t arg_i16x8, int16_t arg_i16) {8 vqdmull_lane_s16(arg_i16x4, arg_i16x4, 0);9 vqdmull_lane_s16(arg_i16x4, arg_i16x4, 3);10 vqdmull_lane_s16(arg_i16x4, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}11 vqdmull_lane_s16(arg_i16x4, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}12 13 vqdmullh_lane_s16(arg_i16, arg_i16x4, 0);14 vqdmullh_lane_s16(arg_i16, arg_i16x4, 3);15 vqdmullh_lane_s16(arg_i16, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}16 vqdmullh_lane_s16(arg_i16, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}17 18 vqdmull_high_lane_s16(arg_i16x8, arg_i16x4, 0);19 vqdmull_high_lane_s16(arg_i16x8, arg_i16x4, 3);20 vqdmull_high_lane_s16(arg_i16x8, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}21 vqdmull_high_lane_s16(arg_i16x8, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}22 23 vqdmull_laneq_s16(arg_i16x4, arg_i16x8, 0);24 vqdmull_laneq_s16(arg_i16x4, arg_i16x8, 7);25 vqdmull_laneq_s16(arg_i16x4, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}26 vqdmull_laneq_s16(arg_i16x4, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}27 28 vqdmullh_laneq_s16(arg_i16, arg_i16x8, 0);29 vqdmullh_laneq_s16(arg_i16, arg_i16x8, 7);30 vqdmullh_laneq_s16(arg_i16, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}31 vqdmullh_laneq_s16(arg_i16, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}32 33 vqdmull_high_laneq_s16(arg_i16x8, arg_i16x8, 0);34 vqdmull_high_laneq_s16(arg_i16x8, arg_i16x8, 7);35 vqdmull_high_laneq_s16(arg_i16x8, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}36 vqdmull_high_laneq_s16(arg_i16x8, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}37 38 vqdmulh_lane_s16(arg_i16x4, arg_i16x4, 0);39 vqdmulh_lane_s16(arg_i16x4, arg_i16x4, 3);40 vqdmulh_lane_s16(arg_i16x4, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}41 vqdmulh_lane_s16(arg_i16x4, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}42 43 vqdmulhq_lane_s16(arg_i16x8, arg_i16x4, 0);44 vqdmulhq_lane_s16(arg_i16x8, arg_i16x4, 3);45 vqdmulhq_lane_s16(arg_i16x8, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}46 vqdmulhq_lane_s16(arg_i16x8, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}47 48 vqdmulhh_lane_s16(arg_i16, arg_i16x4, 0);49 vqdmulhh_lane_s16(arg_i16, arg_i16x4, 3);50 vqdmulhh_lane_s16(arg_i16, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}51 vqdmulhh_lane_s16(arg_i16, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}52 53 vqdmulh_laneq_s16(arg_i16x4, arg_i16x8, 0);54 vqdmulh_laneq_s16(arg_i16x4, arg_i16x8, 7);55 vqdmulh_laneq_s16(arg_i16x4, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}56 vqdmulh_laneq_s16(arg_i16x4, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}57 58 vqdmulhq_laneq_s16(arg_i16x8, arg_i16x8, 0);59 vqdmulhq_laneq_s16(arg_i16x8, arg_i16x8, 7);60 vqdmulhq_laneq_s16(arg_i16x8, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}61 vqdmulhq_laneq_s16(arg_i16x8, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}62 63 vqdmulhh_laneq_s16(arg_i16, arg_i16x8, 0);64 vqdmulhh_laneq_s16(arg_i16, arg_i16x8, 7);65 vqdmulhh_laneq_s16(arg_i16, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}66 vqdmulhh_laneq_s16(arg_i16, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}67 68 vqrdmulh_lane_s16(arg_i16x4, arg_i16x4, 0);69 vqrdmulh_lane_s16(arg_i16x4, arg_i16x4, 3);70 vqrdmulh_lane_s16(arg_i16x4, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}71 vqrdmulh_lane_s16(arg_i16x4, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}72 73 vqrdmulhq_lane_s16(arg_i16x8, arg_i16x4, 0);74 vqrdmulhq_lane_s16(arg_i16x8, arg_i16x4, 3);75 vqrdmulhq_lane_s16(arg_i16x8, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}76 vqrdmulhq_lane_s16(arg_i16x8, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}77 78 vqrdmulhh_lane_s16(arg_i16, arg_i16x4, 0);79 vqrdmulhh_lane_s16(arg_i16, arg_i16x4, 3);80 vqrdmulhh_lane_s16(arg_i16, arg_i16x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}81 vqrdmulhh_lane_s16(arg_i16, arg_i16x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}82 83 vqrdmulh_laneq_s16(arg_i16x4, arg_i16x8, 0);84 vqrdmulh_laneq_s16(arg_i16x4, arg_i16x8, 7);85 vqrdmulh_laneq_s16(arg_i16x4, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}86 vqrdmulh_laneq_s16(arg_i16x4, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}87 88 vqrdmulhq_laneq_s16(arg_i16x8, arg_i16x8, 0);89 vqrdmulhq_laneq_s16(arg_i16x8, arg_i16x8, 7);90 vqrdmulhq_laneq_s16(arg_i16x8, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}91 vqrdmulhq_laneq_s16(arg_i16x8, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}92 93 vqrdmulhh_laneq_s16(arg_i16, arg_i16x8, 0);94 vqrdmulhh_laneq_s16(arg_i16, arg_i16x8, 7);95 vqrdmulhh_laneq_s16(arg_i16, arg_i16x8, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}96 vqrdmulhh_laneq_s16(arg_i16, arg_i16x8, 8); // expected-error-re {{argument value {{.*}} is outside the valid range}}97 98}99 100 101void test_saturating_multiply_by_scalar_and_widen_s32(int32x2_t arg_i32x2, int32_t arg_i32, int32x4_t arg_i32x4) {102 vqdmull_lane_s32(arg_i32x2, arg_i32x2, 0);103 vqdmull_lane_s32(arg_i32x2, arg_i32x2, 1);104 vqdmull_lane_s32(arg_i32x2, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}105 vqdmull_lane_s32(arg_i32x2, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}106 107 vqdmulls_lane_s32(arg_i32, arg_i32x2, 0);108 vqdmulls_lane_s32(arg_i32, arg_i32x2, 1);109 vqdmulls_lane_s32(arg_i32, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}110 vqdmulls_lane_s32(arg_i32, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}111 112 vqdmull_high_lane_s32(arg_i32x4, arg_i32x2, 0);113 vqdmull_high_lane_s32(arg_i32x4, arg_i32x2, 1);114 vqdmull_high_lane_s32(arg_i32x4, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}115 vqdmull_high_lane_s32(arg_i32x4, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}116 117 vqdmull_laneq_s32(arg_i32x2, arg_i32x4, 0);118 vqdmull_laneq_s32(arg_i32x2, arg_i32x4, 3);119 vqdmull_laneq_s32(arg_i32x2, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}120 vqdmull_laneq_s32(arg_i32x2, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}121 122 vqdmulls_laneq_s32(arg_i32, arg_i32x4, 0);123 vqdmulls_laneq_s32(arg_i32, arg_i32x4, 3);124 vqdmulls_laneq_s32(arg_i32, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}125 vqdmulls_laneq_s32(arg_i32, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}126 127 vqdmull_high_laneq_s32(arg_i32x4, arg_i32x4, 0);128 vqdmull_high_laneq_s32(arg_i32x4, arg_i32x4, 3);129 vqdmull_high_laneq_s32(arg_i32x4, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}130 vqdmull_high_laneq_s32(arg_i32x4, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}131 132 vqdmulh_lane_s32(arg_i32x2, arg_i32x2, 0);133 vqdmulh_lane_s32(arg_i32x2, arg_i32x2, 1);134 vqdmulh_lane_s32(arg_i32x2, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}135 vqdmulh_lane_s32(arg_i32x2, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}136 137 vqdmulhq_lane_s32(arg_i32x4, arg_i32x2, 0);138 vqdmulhq_lane_s32(arg_i32x4, arg_i32x2, 1);139 vqdmulhq_lane_s32(arg_i32x4, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}140 vqdmulhq_lane_s32(arg_i32x4, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}141 142 vqdmulhs_lane_s32(arg_i32, arg_i32x2, 0);143 vqdmulhs_lane_s32(arg_i32, arg_i32x2, 1);144 vqdmulhs_lane_s32(arg_i32, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}145 vqdmulhs_lane_s32(arg_i32, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}146 147 vqdmulh_laneq_s32(arg_i32x2, arg_i32x4, 0);148 vqdmulh_laneq_s32(arg_i32x2, arg_i32x4, 3);149 vqdmulh_laneq_s32(arg_i32x2, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}150 vqdmulh_laneq_s32(arg_i32x2, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}151 152 vqdmulhq_laneq_s32(arg_i32x4, arg_i32x4, 0);153 vqdmulhq_laneq_s32(arg_i32x4, arg_i32x4, 3);154 vqdmulhq_laneq_s32(arg_i32x4, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}155 vqdmulhq_laneq_s32(arg_i32x4, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}156 157 vqdmulhs_laneq_s32(arg_i32, arg_i32x4, 0);158 vqdmulhs_laneq_s32(arg_i32, arg_i32x4, 3);159 vqdmulhs_laneq_s32(arg_i32, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}160 vqdmulhs_laneq_s32(arg_i32, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}161 162 vqrdmulh_lane_s32(arg_i32x2, arg_i32x2, 0);163 vqrdmulh_lane_s32(arg_i32x2, arg_i32x2, 1);164 vqrdmulh_lane_s32(arg_i32x2, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}165 vqrdmulh_lane_s32(arg_i32x2, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}166 167 vqrdmulhq_lane_s32(arg_i32x4, arg_i32x2, 0);168 vqrdmulhq_lane_s32(arg_i32x4, arg_i32x2, 1);169 vqrdmulhq_lane_s32(arg_i32x4, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}170 vqrdmulhq_lane_s32(arg_i32x4, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}171 172 vqrdmulhs_lane_s32(arg_i32, arg_i32x2, 0);173 vqrdmulhs_lane_s32(arg_i32, arg_i32x2, 1);174 vqrdmulhs_lane_s32(arg_i32, arg_i32x2, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}175 vqrdmulhs_lane_s32(arg_i32, arg_i32x2, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}176 177 vqrdmulh_laneq_s32(arg_i32x2, arg_i32x4, 0);178 vqrdmulh_laneq_s32(arg_i32x2, arg_i32x4, 3);179 vqrdmulh_laneq_s32(arg_i32x2, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}180 vqrdmulh_laneq_s32(arg_i32x2, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}181 182 vqrdmulhq_laneq_s32(arg_i32x4, arg_i32x4, 0);183 vqrdmulhq_laneq_s32(arg_i32x4, arg_i32x4, 3);184 vqrdmulhq_laneq_s32(arg_i32x4, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}185 vqrdmulhq_laneq_s32(arg_i32x4, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}186 187 vqrdmulhs_laneq_s32(arg_i32, arg_i32x4, 0);188 vqrdmulhs_laneq_s32(arg_i32, arg_i32x4, 3);189 vqrdmulhs_laneq_s32(arg_i32, arg_i32x4, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}190 vqrdmulhs_laneq_s32(arg_i32, arg_i32x4, 4); // expected-error-re {{argument value {{.*}} is outside the valid range}}191 192}193 194