Compiler projects using llvm
// RUN: %clang_cc1 -verify -triple aarch64-none-linux-gnu -target-feature +sve -fallow-half-arguments-and-returns -fsyntax-only %s

// REQUIRES: aarch64-registered-target

#include <arm_sve.h>

void subscript(svint8_t i8, svint16_t i16, svint32_t i32, svint64_t i64,
               svuint8_t u8, svuint16_t u16, svuint32_t u32, svuint64_t u64,
               svfloat16_t f16, svfloat32_t f32, svfloat64_t f64,
               svbool_t b) {
  (void)b[0];    // expected-error{{subscript of svbool_t is not allowed}}
  (void)b[0.f];  // expected-error{{subscript of svbool_t is not allowed}}
  (void)b[0.];   // expected-error{{subscript of svbool_t is not allowed}}

  (void)i8[0.f]; // expected-error{{array subscript is not an integer}}
  (void)i8[0.];  // expected-error{{array subscript is not an integer}}

  (void)u8[0.f]; // expected-error{{array subscript is not an integer}}
  (void)u8[0.];  // expected-error{{array subscript is not an integer}}

  (void)i16[0.f]; // expected-error{{array subscript is not an integer}}
  (void)i16[0.];  // expected-error{{array subscript is not an integer}}

  (void)u16[0.f]; // expected-error{{array subscript is not an integer}}
  (void)u16[0.];  // expected-error{{array subscript is not an integer}}

  (void)i32[0.f]; // expected-error{{array subscript is not an integer}}
  (void)i32[0.];  // expected-error{{array subscript is not an integer}}

  (void)u32[0.f]; // expected-error{{array subscript is not an integer}}
  (void)u32[0.];  // expected-error{{array subscript is not an integer}}

  (void)i64[0.f]; // expected-error{{array subscript is not an integer}}
  (void)i64[0.];  // expected-error{{array subscript is not an integer}}

  (void)u64[0.f]; // expected-error{{array subscript is not an integer}}
  (void)u64[0.];  // expected-error{{array subscript is not an integer}}

  (void)f16[0.f]; // expected-error{{array subscript is not an integer}}
  (void)f16[0.];  // expected-error{{array subscript is not an integer}}

  (void)f32[0.f]; // expected-error{{array subscript is not an integer}}
  (void)f32[0.];  // expected-error{{array subscript is not an integer}}

  (void)f64[0.f]; // expected-error{{array subscript is not an integer}}
  (void)f64[0.];  // expected-error{{array subscript is not an integer}}
}