Compiler projects using llvm
// RUN: %clang_cc1 -triple riscv64 -target-feature +v -ast-print %s \
// RUN:    | FileCheck %s

void bar(void) {
  // CHECK: __rvv_int64m1_t x0;
  __rvv_int64m1_t x0;

  // CHECK: __rvv_float64m1_t x1;
  __rvv_float64m1_t x1;

  // CHECK: __rvv_int64m2_t x2;
  __rvv_int64m2_t x2;

  // CHECK: __rvv_float64m2_t x3;
  __rvv_float64m2_t x3;

  // CHECK: __rvv_int64m4_t x4;
  __rvv_int64m4_t x4;

  // CHECK: __rvv_float64m4_t x5;
  __rvv_float64m4_t x5;

  // CHECK: __rvv_int64m8_t x6;
  __rvv_int64m8_t x6;

  // CHECK: __rvv_float64m8_t x7;
  __rvv_float64m8_t x7;

  // CHECK: __rvv_int32m1_t x8;
  __rvv_int32m1_t x8;

  // CHECK: __rvv_float32m1_t x9;
  __rvv_float32m1_t x9;

  // CHECK: __rvv_int32m2_t x10;
  __rvv_int32m2_t x10;

  // CHECK: __rvv_float32m2_t x11;
  __rvv_float32m2_t x11;

  // CHECK: __rvv_int32m4_t x12;
  __rvv_int32m4_t x12;

  // CHECK: __rvv_float32m4_t x13;
  __rvv_float32m4_t x13;

  // CHECK: __rvv_int32m8_t x14;
  __rvv_int32m8_t x14;

  // CHECK: __rvv_float32m8_t x15;
  __rvv_float32m8_t x15;

  // CHECK: __rvv_int16m1_t x16;
  __rvv_int16m1_t x16;

  // CHECK: __rvv_float16m1_t x17;
  __rvv_float16m1_t x17;

  // CHECK: __rvv_int16m2_t x18;
  __rvv_int16m2_t x18;

  // CHECK: __rvv_float16m2_t x19;
  __rvv_float16m2_t x19;

  // CHECK: __rvv_int16m4_t x20;
  __rvv_int16m4_t x20;

  // CHECK: __rvv_float16m4_t x21;
  __rvv_float16m4_t x21;

  // CHECK: __rvv_int16m8_t x22;
  __rvv_int16m8_t x22;

  // CHECK: __rvv_float16m8_t x23;
  __rvv_float16m8_t x23;

  // CHECK: __rvv_int8m1_t x24;
  __rvv_int8m1_t x24;

  // CHECK: __rvv_int8m2_t x25;
  __rvv_int8m2_t x25;

  // CHECK: __rvv_int8m4_t x26;
  __rvv_int8m4_t x26;

  // CHECK: __rvv_int8m8_t x27;
  __rvv_int8m8_t x27;

  // CHECK: __rvv_bool64_t x28;
  __rvv_bool64_t x28;

  // CHECK: __rvv_bool32_t x29;
  __rvv_bool32_t x29;

  // CHECK: __rvv_bool16_t x30;
  __rvv_bool16_t x30;

  // CHECK: __rvv_bool8_t x31;
  __rvv_bool8_t x31;

  // CHECK: __rvv_bool8_t x32;
  __rvv_bool8_t x32;

  // CHECK: __rvv_bool8_t x33;
  __rvv_bool8_t x33;

  // CHECK: __rvv_bool8_t x34;
  __rvv_bool8_t x34;

  // CHECK: __rvv_int32mf2_t x35;
  __rvv_int32mf2_t x35;

  // CHECK: __rvv_float32mf2_t x36;
  __rvv_float32mf2_t x36;

  // CHECK: __rvv_int16mf4_t x37;
  __rvv_int16mf4_t x37;

  // CHECK: __rvv_float16mf4_t x38;
  __rvv_float16mf4_t x38;

  // CHECK: __rvv_int16mf2_t x39;
  __rvv_int16mf2_t x39;

  // CHECK: __rvv_float16mf2_t x40;
  __rvv_float16mf2_t x40;

  // CHECK: __rvv_int8mf8_t x41;
  __rvv_int8mf8_t x41;

  // CHECK: __rvv_int8mf4_t x42;
  __rvv_int8mf4_t x42;

  // CHECK: __rvv_int8mf2_t x43;
  __rvv_int8mf2_t x43;
}

typedef __rvv_bool4_t vbool4_t;
__rvv_bool4_t get_rvv_bool4(void);
vbool4_t get_vbool4_t(void);

void func1(int sel) {
  // CHECK: vbool4_t t0 = sel ? get_rvv_bool4() : get_vbool4_t();
  vbool4_t t0 = sel ? get_rvv_bool4() : get_vbool4_t();
}