#include <rst/common-domain.def>

#define ICMP_PROT( name ) \
    PROT( icmp_ ## name, DOMAIN_TYPE, DOMAIN_TYPE )

extern "C" {

VAL_PROT( 8 )
VAL_PROT( 16 )
VAL_PROT( 32 )
VAL_PROT( 64 )

LART_DOMAIN_SPEC( DOMAIN_NAME )
LART_DOMAIN_KIND( DOMAIN_KIND )
PROT( lift, int bitwidth, int argc, ... )

BINARY_PROT( add )
BINARY_PROT( sub )
BINARY_PROT( mul )
BINARY_PROT( sdiv )
BINARY_PROT( udiv )
BINARY_PROT( urem )
BINARY_PROT( srem )
BINARY_PROT( and )
BINARY_PROT( or )
BINARY_PROT( xor )
BINARY_PROT( shl )
BINARY_PROT( lshr )
BINARY_PROT( ashr )

CAST_PROT( trunc )
CAST_PROT( zext )
CAST_PROT( sext )
UNARY_PROT( bitcast )
UNARY_PROT( ptrtoint )

ICMP_PROT( eq )
ICMP_PROT( ne )
ICMP_PROT( ugt )
ICMP_PROT( uge )
ICMP_PROT( ult )
ICMP_PROT( ule )
ICMP_PROT( sgt )
ICMP_PROT( sge )
ICMP_PROT( slt )
ICMP_PROT( sle )

THAW_PROT_BV()

}

#undef ICMP_PROT
