summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/binaryen-c.cpp12
-rw-r--r--src/binaryen-c.h8
-rw-r--r--test/example/c-api-kitchen-sink.c7
-rw-r--r--test/example/c-api-kitchen-sink.txt3
4 files changed, 30 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 233ff5e34..8b4021c5b 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 387e54b72..bd8e19048 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 e3199bdd6..9f8c9a640 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 3393022ae..211c7003b 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