Skip to content

Commit d5f72e3

Browse files
committed
Add initial definitions for SIMD ops
1 parent 8e61e0e commit d5f72e3

File tree

2 files changed

+290
-0
lines changed

2 files changed

+290
-0
lines changed

src/glue/binaryen.d.ts

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,14 @@ declare function _BinaryenAtomicCmpxchgId(): BinaryenExpressionId;
5050
declare function _BinaryenAtomicRMWId(): BinaryenExpressionId;
5151
declare function _BinaryenAtomicWaitId(): BinaryenExpressionId;
5252
declare function _BinaryenAtomicWakeId(): BinaryenExpressionId;
53+
declare function _BinaryenSIMDExtractId(): BinaryenExpressionId;
54+
declare function _BinaryenSIMDReplaceId(): BinaryenExpressionId;
55+
declare function _BinaryenSIMDShuffleId(): BinaryenExpressionId;
56+
declare function _BinaryenSIMDBitselectId(): BinaryenExpressionId;
57+
declare function _BinaryenSIMDShiftId(): BinaryenExpressionId;
5358

5459
declare type BinaryenModuleRef = usize;
60+
declare type v128ptr = usize; // TODO: LLVM C-abi for const uint8_t[16]?
5561

5662
declare function _BinaryenModuleCreate(): BinaryenModuleRef;
5763
declare function _BinaryenModuleDispose(module: BinaryenModuleRef): void;
@@ -62,6 +68,7 @@ declare function _BinaryenLiteralInt32(out: usize, x: i32): void;
6268
declare function _BinaryenLiteralInt64(out: usize, x: i32, y: i32): void;
6369
declare function _BinaryenLiteralFloat32(out: usize, x: f32): void;
6470
declare function _BinaryenLiteralFloat64(out: usize, x: f64): void;
71+
declare function _BinaryenLiteralVec128(out: usize, x: v128ptr): void;
6572
declare function _BinaryenLiteralFloat32Bits(out: usize, x: i32): void;
6673
declare function _BinaryenLiteralFloat64Bits(out: usize, x: i32, y: i32): void;
6774

@@ -210,6 +217,144 @@ declare function _BinaryenAtomicRMWOr(): BinaryenAtomicRMWOp;
210217
declare function _BinaryenAtomicRMWXor(): BinaryenAtomicRMWOp;
211218
declare function _BinaryenAtomicRMWXchg(): BinaryenAtomicRMWOp;
212219

