diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 233ff5e34d6..8b4021c5bc3 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -172,6 +172,18 @@ WASM_DEPRECATED BinaryenType BinaryenFloat32(void) { return Type::f32; } WASM_DEPRECATED BinaryenType BinaryenFloat64(void) { return Type::f64; } WASM_DEPRECATED BinaryenType BinaryenUndefined(void) { return uint32_t(-1); } +// Packed types + +BinaryenPackedType BinaryenPackedTypeNotPacked(void) { + return Field::PackedType::not_packed; +} +BinaryenPackedType BinaryenPackedTypeInt8(void) { + return Field::PackedType::i8; +} +BinaryenPackedType BinaryenPackedTypeInt16(void) { + return Field::PackedType::i16; +} + // Expression ids BinaryenExpressionId BinaryenInvalidId(void) { diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 387e54b72f4..bd8e19048da 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -121,6 +121,14 @@ WASM_DEPRECATED BinaryenType BinaryenFloat32(void); WASM_DEPRECATED BinaryenType BinaryenFloat64(void); WASM_DEPRECATED BinaryenType BinaryenUndefined(void); +// Packed types (call to get the value of each; you can cache them) + +typedef uint32_t BinaryenPackedType; + +BINARYEN_API BinaryenPackedType BinaryenPackedTypeNotPacked(void); +BINARYEN_API BinaryenPackedType BinaryenPackedTypeInt8(void); +BINARYEN_API BinaryenPackedType BinaryenPackedTypeInt16(void); + // Expression ids (call to get the value of each; you can cache them) typedef uint32_t BinaryenExpressionId; diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index e3199bdd66e..9f8c9a64068 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -280,6 +280,13 @@ void test_types() { pair[0] = pair[1] = f32; BinaryenType float_pair = BinaryenTypeCreate(pair, 2); assert(float_pair != i32_pair); + + BinaryenPackedType notPacked = BinaryenPackedTypeNotPacked(); + printf(" // BinaryenPackedTypeNotPacked: %d\n", notPacked); + BinaryenPackedType i8 = BinaryenPackedTypeInt8(); + printf(" // BinaryenPackedTypeInt8: %d\n", i8); + BinaryenPackedType i16 = BinaryenPackedTypeInt16(); + printf(" // BinaryenPackedTypeInt16: %d\n", i16); } void test_features() { diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt index 3393022ae95..211c7003b16 100644 --- a/test/example/c-api-kitchen-sink.txt +++ b/test/example/c-api-kitchen-sink.txt @@ -12,6 +12,9 @@ // BinaryenTypeI31ref: 10 // BinaryenTypeDataref: 11 // BinaryenTypeAuto: -1 + // BinaryenPackedTypeNotPacked: 0 + // BinaryenPackedTypeInt8: 1 + // BinaryenPackedTypeInt16: 2 BinaryenFeatureMVP: 0 BinaryenFeatureAtomics: 1 BinaryenFeatureBulkMemory: 16