#![allow(non_camel_case_types)]
#![feature(core_intrinsics)]
#![feature(funnel_shifts)]
type int = i8;
type uint = u8;
#[unsafe(no_mangle)]
pub fn band(a: uint, b: uint) -> uint {
a & b
}
#[unsafe(no_mangle)]
pub fn bor(a: uint, b: uint) -> uint {
a | b
}
#[unsafe(no_mangle)]
pub fn bxor(a: uint, b: uint) -> uint {
a ^ b
}
#[unsafe(no_mangle)]
pub fn bnot(a: uint) -> uint {
!a
}
#[unsafe(no_mangle)]
pub fn eq(a: uint, b: uint) -> bool {
a == b
}
#[unsafe(no_mangle)]
pub fn ucmp(a: uint, b: uint) -> ::core::cmp::Ordering {
a.cmp(&b)
}
#[unsafe(no_mangle)]
pub fn scmp(a: int, b: int) -> ::core::cmp::Ordering {
a.cmp(&b)
}
#[unsafe(no_mangle)]
pub fn swap1(a: uint) -> uint {
::core::intrinsics::bitreverse(a)
}
#[unsafe(no_mangle)]
pub fn swap8(a: uint) -> uint {
::core::intrinsics::bswap(a)
}
#[unsafe(no_mangle)]
pub fn rotl(a: uint, b: u32) -> uint {
::core::intrinsics::rotate_left(a, b)
}
#[unsafe(no_mangle)]
pub fn rotr(a: uint, b: u32) -> uint {
::core::intrinsics::rotate_right(a, b)
}
#[unsafe(no_mangle)]
pub fn ctpop(a: uint) -> u32 {
::core::intrinsics::ctpop(a)
}
#[unsafe(no_mangle)]
pub fn ctlz(a: uint) -> u32 {
::core::intrinsics::ctlz(a)
}
#[unsafe(no_mangle)]
pub fn cttz(a: uint) -> u32 {
::core::intrinsics::cttz(a)
}
#[unsafe(no_mangle)]
pub fn ctlz_nonzero(a: uint) -> u32 {
unsafe { ::core::intrinsics::ctlz_nonzero(a) }
}
#[unsafe(no_mangle)]
pub fn cttz_nonzero(a: uint) -> u32 {
unsafe { ::core::intrinsics::cttz_nonzero(a) }
}
#[unsafe(no_mangle)]
pub fn overflowing_uadd(a: uint, b: uint) -> (uint, bool) {
::core::intrinsics::add_with_overflow(a, b)
}
#[unsafe(no_mangle)]
pub fn overflowing_usub(a: uint, b: uint) -> (uint, bool) {
::core::intrinsics::sub_with_overflow(a, b)
}
#[unsafe(no_mangle)]
pub fn overflowing_umul(a: uint, b: uint) -> (uint, bool) {
::core::intrinsics::mul_with_overflow(a, b)
}
#[unsafe(no_mangle)]
pub fn overflowing_sadd(a: int, b: int) -> (int, bool) {
::core::intrinsics::add_with_overflow(a, b)
}
#[unsafe(no_mangle)]
pub fn overflowing_ssub(a: int, b: int) -> (int, bool) {
::core::intrinsics::sub_with_overflow(a, b)
}
#[unsafe(no_mangle)]
pub fn overflowing_smul(a: int, b: int) -> (int, bool) {
::core::intrinsics::mul_with_overflow(a, b)
}
#[unsafe(no_mangle)]
pub fn saturating_uadd(a: uint, b: uint) -> uint {
::core::intrinsics::saturating_add(a, b)
}
#[unsafe(no_mangle)]
pub fn saturating_usub(a: uint, b: uint) -> uint {
::core::intrinsics::saturating_sub(a, b)
}
#[unsafe(no_mangle)]
pub fn saturating_sadd(a: int, b: int) -> int {
::core::intrinsics::saturating_add(a, b)
}
#[unsafe(no_mangle)]
pub fn saturating_ssub(a: int, b: int) -> int {
::core::intrinsics::saturating_sub(a, b)
}
#[unsafe(no_mangle)]
pub fn unchecked_uadd(a: uint, b: uint) -> uint {
unsafe { ::core::intrinsics::unchecked_add(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_usub(a: uint, b: uint) -> uint {
unsafe { ::core::intrinsics::unchecked_sub(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_umul(a: uint, b: uint) -> uint {
unsafe { ::core::intrinsics::unchecked_mul(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_udiv(a: uint, b: uint) -> uint {
unsafe { ::core::intrinsics::unchecked_div(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_udiv_exact(a: uint, b: uint) -> uint {
unsafe { ::core::intrinsics::exact_div(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_urem(a: uint, b: uint) -> uint {
unsafe { ::core::intrinsics::unchecked_rem(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_sadd(a: int, b: int) -> int {
unsafe { ::core::intrinsics::unchecked_add(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_ssub(a: int, b: int) -> int {
unsafe { ::core::intrinsics::unchecked_sub(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_smul(a: int, b: int) -> int {
unsafe { ::core::intrinsics::unchecked_mul(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_sdiv(a: int, b: int) -> int {
unsafe { ::core::intrinsics::unchecked_div(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_sdiv_exact(a: int, b: int) -> int {
unsafe { ::core::intrinsics::exact_div(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_srem(a: int, b: int) -> int {
unsafe { ::core::intrinsics::unchecked_rem(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_shl(a: uint, b: u32) -> uint {
unsafe { ::core::intrinsics::unchecked_shl(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_lshr(a: uint, b: u32) -> uint {
unsafe { ::core::intrinsics::unchecked_shr(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_ashr(a: int, b: u32) -> int {
unsafe { ::core::intrinsics::unchecked_shr(a, b) }
}
#[unsafe(no_mangle)]
pub fn unchecked_fshl(a: uint, b: uint, c: u32) -> uint {
unsafe { ::core::intrinsics::unchecked_funnel_shl(a, b, c) }
}
#[unsafe(no_mangle)]
pub fn unchecked_fshr(a: uint, b: uint, c: u32) -> uint {
unsafe { ::core::intrinsics::unchecked_funnel_shr(a, b, c) }
}
#[unsafe(no_mangle)]
pub fn wrapping_add(a: uint, b: uint) -> uint {
::core::intrinsics::wrapping_add(a, b)
}
#[unsafe(no_mangle)]
pub fn wrapping_sub(a: uint, b: uint) -> uint {
::core::intrinsics::wrapping_sub(a, b)
}
#[unsafe(no_mangle)]
pub fn wrapping_mul(a: uint, b: uint) -> uint {
::core::intrinsics::wrapping_mul(a, b)
}
#[unsafe(no_mangle)]
pub fn disjoint_bor(a: uint, b: uint) -> uint {
unsafe { ::core::intrinsics::disjoint_bitor(a, b) }
}