220+
declare type BinaryenSIMDOp = BinaryenOp;
221+
222+
declare function _BinaryenSplatVecI8x16(): BinaryenSIMDOp;
223+
declare function _BinaryenExtractLaneSVecI8x16(): BinaryenSIMDOp;
224+
declare function _BinaryenExtractLaneUVecI8x16(): BinaryenSIMDOp;
225+
declare function _BinaryenReplaceLaneVecI8x16(): BinaryenSIMDOp;
226+
declare function _BinaryenSplatVecI16x8(): BinaryenSIMDOp;
227+
declare function _BinaryenExtractLaneSVecI16x8(): BinaryenSIMDOp;
228+
declare function _BinaryenExtractLaneUVecI16x8(): BinaryenSIMDOp;
229+
declare function _BinaryenReplaceLaneVecI16x8(): BinaryenSIMDOp;
230+
declare function _BinaryenSplatVecI32x4(): BinaryenSIMDOp;
231+
declare function _BinaryenExtractLaneVecI32x4(): BinaryenSIMDOp;
232+
declare function _BinaryenReplaceLaneVecI32x4(): BinaryenSIMDOp;
233+
declare function _BinaryenSplatVecI64x2(): BinaryenSIMDOp;
234+
declare function _BinaryenExtractLaneVecI64x2(): BinaryenSIMDOp;
235+
declare function _BinaryenReplaceLaneVecI64x2(): BinaryenSIMDOp;
236+
declare function _BinaryenSplatVecF32x4(): BinaryenSIMDOp;
237+
declare function _BinaryenExtractLaneVecF32x4(): BinaryenSIMDOp;
238+
declare function _BinaryenReplaceLaneVecF32x4(): BinaryenSIMDOp;
239+
declare function _BinaryenSplatVecF64x2(): BinaryenSIMDOp;
240+
declare function _BinaryenExtractLaneVecF64x2(): BinaryenSIMDOp;
241+
declare function _BinaryenReplaceLaneVecF64x2(): BinaryenSIMDOp;
242+
declare function _BinaryenEqVecI8x16(): BinaryenSIMDOp;
243+
declare function _BinaryenNeVecI8x16(): BinaryenSIMDOp;
244+
declare function _BinaryenLtSVecI8x16(): BinaryenSIMDOp;
245+
declare function _BinaryenLtUVecI8x16(): BinaryenSIMDOp;
246+
declare function _BinaryenGtSVecI8x16(): BinaryenSIMDOp;
247+
declare function _BinaryenGtUVecI8x16(): BinaryenSIMDOp;
248+
declare function _BinaryenLeSVecI8x16(): BinaryenSIMDOp;
249+
declare function _BinaryenLeUVecI8x16(): BinaryenSIMDOp;
250+
declare function _BinaryenGeSVecI8x16(): BinaryenSIMDOp;
251+
declare function _BinaryenGeUVecI8x16(): BinaryenSIMDOp;
252+
declare function _BinaryenEqVecI16x8(): BinaryenSIMDOp;
253+
declare function _BinaryenNeVecI16x8(): BinaryenSIMDOp;
254+
declare function _BinaryenLtSVecI16x8(): BinaryenSIMDOp;
255+
declare function _BinaryenLtUVecI16x8(): BinaryenSIMDOp;
256+
declare function _BinaryenGtSVecI16x8(): BinaryenSIMDOp;
257+
declare function _BinaryenGtUVecI16x8(): BinaryenSIMDOp;
258+
declare function _BinaryenLeSVecI16x8(): BinaryenSIMDOp;
259+
declare function _BinaryenLeUVecI16x8(): BinaryenSIMDOp;
260+
declare function _BinaryenGeSVecI16x8(): BinaryenSIMDOp;
261+
declare function _BinaryenGeUVecI16x8(): BinaryenSIMDOp;
262+
declare function _BinaryenEqVecI32x4(): BinaryenSIMDOp;
263+
declare function _BinaryenNeVecI32x4(): BinaryenSIMDOp;
264+
declare function _BinaryenLtSVecI32x4(): BinaryenSIMDOp;
265+
declare function _BinaryenLtUVecI32x4(): BinaryenSIMDOp;
266+
declare function _BinaryenGtSVecI32x4(): BinaryenSIMDOp;
267+
declare function _BinaryenGtUVecI32x4(): BinaryenSIMDOp;
268+
declare function _BinaryenLeSVecI32x4(): BinaryenSIMDOp;
269+
declare function _BinaryenLeUVecI32x4(): BinaryenSIMDOp;
270+
declare function _BinaryenGeSVecI32x4(): BinaryenSIMDOp;
271+
declare function _BinaryenGeUVecI32x4(): BinaryenSIMDOp;
272+
declare function _BinaryenEqVecF32x4(): BinaryenSIMDOp;
273+
declare function _BinaryenNeVecF32x4(): BinaryenSIMDOp;
274+
declare function _BinaryenLtVecF32x4(): BinaryenSIMDOp;
275+
declare function _BinaryenGtVecF32x4(): BinaryenSIMDOp;
276+
declare function _BinaryenLeVecF32x4(): BinaryenSIMDOp;
277+
declare function _BinaryenGeVecF32x4(): BinaryenSIMDOp;
278+
declare function _BinaryenEqVecF64x2(): BinaryenSIMDOp;
279+
declare function _BinaryenNeVecF64x2(): BinaryenSIMDOp;
280+
declare function _BinaryenLtVecF64x2(): BinaryenSIMDOp;
281+
declare function _BinaryenGtVecF64x2(): BinaryenSIMDOp;
282+
declare function _BinaryenLeVecF64x2(): BinaryenSIMDOp;
283+
declare function _BinaryenGeVecF64x2(): BinaryenSIMDOp;
284+
declare function _BinaryenNotVec128(): BinaryenSIMDOp;
285+
declare function _BinaryenAndVec128(): BinaryenSIMDOp;
286+
declare function _BinaryenOrVec128(): BinaryenSIMDOp;
287+
declare function _BinaryenXorVec128(): BinaryenSIMDOp;
288+
declare function _BinaryenNegVecI8x16(): BinaryenSIMDOp;
289+
declare function _BinaryenAnyTrueVecI8x16(): BinaryenSIMDOp;
290+
declare function _BinaryenAllTrueVecI8x16(): BinaryenSIMDOp;
291+
declare function _BinaryenShlVecI8x16(): BinaryenSIMDOp;
292+
declare function _BinaryenShrSVecI8x16(): BinaryenSIMDOp;
293+
declare function _BinaryenShrUVecI8x16(): BinaryenSIMDOp;
294+
declare function _BinaryenAddVecI8x16(): BinaryenSIMDOp;
295+
declare function _BinaryenAddSatSVecI8x16(): BinaryenSIMDOp;
296+
declare function _BinaryenAddSatUVecI8x16(): BinaryenSIMDOp;
297+
declare function _BinaryenSubVecI8x16(): BinaryenSIMDOp;
298+
declare function _BinaryenSubSatSVecI8x16(): BinaryenSIMDOp;
299+
declare function _BinaryenSubSatUVecI8x16(): BinaryenSIMDOp;
300+
declare function _BinaryenMulVecI8x16(): BinaryenSIMDOp;
301+
declare function _BinaryenNegVecI16x8(): BinaryenSIMDOp;
302+
declare function _BinaryenAnyTrueVecI16x8(): BinaryenSIMDOp;
303+
declare function _BinaryenAllTrueVecI16x8(): BinaryenSIMDOp;
304+
declare function _BinaryenShlVecI16x8(): BinaryenSIMDOp;
305+
declare function _BinaryenShrSVecI16x8(): BinaryenSIMDOp;
306+
declare function _BinaryenShrUVecI16x8(): BinaryenSIMDOp;
307+
declare function _BinaryenAddVecI16x8(): BinaryenSIMDOp;
308+
declare function _BinaryenAddSatSVecI16x8(): BinaryenSIMDOp;
309+
declare function _BinaryenAddSatUVecI16x8(): BinaryenSIMDOp;
310+
declare function _BinaryenSubVecI16x8(): BinaryenSIMDOp;
311+
declare function _BinaryenSubSatSVecI16x8(): BinaryenSIMDOp;
312+
declare function _BinaryenSubSatUVecI16x8(): BinaryenSIMDOp;
313+
declare function _BinaryenMulVecI16x8(): BinaryenSIMDOp;
314+
declare function _BinaryenNegVecI32x4(): BinaryenSIMDOp;
315+
declare function _BinaryenAnyTrueVecI32x4(): BinaryenSIMDOp;
316+
declare function _BinaryenAllTrueVecI32x4(): BinaryenSIMDOp;
317+
declare function _BinaryenShlVecI32x4(): BinaryenSIMDOp;
318+
declare function _BinaryenShrSVecI32x4(): BinaryenSIMDOp;
319+
declare function _BinaryenShrUVecI32x4(): BinaryenSIMDOp;
320+
declare function _BinaryenAddVecI32x4(): BinaryenSIMDOp;
321+
declare function _BinaryenSubVecI32x4(): BinaryenSIMDOp;
322+
declare function _BinaryenMulVecI32x4(): BinaryenSIMDOp;
323+
declare function _BinaryenNegVecI64x2(): BinaryenSIMDOp;
324+
declare function _BinaryenAnyTrueVecI64x2(): BinaryenSIMDOp;
325+
declare function _BinaryenAllTrueVecI64x2(): BinaryenSIMDOp;
326+
declare function _BinaryenShlVecI64x2(): BinaryenSIMDOp;
327+
declare function _BinaryenShrSVecI64x2(): BinaryenSIMDOp;
328+
declare function _BinaryenShrUVecI64x2(): BinaryenSIMDOp;
329+
declare function _BinaryenAddVecI64x2(): BinaryenSIMDOp;
330+
declare function _BinaryenSubVecI64x2(): BinaryenSIMDOp;
331+
declare function _BinaryenAbsVecF32x4(): BinaryenSIMDOp;
332+
declare function _BinaryenNegVecF32x4(): BinaryenSIMDOp;
333+
declare function _BinaryenSqrtVecF32x4(): BinaryenSIMDOp;
334+
declare function _BinaryenAddVecF32x4(): BinaryenSIMDOp;
335+
declare function _BinaryenSubVecF32x4(): BinaryenSIMDOp;
336+
declare function _BinaryenMulVecF32x4(): BinaryenSIMDOp;
337+
declare function _BinaryenDivVecF32x4(): BinaryenSIMDOp;
338+
declare function _BinaryenMinVecF32x4(): BinaryenSIMDOp;
339+
declare function _BinaryenMaxVecF32x4(): BinaryenSIMDOp;
340+
declare function _BinaryenAbsVecF64x2(): BinaryenSIMDOp;
341+
declare function _BinaryenNegVecF64x2(): BinaryenSIMDOp;
342+
declare function _BinaryenSqrtVecF64x2(): BinaryenSIMDOp;
343+
declare function _BinaryenAddVecF64x2(): BinaryenSIMDOp;
344+
declare function _BinaryenSubVecF64x2(): BinaryenSIMDOp;
345+
declare function _BinaryenMulVecF64x2(): BinaryenSIMDOp;
346+
declare function _BinaryenDivVecF64x2(): BinaryenSIMDOp;
347+
declare function _BinaryenMinVecF64x2(): BinaryenSIMDOp;
348+
declare function _BinaryenMaxVecF64x2(): BinaryenSIMDOp;
349+
declare function _BinaryenTruncSatSVecF32x4ToVecI32x4(): BinaryenSIMDOp;
350+
declare function _BinaryenTruncSatUVecF32x4ToVecI32x4(): BinaryenSIMDOp;
351+
declare function _BinaryenTruncSatSVecF64x2ToVecI64x2(): BinaryenSIMDOp;
352+
declare function _BinaryenTruncSatUVecF64x2ToVecI64x2(): BinaryenSIMDOp;
353+
declare function _BinaryenConvertSVecI32x4ToVecF32x4(): BinaryenSIMDOp;
354+
declare function _BinaryenConvertUVecI32x4ToVecF32x4(): BinaryenSIMDOp;
355+
declare function _BinaryenConvertSVecI64x2ToVecF64x2(): BinaryenSIMDOp;
356+
declare function _BinaryenConvertUVecI64x2ToVecF64x2(): BinaryenSIMDOp;
357+
213358
declare type BinaryenExpressionRef = usize;
214359

