@@ -690,6 +690,10 @@ BinaryenOp BinaryenLtFloat64(void) { return LtFloat64; }
690690BinaryenOp BinaryenLeFloat64 (void ) { return LeFloat64; }
691691BinaryenOp BinaryenGtFloat64 (void ) { return GtFloat64; }
692692BinaryenOp BinaryenGeFloat64 (void ) { return GeFloat64; }
693+ BinaryenOp BinaryenAddInt128 (void ) { return AddInt128; }
694+ BinaryenOp BinaryenSubInt128 (void ) { return SubInt128; }
695+ BinaryenOp BinaryenMulWideSInt64 (void ) { return MulWideSInt64; }
696+ BinaryenOp BinaryenMulWideUInt64 (void ) { return MulWideUInt64; }
693697BinaryenOp BinaryenAtomicRMWAdd (void ) { return RMWAdd; }
694698BinaryenOp BinaryenAtomicRMWSub (void ) { return RMWSub; }
695699BinaryenOp BinaryenAtomicRMWAnd (void ) { return RMWAnd; }
@@ -1315,6 +1319,26 @@ BinaryenExpressionRef BinaryenBinary(BinaryenModuleRef module,
13151319 Builder (*(Module*)module )
13161320 .makeBinary (BinaryOp (op), (Expression*)left, (Expression*)right));
13171321}
1322+ BinaryenExpressionRef BinaryenWideIntAddSub (BinaryenModuleRef module ,
1323+ BinaryenOp op,
1324+ BinaryenExpressionRef leftLow,
1325+ BinaryenExpressionRef leftHigh,
1326+ BinaryenExpressionRef rightLow,
1327+ BinaryenExpressionRef rightHigh) {
1328+ return Builder (*(Module*)module )
1329+ .makeWideIntAddSub (WideIntAddSubOp (op),
1330+ (Expression*)leftLow,
1331+ (Expression*)leftHigh,
1332+ (Expression*)rightLow,
1333+ (Expression*)rightHigh);
1334+ }
1335+ BinaryenExpressionRef BinaryenWideIntMul (BinaryenModuleRef module ,
1336+ BinaryenOp op,
1337+ BinaryenExpressionRef left,
1338+ BinaryenExpressionRef right) {
1339+ return Builder (*(Module*)module )
1340+ .makeWideIntMul (WideIntMulOp (op), (Expression*)left, (Expression*)right);
1341+ }
13181342BinaryenExpressionRef BinaryenSelect (BinaryenModuleRef module ,
13191343 BinaryenExpressionRef condition,
13201344 BinaryenExpressionRef ifTrue,
@@ -2946,6 +2970,105 @@ void BinaryenBinarySetRight(BinaryenExpressionRef expr,
29462970 assert (rightExpr);
29472971 static_cast <Binary*>(expression)->right = (Expression*)rightExpr;
29482972}
2973+ // WideIntAddSub
2974+ BinaryenOp BinaryenWideIntAddSubGetOp (BinaryenExpressionRef expr) {
2975+ auto * expression = (Expression*)expr;
2976+ assert (expression->is <WideIntAddSub>());
2977+ return static_cast <WideIntAddSub*>(expression)->op ;
2978+ }
2979+ void BinaryenWideIntAddSubSetOp (BinaryenExpressionRef expr, BinaryenOp op) {
2980+ auto * expression = (Expression*)expr;
2981+ assert (expression->is <WideIntAddSub>());
2982+ static_cast <WideIntAddSub*>(expression)->op = WideIntAddSubOp (op);
2983+ }
2984+ BinaryenExpressionRef
2985+ BinaryenWideIntAddSubGetLeftLow (BinaryenExpressionRef expr) {
2986+ auto * expression = (Expression*)expr;
2987+ assert (expression->is <WideIntAddSub>());
2988+ return static_cast <WideIntAddSub*>(expression)->leftLow ;
2989+ }
2990+ void BinaryenWideIntAddSubSetLeftLow (BinaryenExpressionRef expr,
2991+ BinaryenExpressionRef leftLowExpr) {
2992+ auto * expression = (Expression*)expr;
2993+ assert (expression->is <WideIntAddSub>());
2994+ assert (leftLowExpr);
2995+ static_cast <WideIntAddSub*>(expression)->leftLow = (Expression*)leftLowExpr;
2996+ }
2997+ BinaryenExpressionRef
2998+ BinaryenWideIntAddSubGetLeftHigh (BinaryenExpressionRef expr) {
2999+ auto * expression = (Expression*)expr;
3000+ assert (expression->is <WideIntAddSub>());
3001+ return static_cast <WideIntAddSub*>(expression)->leftHigh ;
3002+ }
3003+ void BinaryenWideIntAddSubSetLeftHigh (BinaryenExpressionRef expr,
3004+ BinaryenExpressionRef leftHighExpr) {
3005+ auto * expression = (Expression*)expr;
3006+ assert (expression->is <WideIntAddSub>());
3007+ assert (leftHighExpr);
3008+ static_cast <WideIntAddSub*>(expression)->leftHigh = (Expression*)leftHighExpr;
3009+ }
3010+ BinaryenExpressionRef
3011+ BinaryenWideIntAddSubGetRightLow (BinaryenExpressionRef expr) {
3012+ auto * expression = (Expression*)expr;
3013+ assert (expression->is <WideIntAddSub>());
3014+ return static_cast <WideIntAddSub*>(expression)->rightLow ;
3015+ }
3016+ void BinaryenWideIntAddSubSetRightLow (BinaryenExpressionRef expr,
3017+ BinaryenExpressionRef rightLowExpr) {
3018+ auto * expression = (Expression*)expr;
3019+ assert (expression->is <WideIntAddSub>());
3020+ assert (rightLowExpr);
3021+ static_cast <WideIntAddSub*>(expression)->rightLow = (Expression*)rightLowExpr;
3022+ }
3023+ BinaryenExpressionRef
3024+ BinaryenWideIntAddSubGetRightHigh (BinaryenExpressionRef expr) {
3025+ auto * expression = (Expression*)expr;
3026+ assert (expression->is <WideIntAddSub>());
3027+ return static_cast <WideIntAddSub*>(expression)->rightHigh ;
3028+ }
3029+ void BinaryenWideIntAddSubSetRightHigh (BinaryenExpressionRef expr,
3030+ BinaryenExpressionRef rightHighExpr) {
3031+ auto * expression = (Expression*)expr;
3032+ assert (expression->is <WideIntAddSub>());
3033+ assert (rightHighExpr);
3034+ static_cast <WideIntAddSub*>(expression)->rightHigh =
3035+ (Expression*)rightHighExpr;
3036+ }
3037+ // WideIntMul
3038+ BinaryenOp BinaryenWideIntMulGetOp (BinaryenExpressionRef expr) {
3039+ auto * expression = (Expression*)expr;
3040+ assert (expression->is <WideIntMul>());
3041+ return static_cast <WideIntMul*>(expression)->op ;
3042+ }
3043+ void BinaryenWideIntMulSetOp (BinaryenExpressionRef expr, BinaryenOp op) {
3044+ auto * expression = (Expression*)expr;
3045+ assert (expression->is <WideIntMul>());
3046+ static_cast <WideIntMul*>(expression)->op = WideIntMulOp (op);
3047+ }
3048+ BinaryenExpressionRef BinaryenWideIntMulGetLeft (BinaryenExpressionRef expr) {
3049+ auto * expression = (Expression*)expr;
3050+ assert (expression->is <WideIntMul>());
3051+ return static_cast <WideIntMul*>(expression)->left ;
3052+ }
3053+ void BinaryenWideIntMulSetLeft (BinaryenExpressionRef expr,
3054+ BinaryenExpressionRef leftExpr) {
3055+ auto * expression = (Expression*)expr;
3056+ assert (expression->is <WideIntMul>());
3057+ assert (leftExpr);
3058+ static_cast <WideIntMul*>(expression)->left = (Expression*)leftExpr;
3059+ }
3060+ BinaryenExpressionRef BinaryenWideIntMulGetRight (BinaryenExpressionRef expr) {
3061+ auto * expression = (Expression*)expr;
3062+ assert (expression->is <WideIntMul>());
3063+ return static_cast <WideIntMul*>(expression)->right ;
3064+ }
3065+ void BinaryenWideIntMulSetRight (BinaryenExpressionRef expr,
3066+ BinaryenExpressionRef rightExpr) {
3067+ auto * expression = (Expression*)expr;
3068+ assert (expression->is <WideIntMul>());
3069+ assert (rightExpr);
3070+ static_cast <WideIntMul*>(expression)->right = (Expression*)rightExpr;
3071+ }
29493072// Select
29503073BinaryenExpressionRef BinaryenSelectGetIfTrue (BinaryenExpressionRef expr) {
29513074 auto * expression = (Expression*)expr;
0 commit comments