//@ assembly-output: ptx-linker
//@ compile-flags: --crate-type cdylib -C target-cpu=sm_86 -Z unstable-options -Clinker-flavor=llbc
//@ only-nvptx64

// The PTX ABI stability is tied to major versions of the PTX ISA
// These tests assume major version 7

// CHECK: .version 7

#![feature(abi_ptx, lang_items, no_core)]
#![no_core]

#[lang = "sized"]
trait Sized {}
#[lang = "copy"]
trait Copy {}

#[repr(C)]
pub struct SingleU8 {
    f: u8,
}

#[repr(C)]
pub struct DoubleU8 {
    f: u8,
    g: u8,
}

#[repr(C)]
pub struct TripleU8 {
    f: u8,
    g: u8,
    h: u8,
}

#[repr(C)]
pub struct TripleU16 {
    f: u16,
    g: u16,
    h: u16,
}
#[repr(C)]
pub struct DoubleI32 {
    f: i32,
    g: i32,
}
#[repr(C)]
pub struct TripleU32 {
    f: u32,
    g: u32,
    h: u32,
}
#[repr(C)]
pub struct TripleU64 {
    f: u64,
    g: u64,
    h: u64,
}

#[repr(C)]
pub struct DoubleFloat {
    f: f32,
    g: f32,
}

#[repr(C)]
pub struct TripleFloat {
    f: f32,
    g: f32,
    h: f32,
}

#[repr(C)]
pub struct TripleDouble {
    f: f64,
    g: f64,
    h: f64,
}

#[repr(C)]
pub struct ManyIntegers {
    f: u8,
    g: u16,
    h: u32,
    i: u64,
}

#[repr(C)]
pub struct ManyNumerics {
    f: u8,
    g: u16,
    h: u32,
    i: u64,
    j: f32,
    k: f64,
}

// CHECK: .visible .func (.param .b32 func_retval0) f_u8_ret(
#[no_mangle]
pub unsafe extern "C" fn f_u8_ret() -> u8 {
    0
}

// CHECK: .visible .func (.param .b32 func_retval0) f_u16_ret(
#[no_mangle]
pub unsafe extern "C" fn f_u16_ret() -> u16 {
    1
}

// CHECK: .visible .func (.param .b32 func_retval0) f_u32_ret(
#[no_mangle]
pub unsafe extern "C" fn f_u32_ret() -> u32 {
    2
}

// CHECK: .visible .func (.param .b64 func_retval0) f_u64_ret(
#[no_mangle]
pub unsafe extern "C" fn f_u64_ret() -> u64 {
    3
}

// CHECK: .visible .func (.param .align 16 .b8 func_retval0[16]) f_u128_ret(
#[no_mangle]
pub unsafe extern "C" fn f_u128_ret() -> u128 {
    4
}

// CHECK: .visible .func (.param .b32 func_retval0) f_i8_ret(
#[no_mangle]
pub unsafe extern "C" fn f_i8_ret() -> i8 {
    5
}

// CHECK: .visible .func (.param .b32 func_retval0) f_i16_ret(
#[no_mangle]
pub unsafe extern "C" fn f_i16_ret() -> i16 {
    6
}

// CHECK: .visible .func (.param .b32 func_retval0) f_i32_ret(
#[no_mangle]
pub unsafe extern "C" fn f_i32_ret() -> i32 {
    7
}

// CHECK: .visible .func (.param .b64 func_retval0) f_i64_ret(
#[no_mangle]
pub unsafe extern "C" fn f_i64_ret() -> i64 {
    8
}

// CHECK: .visible .func  (.param .align 16 .b8 func_retval0[16]) f_i128_ret(
#[no_mangle]
pub unsafe extern "C" fn f_i128_ret() -> i128 {
    9
}

// CHECK: .visible .func (.param .b32 func_retval0) f_f32_ret(
#[no_mangle]
pub unsafe extern "C" fn f_f32_ret() -> f32 {
    10.0
}

// CHECK: .visible .func (.param .b64 func_retval0) f_f64_ret(
#[no_mangle]
pub unsafe extern "C" fn f_f64_ret() -> f64 {
    11.0
}

// CHECK: .visible .func (.param .align 1 .b8 func_retval0[1]) f_single_u8_ret(
#[no_mangle]
pub unsafe extern "C" fn f_single_u8_ret() -> SingleU8 {
    SingleU8 { f: 12 }
}

// CHECK: .visible .func (.param .align 1 .b8 func_retval0[2]) f_double_u8_ret(
#[no_mangle]
pub unsafe extern "C" fn f_double_u8_ret() -> DoubleU8 {
    DoubleU8 { f: 13, g: 14 }
}

// CHECK: .visible .func (.param .align 1 .b8 func_retval0[3]) f_triple_u8_ret(
#[no_mangle]
pub unsafe extern "C" fn f_triple_u8_ret() -> TripleU8 {
    TripleU8 { f: 15, g: 16, h: 17 }
}

// CHECK: .visible .func (.param .align 2 .b8 func_retval0[6]) f_triple_u16_ret(
#[no_mangle]
pub unsafe extern "C" fn f_triple_u16_ret() -> TripleU16 {
    TripleU16 { f: 18, g: 19, h: 20 }
}

// CHECK: .visible .func (.param .align 4 .b8 func_retval0[8]) f_double_i32_ret(
#[no_mangle]
pub unsafe extern "C" fn f_double_i32_ret() -> DoubleI32 {
    DoubleI32 { f: 1, g: 2 }
}

// CHECK: .visible .func (.param .align 4 .b8 func_retval0[12]) f_triple_u32_ret(
#[no_mangle]
pub unsafe extern "C" fn f_triple_u32_ret() -> TripleU32 {
    TripleU32 { f: 20, g: 21, h: 22 }
}

// CHECK: .visible .func (.param .align 8 .b8 func_retval0[24]) f_triple_u64_ret(
#[no_mangle]
pub unsafe extern "C" fn f_triple_u64_ret() -> TripleU64 {
    TripleU64 { f: 23, g: 24, h: 25 }
}

// CHECK: .visible .func (.param .align 8 .b8 func_retval0[16]) f_many_integers_ret(
#[no_mangle]
pub unsafe extern "C" fn f_many_integers_ret() -> ManyIntegers {
    ManyIntegers { f: 26, g: 27, h: 28, i: 29 }
}

// CHECK: .visible .func (.param .align 4 .b8 func_retval0[8]) f_double_float_ret(
#[no_mangle]
pub unsafe extern "C" fn f_double_float_ret() -> DoubleFloat {
    DoubleFloat { f: 29.0, g: 30.0 }
}

// CHECK: .visible .func (.param .align 4 .b8 func_retval0[12]) f_triple_float_ret(
#[no_mangle]
pub unsafe extern "C" fn f_triple_float_ret() -> TripleFloat {
    TripleFloat { f: 31.0, g: 32.0, h: 33.0 }
}

// CHECK: .visible .func (.param .align 8 .b8 func_retval0[24]) f_triple_double_ret(
#[no_mangle]
pub unsafe extern "C" fn f_triple_double_ret() -> TripleDouble {
    TripleDouble { f: 34.0, g: 35.0, h: 36.0 }
}

// CHECK: .visible .func (.param .align 8 .b8 func_retval0[32]) f_many_numerics_ret(
#[no_mangle]
pub unsafe extern "C" fn f_many_numerics_ret() -> ManyNumerics {
    ManyNumerics { f: 37, g: 38, h: 39, i: 40, j: 41.0, k: 43.0 }
}