215360
declare function _BinaryenBlock(module: BinaryenModuleRef, name: usize, children: usize, numChildren: BinaryenIndex, type: BinaryenType): BinaryenExpressionRef;
@@ -235,13 +380,20 @@ declare function _BinaryenReturn(module: BinaryenModuleRef, value: BinaryenExpre
235380
declare function _BinaryenHost(module: BinaryenModuleRef, op: BinaryenOp, name: usize | 0, operands: usize, numOperands: BinaryenIndex): BinaryenExpressionRef;
236381
declare function _BinaryenNop(module: BinaryenModuleRef): BinaryenExpressionRef;
237382
declare function _BinaryenUnreachable(module: BinaryenModuleRef): BinaryenExpressionRef;
383+
238384
declare function _BinaryenAtomicLoad(module: BinaryenModuleRef, bytes: BinaryenIndex, offset: BinaryenIndex, type: BinaryenType, ptr: BinaryenExpressionRef): BinaryenExpressionRef;
239385
declare function _BinaryenAtomicStore(module: BinaryenModuleRef, bytes: BinaryenIndex, offset: BinaryenIndex, ptr: BinaryenExpressionRef, value: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef;
240386
declare function _BinaryenAtomicRMW(module: BinaryenModuleRef, op: BinaryenAtomicRMWOp, bytes: i32, offset: i32, ptr: BinaryenExpressionRef, value: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef;
241387
declare function _BinaryenAtomicCmpxchg(module: BinaryenModuleRef, bytes: i32, offset: i32, ptr: BinaryenExpressionRef, expected: BinaryenExpressionRef, replacement: BinaryenExpressionRef, type: BinaryenType): BinaryenExpressionRef;
242388
declare function _BinaryenAtomicWait(module: BinaryenModuleRef, ptr: BinaryenExpressionRef, expected: BinaryenExpressionRef, timeout: BinaryenExpressionRef, expectedType: BinaryenType): BinaryenExpressionRef;
243389
declare function _BinaryenAtomicWake(module: BinaryenModuleRef, ptr: BinaryenExpressionRef, wakeCount: BinaryenExpressionRef): BinaryenExpressionRef;
244390

391+
declare function _BinaryenSIMDExtract(module: BinaryenModuleRef, op: BinaryenSIMDOp, vec: BinaryenExpressionRef, idx: u8): BinaryenExpressionRef;
392+
declare function _BinaryenSIMDReplace(module: BinaryenModuleRef, op: BinaryenSIMDOp, vec: BinaryenExpressionRef, idx: u8, value: BinaryenExpressionRef): BinaryenExpressionRef;
393+
declare function _BinaryenSIMDShuffle(module: BinaryenModuleRef, left: BinaryenExpressionRef, right: BinaryenExpressionRef, mask: v128ptr): BinaryenExpressionRef;
394+
declare function _BinaryenSIMDBitselect(module: BinaryenModuleRef, left: BinaryenExpressionRef, right: BinaryenExpressionRef, cond: BinaryenExpressionRef): BinaryenExpressionRef;
395+
declare function _BinaryenSIMDShift(module: BinaryenModuleRef, op: BinaryenSIMDOp, vec: BinaryenExpressionRef, shift: BinaryenExpressionRef): BinaryenExpressionRef;
396+
245397
declare function _BinaryenExpressionGetId(expr: BinaryenExpressionRef): BinaryenExpressionId;
246398
declare function _BinaryenExpressionGetType(expr: BinaryenExpressionRef): BinaryenType;
247399
declare function _BinaryenExpressionPrint(expr: BinaryenExpressionRef): void;
@@ -346,6 +498,27 @@ declare function _BinaryenAtomicWaitGetExpectedType(expr: BinaryenExpressionRef)
346498
declare function _BinaryenAtomicWakeGetPtr(expr: BinaryenExpressionRef): BinaryenExpressionRef;
347499
declare function _BinaryenAtomicWakeGetWakeCount(expr: BinaryenExpressionRef): BinaryenExpressionRef;
348500

501+
declare function _BinaryenSIMDExtractGetOp(expr: BinaryenExpressionRef): BinaryenSIMDOp;
502+
declare function _BinaryenSIMDExtractGetVec(expr: BinaryenExpressionRef): BinaryenExpressionRef;
503+
declare function _BinaryenSIMDExtractGetIdx(expr: BinaryenExpressionRef): u8;
504+
505+
declare function _BinaryenSIMDReplaceGetOp(expr: BinaryenExpressionRef): BinaryenSIMDOp;
506+
declare function _BinaryenSIMDReplaceGetVec(expr: BinaryenExpressionRef): BinaryenExpressionRef;
507+
declare function _BinaryenSIMDReplaceGetIdx(expr: BinaryenExpressionRef): u8;
508+
declare function _BinaryenSIMDReplaceGetValue(expr: BinaryenExpressionRef): BinaryenExpressionRef;
509+
510+
declare function _BinaryenSIMDShuffleGetLeft(expr: BinaryenExpressionRef): BinaryenExpressionRef;
511+
declare function _BinaryenSIMDShuffleGetRight(expr: BinaryenExpressionRef): BinaryenExpressionRef;
512+
declare function _BinaryenSIMDShuffleGetMask(expr: BinaryenExpressionRef, out: v128ptr): void;
513+
514+
declare function _BinaryenSIMDBitselectGetLeft(expr: BinaryenExpressionRef): BinaryenExpressionRef;
515+
declare function _BinaryenSIMDBitselectGetRight(expr: BinaryenExpressionRef): BinaryenExpressionRef;
516+
declare function _BinaryenSIMDBitselectGetCond(expr: BinaryenExpressionRef): BinaryenExpressionRef;
517+
518+
declare function _BinaryenSIMDShiftGetOp(expr: BinaryenExpressionRef): BinaryenSIMDOp;
519+
declare function _BinaryenSIMDShiftGetVec(expr: BinaryenExpressionRef): BinaryenExpressionRef;
520+
declare function _BinaryenSIMDShiftGetShift(expr: BinaryenExpressionRef): BinaryenExpressionRef;
521+
349522
declare type BinaryenFunctionTypeRef = usize;
350523

351524
declare function _BinaryenAddFunctionType(module: BinaryenModuleRef, name: usize, result: BinaryenType, paramTypes: usize, numParams: BinaryenIndex): BinaryenFunctionTypeRef;

0 commit comments

Comments
 (0)