203 lines · c
1// RUN: %clang_cc1 -triple aarch64-linux-gnu -target-feature +neon -target-feature +v8.3a -ffreestanding -fsyntax-only -verify %s2// REQUIRES: aarch64-registered-target3 4#include <arm_neon.h>5#include <arm_fp16.h>6 7void test_vcmla_lane_f16(float16x4_t a, float16x4_t b, float16x4_t c){8 vcmla_lane_f16(a, b, c, 0);9 vcmla_lane_f16(a, b, c, 1);10 11 vcmla_lane_f16(a, b, c, 2); // expected-error-re +{{argument value {{.*}} is outside the valid range}}12 vcmla_lane_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}13}14 15void test_vcmla_laneq_f16(float16x4_t a, float16x4_t b, float16x8_t c){16 vcmla_laneq_f16(a, b, c, 0);17 vcmla_laneq_f16(a, b, c, 1);18 vcmla_laneq_f16(a, b, c, 3);19 20 vcmla_laneq_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}21 vcmla_laneq_f16(a, b, c, 4); // expected-error-re +{{argument value {{.*}} is outside the valid range}}22}23 24void test_vcmlaq_lane_f16(float16x8_t a, float16x8_t b, float16x4_t c){25 vcmlaq_lane_f16(a, b, c, 0);26 vcmlaq_lane_f16(a, b, c, 1);27 28 vcmlaq_lane_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}29 vcmlaq_lane_f16(a, b, c, 2); // expected-error-re +{{argument value {{.*}} is outside the valid range}}30}31 32void test_vcmlaq_laneq_f16(float16x8_t a, float16x8_t b, float16x8_t c){33 vcmlaq_laneq_f16(a, b, c, 0);34 vcmlaq_laneq_f16(a, b, c, 1);35 vcmlaq_laneq_f16(a, b, c, 3);36 37 vcmlaq_laneq_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}38 vcmlaq_laneq_f16(a, b, c, 4); // expected-error-re +{{argument value {{.*}} is outside the valid range}}39}40 41void test_vcmla_lane_f32(float32x2_t a, float32x2_t b, float32x2_t c){42 vcmla_lane_f32(a, b, c, 0);43 44 vcmla_lane_f32(a, b, c, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}45 vcmla_lane_f32(a, b, c, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}46 vcmla_lane_f32(a, b, c, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}47}48 49void test_vcmla_laneq_f32(float32x2_t a, float32x2_t b, float32x4_t c){50 vcmla_laneq_f32(a, b, c, 0);51 52 vcmla_laneq_f32(a, b, c, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}53 vcmla_laneq_f32(a, b, c, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}54}55 56void test_vcmlaq_laneq_f32(float32x4_t a, float32x4_t b, float32x4_t c){57 vcmlaq_laneq_f32(a, b, c, 0);58 vcmlaq_laneq_f32(a, b, c, 1);59 60 vcmlaq_laneq_f32(a, b, c, 2); // expected-error-re +{{argument value {{.*}} is outside the valid range}}61 vcmlaq_laneq_f32(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}62}63 64void test_vcmla_rot90_lane_f16(float16x4_t a, float16x4_t b, float16x4_t c){65 vcmla_rot90_lane_f16(a, b, c, 0);66 vcmla_rot90_lane_f16(a, b, c, 1);67 68 vcmla_rot90_lane_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}69 vcmla_rot90_lane_f16(a, b, c, 2); // expected-error-re +{{argument value {{.*}} is outside the valid range}}70}71 72void test_vcmla_rot90_laneq_f16(float16x4_t a, float16x4_t b, float16x8_t c){73 vcmla_rot90_laneq_f16(a, b, c, 0);74 vcmla_rot90_laneq_f16(a, b, c, 3);75 76 vcmla_rot90_laneq_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}77 vcmla_rot90_laneq_f16(a, b, c, 4); // expected-error-re +{{argument value {{.*}} is outside the valid range}}78}79 80void test_vcmlaq_rot90_laneq_f16(float16x8_t a, float16x8_t b, float16x8_t c){81 vcmlaq_rot90_laneq_f16(a, b, c, 0);82 vcmlaq_rot90_laneq_f16(a, b, c, 3);83 84 vcmlaq_rot90_laneq_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}85 vcmlaq_rot90_laneq_f16(a, b, c, 4); // expected-error-re +{{argument value {{.*}} is outside the valid range}}86}87 88void test_vcmla_rot180_lane_f16(float16x4_t a, float16x4_t b, float16x4_t c){89 vcmla_rot180_lane_f16(a, b, c, 0);90 vcmla_rot180_lane_f16(a, b, c, 1);91 92 vcmla_rot180_lane_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}93 vcmla_rot180_lane_f16(a, b, c, 2); // expected-error-re +{{argument value {{.*}} is outside the valid range}}94}95 96void test_vcmla_rot180_laneq_f16(float16x4_t a, float16x4_t b, float16x8_t c){97 vcmla_rot180_laneq_f16(a, b, c, 0);98 vcmla_rot180_laneq_f16(a, b, c, 3);99 100 vcmla_rot180_laneq_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}101 vcmla_rot180_laneq_f16(a, b, c, 4); // expected-error-re +{{argument value {{.*}} is outside the valid range}}102}103 104void test_vcmlaq_rot180_laneq_f16(float16x8_t a, float16x8_t b, float16x8_t c){105 vcmlaq_rot180_laneq_f16(a, b, c, 0);106 vcmlaq_rot180_laneq_f16(a, b, c, 3);107 108 vcmlaq_rot180_laneq_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}109 vcmlaq_rot180_laneq_f16(a, b, c, 4); // expected-error-re +{{argument value {{.*}} is outside the valid range}}110}111 112void test_vcmla_rot270_lane_f16(float16x4_t a, float16x4_t b, float16x4_t c){113 vcmla_rot270_lane_f16(a, b, c, 0);114 vcmla_rot270_lane_f16(a, b, c, 1);115 116 vcmla_rot270_lane_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}117 vcmla_rot270_lane_f16(a, b, c, 2); // expected-error-re +{{argument value {{.*}} is outside the valid range}}118}119 120void test_vcmla_rot270_laneq_f16(float16x4_t a, float16x4_t b, float16x8_t c){121 vcmla_rot270_laneq_f16(a, b, c, 0);122 vcmla_rot270_laneq_f16(a, b, c, 3);123 124 vcmla_rot270_laneq_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}125 vcmla_rot270_laneq_f16(a, b, c, 4); // expected-error-re +{{argument value {{.*}} is outside the valid range}}126}127 128void test_vcmlaq_rot270_laneq_f16(float16x8_t a, float16x8_t b, float16x8_t c){129 vcmlaq_rot270_laneq_f16(a, b, c, 0);130 vcmlaq_rot270_laneq_f16(a, b, c, 3);131 132 vcmlaq_rot270_laneq_f16(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}133 vcmlaq_rot270_laneq_f16(a, b, c, 4); // expected-error-re +{{argument value {{.*}} is outside the valid range}}134}135 136void test_vcmla_rot90_lane_f32(float32x2_t a, float32x2_t b, float32x2_t c){137 vcmla_rot90_lane_f32(a, b, c, 0);138 139 vcmla_rot90_lane_f32(a, b, c, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}140 vcmla_rot90_lane_f32(a, b, c, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}141}142 143void test_vcmla_rot90_laneq_f32(float32x2_t a, float32x2_t b, float32x4_t c){144 vcmla_rot90_laneq_f32(a, b, c, 0);145 vcmla_rot90_laneq_f32(a, b, c, 1);146 147 vcmla_rot90_laneq_f32(a, b, c, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}148 vcmla_rot90_laneq_f32(a, b, c, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}149}150 151void test_vcmlaq_rot90_laneq_f32(float32x4_t a, float32x4_t b, float32x4_t c){152 vcmlaq_rot90_laneq_f32(a, b, c, 0);153 vcmlaq_rot90_laneq_f32(a, b, c, 1);154 155 vcmlaq_rot90_laneq_f32(a, b, c, 2); // expected-error-re +{{argument value {{.*}} is outside the valid range}}156 vcmlaq_rot90_laneq_f32(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}157}158 159void test_vcmla_rot180_lane_f32(float32x2_t a, float32x2_t b, float32x2_t c){160 vcmla_rot180_lane_f32(a, b, c, 0);161 162 vcmla_rot180_lane_f32(a, b, c, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}163 vcmla_rot180_lane_f32(a, b, c, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}164}165 166void test_vcmla_rot180_laneq_f32(float32x2_t a, float32x2_t b, float32x4_t c){167 vcmla_rot180_laneq_f32(a, b, c, 0);168 vcmla_rot180_laneq_f32(a, b, c, 1);169 170 vcmla_rot180_laneq_f32(a, b, c, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}171 vcmla_rot180_laneq_f32(a, b, c, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}172}173 174void test_vcmlaq_rot180_laneq_f32(float32x4_t a, float32x4_t b, float32x4_t c){175 vcmlaq_rot90_laneq_f32(a, b, c, 0);176 vcmlaq_rot90_laneq_f32(a, b, c, 1);177 178 vcmlaq_rot90_laneq_f32(a, b, c, 2); // expected-error-re +{{argument value {{.*}} is outside the valid range}}179 vcmlaq_rot90_laneq_f32(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}180}181 182void test_vcmla_rot270_lane_f32(float32x2_t a, float32x2_t b, float32x2_t c){183 vcmla_rot270_lane_f32(a, b, c, 0);184 185 vcmla_rot270_lane_f32(a, b, c, 1); // expected-error-re {{argument value {{.*}} is outside the valid range}}186 vcmla_rot270_lane_f32(a, b, c, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}187}188 189void test_vcmla_rot270_laneq_f32(float32x2_t a, float32x2_t b, float32x4_t c){190 vcmla_rot270_laneq_f32(a, b, c, 0);191 vcmla_rot270_laneq_f32(a, b, c, 1);192 193 vcmla_rot270_laneq_f32(a, b, c, 2); // expected-error-re {{argument value {{.*}} is outside the valid range}}194 vcmla_rot270_laneq_f32(a, b, c, -1); // expected-error-re {{argument value {{.*}} is outside the valid range}}195}196 197void test_vcmlaq_rot270_laneq_f32(float32x4_t a, float32x4_t b, float32x4_t c){198 vcmlaq_rot270_laneq_f32(a, b, c, 0);199 vcmlaq_rot270_laneq_f32(a, b, c, 1);200 201 vcmlaq_rot270_laneq_f32(a, b, c, 2); // expected-error-re +{{argument value {{.*}} is outside the valid range}}202 vcmlaq_rot270_laneq_f32(a, b, c, -1); // expected-error-re +{{argument value {{.*}} is outside the valid range}}203}