@@ -343,8 +343,8 @@ BinaryenExpressionId BinaryenSIMDReplaceId(void) {
343343BinaryenExpressionId BinaryenSIMDShuffleId (void ) {
344344 return Expression::Id::SIMDShuffleId;
345345}
346- BinaryenExpressionId BinaryenSIMDBitselectId (void ) {
347- return Expression::Id::SIMDBitselectId ;
346+ BinaryenExpressionId BinaryenSIMDTernaryId (void ) {
347+ return Expression::Id::SIMDTernaryId ;
348348}
349349BinaryenExpressionId BinaryenSIMDShiftId (void ) {
350350 return Expression::Id::SIMDShiftId;
@@ -790,6 +790,7 @@ BinaryenOp BinaryenNotVec128(void) { return NotVec128; }
790790BinaryenOp BinaryenAndVec128 (void ) { return AndVec128; }
791791BinaryenOp BinaryenOrVec128 (void ) { return OrVec128; }
792792BinaryenOp BinaryenXorVec128 (void ) { return XorVec128; }
793+ BinaryenOp BinaryenBitselectVec128 (void ) { return Bitselect; }
793794BinaryenOp BinaryenNegVecI8x16 (void ) { return NegVecI8x16; }
794795BinaryenOp BinaryenAnyTrueVecI8x16 (void ) { return AnyTrueVecI8x16; }
795796BinaryenOp BinaryenAllTrueVecI8x16 (void ) { return AllTrueVecI8x16; }
@@ -836,6 +837,8 @@ BinaryenOp BinaryenSubVecI64x2(void) { return SubVecI64x2; }
836837BinaryenOp BinaryenAbsVecF32x4 (void ) { return AbsVecF32x4; }
837838BinaryenOp BinaryenNegVecF32x4 (void ) { return NegVecF32x4; }
838839BinaryenOp BinaryenSqrtVecF32x4 (void ) { return SqrtVecF32x4; }
840+ BinaryenOp BinaryenQFMAVecF32x4 (void ) { return QFMAF32x4; }
841+ BinaryenOp BinaryenQFMSVecF32x4 (void ) { return QFMSF32x4; }
839842BinaryenOp BinaryenAddVecF32x4 (void ) { return AddVecF32x4; }
840843BinaryenOp BinaryenSubVecF32x4 (void ) { return SubVecF32x4; }
841844BinaryenOp BinaryenMulVecF32x4 (void ) { return MulVecF32x4; }
@@ -845,6 +848,8 @@ BinaryenOp BinaryenMaxVecF32x4(void) { return MaxVecF32x4; }
845848BinaryenOp BinaryenAbsVecF64x2 (void ) { return AbsVecF64x2; }
846849BinaryenOp BinaryenNegVecF64x2 (void ) { return NegVecF64x2; }
847850BinaryenOp BinaryenSqrtVecF64x2 (void ) { return SqrtVecF64x2; }
851+ BinaryenOp BinaryenQFMAVecF64x2 (void ) { return QFMAF64x2; }
852+ BinaryenOp BinaryenQFMSVecF64x2 (void ) { return QFMSF64x2; }
848853BinaryenOp BinaryenAddVecF64x2 (void ) { return AddVecF64x2; }
849854BinaryenOp BinaryenSubVecF64x2 (void ) { return SubVecF64x2; }
850855BinaryenOp BinaryenMulVecF64x2 (void ) { return MulVecF64x2; }
@@ -1532,15 +1537,17 @@ BinaryenExpressionRef BinaryenSIMDShuffle(BinaryenModuleRef module,
15321537 }
15331538 return static_cast <Expression*>(ret);
15341539}
1535- BinaryenExpressionRef BinaryenSIMDBitselect (BinaryenModuleRef module ,
1536- BinaryenExpressionRef left,
1537- BinaryenExpressionRef right,
1538- BinaryenExpressionRef cond) {
1539- auto * ret = Builder (*(Module*)module )
1540- .makeSIMDBitselect (
1541- (Expression*)left, (Expression*)right, (Expression*)cond);
1540+ BinaryenExpressionRef BinaryenSIMDTernary (BinaryenModuleRef module ,
1541+ BinaryenOp op,
1542+ BinaryenExpressionRef a,
1543+ BinaryenExpressionRef b,
1544+ BinaryenExpressionRef c) {
1545+ auto * ret =
1546+ Builder (*(Module*)module )
1547+ .makeSIMDTernary (
1548+ SIMDTernaryOp (op), (Expression*)a, (Expression*)b, (Expression*)c);
15421549 if (tracing) {
1543- traceExpression (ret, " BinaryenSIMDBitselect " , left, right, cond );
1550+ traceExpression (ret, " BinaryenSIMDTernary " , op, a, b, c );
15441551 }
15451552 return static_cast <Expression*>(ret);
15461553}
@@ -2652,37 +2659,46 @@ void BinaryenSIMDShuffleGetMask(BinaryenExpressionRef expr, uint8_t* mask) {
26522659 assert (expression->is <SIMDShuffle>());
26532660 memcpy (mask, static_cast <SIMDShuffle*>(expression)->mask .data (), 16 );
26542661}
2655- // SIMDBitselect
2656- BinaryenExpressionRef BinaryenSIMDBitselectGetLeft (BinaryenExpressionRef expr) {
2662+ // SIMDTernary
2663+ BinaryenOp BinaryenSIMDTernaryGetOp (BinaryenExpressionRef expr) {
26572664 if (tracing) {
2658- std::cout << " BinaryenSIMDBitselectGetLeft (expressions["
2659- << expressions[expr] << " ]);\n " ;
2665+ std::cout << " BinaryenSIMDTernaryOp (expressions[" << expressions[expr]
2666+ << " ]);\n " ;
26602667 }
26612668
26622669 auto * expression = (Expression*)expr;
2663- assert (expression->is <SIMDBitselect >());
2664- return static_cast <SIMDBitselect *>(expression)->left ;
2670+ assert (expression->is <SIMDTernary >());
2671+ return static_cast <SIMDTernary *>(expression)->op ;
26652672}
2666- BinaryenExpressionRef
2667- BinaryenSIMDBitselectGetRight (BinaryenExpressionRef expr) {
2673+ BinaryenExpressionRef BinaryenSIMDTernaryGetA (BinaryenExpressionRef expr) {
26682674 if (tracing) {
2669- std::cout << " BinaryenSIMDBitselectGetRight (expressions["
2670- << expressions[expr] << " ]);\n " ;
2675+ std::cout << " BinaryenSIMDTernaryGetA (expressions[" << expressions[expr]
2676+ << " ]);\n " ;
26712677 }
26722678
26732679 auto * expression = (Expression*)expr;
2674- assert (expression->is <SIMDBitselect >());
2675- return static_cast <SIMDBitselect *>(expression)->right ;
2680+ assert (expression->is <SIMDTernary >());
2681+ return static_cast <SIMDTernary *>(expression)->a ;
26762682}
2677- BinaryenExpressionRef BinaryenSIMDBitselectGetCond (BinaryenExpressionRef expr) {
2683+ BinaryenExpressionRef BinaryenSIMDTernaryGetB (BinaryenExpressionRef expr) {
26782684 if (tracing) {
2679- std::cout << " BinaryenSIMDBitselectGetCond(expressions["
2680- << expressions[expr] << " ]);\n " ;
2685+ std::cout << " BinaryenSIMDTernaryGetB(expressions[" << expressions[expr]
2686+ << " ]);\n " ;
2687+ }
2688+
2689+ auto * expression = (Expression*)expr;
2690+ assert (expression->is <SIMDTernary>());
2691+ return static_cast <SIMDTernary*>(expression)->b ;
2692+ }
2693+ BinaryenExpressionRef BinaryenSIMDTernaryGetC (BinaryenExpressionRef expr) {
2694+ if (tracing) {
2695+ std::cout << " BinaryenSIMDTernaryGetC(expressions[" << expressions[expr]
2696+ << " ]);\n " ;
26812697 }
26822698
26832699 auto * expression = (Expression*)expr;
2684- assert (expression->is <SIMDBitselect >());
2685- return static_cast <SIMDBitselect *>(expression)->cond ;
2700+ assert (expression->is <SIMDTernary >());
2701+ return static_cast <SIMDTernary *>(expression)->c ;
26862702}
26872703// SIMDShift
26882704BinaryenOp BinaryenSIMDShiftGetOp (BinaryenExpressionRef expr) {
0 commit comments