// RUN: cir-opt %s -o - | FileCheck %s

!s8i = !cir.int<s, 8>
!s16i = !cir.int<s, 16>
!s32i = !cir.int<s, 32>
!s64i = !cir.int<s, 64>
!s128i = !cir.int<s, 128>
!u8i = !cir.int<u, 8>
!u16i = !cir.int<u, 16>
!u32i = !cir.int<u, 32>
!u64i = !cir.int<u, 64>
!u128i = !cir.int<u, 128>
!void = !cir.void

module attributes {cir.triple = "x86_64-unknown-linux-gnu"} {
  cir.global external @c = #cir.int<0> : !s8i
  cir.global external @sc = #cir.int<0> : !s8i
  cir.global external @uc = #cir.int<0> : !u8i
  cir.global external @ss = #cir.int<0> : !s16i
  cir.global external @us = #cir.int<100> : !u16i
  cir.global external @si = #cir.int<42> : !s32i
  cir.global external @ui = #cir.int<0> : !u32i
  cir.global external @sl = #cir.int<0> : !s64i
  cir.global external @ul = #cir.int<0> : !u64i
  cir.global external @sll = #cir.int<0> : !s64i
  cir.global external @ull = #cir.int<123456> : !u64i
  cir.global external @s128 = #cir.int<0> : !s128i
  cir.global external @u128 = #cir.int<0> : !u128i
  cir.global external @wc = #cir.int<0> : !s32i
  cir.global external @c8 = #cir.int<0> : !u8i
  cir.global external @c16 = #cir.int<0> : !u16i
  cir.global external @c32 = #cir.int<0> : !u32i
  cir.global external @sb20 = #cir.int<0> : !cir.int<s, 20>
  cir.global external @ub48 = #cir.int<0> : !cir.int<u, 48>
  cir.global external @f16 = #cir.fp<0.000000e+00> : !cir.f16
  cir.global external @bf16 = #cir.fp<0.000000e+00> : !cir.bf16
  cir.global external @f = #cir.fp<0.000000e+00> : !cir.float
  cir.global external @d = #cir.fp<1.250000e+00> : !cir.double
  cir.global external @ld = #cir.fp<0.000000e+00> : !cir.long_double<!cir.f80>
  cir.global external @f128 = #cir.fp<0.000000e+00> : !cir.f128
  cir.global external @vp = #cir.ptr<null> : !cir.ptr<!void>
  cir.global external @ip = #cir.ptr<null> : !cir.ptr<!s32i>
  cir.global external @dp = #cir.ptr<null> : !cir.ptr<!cir.double>
  cir.global external @cpp = #cir.ptr<null> : !cir.ptr<!cir.ptr<!s8i>>
  cir.global external @fp = #cir.ptr<null> : !cir.ptr<!cir.func<()>>
  cir.global external @fpii = #cir.ptr<null> : !cir.ptr<!cir.func<(!s32i) -> !s32i>>
  cir.global external @fpvar = #cir.ptr<null> : !cir.ptr<!cir.func<(!s32i, ...)>>
}

// CHECK: cir.global external @c = #cir.int<0> : !s8i
// CHECK: cir.global external @sc = #cir.int<0> : !s8i
// CHECK: cir.global external @uc = #cir.int<0> : !u8i
// CHECK: cir.global external @ss = #cir.int<0> : !s16i
// CHECK: cir.global external @us = #cir.int<100> : !u16i
// CHECK: cir.global external @si = #cir.int<42> : !s32i
// CHECK: cir.global external @ui = #cir.int<0> : !u32i
// CHECK: cir.global external @sl = #cir.int<0> : !s64i
// CHECK: cir.global external @ul = #cir.int<0> : !u64i
// CHECK: cir.global external @sll = #cir.int<0> : !s64i
// CHECK: cir.global external @ull = #cir.int<123456> : !u64i
// CHECK: cir.global external @s128 = #cir.int<0> : !s128i
// CHECK: cir.global external @u128 = #cir.int<0> : !u128i
// CHECK: cir.global external @wc = #cir.int<0> : !s32i
// CHECK: cir.global external @c8 = #cir.int<0> : !u8i
// CHECK: cir.global external @c16 = #cir.int<0> : !u16i
// CHECK: cir.global external @c32 = #cir.int<0> : !u32i
// CHECK: cir.global external @sb20 = #cir.int<0> : !cir.int<s, 20>
// CHECK: cir.global external @ub48 = #cir.int<0> : !cir.int<u, 48>
// CHECK: cir.global external @f16 = #cir.fp<0.000000e+00> : !cir.f16
// CHECK: cir.global external @bf16 = #cir.fp<0.000000e+00> : !cir.bf16
// CHECK: cir.global external @f = #cir.fp<0.000000e+00> : !cir.float
// CHECK: cir.global external @d = #cir.fp<1.250000e+00> : !cir.double
// CHECK: cir.global external @ld = #cir.fp<0.000000e+00> : !cir.long_double<!cir.f80>
// CHECK: cir.global external @f128 = #cir.fp<0.000000e+00> : !cir.f128
// CHECK: cir.global external @vp = #cir.ptr<null> : !cir.ptr<!void>
// CHECK: cir.global external @ip = #cir.ptr<null> : !cir.ptr<!s32i>
// CHECK: cir.global external @dp = #cir.ptr<null> : !cir.ptr<!cir.double>
// CHECK: cir.global external @cpp = #cir.ptr<null> : !cir.ptr<!cir.ptr<!s8i>>
// CHECK: cir.global external @fp = #cir.ptr<null> : !cir.ptr<!cir.func<()>>
// CHECK: cir.global external @fpii = #cir.ptr<null> : !cir.ptr<!cir.func<(!s32i) -> !s32i>>
// CHECK: cir.global external @fpvar = #cir.ptr<null> : !cir.ptr<!cir.func<(!s32i, ...)>>
