From b79731a76a8d31cf4413c3b5e409b5703b4f83eb Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Fri, 20 Mar 2020 11:28:18 -0500 Subject: [PATCH] Check in generated bindgen bindings (#52) * Check in generated bindgen bindings This commit checks in the bindgen-generated bindings for the binaryen project, along with a test that ensures that the generated bindings are up to date and don't need to be regenerated. Additionally you can run tests locally with `BLESS=1` to regenerate the header file to automatically generate it. * Add diff output to test * Only bind some functions --- .travis.yml | 1 + binaryen-sys/Cargo.toml | 5 +- binaryen-sys/build.rs | 19 - binaryen-sys/src/bindings.rs | 2674 ++++++++++++++++++++++ binaryen-sys/src/lib.rs | 4 +- binaryen-sys/tests/bindgen-up-to-date.rs | 44 + 6 files changed, 2725 insertions(+), 22 deletions(-) create mode 100644 binaryen-sys/src/bindings.rs create mode 100644 binaryen-sys/tests/bindgen-up-to-date.rs diff --git a/.travis.yml b/.travis.yml index 52cae8a..ed0f39e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,6 +21,7 @@ env: - CC=clang CXX=clang++ - CC=gcc-7 CXX=g++-7 script: + - rustup component add rustfmt - cargo build --all --verbose # Run tests with --test-threads=1 as it looks like the linker runs out of memory # when linking doctests in parallel. diff --git a/binaryen-sys/Cargo.toml b/binaryen-sys/Cargo.toml index e393780..d7604de 100644 --- a/binaryen-sys/Cargo.toml +++ b/binaryen-sys/Cargo.toml @@ -12,8 +12,11 @@ exclude = [ ] [build-dependencies] -bindgen = "0.52.0" cmake = "0.1.25" cc = "1.0.4" regex = "1" heck = "0.3" + +[dev-dependencies] +bindgen = "0.52.0" +diff = "0.1" diff --git a/binaryen-sys/build.rs b/binaryen-sys/build.rs index 4fd0058..10bc3ff 100644 --- a/binaryen-sys/build.rs +++ b/binaryen-sys/build.rs @@ -1,4 +1,3 @@ -extern crate bindgen; extern crate cc; extern crate cmake; extern crate heck; @@ -11,23 +10,6 @@ use std::fs; use std::path::{Path, PathBuf}; use std::process::Command; -fn gen_bindings() { - let bindings = bindgen::Builder::default() - .header("wrapper.h") - // See https://github.com/rust-lang-nursery/rust-bindgen/issues/947 - .trust_clang_mangling(false) - .generate_comments(true) - // https://github.com/rust-lang-nursery/rust-bindgen/issues/947#issuecomment-327100002 - .layout_tests(false) - .generate() - .expect("Unable to generate bindings"); - - let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); - bindings - .write_to_file(out_path.join("bindings.rs")) - .expect("Couldn't write bindings!"); -} - #[derive(Clone, PartialEq, Debug)] struct Pass { id: String, @@ -156,7 +138,6 @@ fn main() { } gen_passes(); - gen_bindings(); let target = env::var("TARGET").ok(); if target.map_or(false, |target| target.contains("emscripten")) { diff --git a/binaryen-sys/src/bindings.rs b/binaryen-sys/src/bindings.rs new file mode 100644 index 0000000..b34ddb0 --- /dev/null +++ b/binaryen-sys/src/bindings.rs @@ -0,0 +1,2674 @@ +/* automatically generated by rust-bindgen */ + +#[repr(C)] +pub struct __BindgenUnionField(::std::marker::PhantomData); +impl __BindgenUnionField { + #[inline] + pub const fn new() -> Self { + __BindgenUnionField(::std::marker::PhantomData) + } + #[inline] + pub unsafe fn as_ref(&self) -> &T { + ::std::mem::transmute(self) + } + #[inline] + pub unsafe fn as_mut(&mut self) -> &mut T { + ::std::mem::transmute(self) + } +} +impl ::std::default::Default for __BindgenUnionField { + #[inline] + fn default() -> Self { + Self::new() + } +} +impl ::std::clone::Clone for __BindgenUnionField { + #[inline] + fn clone(&self) -> Self { + Self::new() + } +} +impl ::std::marker::Copy for __BindgenUnionField {} +impl ::std::fmt::Debug for __BindgenUnionField { + fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + fmt.write_str("__BindgenUnionField") + } +} +impl ::std::hash::Hash for __BindgenUnionField { + fn hash(&self, _state: &mut H) {} +} +impl ::std::cmp::PartialEq for __BindgenUnionField { + fn eq(&self, _other: &__BindgenUnionField) -> bool { + true + } +} +impl ::std::cmp::Eq for __BindgenUnionField {} +pub type BinaryenIndex = u32; +pub type BinaryenType = u32; +extern "C" { + pub fn BinaryenTypeNone() -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeInt32() -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeInt64() -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeFloat32() -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeFloat64() -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeVec128() -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeFuncref() -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeAnyref() -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeNullref() -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeExnref() -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeUnreachable() -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeAuto() -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeCreate(valueTypes: *mut BinaryenType, numTypes: u32) -> BinaryenType; +} +extern "C" { + pub fn BinaryenTypeArity(t: BinaryenType) -> u32; +} +extern "C" { + pub fn BinaryenTypeExpand(t: BinaryenType, buf: *mut BinaryenType); +} +extern "C" { + pub fn BinaryenNone() -> BinaryenType; +} +extern "C" { + pub fn BinaryenInt32() -> BinaryenType; +} +extern "C" { + pub fn BinaryenInt64() -> BinaryenType; +} +extern "C" { + pub fn BinaryenFloat32() -> BinaryenType; +} +extern "C" { + pub fn BinaryenFloat64() -> BinaryenType; +} +extern "C" { + pub fn BinaryenUndefined() -> BinaryenType; +} +pub type BinaryenExpressionId = u32; +extern "C" { + pub fn BinaryenInvalidId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenBlockId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenIfId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenLoopId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenBreakId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenSwitchId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenCallId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenCallIndirectId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenLocalGetId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenLocalSetId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenGlobalGetId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenGlobalSetId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenLoadId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenStoreId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenConstId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenUnaryId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenBinaryId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenSelectId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenDropId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenReturnId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenHostId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenNopId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenUnreachableId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenAtomicCmpxchgId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenAtomicRMWId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenAtomicWaitId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenAtomicNotifyId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenAtomicFenceId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenSIMDExtractId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenSIMDReplaceId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenSIMDShuffleId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenSIMDTernaryId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenSIMDShiftId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenSIMDLoadId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenMemoryInitId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenDataDropId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenMemoryCopyId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenMemoryFillId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenRefNullId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenRefIsNullId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenRefFuncId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenTryId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenThrowId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenRethrowId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenBrOnExnId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenPushId() -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenPopId() -> BinaryenExpressionId; +} +pub type BinaryenExternalKind = u32; +extern "C" { + pub fn BinaryenExternalFunction() -> BinaryenExternalKind; +} +extern "C" { + pub fn BinaryenExternalTable() -> BinaryenExternalKind; +} +extern "C" { + pub fn BinaryenExternalMemory() -> BinaryenExternalKind; +} +extern "C" { + pub fn BinaryenExternalGlobal() -> BinaryenExternalKind; +} +extern "C" { + pub fn BinaryenExternalEvent() -> BinaryenExternalKind; +} +pub type BinaryenFeatures = u32; +extern "C" { + pub fn BinaryenFeatureMVP() -> BinaryenFeatures; +} +extern "C" { + pub fn BinaryenFeatureAtomics() -> BinaryenFeatures; +} +extern "C" { + pub fn BinaryenFeatureBulkMemory() -> BinaryenFeatures; +} +extern "C" { + pub fn BinaryenFeatureMutableGlobals() -> BinaryenFeatures; +} +extern "C" { + pub fn BinaryenFeatureNontrappingFPToInt() -> BinaryenFeatures; +} +extern "C" { + pub fn BinaryenFeatureSignExt() -> BinaryenFeatures; +} +extern "C" { + pub fn BinaryenFeatureSIMD128() -> BinaryenFeatures; +} +extern "C" { + pub fn BinaryenFeatureExceptionHandling() -> BinaryenFeatures; +} +extern "C" { + pub fn BinaryenFeatureTailCall() -> BinaryenFeatures; +} +extern "C" { + pub fn BinaryenFeatureReferenceTypes() -> BinaryenFeatures; +} +extern "C" { + pub fn BinaryenFeatureAll() -> BinaryenFeatures; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct BinaryenModule { + _unused: [u8; 0], +} +pub type BinaryenModuleRef = *mut BinaryenModule; +extern "C" { + pub fn BinaryenModuleCreate() -> BinaryenModuleRef; +} +extern "C" { + pub fn BinaryenModuleDispose(module: BinaryenModuleRef); +} +#[repr(C)] +pub struct BinaryenLiteral { + pub type_: i32, + pub __bindgen_anon_1: BinaryenLiteral__bindgen_ty_1, +} +#[repr(C)] +pub struct BinaryenLiteral__bindgen_ty_1 { + pub i32: __BindgenUnionField, + pub i64: __BindgenUnionField, + pub f32: __BindgenUnionField, + pub f64: __BindgenUnionField, + pub v128: __BindgenUnionField<[u8; 16usize]>, + pub func: __BindgenUnionField<*const ::std::os::raw::c_char>, + pub bindgen_union_field: [u64; 2usize], +} +extern "C" { + pub fn BinaryenLiteralInt32(x: i32) -> BinaryenLiteral; +} +extern "C" { + pub fn BinaryenLiteralInt64(x: i64) -> BinaryenLiteral; +} +extern "C" { + pub fn BinaryenLiteralFloat32(x: f32) -> BinaryenLiteral; +} +extern "C" { + pub fn BinaryenLiteralFloat64(x: f64) -> BinaryenLiteral; +} +extern "C" { + pub fn BinaryenLiteralVec128(x: *const u8) -> BinaryenLiteral; +} +extern "C" { + pub fn BinaryenLiteralFloat32Bits(x: i32) -> BinaryenLiteral; +} +extern "C" { + pub fn BinaryenLiteralFloat64Bits(x: i64) -> BinaryenLiteral; +} +pub type BinaryenOp = i32; +extern "C" { + pub fn BinaryenClzInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenCtzInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenPopcntInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNegFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAbsFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenCeilFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenFloorFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNearestFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSqrtFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenEqZInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenClzInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenCtzInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenPopcntInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNegFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAbsFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenCeilFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenFloorFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNearestFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSqrtFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenEqZInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtendSInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtendUInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenWrapInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSFloat32ToInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSFloat32ToInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncUFloat32ToInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncUFloat32ToInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSFloat64ToInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSFloat64ToInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncUFloat64ToInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncUFloat64ToInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenReinterpretFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenReinterpretFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenConvertSInt32ToFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenConvertSInt32ToFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenConvertUInt32ToFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenConvertUInt32ToFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenConvertSInt64ToFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenConvertSInt64ToFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenConvertUInt64ToFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenConvertUInt64ToFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenPromoteFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenDemoteFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenReinterpretInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenReinterpretInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtendS8Int32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtendS16Int32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtendS8Int64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtendS16Int64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtendS32Int64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMulInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenDivSInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenDivUInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenRemSInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenRemUInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAndInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenOrInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenXorInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShlInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShrUInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShrSInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenRotLInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenRotRInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenEqInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNeInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtSInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtUInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeSInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeUInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtSInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtUInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeSInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeUInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMulInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenDivSInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenDivUInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenRemSInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenRemUInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAndInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenOrInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenXorInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShlInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShrUInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShrSInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenRotLInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenRotRInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenEqInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNeInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtSInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtUInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeSInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeUInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtSInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtUInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeSInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeUInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMulFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenDivFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenCopySignFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMinFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMaxFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenEqFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNeFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeFloat32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMulFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenDivFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenCopySignFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMinFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMaxFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenEqFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNeFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeFloat64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMemorySize() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMemoryGrow() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAtomicRMWAdd() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAtomicRMWSub() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAtomicRMWAnd() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAtomicRMWOr() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAtomicRMWXor() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAtomicRMWXchg() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSatSFloat32ToInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSatSFloat32ToInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSatUFloat32ToInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSatUFloat32ToInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSatSFloat64ToInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSatSFloat64ToInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSatUFloat64ToInt32() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSatUFloat64ToInt64() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSplatVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtractLaneSVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtractLaneUVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenReplaceLaneVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSplatVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtractLaneSVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtractLaneUVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenReplaceLaneVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSplatVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtractLaneVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenReplaceLaneVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSplatVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtractLaneVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenReplaceLaneVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSplatVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtractLaneVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenReplaceLaneVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSplatVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenExtractLaneVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenReplaceLaneVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenEqVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNeVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtSVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtUVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtSVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtUVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeSVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeUVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeSVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeUVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenEqVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNeVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtSVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtUVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtSVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtUVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeSVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeUVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeSVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeUVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenEqVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNeVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtSVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtUVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtSVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtUVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeSVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeUVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeSVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeUVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenEqVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNeVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenEqVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNeVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLtVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGtVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLeVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenGeVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNotVec128() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAndVec128() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenOrVec128() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenXorVec128() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAndNotVec128() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenBitselectVec128() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNegVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAnyTrueVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAllTrueVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShlVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShrSVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShrUVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddSatSVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddSatUVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubSatSVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubSatUVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMulVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMinSVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMinUVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMaxSVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMaxUVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAvgrUVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNegVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAnyTrueVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAllTrueVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShlVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShrSVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShrUVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddSatSVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddSatUVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubSatSVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubSatUVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMulVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMinSVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMinUVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMaxSVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMaxUVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAvgrUVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNegVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAnyTrueVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAllTrueVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShlVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShrSVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShrUVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMulVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMinSVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMinUVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMaxSVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMaxUVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenDotSVecI16x8ToVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNegVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAnyTrueVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAllTrueVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShlVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShrSVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenShrUVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAbsVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNegVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSqrtVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenQFMAVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenQFMSVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMulVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenDivVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMinVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMaxVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAbsVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNegVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSqrtVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenQFMAVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenQFMSVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAddVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSubVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMulVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenDivVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMinVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenMaxVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSatSVecF32x4ToVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSatUVecF32x4ToVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSatSVecF64x2ToVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenTruncSatUVecF64x2ToVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenConvertSVecI32x4ToVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenConvertUVecI32x4ToVecF32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenConvertSVecI64x2ToVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenConvertUVecI64x2ToVecF64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLoadSplatVec8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLoadSplatVec16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLoadSplatVec32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLoadSplatVec64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLoadExtSVec8x8ToVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLoadExtUVec8x8ToVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLoadExtSVec16x4ToVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLoadExtUVec16x4ToVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLoadExtSVec32x2ToVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenLoadExtUVec32x2ToVecI64x2() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNarrowSVecI16x8ToVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNarrowUVecI16x8ToVecI8x16() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNarrowSVecI32x4ToVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenNarrowUVecI32x4ToVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenWidenLowSVecI8x16ToVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenWidenHighSVecI8x16ToVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenWidenLowUVecI8x16ToVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenWidenHighUVecI8x16ToVecI16x8() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenWidenLowSVecI16x8ToVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenWidenHighSVecI16x8ToVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenWidenLowUVecI16x8ToVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenWidenHighUVecI16x8ToVecI32x4() -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSwizzleVec8x16() -> BinaryenOp; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct BinaryenExpression { + _unused: [u8; 0], +} +pub type BinaryenExpressionRef = *mut BinaryenExpression; +extern "C" { + pub fn BinaryenBlock( + module: BinaryenModuleRef, + name: *const ::std::os::raw::c_char, + children: *mut BinaryenExpressionRef, + numChildren: BinaryenIndex, + type_: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenIf( + module: BinaryenModuleRef, + condition: BinaryenExpressionRef, + ifTrue: BinaryenExpressionRef, + ifFalse: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenLoop( + module: BinaryenModuleRef, + in_: *const ::std::os::raw::c_char, + body: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenBreak( + module: BinaryenModuleRef, + name: *const ::std::os::raw::c_char, + condition: BinaryenExpressionRef, + value: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSwitch( + module: BinaryenModuleRef, + names: *mut *const ::std::os::raw::c_char, + numNames: BinaryenIndex, + defaultName: *const ::std::os::raw::c_char, + condition: BinaryenExpressionRef, + value: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenCall( + module: BinaryenModuleRef, + target: *const ::std::os::raw::c_char, + operands: *mut BinaryenExpressionRef, + numOperands: BinaryenIndex, + returnType: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenCallIndirect( + module: BinaryenModuleRef, + target: BinaryenExpressionRef, + operands: *mut BinaryenExpressionRef, + numOperands: BinaryenIndex, + params: BinaryenType, + results: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenReturnCall( + module: BinaryenModuleRef, + target: *const ::std::os::raw::c_char, + operands: *mut BinaryenExpressionRef, + numOperands: BinaryenIndex, + returnType: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenReturnCallIndirect( + module: BinaryenModuleRef, + target: BinaryenExpressionRef, + operands: *mut BinaryenExpressionRef, + numOperands: BinaryenIndex, + params: BinaryenType, + results: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenLocalGet( + module: BinaryenModuleRef, + index: BinaryenIndex, + type_: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenLocalSet( + module: BinaryenModuleRef, + index: BinaryenIndex, + value: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenLocalTee( + module: BinaryenModuleRef, + index: BinaryenIndex, + value: BinaryenExpressionRef, + type_: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenGlobalGet( + module: BinaryenModuleRef, + name: *const ::std::os::raw::c_char, + type_: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenGlobalSet( + module: BinaryenModuleRef, + name: *const ::std::os::raw::c_char, + value: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenLoad( + module: BinaryenModuleRef, + bytes: u32, + signed_: i8, + offset: u32, + align: u32, + type_: BinaryenType, + ptr: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenStore( + module: BinaryenModuleRef, + bytes: u32, + offset: u32, + align: u32, + ptr: BinaryenExpressionRef, + value: BinaryenExpressionRef, + type_: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenConst( + module: BinaryenModuleRef, + value: BinaryenLiteral, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenUnary( + module: BinaryenModuleRef, + op: BinaryenOp, + value: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenBinary( + module: BinaryenModuleRef, + op: BinaryenOp, + left: BinaryenExpressionRef, + right: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSelect( + module: BinaryenModuleRef, + condition: BinaryenExpressionRef, + ifTrue: BinaryenExpressionRef, + ifFalse: BinaryenExpressionRef, + type_: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenDrop( + module: BinaryenModuleRef, + value: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenReturn( + module: BinaryenModuleRef, + value: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenHost( + module: BinaryenModuleRef, + op: BinaryenOp, + name: *const ::std::os::raw::c_char, + operands: *mut BinaryenExpressionRef, + numOperands: BinaryenIndex, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenNop(module: BinaryenModuleRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenUnreachable(module: BinaryenModuleRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicLoad( + module: BinaryenModuleRef, + bytes: u32, + offset: u32, + type_: BinaryenType, + ptr: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicStore( + module: BinaryenModuleRef, + bytes: u32, + offset: u32, + ptr: BinaryenExpressionRef, + value: BinaryenExpressionRef, + type_: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicRMW( + module: BinaryenModuleRef, + op: BinaryenOp, + bytes: BinaryenIndex, + offset: BinaryenIndex, + ptr: BinaryenExpressionRef, + value: BinaryenExpressionRef, + type_: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicCmpxchg( + module: BinaryenModuleRef, + bytes: BinaryenIndex, + offset: BinaryenIndex, + ptr: BinaryenExpressionRef, + expected: BinaryenExpressionRef, + replacement: BinaryenExpressionRef, + type_: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicWait( + module: BinaryenModuleRef, + ptr: BinaryenExpressionRef, + expected: BinaryenExpressionRef, + timeout: BinaryenExpressionRef, + type_: BinaryenType, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicNotify( + module: BinaryenModuleRef, + ptr: BinaryenExpressionRef, + notifyCount: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicFence(module: BinaryenModuleRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDExtract( + module: BinaryenModuleRef, + op: BinaryenOp, + vec: BinaryenExpressionRef, + index: u8, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDReplace( + module: BinaryenModuleRef, + op: BinaryenOp, + vec: BinaryenExpressionRef, + index: u8, + value: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDShuffle( + module: BinaryenModuleRef, + left: BinaryenExpressionRef, + right: BinaryenExpressionRef, + mask: *const u8, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDTernary( + module: BinaryenModuleRef, + op: BinaryenOp, + a: BinaryenExpressionRef, + b: BinaryenExpressionRef, + c: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDShift( + module: BinaryenModuleRef, + op: BinaryenOp, + vec: BinaryenExpressionRef, + shift: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDLoad( + module: BinaryenModuleRef, + op: BinaryenOp, + offset: u32, + align: u32, + ptr: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenMemoryInit( + module: BinaryenModuleRef, + segment: u32, + dest: BinaryenExpressionRef, + offset: BinaryenExpressionRef, + size: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenDataDrop(module: BinaryenModuleRef, segment: u32) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenMemoryCopy( + module: BinaryenModuleRef, + dest: BinaryenExpressionRef, + source: BinaryenExpressionRef, + size: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenMemoryFill( + module: BinaryenModuleRef, + dest: BinaryenExpressionRef, + value: BinaryenExpressionRef, + size: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenRefNull(module: BinaryenModuleRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenRefIsNull( + module: BinaryenModuleRef, + value: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenRefFunc( + module: BinaryenModuleRef, + func: *const ::std::os::raw::c_char, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenTry( + module: BinaryenModuleRef, + body: BinaryenExpressionRef, + catchBody: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenThrow( + module: BinaryenModuleRef, + event: *const ::std::os::raw::c_char, + operands: *mut BinaryenExpressionRef, + numOperands: BinaryenIndex, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenRethrow( + module: BinaryenModuleRef, + exnref: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenBrOnExn( + module: BinaryenModuleRef, + name: *const ::std::os::raw::c_char, + eventName: *const ::std::os::raw::c_char, + exnref: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenPush( + module: BinaryenModuleRef, + value: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenPop(module: BinaryenModuleRef, type_: BinaryenType) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenExpressionGetId(expr: BinaryenExpressionRef) -> BinaryenExpressionId; +} +extern "C" { + pub fn BinaryenExpressionGetType(expr: BinaryenExpressionRef) -> BinaryenType; +} +extern "C" { + pub fn BinaryenExpressionPrint(expr: BinaryenExpressionRef); +} +extern "C" { + pub fn BinaryenBlockGetName(expr: BinaryenExpressionRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenBlockGetNumChildren(expr: BinaryenExpressionRef) -> BinaryenIndex; +} +extern "C" { + pub fn BinaryenBlockGetChild( + expr: BinaryenExpressionRef, + index: BinaryenIndex, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenIfGetCondition(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenIfGetIfTrue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenIfGetIfFalse(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenLoopGetName(expr: BinaryenExpressionRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenLoopGetBody(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenBreakGetName(expr: BinaryenExpressionRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenBreakGetCondition(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenBreakGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSwitchGetNumNames(expr: BinaryenExpressionRef) -> BinaryenIndex; +} +extern "C" { + pub fn BinaryenSwitchGetName( + expr: BinaryenExpressionRef, + index: BinaryenIndex, + ) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenSwitchGetDefaultName( + expr: BinaryenExpressionRef, + ) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenSwitchGetCondition(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSwitchGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenCallGetTarget(expr: BinaryenExpressionRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenCallGetNumOperands(expr: BinaryenExpressionRef) -> BinaryenIndex; +} +extern "C" { + pub fn BinaryenCallGetOperand( + expr: BinaryenExpressionRef, + index: BinaryenIndex, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenCallIndirectGetTarget(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenCallIndirectGetNumOperands(expr: BinaryenExpressionRef) -> BinaryenIndex; +} +extern "C" { + pub fn BinaryenCallIndirectGetOperand( + expr: BinaryenExpressionRef, + index: BinaryenIndex, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenLocalGetGetIndex(expr: BinaryenExpressionRef) -> BinaryenIndex; +} +extern "C" { + pub fn BinaryenLocalSetIsTee(expr: BinaryenExpressionRef) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn BinaryenLocalSetGetIndex(expr: BinaryenExpressionRef) -> BinaryenIndex; +} +extern "C" { + pub fn BinaryenLocalSetGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenGlobalGetGetName(expr: BinaryenExpressionRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenGlobalSetGetName(expr: BinaryenExpressionRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenGlobalSetGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenHostGetOp(expr: BinaryenExpressionRef) -> BinaryenOp; +} +extern "C" { + pub fn BinaryenHostGetNameOperand(expr: BinaryenExpressionRef) + -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenHostGetNumOperands(expr: BinaryenExpressionRef) -> BinaryenIndex; +} +extern "C" { + pub fn BinaryenHostGetOperand( + expr: BinaryenExpressionRef, + index: BinaryenIndex, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenLoadIsAtomic(expr: BinaryenExpressionRef) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn BinaryenLoadIsSigned(expr: BinaryenExpressionRef) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn BinaryenLoadGetOffset(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenLoadGetBytes(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenLoadGetAlign(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenLoadGetPtr(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenStoreIsAtomic(expr: BinaryenExpressionRef) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn BinaryenStoreGetBytes(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenStoreGetOffset(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenStoreGetAlign(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenStoreGetPtr(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenStoreGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenConstGetValueI32(expr: BinaryenExpressionRef) -> i32; +} +extern "C" { + pub fn BinaryenConstGetValueI64(expr: BinaryenExpressionRef) -> i64; +} +extern "C" { + pub fn BinaryenConstGetValueI64Low(expr: BinaryenExpressionRef) -> i32; +} +extern "C" { + pub fn BinaryenConstGetValueI64High(expr: BinaryenExpressionRef) -> i32; +} +extern "C" { + pub fn BinaryenConstGetValueF32(expr: BinaryenExpressionRef) -> f32; +} +extern "C" { + pub fn BinaryenConstGetValueF64(expr: BinaryenExpressionRef) -> f64; +} +extern "C" { + pub fn BinaryenConstGetValueV128(expr: BinaryenExpressionRef, out: *mut u8); +} +extern "C" { + pub fn BinaryenUnaryGetOp(expr: BinaryenExpressionRef) -> BinaryenOp; +} +extern "C" { + pub fn BinaryenUnaryGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenBinaryGetOp(expr: BinaryenExpressionRef) -> BinaryenOp; +} +extern "C" { + pub fn BinaryenBinaryGetLeft(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenBinaryGetRight(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSelectGetIfTrue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSelectGetIfFalse(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSelectGetCondition(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenDropGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenReturnGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicRMWGetOp(expr: BinaryenExpressionRef) -> BinaryenOp; +} +extern "C" { + pub fn BinaryenAtomicRMWGetBytes(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenAtomicRMWGetOffset(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenAtomicRMWGetPtr(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicRMWGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicCmpxchgGetBytes(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenAtomicCmpxchgGetOffset(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenAtomicCmpxchgGetPtr(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicCmpxchgGetExpected(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicCmpxchgGetReplacement( + expr: BinaryenExpressionRef, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicWaitGetPtr(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicWaitGetExpected(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicWaitGetTimeout(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicWaitGetExpectedType(expr: BinaryenExpressionRef) -> BinaryenType; +} +extern "C" { + pub fn BinaryenAtomicNotifyGetPtr(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicNotifyGetNotifyCount(expr: BinaryenExpressionRef) + -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenAtomicFenceGetOrder(expr: BinaryenExpressionRef) -> u8; +} +extern "C" { + pub fn BinaryenSIMDExtractGetOp(expr: BinaryenExpressionRef) -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSIMDExtractGetVec(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDExtractGetIndex(expr: BinaryenExpressionRef) -> u8; +} +extern "C" { + pub fn BinaryenSIMDReplaceGetOp(expr: BinaryenExpressionRef) -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSIMDReplaceGetVec(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDReplaceGetIndex(expr: BinaryenExpressionRef) -> u8; +} +extern "C" { + pub fn BinaryenSIMDReplaceGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDShuffleGetLeft(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDShuffleGetRight(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDShuffleGetMask(expr: BinaryenExpressionRef, mask: *mut u8); +} +extern "C" { + pub fn BinaryenSIMDTernaryGetOp(expr: BinaryenExpressionRef) -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSIMDTernaryGetA(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDTernaryGetB(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDTernaryGetC(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDShiftGetOp(expr: BinaryenExpressionRef) -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSIMDShiftGetVec(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDShiftGetShift(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenSIMDLoadGetOp(expr: BinaryenExpressionRef) -> BinaryenOp; +} +extern "C" { + pub fn BinaryenSIMDLoadGetOffset(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenSIMDLoadGetAlign(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenSIMDLoadGetPtr(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenMemoryInitGetSegment(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenMemoryInitGetDest(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenMemoryInitGetOffset(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenMemoryInitGetSize(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenDataDropGetSegment(expr: BinaryenExpressionRef) -> u32; +} +extern "C" { + pub fn BinaryenMemoryCopyGetDest(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenMemoryCopyGetSource(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenMemoryCopyGetSize(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenMemoryFillGetDest(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenMemoryFillGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenMemoryFillGetSize(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenRefIsNullGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenRefFuncGetFunc(expr: BinaryenExpressionRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenTryGetBody(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenTryGetCatchBody(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenThrowGetEvent(expr: BinaryenExpressionRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenThrowGetOperand( + expr: BinaryenExpressionRef, + index: BinaryenIndex, + ) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenThrowGetNumOperands(expr: BinaryenExpressionRef) -> BinaryenIndex; +} +extern "C" { + pub fn BinaryenRethrowGetExnref(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenBrOnExnGetEvent(expr: BinaryenExpressionRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenBrOnExnGetName(expr: BinaryenExpressionRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenBrOnExnGetExnref(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenPushGetValue(expr: BinaryenExpressionRef) -> BinaryenExpressionRef; +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct BinaryenFunction { + _unused: [u8; 0], +} +pub type BinaryenFunctionRef = *mut BinaryenFunction; +extern "C" { + pub fn BinaryenAddFunction( + module: BinaryenModuleRef, + name: *const ::std::os::raw::c_char, + params: BinaryenType, + results: BinaryenType, + varTypes: *mut BinaryenType, + numVarTypes: BinaryenIndex, + body: BinaryenExpressionRef, + ) -> BinaryenFunctionRef; +} +extern "C" { + pub fn BinaryenGetFunction( + module: BinaryenModuleRef, + name: *const ::std::os::raw::c_char, + ) -> BinaryenFunctionRef; +} +extern "C" { + pub fn BinaryenRemoveFunction(module: BinaryenModuleRef, name: *const ::std::os::raw::c_char); +} +extern "C" { + pub fn BinaryenGetNumFunctions(module: BinaryenModuleRef) -> u32; +} +extern "C" { + pub fn BinaryenGetFunctionByIndex( + module: BinaryenModuleRef, + id: BinaryenIndex, + ) -> BinaryenFunctionRef; +} +extern "C" { + pub fn BinaryenAddFunctionImport( + module: BinaryenModuleRef, + internalName: *const ::std::os::raw::c_char, + externalModuleName: *const ::std::os::raw::c_char, + externalBaseName: *const ::std::os::raw::c_char, + params: BinaryenType, + results: BinaryenType, + ); +} +extern "C" { + pub fn BinaryenAddTableImport( + module: BinaryenModuleRef, + internalName: *const ::std::os::raw::c_char, + externalModuleName: *const ::std::os::raw::c_char, + externalBaseName: *const ::std::os::raw::c_char, + ); +} +extern "C" { + pub fn BinaryenAddMemoryImport( + module: BinaryenModuleRef, + internalName: *const ::std::os::raw::c_char, + externalModuleName: *const ::std::os::raw::c_char, + externalBaseName: *const ::std::os::raw::c_char, + shared: u8, + ); +} +extern "C" { + pub fn BinaryenAddGlobalImport( + module: BinaryenModuleRef, + internalName: *const ::std::os::raw::c_char, + externalModuleName: *const ::std::os::raw::c_char, + externalBaseName: *const ::std::os::raw::c_char, + globalType: BinaryenType, + mutable_: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn BinaryenAddEventImport( + module: BinaryenModuleRef, + internalName: *const ::std::os::raw::c_char, + externalModuleName: *const ::std::os::raw::c_char, + externalBaseName: *const ::std::os::raw::c_char, + attribute: u32, + params: BinaryenType, + results: BinaryenType, + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct BinaryenExport { + _unused: [u8; 0], +} +pub type BinaryenExportRef = *mut BinaryenExport; +extern "C" { + pub fn BinaryenAddExport( + module: BinaryenModuleRef, + internalName: *const ::std::os::raw::c_char, + externalName: *const ::std::os::raw::c_char, + ) -> BinaryenExportRef; +} +extern "C" { + pub fn BinaryenAddFunctionExport( + module: BinaryenModuleRef, + internalName: *const ::std::os::raw::c_char, + externalName: *const ::std::os::raw::c_char, + ) -> BinaryenExportRef; +} +extern "C" { + pub fn BinaryenAddTableExport( + module: BinaryenModuleRef, + internalName: *const ::std::os::raw::c_char, + externalName: *const ::std::os::raw::c_char, + ) -> BinaryenExportRef; +} +extern "C" { + pub fn BinaryenAddMemoryExport( + module: BinaryenModuleRef, + internalName: *const ::std::os::raw::c_char, + externalName: *const ::std::os::raw::c_char, + ) -> BinaryenExportRef; +} +extern "C" { + pub fn BinaryenAddGlobalExport( + module: BinaryenModuleRef, + internalName: *const ::std::os::raw::c_char, + externalName: *const ::std::os::raw::c_char, + ) -> BinaryenExportRef; +} +extern "C" { + pub fn BinaryenAddEventExport( + module: BinaryenModuleRef, + internalName: *const ::std::os::raw::c_char, + externalName: *const ::std::os::raw::c_char, + ) -> BinaryenExportRef; +} +extern "C" { + pub fn BinaryenRemoveExport( + module: BinaryenModuleRef, + externalName: *const ::std::os::raw::c_char, + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct BinaryenGlobal { + _unused: [u8; 0], +} +pub type BinaryenGlobalRef = *mut BinaryenGlobal; +extern "C" { + pub fn BinaryenAddGlobal( + module: BinaryenModuleRef, + name: *const ::std::os::raw::c_char, + type_: BinaryenType, + mutable_: i8, + init: BinaryenExpressionRef, + ) -> BinaryenGlobalRef; +} +extern "C" { + pub fn BinaryenGetGlobal( + module: BinaryenModuleRef, + name: *const ::std::os::raw::c_char, + ) -> BinaryenGlobalRef; +} +extern "C" { + pub fn BinaryenRemoveGlobal(module: BinaryenModuleRef, name: *const ::std::os::raw::c_char); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct BinaryenEvent { + _unused: [u8; 0], +} +pub type BinaryenEventRef = *mut BinaryenEvent; +extern "C" { + pub fn BinaryenAddEvent( + module: BinaryenModuleRef, + name: *const ::std::os::raw::c_char, + attribute: u32, + params: BinaryenType, + results: BinaryenType, + ) -> BinaryenEventRef; +} +extern "C" { + pub fn BinaryenGetEvent( + module: BinaryenModuleRef, + name: *const ::std::os::raw::c_char, + ) -> BinaryenEventRef; +} +extern "C" { + pub fn BinaryenRemoveEvent(module: BinaryenModuleRef, name: *const ::std::os::raw::c_char); +} +extern "C" { + pub fn BinaryenSetFunctionTable( + module: BinaryenModuleRef, + initial: BinaryenIndex, + maximum: BinaryenIndex, + funcNames: *mut *const ::std::os::raw::c_char, + numFuncNames: BinaryenIndex, + offset: BinaryenExpressionRef, + ); +} +extern "C" { + pub fn BinaryenSetMemory( + module: BinaryenModuleRef, + initial: BinaryenIndex, + maximum: BinaryenIndex, + exportName: *const ::std::os::raw::c_char, + segments: *mut *const ::std::os::raw::c_char, + segmentPassive: *mut i8, + segmentOffsets: *mut BinaryenExpressionRef, + segmentSizes: *mut BinaryenIndex, + numSegments: BinaryenIndex, + shared: u8, + ); +} +extern "C" { + pub fn BinaryenGetNumMemorySegments(module: BinaryenModuleRef) -> u32; +} +extern "C" { + pub fn BinaryenGetMemorySegmentByteOffset(module: BinaryenModuleRef, id: BinaryenIndex) -> u32; +} +extern "C" { + pub fn BinaryenGetMemorySegmentByteLength( + module: BinaryenModuleRef, + id: BinaryenIndex, + ) -> usize; +} +extern "C" { + pub fn BinaryenGetMemorySegmentPassive( + module: BinaryenModuleRef, + id: BinaryenIndex, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn BinaryenCopyMemorySegmentData( + module: BinaryenModuleRef, + id: BinaryenIndex, + buffer: *mut ::std::os::raw::c_char, + ); +} +extern "C" { + pub fn BinaryenSetStart(module: BinaryenModuleRef, start: BinaryenFunctionRef); +} +extern "C" { + pub fn BinaryenModuleGetFeatures(module: BinaryenModuleRef) -> BinaryenFeatures; +} +extern "C" { + pub fn BinaryenModuleSetFeatures(module: BinaryenModuleRef, features: BinaryenFeatures); +} +extern "C" { + pub fn BinaryenModuleParse(text: *const ::std::os::raw::c_char) -> BinaryenModuleRef; +} +extern "C" { + pub fn BinaryenModulePrint(module: BinaryenModuleRef); +} +extern "C" { + pub fn BinaryenModulePrintAsmjs(module: BinaryenModuleRef); +} +extern "C" { + pub fn BinaryenModuleValidate(module: BinaryenModuleRef) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn BinaryenModuleOptimize(module: BinaryenModuleRef); +} +extern "C" { + pub fn BinaryenGetOptimizeLevel() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn BinaryenSetOptimizeLevel(level: ::std::os::raw::c_int); +} +extern "C" { + pub fn BinaryenGetShrinkLevel() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn BinaryenSetShrinkLevel(level: ::std::os::raw::c_int); +} +extern "C" { + pub fn BinaryenGetDebugInfo() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn BinaryenSetDebugInfo(on: ::std::os::raw::c_int); +} +extern "C" { + pub fn BinaryenModuleRunPasses( + module: BinaryenModuleRef, + passes: *mut *const ::std::os::raw::c_char, + numPasses: BinaryenIndex, + ); +} +extern "C" { + pub fn BinaryenModuleAutoDrop(module: BinaryenModuleRef); +} +extern "C" { + pub fn BinaryenModuleWrite( + module: BinaryenModuleRef, + output: *mut ::std::os::raw::c_char, + outputSize: usize, + ) -> usize; +} +extern "C" { + pub fn BinaryenModuleWriteText( + module: BinaryenModuleRef, + output: *mut ::std::os::raw::c_char, + outputSize: usize, + ) -> usize; +} +#[repr(C)] +pub struct BinaryenBufferSizes { + pub outputBytes: usize, + pub sourceMapBytes: usize, +} +extern "C" { + pub fn BinaryenModuleWriteWithSourceMap( + module: BinaryenModuleRef, + url: *const ::std::os::raw::c_char, + output: *mut ::std::os::raw::c_char, + outputSize: usize, + sourceMap: *mut ::std::os::raw::c_char, + sourceMapSize: usize, + ) -> BinaryenBufferSizes; +} +#[repr(C)] +pub struct BinaryenModuleAllocateAndWriteResult { + pub binary: *mut ::std::os::raw::c_void, + pub binaryBytes: usize, + pub sourceMap: *mut ::std::os::raw::c_char, +} +extern "C" { + pub fn BinaryenModuleAllocateAndWrite( + module: BinaryenModuleRef, + sourceMapUrl: *const ::std::os::raw::c_char, + ) -> BinaryenModuleAllocateAndWriteResult; +} +extern "C" { + pub fn BinaryenModuleAllocateAndWriteText( + module: BinaryenModuleRef, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenModuleRead( + input: *mut ::std::os::raw::c_char, + inputSize: usize, + ) -> BinaryenModuleRef; +} +extern "C" { + pub fn BinaryenModuleInterpret(module: BinaryenModuleRef); +} +extern "C" { + pub fn BinaryenModuleAddDebugInfoFileName( + module: BinaryenModuleRef, + filename: *const ::std::os::raw::c_char, + ) -> BinaryenIndex; +} +extern "C" { + pub fn BinaryenModuleGetDebugInfoFileName( + module: BinaryenModuleRef, + index: BinaryenIndex, + ) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenFunctionGetName(func: BinaryenFunctionRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenFunctionGetParams(func: BinaryenFunctionRef) -> BinaryenType; +} +extern "C" { + pub fn BinaryenFunctionGetResults(func: BinaryenFunctionRef) -> BinaryenType; +} +extern "C" { + pub fn BinaryenFunctionGetNumVars(func: BinaryenFunctionRef) -> BinaryenIndex; +} +extern "C" { + pub fn BinaryenFunctionGetVar(func: BinaryenFunctionRef, index: BinaryenIndex) -> BinaryenType; +} +extern "C" { + pub fn BinaryenFunctionGetBody(func: BinaryenFunctionRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenFunctionOptimize(func: BinaryenFunctionRef, module: BinaryenModuleRef); +} +extern "C" { + pub fn BinaryenFunctionRunPasses( + func: BinaryenFunctionRef, + module: BinaryenModuleRef, + passes: *mut *const ::std::os::raw::c_char, + numPasses: BinaryenIndex, + ); +} +extern "C" { + pub fn BinaryenFunctionSetDebugLocation( + func: BinaryenFunctionRef, + expr: BinaryenExpressionRef, + fileIndex: BinaryenIndex, + lineNumber: BinaryenIndex, + columnNumber: BinaryenIndex, + ); +} +extern "C" { + pub fn BinaryenGlobalGetName(global: BinaryenGlobalRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenGlobalGetType(global: BinaryenGlobalRef) -> BinaryenType; +} +extern "C" { + pub fn BinaryenGlobalIsMutable(global: BinaryenGlobalRef) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn BinaryenGlobalGetInitExpr(global: BinaryenGlobalRef) -> BinaryenExpressionRef; +} +extern "C" { + pub fn BinaryenEventGetName(event: BinaryenEventRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenEventGetAttribute(event: BinaryenEventRef) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn BinaryenEventGetParams(event: BinaryenEventRef) -> BinaryenType; +} +extern "C" { + pub fn BinaryenEventGetResults(event: BinaryenEventRef) -> BinaryenType; +} +extern "C" { + pub fn BinaryenFunctionImportGetModule( + import: BinaryenFunctionRef, + ) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenGlobalImportGetModule( + import: BinaryenGlobalRef, + ) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenEventImportGetModule(import: BinaryenEventRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenFunctionImportGetBase( + import: BinaryenFunctionRef, + ) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenGlobalImportGetBase(import: BinaryenGlobalRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenEventImportGetBase(import: BinaryenEventRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenExportGetKind(export_: BinaryenExportRef) -> BinaryenExternalKind; +} +extern "C" { + pub fn BinaryenExportGetName(export_: BinaryenExportRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenExportGetValue(export_: BinaryenExportRef) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn BinaryenGetNumExports(module: BinaryenModuleRef) -> u32; +} +extern "C" { + pub fn BinaryenGetExportByIndex( + module: BinaryenModuleRef, + id: BinaryenIndex, + ) -> BinaryenExportRef; +} +extern "C" { + pub fn BinaryenAddCustomSection( + module: BinaryenModuleRef, + name: *const ::std::os::raw::c_char, + contents: *const ::std::os::raw::c_char, + contentsSize: BinaryenIndex, + ); +} +pub type BinaryenSideEffects = u32; +extern "C" { + pub fn BinaryenSideEffectNone() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSideEffectBranches() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSideEffectCalls() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSideEffectReadsLocal() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSideEffectWritesLocal() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSideEffectReadsGlobal() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSideEffectWritesGlobal() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSideEffectReadsMemory() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSideEffectWritesMemory() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSideEffectImplicitTrap() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSideEffectIsAtomic() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSideEffectThrows() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSideEffectAny() -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenExpressionGetSideEffects( + expr: BinaryenExpressionRef, + features: BinaryenFeatures, + ) -> BinaryenSideEffects; +} +extern "C" { + pub fn BinaryenSetAPITracing(on: ::std::os::raw::c_int); +} +extern "C" { + pub fn BinaryenSetColorsEnabled(enabled: ::std::os::raw::c_int); +} +extern "C" { + pub fn BinaryenAreColorsEnabled() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn BinaryenModuleSafeRead( + input: *const ::std::os::raw::c_char, + inputSize: usize, + ) -> BinaryenModuleRef; +} +extern "C" { + pub fn translateToFuzz( + data: *const ::std::os::raw::c_char, + len: usize, + emitAtomics: bool, + ) -> BinaryenModuleRef; +} +extern "C" { + pub fn BinaryenShimDisposeBinaryenModuleAllocateAndWriteResult( + result: BinaryenModuleAllocateAndWriteResult, + ); +} +extern "C" { + pub fn BinaryenModuleOptimizeWithSettings( + module: BinaryenModuleRef, + shrinkLevel: ::std::os::raw::c_int, + optimizeLevel: ::std::os::raw::c_int, + debugInfo: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn BinaryenModuleRunPassesWithSettings( + module: BinaryenModuleRef, + passes: *mut *const ::std::os::raw::c_char, + numPasses: BinaryenIndex, + shrinkLevel: ::std::os::raw::c_int, + optimizeLevel: ::std::os::raw::c_int, + debugInfo: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn BinaryenModuleSafeValidate(module: BinaryenModuleRef) -> ::std::os::raw::c_int; +} diff --git a/binaryen-sys/src/lib.rs b/binaryen-sys/src/lib.rs index d7f1e5c..4b421fe 100644 --- a/binaryen-sys/src/lib.rs +++ b/binaryen-sys/src/lib.rs @@ -2,8 +2,8 @@ #![allow(non_camel_case_types)] #![allow(non_snake_case)] -include!(concat!(env!("OUT_DIR"), "/bindings.rs")); - +mod bindings; +pub use bindings::*; pub mod passes; #[cfg(test)] diff --git a/binaryen-sys/tests/bindgen-up-to-date.rs b/binaryen-sys/tests/bindgen-up-to-date.rs new file mode 100644 index 0000000..499f375 --- /dev/null +++ b/binaryen-sys/tests/bindgen-up-to-date.rs @@ -0,0 +1,44 @@ +// This is a smoke test that the pre-generated `src/bindings.rs` file doesn't +// need to be updated. We check in a generated version so downstream consumers +// don't have to get `bindgen` working themselves. +// +// If bindgen or binaryen changes you can run tests with `BLESS=1` to regenerate +// the source file, otherwise this will test on CI that the file doesn't need to +// be regenerated. + +#[test] +fn test_bindings_up_to_date() { + let expected = bindgen::Builder::default() + .header("wrapper.h") + // See https://github.com/rust-lang-nursery/rust-bindgen/issues/947 + .trust_clang_mangling(false) + .generate_comments(true) + // https://github.com/rust-lang-nursery/rust-bindgen/issues/947#issuecomment-327100002 + .layout_tests(false) + .whitelist_function("Binaryen.*") + .whitelist_type("Binaryen.*") + .whitelist_function("translateToFuzz") + .whitelist_recursively(false) + .generate() + .expect("Unable to generate bindings") + .to_string(); + + if std::env::var("BLESS").is_ok() { + std::fs::write("src/bindings.rs", expected).unwrap(); + } else { + let actual = include_str!("../src/bindings.rs"); + if expected == actual { + return; + } + + for diff in diff::lines(&expected, &actual) { + match diff { + diff::Result::Both(_ ,s) => println!(" {}", s), + diff::Result::Left(s) => println!("-{}", s), + diff::Result::Right(s) => println!("+{}", s), + } + } + + panic!("differences found, need to regenerate bindings"); + } +}