[clang] f7068c8 - [Sema][SVE2] Move/simplify Sema testing for SVE2 ACLE builtins

Florian Hahn via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 28 05:49:37 PDT 2022


Hi,

The commit message mentions the patch is WIP. Just double-checking if it was committed by accident?

Cheers,
Florian

> On Apr 28, 2022, at 13:46, Rosie Sumpter via cfe-commits <cfe-commits at lists.llvm.org> wrote:
> 
> 
> Author: Rosie Sumpter
> Date: 2022-04-28T13:41:09+01:00
> New Revision: f7068c82a2560d97bf9826db1e917f931e887017
> 
> URL: https://github.com/llvm/llvm-project/commit/f7068c82a2560d97bf9826db1e917f931e887017
> DIFF: https://github.com/llvm/llvm-project/commit/f7068c82a2560d97bf9826db1e917f931e887017.diff
> 
> LOG: [Sema][SVE2] Move/simplify Sema testing for SVE2 ACLE builtins
> 
> Currently for SVE2 ACLE builtins, single tests are used to verify both
> clang code generation (when the feature is available) and semantic
> error/warning messages (when the feature is unavailable). This WIP
> patch moves the semantic testing for the values of immediate arguments
> into dedicated Sema tests.
> 
> Added: 
>    clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_lane.cpp
>    clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_n.cpp
>    clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_rotation.cpp
> 
> Modified: 
> 
> 
> Removed: 
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_cadd.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_cdot.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_cmla.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mla.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlalb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlalt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mls.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlslb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlslt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mul.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mullb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mullt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qcadd.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlalb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlalt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlslb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlslt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmulh.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmullb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmullt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdcmlah.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdmlah.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdmlsh.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdmulh.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrnb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrnt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrunb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrunt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshlu.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrnb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrnt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrunb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrunt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rshr.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rshrnb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rshrnt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rsra.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shllb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shllt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shrnb.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shrnt.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_sli.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_sra.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_sri.c
>    clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_xar.c
> 
> 
> ################################################################################
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_cadd.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_cadd.c
> deleted file mode 100644
> index dad4c7053aec6..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_cadd.c
> +++ /dev/null
> @@ -1,85 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svcadd_s8(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svcadd,_s8,,)(op1, op2, 0);
> -}
> -
> -svint8_t test_svcadd_s8_1(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svcadd,_s8,,)(op1, op2, 272);
> -}
> -
> -svint8_t test_svcadd_s8_2(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svcadd,_s8,,)(op1, op2, 91);
> -}
> -
> -svint8_t test_svcadd_s8_3(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svcadd,_s8,,)(op1, op2, 180);
> -}
> -
> -svint8_t test_svcadd_s8_4(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svcadd,_s8,,)(op1, op2, 271);
> -}
> -
> -svint16_t test_svcadd_s16(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svcadd,_s16,,)(op1, op2, 0);
> -}
> -
> -svint32_t test_svcadd_s32(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svcadd,_s32,,)(op1, op2, 0);
> -}
> -
> -svint64_t test_svcadd_s64(svint64_t op1, svint64_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svcadd,_s64,,)(op1, op2, 0);
> -}
> -
> -svuint8_t test_svcadd_u8(svuint8_t op1, svuint8_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svcadd,_u8,,)(op1, op2, 0);
> -}
> -
> -svuint16_t test_svcadd_u16(svuint16_t op1, svuint16_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svcadd,_u16,,)(op1, op2, 0);
> -}
> -
> -svuint32_t test_svcadd_u32(svuint32_t op1, svuint32_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svcadd,_u32,,)(op1, op2, 0);
> -}
> -
> -svuint64_t test_svcadd_u64(svuint64_t op1, svuint64_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svcadd,_u64,,)(op1, op2, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_cdot.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_cdot.c
> deleted file mode 100644
> index fb18abe301b95..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_cdot.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify -verify-ignore-unexpected=warning %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify -verify-ignore-unexpected=warning %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svcdot_s32(svint32_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcdot,_s32,,)(op1, op2, op3, 19);
> -}
> -
> -svint64_t test_svcdot_s64(svint64_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcdot,_s64,,)(op1, op2, op3, 19);
> -}
> -
> -svint32_t test_svcdot_lane_s32(svint32_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svcdot_lane,_s32,,)(op1, op2, op3, -1, 0);
> -}
> -
> -svint32_t test_svcdot_lane_s32_1(svint32_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcdot_lane,_s32,,)(op1, op2, op3, 0, 19);
> -}
> -
> -svint64_t test_svcdot_lane_s64(svint64_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svcdot_lane,_s64,,)(op1, op2, op3, -1, 0);
> -}
> -
> -svint64_t test_svcdot_lane_s64_1(svint64_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcdot_lane,_s64,,)(op1, op2, op3, 0, 19);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_cmla.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_cmla.c
> deleted file mode 100644
> index 8b2bdb67f560b..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_cmla.c
> +++ /dev/null
> @@ -1,188 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svcmla_s8(svint8_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla,_s8,,)(op1, op2, op3, 19);
> -}
> -
> -svint8_t test_svcmla_s8_1(svint8_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla,_s8,,)(op1, op2, op3, 1);
> -}
> -
> -svint8_t test_svcmla_s8_2(svint8_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla,_s8,,)(op1, op2, op3, 18);
> -}
> -
> -svint8_t test_svcmla_s8_3(svint8_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla,_s8,,)(op1, op2, op3, 91);
> -}
> -
> -svint8_t test_svcmla_s8_4(svint8_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla,_s8,,)(op1, op2, op3, 181);
> -}
> -
> -svint16_t test_svcmla_s16(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla,_s16,,)(op1, op2, op3, 19);
> -}
> -
> -svint32_t test_svcmla_s32(svint32_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla,_s32,,)(op1, op2, op3, 19);
> -}
> -
> -svint64_t test_svcmla_s64(svint64_t op1, svint64_t op2, svint64_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla,_s64,,)(op1, op2, op3, 19);
> -}
> -
> -svuint8_t test_svcmla_u8(svuint8_t op1, svuint8_t op2, svuint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla,_u8,,)(op1, op2, op3, 19);
> -}
> -
> -svuint16_t test_svcmla_u16(svuint16_t op1, svuint16_t op2, svuint16_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla,_u16,,)(op1, op2, op3, 19);
> -}
> -
> -svuint32_t test_svcmla_u32(svuint32_t op1, svuint32_t op2, svuint32_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla,_u32,,)(op1, op2, op3, 19);
> -}
> -
> -svuint64_t test_svcmla_u64(svuint64_t op1, svuint64_t op2, svuint64_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla,_u64,,)(op1, op2, op3, 19);
> -}
> -
> -svint16_t test_svcmla_lane_s16(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s16,,)(op1, op2, op3, -1, 0);
> -}
> -
> -svint16_t test_svcmla_lane_s16_1(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s16,,)(op1, op2, op3, 4, 0);
> -}
> -
> -svint16_t test_svcmla_lane_s16_2(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s16,,)(op1, op2, op3, -1, 90);
> -}
> -
> -svint16_t test_svcmla_lane_s16_3(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s16,,)(op1, op2, op3, -1, 180);
> -}
> -
> -svint16_t test_svcmla_lane_s16_4(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s16,,)(op1, op2, op3, -1, 270);
> -}
> -
> -svint16_t test_svcmla_lane_s16_5(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s16,,)(op1, op2, op3, 0, 19);
> -}
> -
> -svint16_t test_svcmla_lane_s16_6(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s16,,)(op1, op2, op3, 1, 19);
> -}
> -
> -svint16_t test_svcmla_lane_s16_7(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s16,,)(op1, op2, op3, 2, 19);
> -}
> -
> -svint16_t test_svcmla_lane_s16_8(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s16,,)(op1, op2, op3, 3, 19);
> -}
> -
> -svint16_t test_svcmla_lane_s16_9(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +2 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s16,,)(op1, op2, op3, 4, 19);
> -}
> -
> -svint32_t test_svcmla_lane_s32(svint32_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s32,,)(op1, op2, op3, -1, 0);
> -}
> -
> -svint32_t test_svcmla_lane_s32_1(svint32_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s32,,)(op1, op2, op3, 2, 0);
> -}
> -
> -svint32_t test_svcmla_lane_s32_2(svint32_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_s32,,)(op1, op2, op3, 1, 19);
> -}
> -
> -svuint16_t test_svcmla_lane_u16(svuint16_t op1, svuint16_t op2, svuint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_u16,,)(op1, op2, op3, -1, 0);
> -}
> -
> -svuint16_t test_svcmla_lane_u16_1(svuint16_t op1, svuint16_t op2, svuint16_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_u16,,)(op1, op2, op3, 0, 19);
> -}
> -
> -svuint32_t test_svcmla_lane_u32(svuint32_t op1, svuint32_t op2, svuint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_u32,,)(op1, op2, op3, -1, 0);
> -}
> -
> -svuint32_t test_svcmla_lane_u32_1(svuint32_t op1, svuint32_t op2, svuint32_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svcmla_lane,_u32,,)(op1, op2, op3, 0, 19);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mla.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mla.c
> deleted file mode 100644
> index 7eab67062bec2..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mla.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint16_t test_svmla_lane_s16(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmla_lane,_s16,,)(op1, op2, op3, 8);
> -}
> -
> -svint32_t test_svmla_lane_s32(svint32_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmla_lane,_s32,,)(op1, op2, op3, -1);
> -}
> -
> -svint64_t test_svmla_lane_s64(svint64_t op1, svint64_t op2, svint64_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svmla_lane,_s64,,)(op1, op2, op3, 2);
> -}
> -
> -svuint16_t test_svmla_lane_u16(svuint16_t op1, svuint16_t op2, svuint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmla_lane,_u16,,)(op1, op2, op3, -1);
> -}
> -
> -svuint32_t test_svmla_lane_u32(svuint32_t op1, svuint32_t op2, svuint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmla_lane,_u32,,)(op1, op2, op3, 4);
> -}
> -
> -svuint64_t test_svmla_lane_u64(svuint64_t op1, svuint64_t op2, svuint64_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svmla_lane,_u64,,)(op1, op2, op3, -1);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlalb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlalb.c
> deleted file mode 100644
> index 05e4cd43a312c..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlalb.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svmlalb_lane_s32(svint32_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlalb_lane,_s32,,)(op1, op2, op3, -1);
> -}
> -
> -svint64_t test_svmlalb_lane_s64(svint64_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmlalb_lane,_s64,,)(op1, op2, op3, -1);
> -}
> -
> -svuint32_t test_svmlalb_lane_u32(svuint32_t op1, svuint16_t op2, svuint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlalb_lane,_u32,,)(op1, op2, op3, 8);
> -}
> -
> -svuint64_t test_svmlalb_lane_u64(svuint64_t op1, svuint32_t op2, svuint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmlalb_lane,_u64,,)(op1, op2, op3, 4);
> -}
> -
> -svfloat32_t test_svmlalb_lane_f32(svfloat32_t op1, svfloat16_t op2, svfloat16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlalb_lane,_f32,,)(op1, op2, op3, -1);
> -}
> -
> -svfloat32_t test_svmlalb_lane_f32_1(svfloat32_t op1, svfloat16_t op2, svfloat16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlalb_lane,_f32,,)(op1, op2, op3, 8);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlalt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlalt.c
> deleted file mode 100644
> index d5cd7c5802d1d..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlalt.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svmlalt_lane_s32(svint32_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlalt_lane,_s32,,)(op1, op2, op3, -1);
> -}
> -
> -svint64_t test_svmlalt_lane_s64(svint64_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmlalt_lane,_s64,,)(op1, op2, op3, -1);
> -}
> -
> -svuint32_t test_svmlalt_lane_u32(svuint32_t op1, svuint16_t op2, svuint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlalt_lane,_u32,,)(op1, op2, op3, 8);
> -}
> -
> -svuint64_t test_svmlalt_lane_u64(svuint64_t op1, svuint32_t op2, svuint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmlalt_lane,_u64,,)(op1, op2, op3, 4);
> -}
> -
> -svfloat32_t test_svmlalt_lane_f32(svfloat32_t op1, svfloat16_t op2, svfloat16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlalt_lane,_f32,,)(op1, op2, op3, -1);
> -}
> -
> -svfloat32_t test_svmlalt_lane_f32_1(svfloat32_t op1, svfloat16_t op2, svfloat16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlalt_lane,_f32,,)(op1, op2, op3, 8);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mls.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mls.c
> deleted file mode 100644
> index 2df794c767438..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mls.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint16_t test_svmls_lane_s16(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmls_lane,_s16,,)(op1, op2, op3, -1);
> -}
> -
> -svint32_t test_svmls_lane_s32(svint32_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmls_lane,_s32,,)(op1, op2, op3, 4);
> -}
> -
> -svint64_t test_svmls_lane_s64(svint64_t op1, svint64_t op2, svint64_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svmls_lane,_s64,,)(op1, op2, op3, -1);
> -}
> -
> -svuint16_t test_svmls_lane_u16(svuint16_t op1, svuint16_t op2, svuint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmls_lane,_u16,,)(op1, op2, op3, 8);
> -}
> -
> -svuint32_t test_svmls_lane_u32(svuint32_t op1, svuint32_t op2, svuint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmls_lane,_u32,,)(op1, op2, op3, -1);
> -}
> -
> -svuint64_t test_svmls_lane_u64(svuint64_t op1, svuint64_t op2, svuint64_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svmls_lane,_u64,,)(op1, op2, op3, 2);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlslb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlslb.c
> deleted file mode 100644
> index 4b948374dd109..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlslb.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svmlslb_lane_s32(svint32_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlslb_lane,_s32,,)(op1, op2, op3, -1);
> -}
> -
> -svint64_t test_svmlslb_lane_s64(svint64_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmlslb_lane,_s64,,)(op1, op2, op3, -1);
> -}
> -
> -svuint32_t test_svmlslb_lane_u32(svuint32_t op1, svuint16_t op2, svuint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlslb_lane,_u32,,)(op1, op2, op3, 8);
> -}
> -
> -svuint64_t test_svmlslb_lane_u64(svuint64_t op1, svuint32_t op2, svuint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmlslb_lane,_u64,,)(op1, op2, op3, 4);
> -}
> -
> -svfloat32_t test_svmlslb_lane_f32(svfloat32_t op1, svfloat16_t op2, svfloat16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlslb_lane,_f32,,)(op1, op2, op3, -1);
> -}
> -
> -svfloat32_t test_svmlslb_lane_f32_1(svfloat32_t op1, svfloat16_t op2, svfloat16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlslb_lane,_f32,,)(op1, op2, op3, 8);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlslt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlslt.c
> deleted file mode 100644
> index 6defaec1e9d26..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mlslt.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svmlslt_lane_s32(svint32_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlslt_lane,_s32,,)(op1, op2, op3, -1);
> -}
> -
> -svint64_t test_svmlslt_lane_s64(svint64_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmlslt_lane,_s64,,)(op1, op2, op3, -1);
> -}
> -
> -svuint32_t test_svmlslt_lane_u32(svuint32_t op1, svuint16_t op2, svuint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlslt_lane,_u32,,)(op1, op2, op3, 8);
> -}
> -
> -svuint64_t test_svmlslt_lane_u64(svuint64_t op1, svuint32_t op2, svuint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmlslt_lane,_u64,,)(op1, op2, op3, 4);
> -}
> -
> -svfloat32_t test_svmlslt_lane_f32(svfloat32_t op1, svfloat16_t op2, svfloat16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlslt_lane,_f32,,)(op1, op2, op3, -1);
> -}
> -
> -svfloat32_t test_svmlslt_lane_f32_1(svfloat32_t op1, svfloat16_t op2, svfloat16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmlslt_lane,_f32,,)(op1, op2, op3, 8);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mul.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mul.c
> deleted file mode 100644
> index b495933337533..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mul.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint16_t test_svmul_lane_s16(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmul_lane,_s16,,)(op1, op2, 8);
> -}
> -
> -svint32_t test_svmul_lane_s32(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmul_lane,_s32,,)(op1, op2, -1);
> -}
> -
> -svint64_t test_svmul_lane_s64(svint64_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svmul_lane,_s64,,)(op1, op2, 2);
> -}
> -
> -svuint16_t test_svmul_lane_u16(svuint16_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmul_lane,_u16,,)(op1, op2, -1);
> -}
> -
> -svuint32_t test_svmul_lane_u32(svuint32_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmul_lane,_u32,,)(op1, op2, 4);
> -}
> -
> -svuint64_t test_svmul_lane_u64(svuint64_t op1, svuint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svmul_lane,_u64,,)(op1, op2, -1);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mullb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mullb.c
> deleted file mode 100644
> index 144932ac83340..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mullb.c
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svmullb_lane_s32(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmullb_lane,_s32,,)(op1, op2, -1);
> -}
> -
> -svint64_t test_svmullb_lane_s64(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmullb_lane,_s64,,)(op1, op2, 4);
> -}
> -
> -svuint32_t test_svmullb_lane_u32(svuint16_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmullb_lane,_u32,,)(op1, op2, 8);
> -}
> -
> -svuint64_t test_svmullb_lane_u64(svuint32_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmullb_lane,_u64,,)(op1, op2, -1);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mullt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mullt.c
> deleted file mode 100644
> index ea0cb1d3ff3c4..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_mullt.c
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svmullt_lane_s32(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmullt_lane,_s32,,)(op1, op2, 8);
> -}
> -
> -svint64_t test_svmullt_lane_s64(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmullt_lane,_s64,,)(op1, op2, -1);
> -}
> -
> -svuint32_t test_svmullt_lane_u32(svuint16_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svmullt_lane,_u32,,)(op1, op2, -1);
> -}
> -
> -svuint64_t test_svmullt_lane_u64(svuint32_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svmullt_lane,_u64,,)(op1, op2, 4);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qcadd.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qcadd.c
> deleted file mode 100644
> index 41ea94be3c5ff..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qcadd.c
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svqcadd_s8(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svqcadd,_s8,,)(op1, op2, 0);
> -}
> -
> -svint16_t test_svqcadd_s16(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svqcadd,_s16,,)(op1, op2, 91);
> -}
> -
> -svint32_t test_svqcadd_s32(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svqcadd,_s32,,)(op1, op2, 269);
> -}
> -
> -svint64_t test_svqcadd_s64(svint64_t op1, svint64_t op2)
> -{
> -  // expected-error at +1 {{argument should be the value 90 or 270}}
> -  return SVE_ACLE_FUNC(svqcadd,_s64,,)(op1, op2, 30);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlalb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlalb.c
> deleted file mode 100644
> index 7c825f13794ff..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlalb.c
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svqdmlalb_lane_s32(svint32_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqdmlalb_lane,_s32,,)(op1, op2, op3, -1);
> -}
> -
> -svint64_t test_svqdmlalb_lane_s64(svint64_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqdmlalb_lane,_s64,,)(op1, op2, op3, 4);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlalt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlalt.c
> deleted file mode 100644
> index e95c7563b765d..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlalt.c
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svqdmlalt_lane_s32(svint32_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqdmlalt_lane,_s32,,)(op1, op2, op3, -1);
> -}
> -
> -svint64_t test_svqdmlalt_lane_s64(svint64_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqdmlalt_lane,_s64,,)(op1, op2, op3, 4);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlslb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlslb.c
> deleted file mode 100644
> index f37661810020c..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlslb.c
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svqdmlslb_lane_s32(svint32_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqdmlslb_lane,_s32,,)(op1, op2, op3, -1);
> -}
> -
> -svint64_t test_svqdmlslb_lane_s64(svint64_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqdmlslb_lane,_s64,,)(op1, op2, op3, 4);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlslt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlslt.c
> deleted file mode 100644
> index be64fe805fab4..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmlslt.c
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svqdmlslt_lane_s32(svint32_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqdmlslt_lane,_s32,,)(op1, op2, op3, -1);
> -}
> -
> -svint64_t test_svqdmlslt_lane_s64(svint64_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqdmlslt_lane,_s64,,)(op1, op2, op3, 4);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmulh.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmulh.c
> deleted file mode 100644
> index 03c6032bb6b8a..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmulh.c
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint16_t test_svqdmulh_lane_s16(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqdmulh_lane,_s16,,)(op1, op2, -1);
> -}
> -
> -svint32_t test_svqdmulh_lane_s32(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqdmulh_lane,_s32,,)(op1, op2, 4);
> -}
> -
> -svint64_t test_svqdmulh_lane_s64(svint64_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svqdmulh_lane,_s64,,)(op1, op2, 2);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmullb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmullb.c
> deleted file mode 100644
> index 2f7c708e7625b..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmullb.c
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svqdmullb_lane_s32(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqdmullb_lane,_s32,,)(op1, op2, -1);
> -}
> -
> -svint64_t test_svqdmullb_lane_s64(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqdmullb_lane,_s64,,)(op1, op2, 4);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmullt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmullt.c
> deleted file mode 100644
> index d03f7111e668c..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qdmullt.c
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint32_t test_svqdmullt_lane_s32(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqdmullt_lane,_s32,,)(op1, op2, -1);
> -}
> -
> -svint64_t test_svqdmullt_lane_s64(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqdmullt_lane,_s64,,)(op1, op2, -1);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdcmlah.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdcmlah.c
> deleted file mode 100644
> index 994acd8a5ae1d..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdcmlah.c
> +++ /dev/null
> @@ -1,115 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svqrdcmlah_s8(svint8_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svqrdcmlah,_s8,,)(op1, op2, op3, 19);
> -}
> -
> -svint8_t test_svqrdcmlah_s8_1(svint8_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svqrdcmlah,_s8,,)(op1, op2, op3, 1);
> -}
> -
> -svint8_t test_svqrdcmlah_s8_2(svint8_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svqrdcmlah,_s8,,)(op1, op2, op3, 18);
> -}
> -
> -svint8_t test_svqrdcmlah_s8_3(svint8_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svqrdcmlah,_s8,,)(op1, op2, op3, 91);
> -}
> -
> -svint8_t test_svqrdcmlah_s8_4(svint8_t op1, svint8_t op2, svint8_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svqrdcmlah,_s8,,)(op1, op2, op3, 181);
> -}
> -
> -svint16_t test_svqrdcmlah_s16(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svqrdcmlah,_s16,,)(op1, op2, op3, 19);
> -}
> -
> -svint32_t test_svqrdcmlah_s32(svint32_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svqrdcmlah,_s32,,)(op1, op2, op3, 19);
> -}
> -
> -svint64_t test_svqrdcmlah_s64(svint64_t op1, svint64_t op2, svint64_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svqrdcmlah,_s64,,)(op1, op2, op3, 19);
> -}
> -
> -svint16_t test_svqrdcmlah_lane_s16(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqrdcmlah_lane,_s16,,)(op1, op2, op3, -1, 0);
> -}
> -
> -svint16_t test_svqrdcmlah_lane_s16_1(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqrdcmlah_lane,_s16,,)(op1, op2, op3, 4, 0);
> -}
> -
> -svint16_t test_svqrdcmlah_lane_s16_2(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqrdcmlah_lane,_s16,,)(op1, op2, op3, -1, 90);
> -}
> -
> -svint16_t test_svqrdcmlah_lane_s16_3(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqrdcmlah_lane,_s16,,)(op1, op2, op3, -1, 180);
> -}
> -
> -svint16_t test_svqrdcmlah_lane_s16_4(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqrdcmlah_lane,_s16,,)(op1, op2, op3, -1, 270);
> -}
> -
> -svint16_t test_svqrdcmlah_lane_s16_5(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svqrdcmlah_lane,_s16,,)(op1, op2, op3, 0, 19);
> -}
> -
> -svint16_t test_svqrdcmlah_lane_s16_6(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svqrdcmlah_lane,_s16,,)(op1, op2, op3, 1, 19);
> -}
> -
> -svint32_t test_svqrdcmlah_lane_s32(svint32_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svqrdcmlah_lane,_s32,,)(op1, op2, op3, 2, 0);
> -}
> -
> -svint32_t test_svqrdcmlah_lane_s32_1(svint32_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> -  return SVE_ACLE_FUNC(svqrdcmlah_lane,_s32,,)(op1, op2, op3, 0, 19);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdmlah.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdmlah.c
> deleted file mode 100644
> index e81a9dfd1a37f..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdmlah.c
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint16_t test_svqrdmlah_lane_s16(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqrdmlah_lane,_s16,,)(op1, op2, op3, -1);
> -}
> -
> -svint32_t test_svqrdmlah_lane_s32(svint32_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqrdmlah_lane,_s32,,)(op1, op2, op3, 4);
> -}
> -
> -svint64_t test_svqrdmlah_lane_s64(svint64_t op1, svint64_t op2, svint64_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svqrdmlah_lane,_s64,,)(op1, op2, op3, 2);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdmlsh.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdmlsh.c
> deleted file mode 100644
> index a3ee155b3517d..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdmlsh.c
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint16_t test_svqrdmlsh_lane_s16(svint16_t op1, svint16_t op2, svint16_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqrdmlsh_lane,_s16,,)(op1, op2, op3, -1);
> -}
> -
> -svint32_t test_svqrdmlsh_lane_s32(svint32_t op1, svint32_t op2, svint32_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqrdmlsh_lane,_s32,,)(op1, op2, op3, 4);
> -}
> -
> -svint64_t test_svqrdmlsh_lane_s64(svint64_t op1, svint64_t op2, svint64_t op3)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svqrdmlsh_lane,_s64,,)(op1, op2, op3, 2);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdmulh.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdmulh.c
> deleted file mode 100644
> index c72998d99bd77..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrdmulh.c
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint16_t test_svqrdmulh_lane_s16(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqrdmulh_lane,_s16,,)(op1, op2, -1);
> -}
> -
> -svint32_t test_svqrdmulh_lane_s32(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> -  return SVE_ACLE_FUNC(svqrdmulh_lane,_s32,,)(op1, op2, 4);
> -}
> -
> -svint64_t test_svqrdmulh_lane_s64(svint64_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> -  return SVE_ACLE_FUNC(svqrdmulh_lane,_s64,,)(op1, op2, 2);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrnb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrnb.c
> deleted file mode 100644
> index f5060a950738f..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrnb.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svqrshrnb_n_s16(svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svqrshrnb,_n_s16,,)(op1, 0);
> -}
> -
> -svint16_t test_svqrshrnb_n_s32(svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svqrshrnb,_n_s32,,)(op1, 0);
> -}
> -
> -svint32_t test_svqrshrnb_n_s64(svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svqrshrnb,_n_s64,,)(op1, 0);
> -}
> -
> -svuint8_t test_svqrshrnb_n_u16(svuint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svqrshrnb,_n_u16,,)(op1, 0);
> -}
> -
> -svuint16_t test_svqrshrnb_n_u32(svuint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svqrshrnb,_n_u32,,)(op1, 0);
> -}
> -
> -svuint32_t test_svqrshrnb_n_u64(svuint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svqrshrnb,_n_u64,,)(op1, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrnt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrnt.c
> deleted file mode 100644
> index 7e4339a18e0ef..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrnt.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svqrshrnt_n_s16(svint8_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svqrshrnt,_n_s16,,)(op1, op2, 0);
> -}
> -
> -svint16_t test_svqrshrnt_n_s32(svint16_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svqrshrnt,_n_s32,,)(op1, op2, 0);
> -}
> -
> -svint32_t test_svqrshrnt_n_s64(svint32_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svqrshrnt,_n_s64,,)(op1, op2, 0);
> -}
> -
> -svuint8_t test_svqrshrnt_n_u16(svuint8_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svqrshrnt,_n_u16,,)(op1, op2, 0);
> -}
> -
> -svuint16_t test_svqrshrnt_n_u32(svuint16_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svqrshrnt,_n_u32,,)(op1, op2, 0);
> -}
> -
> -svuint32_t test_svqrshrnt_n_u64(svuint32_t op1, svuint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svqrshrnt,_n_u64,,)(op1, op2, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrunb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrunb.c
> deleted file mode 100644
> index 0f700ac2d8a8d..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrunb.c
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svuint8_t test_svqrshrunb_n_s16(svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svqrshrunb,_n_s16,,)(op1, 0);
> -}
> -
> -svuint16_t test_svqrshrunb_n_s32(svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svqrshrunb,_n_s32,,)(op1, 0);
> -}
> -
> -svuint32_t test_svqrshrunb_n_s64(svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svqrshrunb,_n_s64,,)(op1, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrunt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrunt.c
> deleted file mode 100644
> index c5c98c40b2536..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qrshrunt.c
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svuint8_t test_svqrshrunt_n_s16(svuint8_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svqrshrunt,_n_s16,,)(op1, op2, 0);
> -}
> -
> -svuint16_t test_svqrshrunt_n_s32(svuint16_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svqrshrunt,_n_s32,,)(op1, op2, 0);
> -}
> -
> -svuint32_t test_svqrshrunt_n_s64(svuint32_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svqrshrunt,_n_s64,,)(op1, op2, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshlu.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshlu.c
> deleted file mode 100644
> index 4139bf2f5374e..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshlu.c
> +++ /dev/null
> @@ -1,85 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svuint8_t test_svqshlu_n_s8_z(svbool_t pg, svint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqshlu,_n_s8,_z,)(pg, op1, -1);
> -}
> -
> -svuint16_t test_svqshlu_n_s16_z(svbool_t pg, svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> -  return SVE_ACLE_FUNC(svqshlu,_n_s16,_z,)(pg, op1, -1);
> -}
> -
> -svuint32_t test_svqshlu_n_s32_z(svbool_t pg, svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> -  return SVE_ACLE_FUNC(svqshlu,_n_s32,_z,)(pg, op1, -1);
> -}
> -
> -svuint64_t test_svqshlu_n_s64_z(svbool_t pg, svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
> -  return SVE_ACLE_FUNC(svqshlu,_n_s64,_z,)(pg, op1, -1);
> -}
> -
> -svuint8_t test_svqshlu_n_s8_m(svbool_t pg, svint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqshlu,_n_s8,_m,)(pg, op1, -1);
> -}
> -
> -svuint16_t test_svqshlu_n_s16_m(svbool_t pg, svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> -  return SVE_ACLE_FUNC(svqshlu,_n_s16,_m,)(pg, op1, -1);
> -}
> -
> -svuint32_t test_svqshlu_n_s32_m(svbool_t pg, svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> -  return SVE_ACLE_FUNC(svqshlu,_n_s32,_m,)(pg, op1, -1);
> -}
> -
> -svuint64_t test_svqshlu_n_s64_m(svbool_t pg, svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
> -  return SVE_ACLE_FUNC(svqshlu,_n_s64,_m,)(pg, op1, -1);
> -}
> -
> -svuint8_t test_svqshlu_n_s8_x(svbool_t pg, svint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svqshlu,_n_s8,_x,)(pg, op1, -1);
> -}
> -
> -svuint16_t test_svqshlu_n_s16_x(svbool_t pg, svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> -  return SVE_ACLE_FUNC(svqshlu,_n_s16,_x,)(pg, op1, -1);
> -}
> -
> -svuint32_t test_svqshlu_n_s32_x(svbool_t pg, svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> -  return SVE_ACLE_FUNC(svqshlu,_n_s32,_x,)(pg, op1, -1);
> -}
> -
> -svuint64_t test_svqshlu_n_s64_x(svbool_t pg, svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
> -  return SVE_ACLE_FUNC(svqshlu,_n_s64,_x,)(pg, op1, -1);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrnb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrnb.c
> deleted file mode 100644
> index c51acf8c5c02c..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrnb.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svqshrnb_n_s16(svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svqshrnb,_n_s16,,)(op1, 0);
> -}
> -
> -svint16_t test_svqshrnb_n_s32(svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svqshrnb,_n_s32,,)(op1, 0);
> -}
> -
> -svint32_t test_svqshrnb_n_s64(svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svqshrnb,_n_s64,,)(op1, 0);
> -}
> -
> -svuint8_t test_svqshrnb_n_u16(svuint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svqshrnb,_n_u16,,)(op1, 0);
> -}
> -
> -svuint16_t test_svqshrnb_n_u32(svuint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svqshrnb,_n_u32,,)(op1, 0);
> -}
> -
> -svuint32_t test_svqshrnb_n_u64(svuint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svqshrnb,_n_u64,,)(op1, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrnt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrnt.c
> deleted file mode 100644
> index 7e70139a138d7..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrnt.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svqshrnt_n_s16(svint8_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svqshrnt,_n_s16,,)(op1, op2, 0);
> -}
> -
> -svint16_t test_svqshrnt_n_s32(svint16_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svqshrnt,_n_s32,,)(op1, op2, 0);
> -}
> -
> -svint32_t test_svqshrnt_n_s64(svint32_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svqshrnt,_n_s64,,)(op1, op2, 0);
> -}
> -
> -svuint8_t test_svqshrnt_n_u16(svuint8_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svqshrnt,_n_u16,,)(op1, op2, 0);
> -}
> -
> -svuint16_t test_svqshrnt_n_u32(svuint16_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svqshrnt,_n_u32,,)(op1, op2, 0);
> -}
> -
> -svuint32_t test_svqshrnt_n_u64(svuint32_t op1, svuint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svqshrnt,_n_u64,,)(op1, op2, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrunb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrunb.c
> deleted file mode 100644
> index 552cd424e0f5c..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrunb.c
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svuint8_t test_svqshrunb_n_s16(svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svqshrunb,_n_s16,,)(op1, 0);
> -}
> -
> -svuint16_t test_svqshrunb_n_s32(svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svqshrunb,_n_s32,,)(op1, 0);
> -}
> -
> -svuint32_t test_svqshrunb_n_s64(svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svqshrunb,_n_s64,,)(op1, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrunt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrunt.c
> deleted file mode 100644
> index 0b438651dcfec..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_qshrunt.c
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svuint8_t test_svqshrunt_n_s16(svuint8_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svqshrunt,_n_s16,,)(op1, op2, 0);
> -}
> -
> -svuint16_t test_svqshrunt_n_s32(svuint16_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svqshrunt,_n_s32,,)(op1, op2, 0);
> -}
> -
> -svuint32_t test_svqshrunt_n_s64(svuint32_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svqshrunt,_n_s64,,)(op1, op2, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rshr.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rshr.c
> deleted file mode 100644
> index 2b025612c741d..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rshr.c
> +++ /dev/null
> @@ -1,181 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svrshr_n_s8_z(svbool_t pg, svint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s8,_z,)(pg, op1, 0);
> -}
> -
> -svint8_t test_svrshr_n_s8_z_1(svbool_t pg, svint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s8,_z,)(pg, op1, 9);
> -}
> -
> -svint16_t test_svrshr_n_s16_z(svbool_t pg, svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s16,_z,)(pg, op1, 0);
> -}
> -
> -svint16_t test_svrshr_n_s16_z_1(svbool_t pg, svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s16,_z,)(pg, op1, 17);
> -}
> -
> -svint32_t test_svrshr_n_s32_z(svbool_t pg, svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s32,_z,)(pg, op1, 0);
> -}
> -
> -svint32_t test_svrshr_n_s32_z_1(svbool_t pg, svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s32,_z,)(pg, op1, 33);
> -}
> -
> -svint64_t test_svrshr_n_s64_z(svbool_t pg, svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s64,_z,)(pg, op1, 0);
> -}
> -
> -svint64_t test_svrshr_n_s64_z_1(svbool_t pg, svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s64,_z,)(pg, op1, 65);
> -}
> -
> -svuint8_t test_svrshr_n_u8_z(svbool_t pg, svuint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_u8,_z,)(pg, op1, 0);
> -}
> -
> -svuint16_t test_svrshr_n_u16_z(svbool_t pg, svuint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_u16,_z,)(pg, op1, 0);
> -}
> -
> -svuint32_t test_svrshr_n_u32_z(svbool_t pg, svuint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_u32,_z,)(pg, op1, 0);
> -}
> -
> -svuint64_t test_svrshr_n_u64_z(svbool_t pg, svuint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_u64,_z,)(pg, op1, 0);
> -}
> -
> -svint8_t test_svrshr_n_s8_m(svbool_t pg, svint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s8,_m,)(pg, op1, 0);
> -}
> -
> -svint16_t test_svrshr_n_s16_m(svbool_t pg, svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s16,_m,)(pg, op1, 0);
> -}
> -
> -svint32_t test_svrshr_n_s32_m(svbool_t pg, svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s32,_m,)(pg, op1, 0);
> -}
> -
> -svint64_t test_svrshr_n_s64_m(svbool_t pg, svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s64,_m,)(pg, op1, 0);
> -}
> -
> -svuint8_t test_svrshr_n_u8_m(svbool_t pg, svuint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_u8,_m,)(pg, op1, 0);
> -}
> -
> -svuint16_t test_svrshr_n_u16_m(svbool_t pg, svuint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_u16,_m,)(pg, op1, 0);
> -}
> -
> -svuint32_t test_svrshr_n_u32_m(svbool_t pg, svuint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_u32,_m,)(pg, op1, 0);
> -}
> -
> -svuint64_t test_svrshr_n_u64_m(svbool_t pg, svuint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_u64,_m,)(pg, op1, 0);
> -}
> -
> -svint8_t test_svrshr_n_s8_x(svbool_t pg, svint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s8,_x,)(pg, op1, 0);
> -}
> -
> -svint16_t test_svrshr_n_s16_x(svbool_t pg, svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s16,_x,)(pg, op1, 0);
> -}
> -
> -svint32_t test_svrshr_n_s32_x(svbool_t pg, svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s32,_x,)(pg, op1, 0);
> -}
> -
> -svint64_t test_svrshr_n_s64_x(svbool_t pg, svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_s64,_x,)(pg, op1, 0);
> -}
> -
> -svuint8_t test_svrshr_n_u8_x(svbool_t pg, svuint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_u8,_x,)(pg, op1, 0);
> -}
> -
> -svuint16_t test_svrshr_n_u16_x(svbool_t pg, svuint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_u16,_x,)(pg, op1, 0);
> -}
> -
> -svuint32_t test_svrshr_n_u32_x(svbool_t pg, svuint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_u32,_x,)(pg, op1, 0);
> -}
> -
> -svuint64_t test_svrshr_n_u64_x(svbool_t pg, svuint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svrshr,_n_u64,_x,)(pg, op1, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rshrnb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rshrnb.c
> deleted file mode 100644
> index 4479c1c4c44ef..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rshrnb.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svrshrnb_n_s16(svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrshrnb,_n_s16,,)(op1, 0);
> -}
> -
> -svint16_t test_svrshrnb_n_s32(svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrshrnb,_n_s32,,)(op1, 0);
> -}
> -
> -svint32_t test_svrshrnb_n_s64(svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrshrnb,_n_s64,,)(op1, 0);
> -}
> -
> -svuint8_t test_svrshrnb_n_u16(svuint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrshrnb,_n_u16,,)(op1, 0);
> -}
> -
> -svuint16_t test_svrshrnb_n_u32(svuint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrshrnb,_n_u32,,)(op1, 0);
> -}
> -
> -svuint32_t test_svrshrnb_n_u64(svuint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrshrnb,_n_u64,,)(op1, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rshrnt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rshrnt.c
> deleted file mode 100644
> index 02d446007f2f4..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rshrnt.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svrshrnt_n_s16(svint8_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrshrnt,_n_s16,,)(op1, op2, 0);
> -}
> -
> -svint16_t test_svrshrnt_n_s32(svint16_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrshrnt,_n_s32,,)(op1, op2, 0);
> -}
> -
> -svint32_t test_svrshrnt_n_s64(svint32_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrshrnt,_n_s64,,)(op1, op2, 0);
> -}
> -
> -svuint8_t test_svrshrnt_n_u16(svuint8_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrshrnt,_n_u16,,)(op1, op2, 0);
> -}
> -
> -svuint16_t test_svrshrnt_n_u32(svuint16_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrshrnt,_n_u32,,)(op1, op2, 0);
> -}
> -
> -svuint32_t test_svrshrnt_n_u64(svuint32_t op1, svuint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrshrnt,_n_u64,,)(op1, op2, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rsra.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rsra.c
> deleted file mode 100644
> index 93adcfd3eede6..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_rsra.c
> +++ /dev/null
> @@ -1,61 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svrsra_n_s8(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrsra,_n_s8,,)(op1, op2, 0);
> -}
> -
> -svint16_t test_svrsra_n_s16(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrsra,_n_s16,,)(op1, op2, 0);
> -}
> -
> -svint32_t test_svrsra_n_s32(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrsra,_n_s32,,)(op1, op2, 0);
> -}
> -
> -svint64_t test_svrsra_n_s64(svint64_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svrsra,_n_s64,,)(op1, op2, 0);
> -}
> -
> -svuint8_t test_svrsra_n_u8(svuint8_t op1, svuint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svrsra,_n_u8,,)(op1, op2, 0);
> -}
> -
> -svuint16_t test_svrsra_n_u16(svuint16_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svrsra,_n_u16,,)(op1, op2, 0);
> -}
> -
> -svuint32_t test_svrsra_n_u32(svuint32_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svrsra,_n_u32,,)(op1, op2, 0);
> -}
> -
> -svuint64_t test_svrsra_n_u64(svuint64_t op1, svuint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svrsra,_n_u64,,)(op1, op2, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shllb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shllb.c
> deleted file mode 100644
> index c90fafa6a0bf0..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shllb.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint16_t test_svshllb_n_s16(svint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svshllb,_n_s16,,)(op1, -1);
> -}
> -
> -svint32_t test_svshllb_n_s32(svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> -  return SVE_ACLE_FUNC(svshllb,_n_s32,,)(op1, -1);
> -}
> -
> -svint64_t test_svshllb_n_s64(svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> -  return SVE_ACLE_FUNC(svshllb,_n_s64,,)(op1, -1);
> -}
> -
> -svuint16_t test_svshllb_n_u16(svuint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svshllb,_n_u16,,)(op1, -1);
> -}
> -
> -svuint32_t test_svshllb_n_u32(svuint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> -  return SVE_ACLE_FUNC(svshllb,_n_u32,,)(op1, -1);
> -}
> -
> -svuint64_t test_svshllb_n_u64(svuint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> -  return SVE_ACLE_FUNC(svshllb,_n_u64,,)(op1, -1);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shllt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shllt.c
> deleted file mode 100644
> index 44721cc78cb01..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shllt.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint16_t test_svshllt_n_s16(svint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svshllt,_n_s16,,)(op1, -1);
> -}
> -
> -svint32_t test_svshllt_n_s32(svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> -  return SVE_ACLE_FUNC(svshllt,_n_s32,,)(op1, -1);
> -}
> -
> -svint64_t test_svshllt_n_s64(svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> -  return SVE_ACLE_FUNC(svshllt,_n_s64,,)(op1, -1);
> -}
> -
> -svuint16_t test_svshllt_n_u16(svuint8_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svshllt,_n_u16,,)(op1, -1);
> -}
> -
> -svuint32_t test_svshllt_n_u32(svuint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> -  return SVE_ACLE_FUNC(svshllt,_n_u32,,)(op1, -1);
> -}
> -
> -svuint64_t test_svshllt_n_u64(svuint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> -  return SVE_ACLE_FUNC(svshllt,_n_u64,,)(op1, -1);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shrnb.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shrnb.c
> deleted file mode 100644
> index 060c4490a84b2..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shrnb.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svshrnb_n_s16(svint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svshrnb,_n_s16,,)(op1, 0);
> -}
> -
> -svint16_t test_svshrnb_n_s32(svint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svshrnb,_n_s32,,)(op1, 0);
> -}
> -
> -svint32_t test_svshrnb_n_s64(svint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svshrnb,_n_s64,,)(op1, 0);
> -}
> -
> -svuint8_t test_svshrnb_n_u16(svuint16_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svshrnb,_n_u16,,)(op1, 0);
> -}
> -
> -svuint16_t test_svshrnb_n_u32(svuint32_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svshrnb,_n_u32,,)(op1, 0);
> -}
> -
> -svuint32_t test_svshrnb_n_u64(svuint64_t op1)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svshrnb,_n_u64,,)(op1, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shrnt.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shrnt.c
> deleted file mode 100644
> index 37bce37460a2b..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_shrnt.c
> +++ /dev/null
> @@ -1,49 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svshrnt_n_s16(svint8_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svshrnt,_n_s16,,)(op1, op2, 0);
> -}
> -
> -svint16_t test_svshrnt_n_s32(svint16_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svshrnt,_n_s32,,)(op1, op2, 0);
> -}
> -
> -svint32_t test_svshrnt_n_s64(svint32_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svshrnt,_n_s64,,)(op1, op2, 0);
> -}
> -
> -svuint8_t test_svshrnt_n_u16(svuint8_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svshrnt,_n_u16,,)(op1, op2, 0);
> -}
> -
> -svuint16_t test_svshrnt_n_u32(svuint16_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svshrnt,_n_u32,,)(op1, op2, 0);
> -}
> -
> -svuint32_t test_svshrnt_n_u64(svuint32_t op1, svuint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svshrnt,_n_u64,,)(op1, op2, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_sli.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_sli.c
> deleted file mode 100644
> index e85db17ab1b4f..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_sli.c
> +++ /dev/null
> @@ -1,61 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svsli_n_s8(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svsli,_n_s8,,)(op1, op2, -1);
> -}
> -
> -svint16_t test_svsli_n_s16(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> -  return SVE_ACLE_FUNC(svsli,_n_s16,,)(op1, op2, -1);
> -}
> -
> -svint32_t test_svsli_n_s32(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> -  return SVE_ACLE_FUNC(svsli,_n_s32,,)(op1, op2, -1);
> -}
> -
> -svint64_t test_svsli_n_s64(svint64_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
> -  return SVE_ACLE_FUNC(svsli,_n_s64,,)(op1, op2, -1);
> -}
> -
> -svuint8_t test_svsli_n_u8(svuint8_t op1, svuint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> -  return SVE_ACLE_FUNC(svsli,_n_u8,,)(op1, op2, -1);
> -}
> -
> -svuint16_t test_svsli_n_u16(svuint16_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> -  return SVE_ACLE_FUNC(svsli,_n_u16,,)(op1, op2, -1);
> -}
> -
> -svuint32_t test_svsli_n_u32(svuint32_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> -  return SVE_ACLE_FUNC(svsli,_n_u32,,)(op1, op2, -1);
> -}
> -
> -svuint64_t test_svsli_n_u64(svuint64_t op1, svuint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
> -  return SVE_ACLE_FUNC(svsli,_n_u64,,)(op1, op2, -1);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_sra.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_sra.c
> deleted file mode 100644
> index 206cc66dec4ba..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_sra.c
> +++ /dev/null
> @@ -1,61 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svsra_n_s8(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svsra,_n_s8,,)(op1, op2, 0);
> -}
> -
> -svint16_t test_svsra_n_s16(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svsra,_n_s16,,)(op1, op2, 0);
> -}
> -
> -svint32_t test_svsra_n_s32(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svsra,_n_s32,,)(op1, op2, 0);
> -}
> -
> -svint64_t test_svsra_n_s64(svint64_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svsra,_n_s64,,)(op1, op2, 0);
> -}
> -
> -svuint8_t test_svsra_n_u8(svuint8_t op1, svuint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svsra,_n_u8,,)(op1, op2, 0);
> -}
> -
> -svuint16_t test_svsra_n_u16(svuint16_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svsra,_n_u16,,)(op1, op2, 0);
> -}
> -
> -svuint32_t test_svsra_n_u32(svuint32_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svsra,_n_u32,,)(op1, op2, 0);
> -}
> -
> -svuint64_t test_svsra_n_u64(svuint64_t op1, svuint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svsra,_n_u64,,)(op1, op2, 0);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_sri.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_sri.c
> deleted file mode 100644
> index 45d287dad675b..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_sri.c
> +++ /dev/null
> @@ -1,109 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svsri_n_s8(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svsri,_n_s8,,)(op1, op2, 0);
> -}
> -
> -svint16_t test_svsri_n_s16(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svsri,_n_s16,,)(op1, op2, 0);
> -}
> -
> -svint32_t test_svsri_n_s32(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svsri,_n_s32,,)(op1, op2, 0);
> -}
> -
> -svint64_t test_svsri_n_s64(svint64_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svsri,_n_s64,,)(op1, op2, 0);
> -}
> -
> -svuint8_t test_svsri_n_u8(svuint8_t op1, svuint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svsri,_n_u8,,)(op1, op2, 0);
> -}
> -
> -svuint16_t test_svsri_n_u16(svuint16_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svsri,_n_u16,,)(op1, op2, 0);
> -}
> -
> -svuint32_t test_svsri_n_u32(svuint32_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svsri,_n_u32,,)(op1, op2, 0);
> -}
> -
> -svuint64_t test_svsri_n_u64(svuint64_t op1, svuint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svsri,_n_u64,,)(op1, op2, 0);
> -}
> -
> -svint8_t test_svsri_n_s8_1(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svsri,_n_s8,,)(op1, op2, 9);
> -}
> -
> -svint16_t test_svsri_n_s16_1(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svsri,_n_s16,,)(op1, op2, 17);
> -}
> -
> -svint32_t test_svsri_n_s32_1(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svsri,_n_s32,,)(op1, op2, 33);
> -}
> -
> -svint64_t test_svsri_n_s64_1(svint64_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svsri,_n_s64,,)(op1, op2, 65);
> -}
> -
> -svuint8_t test_svsri_n_u8_1(svuint8_t op1, svuint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svsri,_n_u8,,)(op1, op2, 9);
> -}
> -
> -svuint16_t test_svsri_n_u16_1(svuint16_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svsri,_n_u16,,)(op1, op2, 17);
> -}
> -
> -svuint32_t test_svsri_n_u32_1(svuint32_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svsri,_n_u32,,)(op1, op2, 33);
> -}
> -
> -svuint64_t test_svsri_n_u64_1(svuint64_t op1, svuint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svsri,_n_u64,,)(op1, op2, 65);
> -}
> 
> diff  --git a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_xar.c b/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_xar.c
> deleted file mode 100644
> index cbc62c5a59404..0000000000000
> --- a/clang/test/CodeGen/aarch64-sve2-intrinsics/negative/acle_sve2_xar.c
> +++ /dev/null
> @@ -1,85 +0,0 @@
> -// REQUIRES: aarch64-registered-target
> -
> -// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> -
> -#ifdef SVE_OVERLOADED_FORMS
> -// A simple used,unused... macro, long enough to represent any SVE builtin.
> -#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> -#else
> -#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> -#endif
> -
> -#include <arm_sve.h>
> -
> -svint8_t test_svxar_n_s8(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svxar,_n_s8,,)(op1, op2, 0);
> -}
> -
> -svint8_t test_svxar_n_s8_1(svint8_t op1, svint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svxar,_n_s8,,)(op1, op2, 9);
> -}
> -
> -svint16_t test_svxar_n_s16(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svxar,_n_s16,,)(op1, op2, 0);
> -}
> -
> -svint16_t test_svxar_n_s16_1(svint16_t op1, svint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svxar,_n_s16,,)(op1, op2, 17);
> -}
> -
> -svint32_t test_svxar_n_s32(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svxar,_n_s32,,)(op1, op2, 0);
> -}
> -
> -svint32_t test_svxar_n_s32_1(svint32_t op1, svint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svxar,_n_s32,,)(op1, op2, 33);
> -}
> -
> -svint64_t test_svxar_n_s64(svint64_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svxar,_n_s64,,)(op1, op2, 0);
> -}
> -
> -svint64_t test_svxar_n_s64_1(svint64_t op1, svint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svxar,_n_s64,,)(op1, op2, 65);
> -}
> -
> -svuint8_t test_svxar_n_u8(svuint8_t op1, svuint8_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> -  return SVE_ACLE_FUNC(svxar,_n_u8,,)(op1, op2, 0);
> -}
> -
> -svuint16_t test_svxar_n_u16(svuint16_t op1, svuint16_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> -  return SVE_ACLE_FUNC(svxar,_n_u16,,)(op1, op2, 0);
> -}
> -
> -svuint32_t test_svxar_n_u32(svuint32_t op1, svuint32_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> -  return SVE_ACLE_FUNC(svxar,_n_u32,,)(op1, op2, 0);
> -}
> -
> -svuint64_t test_svxar_n_u64(svuint64_t op1, svuint64_t op2)
> -{
> -  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> -  return SVE_ACLE_FUNC(svxar,_n_u64,,)(op1, op2, 0);
> -}
> 
> diff  --git a/clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_lane.cpp b/clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_lane.cpp
> new file mode 100644
> index 0000000000000..04d22aede663e
> --- /dev/null
> +++ b/clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_lane.cpp
> @@ -0,0 +1,183 @@
> +// REQUIRES: aarch64-registered-target
> +
> +// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> +// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> +
> +#ifdef SVE_OVERLOADED_FORMS
> +// A simple used,unused... macro, long enough to represent any SVE builtin.
> +#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> +#else
> +#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> +#endif
> +
> +#include <arm_sve.h>
> +
> +void test_range_0_7()
> +{
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmla_lane,_s16,,)(svundef_s16(), svundef_s16(), svundef_s16(), 8);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmla_lane,_u16,,)(svundef_u16(), svundef_u16(), svundef_u16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmlalb_lane,_s32,,)(svundef_s32(), svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmlalb_lane,_u32,,)(svundef_u32(), svundef_u16(), svundef_u16(), 8);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmlalb_lane,_f32,,)(svundef_f32(), svundef_f16(), svundef_f16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmlalt_lane,_s32,,)(svundef_s32(), svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmlalt_lane,_u32,,)(svundef_u32(), svundef_u16(), svundef_u16(), 8);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmlalt_lane,_f32,,)(svundef_f32(), svundef_f16(), svundef_f16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmls_lane,_s16,,)(svundef_s16(), svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmls_lane,_u16,,)(svundef_u16(), svundef_u16(), svundef_u16(), 8);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmlslb_lane,_s32,,)(svundef_s32(), svundef_s16(), svundef_s16(),  -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmlslb_lane,_u32,,)(svundef_u32(), svundef_u16(), svundef_u16(), 8);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmlslb_lane,_f32,,)(svundef_f32(), svundef_f16(), svundef_f16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmlslt_lane,_s32,,)(svundef_s32(), svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmlslt_lane,_u32,,)(svundef_u32(), svundef_u16(), svundef_u16(), 8);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmlslt_lane,_f32,,)(svundef_f32(), svundef_f16(), svundef_f16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmul_lane,_s16,,)(svundef_s16(), svundef_s16(), 8);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmul_lane,_u16,,)(svundef_u16(), svundef_u16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmullb_lane,_s32,,)(svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmullb_lane,_u32,,)(svundef_u16(), svundef_u16(), 8);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmullt_lane,_s32,,)(svundef_s16(), svundef_s16(), 8);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svmullt_lane,_u32,,)(svundef_u16(), svundef_u16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqdmlalb_lane,_s32,,)(svundef_s32(), svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqdmlalt_lane,_s32,,)(svundef_s32(), svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqdmulh_lane,_s16,,)(svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqdmlslb_lane,_s32,,)(svundef_s32(), svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqdmlslt_lane,_s32,,)(svundef_s32(), svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqdmullb_lane,_s32,,)(svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqdmullt_lane,_s32,,)(svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqrdmlah_lane,_s16,,)(svundef_s16(), svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqrdmlsh_lane,_s16,,)(svundef_s16(), svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqrdmulh_lane,_s16,,)(svundef_s16(), svundef_s16(), -1);
> +}
> +
> +void test_range_0_3()
> +{
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svcdot_lane,_s32,,)(svundef_s32(), svundef_s8(), svundef_s8(), -1, 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svcmla_lane,_s16,,)(svundef_s16(), svundef_s16(), svundef_s16(), -1, 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svcmla_lane,_u16,,)(svundef_u16(), svundef_u16(), svundef_u16(), -1, 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmla_lane,_s32,,)(svundef_s32(), svundef_s32(), svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmla_lane,_u32,,)(svundef_u32(), svundef_u32(), svundef_u32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmlalb_lane,_s64,,)(svundef_s64(), svundef_s32(), svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmlalb_lane,_u64,,)(svundef_u64(), svundef_u32(), svundef_u32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmlalt_lane,_s64,,)(svundef_s64(), svundef_s32(), svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmlalt_lane,_u64,,)(svundef_u64(), svundef_u32(), svundef_u32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmls_lane,_s32,,)(svundef_s32(), svundef_s32(), svundef_s32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmls_lane,_u32,,)(svundef_u32(), svundef_u32(), svundef_u32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmlslb_lane,_s64,,)(svundef_s64(), svundef_s32(), svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmlslb_lane,_u64,,)(svundef_u64(), svundef_u32(), svundef_u32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmlslt_lane,_s64,,)(svundef_s64(), svundef_s32(), svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmlslt_lane,_u64,,)(svundef_u64(), svundef_u32(), svundef_u32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmul_lane,_s32,,)(svundef_s32(), svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmul_lane,_u32,,)(svundef_u32(), svundef_u32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmullb_lane,_s64,,)(svundef_s32(), svundef_s32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmullb_lane,_u64,,)(svundef_u32(), svundef_u32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmullt_lane,_s64,,)(svundef_s32(), svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svmullt_lane,_u64,,)(svundef_u32(), svundef_u32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svqdmulh_lane,_s32,,)(svundef_s32(), svundef_s32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svqrdcmlah_lane,_s16,,)(svundef_s16(), svundef_s16(), svundef_s16(), -1, 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svqrdmlah_lane,_s32,,)(svundef_s32(), svundef_s32(), svundef_s32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svqdmlalb_lane,_s64,,)(svundef_s64(), svundef_s32(), svundef_s32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svqdmlalt_lane,_s64,,)(svundef_s64(), svundef_s32(), svundef_s32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svqrdmlsh_lane,_s32,,)(svundef_s32(), svundef_s32(), svundef_s32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svqdmlslb_lane,_s64,,)(svundef_s64(), svundef_s32(), svundef_s32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svqdmlslt_lane,_s64,,)(svundef_s64(), svundef_s32(), svundef_s32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svqrdmulh_lane,_s32,,)(svundef_s32(), svundef_s32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svqdmullb_lane,_s64,,)(svundef_s32(), svundef_s32(), 4);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 3]}}
> +  SVE_ACLE_FUNC(svqdmullt_lane,_s64,,)(svundef_s32(), svundef_s32(), -1);
> +}
> +
> +void test_range_0_1()
> +{
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svcdot_lane,_s64,,)(svundef_s64(), svundef_s16(), svundef_s16(), -1, 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svcmla_lane,_s32,,)(svundef_s32(), svundef_s32(), svundef_s32(), -1, 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svcmla_lane,_s32,,)(svundef_s32(), svundef_s32(), svundef_s32(), 2, 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svcmla_lane,_u32,,)(svundef_u32(), svundef_u32(), svundef_u32(), -1, 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svmla_lane,_s64,,)(svundef_s64(), svundef_s64(), svundef_s64(), 2);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svmla_lane,_u64,,)(svundef_u64(), svundef_u64(), svundef_u64(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svmls_lane,_s64,,)(svundef_s64(), svundef_s64(), svundef_s64(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svmls_lane,_u64,,)(svundef_u64(), svundef_u64(), svundef_u64(), 2);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svmul_lane,_s64,,)(svundef_s64(), svundef_s64(), 2);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svmul_lane,_u64,,)(svundef_u64(), svundef_u64(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svqdmulh_lane,_s64,,)(svundef_s64(), svundef_s64(), 2);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svqrdcmlah_lane,_s32,,)(svundef_s32(), svundef_s32(), svundef_s32(), 2, 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svqrdmlah_lane,_s64,,)(svundef_s64(), svundef_s64(), svundef_s64(), 2);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svqrdmlsh_lane,_s64,,)(svundef_s64(), svundef_s64(), svundef_s64(), 2);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 1]}}
> +  SVE_ACLE_FUNC(svqrdmulh_lane,_s64,,)(svundef_s64(), svundef_s64(), 2);
> +}
> 
> diff  --git a/clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_n.cpp b/clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_n.cpp
> new file mode 100644
> index 0000000000000..bf3ad5e7a6d49
> --- /dev/null
> +++ b/clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_n.cpp
> @@ -0,0 +1,341 @@
> +// REQUIRES: aarch64-registered-target
> +
> +// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> +// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> +
> +#ifdef SVE_OVERLOADED_FORMS
> +// A simple used,unused... macro, long enough to represent any SVE builtin.
> +#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> +#else
> +#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> +#endif
> +
> +#include <arm_sve.h>
> +
> +void test_range_0_7(svbool_t pg)
> +{
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqshlu,_n_s8,_x,)(pg, svundef_s8(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqshlu,_n_s8,_z,)(pg, svundef_s8(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svqshlu,_n_s8,_m,)(pg, svundef_s8(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svshllb,_n_s16,,)(svundef_s8(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svshllb,_n_u16,,)(svundef_u8(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svshllt,_n_s16,,)(svundef_s8(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svshllt,_n_u16,,)(svundef_u8(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svsli,_n_s8,,)(svundef_s8(), svundef_s8(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 7]}}
> +  SVE_ACLE_FUNC(svsli,_n_u8,,)(svundef_u8(), svundef_u8(), -1);
> +}
> +
> +void test_range_1_8(svbool_t pg)
> +{
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svqrshrnb,_n_s16,,)(svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svqrshrnb,_n_u16,,)(svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svqrshrnt,_n_s16,,)(svundef_s8(), svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svqrshrnt,_n_u16,,)(svundef_u8(), svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svqrshrunb,_n_s16,,)(svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svqrshrunt,_n_s16,,)(svundef_u8(), svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svqshrnb,_n_s16,,)(svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svqshrnb,_n_u16,,)(svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svqshrnt,_n_s16,,)(svundef_s8(), svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svqshrnt,_n_u16,,)(svundef_u8(), svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svqshrunb,_n_s16,,)(svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svqshrunt,_n_s16,,)(svundef_u8(), svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svrshr,_n_s8,_x,)(pg, svundef_s8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svrshr,_n_s8,_z,)(pg, svundef_s8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svrshr,_n_s8,_m,)(pg, svundef_s8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svrshr,_n_u8,_x,)(pg, svundef_u8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svrshr,_n_u8,_z,)(pg, svundef_u8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svrshr,_n_u8,_m,)(pg, svundef_u8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svrshrnb,_n_s16,,)(svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svrshrnb,_n_u16,,)(svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svrshrnt,_n_s16,,)(svundef_s8(), svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svrshrnt,_n_u16,,)(svundef_u8(), svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svrsra,_n_s8,,)(svundef_s8(), svundef_s8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svrsra,_n_u8,,)(svundef_u8(), svundef_u8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svshrnb,_n_s16,,)(svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svshrnb,_n_u16,,)(svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svshrnt,_n_s16,,)(svundef_s8(), svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svshrnt,_n_u16,,)(svundef_u8(), svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svsra,_n_s8,,)(svundef_s8(), svundef_s8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svsra,_n_u8,,)(svundef_u8(), svundef_u8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svsri,_n_s8,,)(svundef_s8(), svundef_s8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svsri,_n_u8,,)(svundef_u8(), svundef_u8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svxar,_n_s8,,)(svundef_s8(), svundef_s8(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 8]}}
> +  SVE_ACLE_FUNC(svxar,_n_u8,,)(svundef_u8(), svundef_u8(), 0);
> +}
> +
> +void test_range_0_15(svbool_t pg)
> +{
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> +  SVE_ACLE_FUNC(svqshlu,_n_s16,_x,)(pg, svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> +  SVE_ACLE_FUNC(svqshlu,_n_s16,_z,)(pg, svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> +  SVE_ACLE_FUNC(svqshlu,_n_s16,_m,)(pg, svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> +  SVE_ACLE_FUNC(svshllb,_n_s32,,)(svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> +  SVE_ACLE_FUNC(svshllb,_n_u32,,)(svundef_u16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> +  SVE_ACLE_FUNC(svshllt,_n_s32,,)(svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> +  SVE_ACLE_FUNC(svshllt,_n_u32,,)(svundef_u16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> +  SVE_ACLE_FUNC(svsli,_n_s16,,)(svundef_s16(), svundef_s16(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 15]}}
> +  SVE_ACLE_FUNC(svsli,_n_u16,,)(svundef_u16(), svundef_u16(), -1);
> +}
> +
> +void test_range_1_16(svbool_t pg)
> +{
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svqrshrnb,_n_s32,,)(svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svqrshrnb,_n_u32,,)(svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svqrshrnt,_n_s32,,)(svundef_s16(), svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svqrshrnt,_n_u32,,)(svundef_u16(), svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svqrshrunb,_n_s32,,)(svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svqrshrunt,_n_s32,,)(svundef_u16(), svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svqshrnb,_n_s32,,)(svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svqshrnb,_n_u32,,)(svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svqshrnt,_n_s32,,)(svundef_s16(), svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svqshrnt,_n_u32,,)(svundef_u16(), svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svqshrunb,_n_s32,,)(svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svqshrunt,_n_s32,,)(svundef_u16(), svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svrshr,_n_s16,_x,)(pg, svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svrshr,_n_s16,_z,)(pg, svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svrshr,_n_s16,_m,)(pg, svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svrshr,_n_u16,_x,)(pg, svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svrshr,_n_u16,_z,)(pg, svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svrshr,_n_u16,_m,)(pg, svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svrshrnb,_n_s32,,)(svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svrshrnb,_n_u32,,)(svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svrshrnt,_n_s32,,)(svundef_s16(), svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svrshrnt,_n_u32,,)(svundef_u16(), svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svrsra,_n_s16,,)(svundef_s16(), svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svrsra,_n_u16,,)(svundef_u16(), svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svshrnb,_n_s32,,)(svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svshrnb,_n_u32,,)(svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svshrnt,_n_s32,,)(svundef_s16(), svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svshrnt,_n_u32,,)(svundef_u16(), svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svsra,_n_s16,,)(svundef_s16(), svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svsra,_n_u16,,)(svundef_u16(), svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svsri,_n_s16,,)(svundef_s16(), svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svsri,_n_u16,,)(svundef_u16(), svundef_u16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svxar,_n_s16,,)(svundef_s16(), svundef_s16(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 16]}}
> +  SVE_ACLE_FUNC(svxar,_n_u16,,)(svundef_u16(), svundef_u16(), 0);
> +}
> +
> +void test_range_0_31(svbool_t pg)
> +{
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> +  SVE_ACLE_FUNC(svqshlu,_n_s32,_x,)(pg, svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> +  SVE_ACLE_FUNC(svqshlu,_n_s32,_z,)(pg, svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> +  SVE_ACLE_FUNC(svqshlu,_n_s32,_m,)(pg, svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> +  SVE_ACLE_FUNC(svshllb,_n_s64,,)(svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> +  SVE_ACLE_FUNC(svshllb,_n_u64,,)(svundef_u32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> +  SVE_ACLE_FUNC(svshllt,_n_s64,,)(svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> +  SVE_ACLE_FUNC(svshllt,_n_u64,,)(svundef_u32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> +  SVE_ACLE_FUNC(svsli,_n_s32,,)(svundef_s32(), svundef_s32(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 31]}}
> +  SVE_ACLE_FUNC(svsli,_n_u32,,)(svundef_u32(), svundef_u32(), -1);
> +}
> +
> +void test_range_1_32(svbool_t pg)
> +{
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svqrshrnb,_n_s64,,)(svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svqrshrnb,_n_u64,,)(svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svqrshrnt,_n_s64,,)(svundef_s32(), svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svqrshrnt,_n_u64,,)(svundef_u32(), svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svqrshrunb,_n_s64,,)(svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svqrshrunt,_n_s64,,)(svundef_u32(), svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svqshrnb,_n_s64,,)(svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svqshrnb,_n_u64,,)(svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svqshrnt,_n_s64,,)(svundef_s32(), svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svqshrnt,_n_u64,,)(svundef_u32(), svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svqshrunb,_n_s64,,)(svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svqshrunt,_n_s64,,)(svundef_u32(), svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svrshr,_n_s32,_x,)(pg, svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svrshr,_n_s32,_z,)(pg, svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svrshr,_n_s32,_m,)(pg, svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svrshr,_n_u32,_x,)(pg, svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svrshr,_n_u32,_z,)(pg, svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svrshr,_n_u32,_m,)(pg, svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svrshrnb,_n_s64,,)(svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svrshrnb,_n_u64,,)(svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svrshrnt,_n_s64,,)(svundef_s32(), svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svrshrnt,_n_u64,,)(svundef_u32(), svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svrsra,_n_s32,,)(svundef_s32(), svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svrsra,_n_u32,,)(svundef_u32(), svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svshrnb,_n_s64,,)(svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svshrnb,_n_u64,,)(svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svshrnt,_n_s64,,)(svundef_s32(), svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svshrnt,_n_u64,,)(svundef_u32(), svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svsra,_n_s32,,)(svundef_s32(), svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svsra,_n_u32,,)(svundef_u32(), svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svsri,_n_s32,,)(svundef_s32(), svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svsri,_n_u32,,)(svundef_u32(), svundef_u32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svxar,_n_s32,,)(svundef_s32(), svundef_s32(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 32]}}
> +  SVE_ACLE_FUNC(svxar,_n_u32,,)(svundef_u32(), svundef_u32(), 0);
> +}
> +
> +void test_range_0_63(svbool_t pg)
> +{
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
> +  SVE_ACLE_FUNC(svqshlu,_n_s64,_x,)(pg, svundef_s64(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
> +  SVE_ACLE_FUNC(svqshlu,_n_s64,_z,)(pg, svundef_s64(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
> +  SVE_ACLE_FUNC(svqshlu,_n_s64,_m,)(pg, svundef_s64(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
> +  SVE_ACLE_FUNC(svsli,_n_s64,,)(svundef_s64(), svundef_s64(), -1);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [0, 63]}}
> +  SVE_ACLE_FUNC(svsli,_n_u64,,)(svundef_u64(), svundef_u64(), -1);
> +}
> +
> +void test_range_1_64(svbool_t pg)
> +{
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svrshr,_n_s64,_x,)(pg, svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svrshr,_n_s64,_z,)(pg, svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svrshr,_n_s64,_m,)(pg, svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svrshr,_n_u64,_x,)(pg, svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svrshr,_n_u64,_z,)(pg, svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svrshr,_n_u64,_m,)(pg, svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svrsra,_n_s64,,)(svundef_s64(), svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svrsra,_n_u64,,)(svundef_u64(), svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svsra,_n_s64,,)(svundef_s64(), svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svsra,_n_u64,,)(svundef_u64(), svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svsri,_n_s64,,)(svundef_s64(), svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svsri,_n_u64,,)(svundef_u64(), svundef_u64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svxar,_n_s64,,)(svundef_s64(), svundef_s64(), 0);
> +  // expected-error-re at +1 {{argument value {{[0-9]+}} is outside the valid range [1, 64]}}
> +  SVE_ACLE_FUNC(svxar,_n_u64,,)(svundef_u64(), svundef_u64(), 0);
> +}
> 
> diff  --git a/clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_rotation.cpp b/clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_rotation.cpp
> new file mode 100644
> index 0000000000000..e92c3c5de254f
> --- /dev/null
> +++ b/clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_rotation.cpp
> @@ -0,0 +1,89 @@
> +// REQUIRES: aarch64-registered-target
> +
> +// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> +// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sve2 -fallow-half-arguments-and-returns -fsyntax-only -verify %s
> +
> +#ifdef SVE_OVERLOADED_FORMS
> +// A simple used,unused... macro, long enough to represent any SVE builtin.
> +#define SVE_ACLE_FUNC(A1,A2_UNUSED,A3,A4_UNUSED) A1##A3
> +#else
> +#define SVE_ACLE_FUNC(A1,A2,A3,A4) A1##A2##A3##A4
> +#endif
> +
> +#include <arm_sve.h>
> +
> +void test_90_270()
> +{
> +  // expected-error at +1 {{argument should be the value 90 or 270}}
> +  SVE_ACLE_FUNC(svcadd,_s8,,)(svundef_s8(), svundef_s8(), 0);
> +  // expected-error at +1 {{argument should be the value 90 or 270}}
> +  SVE_ACLE_FUNC(svcadd,_u8,,)(svundef_u8(), svundef_u8(), 180);
> +  // expected-error at +1 {{argument should be the value 90 or 270}}
> +  SVE_ACLE_FUNC(svcadd,_s16,,)(svundef_s16(), svundef_s16(), 0);
> +  // expected-error at +1 {{argument should be the value 90 or 270}}
> +  SVE_ACLE_FUNC(svcadd,_u16,,)(svundef_u16(), svundef_u16(), 180);
> +  // expected-error at +1 {{argument should be the value 90 or 270}}
> +  SVE_ACLE_FUNC(svcadd,_s32,,)(svundef_s32(), svundef_s32(), 0);
> +  // expected-error at +1 {{argument should be the value 90 or 270}}
> +  SVE_ACLE_FUNC(svcadd,_u32,,)(svundef_u32(), svundef_u32(), 180);
> +  // expected-error at +1 {{argument should be the value 90 or 270}}
> +  SVE_ACLE_FUNC(svcadd,_s64,,)(svundef_s64(), svundef_s64(), 0);
> +  // expected-error at +1 {{argument should be the value 90 or 270}}
> +  SVE_ACLE_FUNC(svcadd,_u64,,)(svundef_u64(), svundef_u64(), 180);
> +  // expected-error at +1 {{argument should be the value 90 or 270}}
> +  SVE_ACLE_FUNC(svqcadd,_s8,,)(svundef_s8(), svundef_s8(), 0);
> +  // expected-error at +1 {{argument should be the value 90 or 270}}
> +  SVE_ACLE_FUNC(svqcadd,_s16,,)(svundef_s16(), svundef_s16(), 180);
> +  // expected-error at +1 {{argument should be the value 90 or 270}}
> +  SVE_ACLE_FUNC(svqcadd,_s32,,)(svundef_s32(), svundef_s32(), 0);
> +  // expected-error at +1 {{argument should be the value 90 or 270}}
> +  SVE_ACLE_FUNC(svqcadd,_s64,,)(svundef_s64(), svundef_s64(), 180);
> +}
> +
> +void test_0_90_180_270()
> +{
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcdot,_s32,,)(svundef_s32(), svundef_s8(), svundef_s8(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcdot_lane,_s32,,)(svundef_s32(), svundef_s8(), svundef_s8(), 0, 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcdot,_s64,,)(svundef_s64(), svundef_s16(), svundef_s16(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcdot_lane,_s64,,)(svundef_s64(), svundef_s16(), svundef_s16(), 0, 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcmla,_s8,,)(svundef_s8(), svundef_s8(), svundef_s8(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcmla,_u8,,)(svundef_u8(), svundef_u8(), svundef_u8(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcmla,_s16,,)(svundef_s16(), svundef_s16(), svundef_s16(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcmla_lane,_s16,,)(svundef_s16(), svundef_s16(), svundef_s16(), 0, 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcmla,_u16,,)(svundef_u16(), svundef_u16(), svundef_u16(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcmla_lane,_u16,,)(svundef_u16(), svundef_u16(), svundef_u16(), 0, 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcmla,_s32,,)(svundef_s32(), svundef_s32(), svundef_s32(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcmla_lane,_s32,,)(svundef_s32(), svundef_s32(), svundef_s32(), 1, 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcmla,_u32,,)(svundef_u32(), svundef_u32(), svundef_u32(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcmla_lane,_u32,,)(svundef_u32(), svundef_u32(), svundef_u32(), 0, 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcmla,_s64,,)(svundef_s64(), svundef_s64(), svundef_s64(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svcmla,_u64,,)(svundef_u64(), svundef_u64(), svundef_u64(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svqrdcmlah,_s8,,)(svundef_s8(), svundef_s8(), svundef_s8(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svqrdcmlah,_s16,,)(svundef_s16(), svundef_s16(), svundef_s16(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svqrdcmlah_lane,_s16,,)(svundef_s16(), svundef_s16(), svundef_s16(), 0, 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svqrdcmlah,_s32,,)(svundef_s32(), svundef_s32(), svundef_s32(), 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svqrdcmlah_lane,_s32,,)(svundef_s32(), svundef_s32(), svundef_s32(), 0, 19);
> +  // expected-error at +1 {{argument should be the value 0, 90, 180 or 270}}
> +  SVE_ACLE_FUNC(svqrdcmlah,_s64,,)(svundef_s64(), svundef_s64(), svundef_s64(), 19);
> +}
> 
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits



More information about the cfe-commits mailing list