diff options
author | Thomas Lively <7121787+tlively@users.noreply.github.com> | 2019-09-03 14:13:29 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-03 14:13:29 -0700 |
commit | 0faa68b9dfbe478c6d238a5c55ac61b54a86a3c3 (patch) | |
tree | 9ca1c6e09858ebcefb0dc14f60c95293fb6976ef /src/binaryen-c.h | |
parent | 445881f6c8a28faae22a764c96449be86b48a96b (diff) | |
download | binaryen-0faa68b9dfbe478c6d238a5c55ac61b54a86a3c3.tar.gz binaryen-0faa68b9dfbe478c6d238a5c55ac61b54a86a3c3.tar.bz2 binaryen-0faa68b9dfbe478c6d238a5c55ac61b54a86a3c3.zip |
QFMA/QFMS instructions (#2328)
Renames the SIMDBitselect class to SIMDTernary and adds the new
{f32x4,f64x2}.qfm{a,s} ternary instructions. Because the SIMDBitselect
class is no more, this is a backwards-incompatible change to the C
interface. The new instructions are not yet used in the fuzzer because
they are not yet implemented in V8.
The corresponding LLVM commit is https://reviews.llvm.org/rL370556.
Diffstat (limited to 'src/binaryen-c.h')
-rw-r--r-- | src/binaryen-c.h | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 451dcf23f..396ee2e8d 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -123,7 +123,7 @@ BinaryenExpressionId BinaryenAtomicFenceId(void); BinaryenExpressionId BinaryenSIMDExtractId(void); BinaryenExpressionId BinaryenSIMDReplaceId(void); BinaryenExpressionId BinaryenSIMDShuffleId(void); -BinaryenExpressionId BinaryenSIMDBitselectId(void); +BinaryenExpressionId BinaryenSIMDTernaryId(void); BinaryenExpressionId BinaryenSIMDShiftId(void); BinaryenExpressionId BinaryenMemoryInitId(void); BinaryenExpressionId BinaryenDataDropId(void); @@ -486,6 +486,8 @@ BinaryenOp BinaryenSubVecI64x2(void); BinaryenOp BinaryenAbsVecF32x4(void); BinaryenOp BinaryenNegVecF32x4(void); BinaryenOp BinaryenSqrtVecF32x4(void); +BinaryenOp BinaryenQFMAVecF32x4(void); +BinaryenOp BinaryenQFMSVecF32x4(void); BinaryenOp BinaryenAddVecF32x4(void); BinaryenOp BinaryenSubVecF32x4(void); BinaryenOp BinaryenMulVecF32x4(void); @@ -495,6 +497,8 @@ BinaryenOp BinaryenMaxVecF32x4(void); BinaryenOp BinaryenAbsVecF64x2(void); BinaryenOp BinaryenNegVecF64x2(void); BinaryenOp BinaryenSqrtVecF64x2(void); +BinaryenOp BinaryenQFMAVecF64x2(void); +BinaryenOp BinaryenQFMSVecF64x2(void); BinaryenOp BinaryenAddVecF64x2(void); BinaryenOp BinaryenSubVecF64x2(void); BinaryenOp BinaryenMulVecF64x2(void); @@ -687,10 +691,11 @@ BinaryenExpressionRef BinaryenSIMDShuffle(BinaryenModuleRef module, BinaryenExpressionRef left, BinaryenExpressionRef right, const uint8_t mask[16]); -BinaryenExpressionRef BinaryenSIMDBitselect(BinaryenModuleRef module, - BinaryenExpressionRef left, - BinaryenExpressionRef right, - BinaryenExpressionRef cond); +BinaryenExpressionRef BinaryenSIMDTernary(BinaryenModuleRef module, + BinaryenOp op, + BinaryenExpressionRef a, + BinaryenExpressionRef b, + BinaryenExpressionRef c); BinaryenExpressionRef BinaryenSIMDShift(BinaryenModuleRef module, BinaryenOp op, BinaryenExpressionRef vec, @@ -856,9 +861,10 @@ BinaryenExpressionRef BinaryenSIMDShuffleGetLeft(BinaryenExpressionRef expr); BinaryenExpressionRef BinaryenSIMDShuffleGetRight(BinaryenExpressionRef expr); void BinaryenSIMDShuffleGetMask(BinaryenExpressionRef expr, uint8_t* mask); -BinaryenExpressionRef BinaryenSIMDBitselectGetLeft(BinaryenExpressionRef expr); -BinaryenExpressionRef BinaryenSIMDBitselectGetRight(BinaryenExpressionRef expr); -BinaryenExpressionRef BinaryenSIMDBitselectGetCond(BinaryenExpressionRef expr); +BinaryenOp BinaryenSIMDTernaryGetOp(BinaryenExpressionRef expr); +BinaryenExpressionRef BinaryenSIMDTernaryGetA(BinaryenExpressionRef expr); +BinaryenExpressionRef BinaryenSIMDTernaryGetB(BinaryenExpressionRef expr); +BinaryenExpressionRef BinaryenSIMDTernaryGetC(BinaryenExpressionRef expr); BinaryenOp BinaryenSIMDShiftGetOp(BinaryenExpressionRef expr); BinaryenExpressionRef BinaryenSIMDShiftGetVec(BinaryenExpressionRef expr); |