@@ -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,27 @@ 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 static_cast <Expression*>(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 static_cast <Expression*>(
1340+ Builder (*(Module*)module )
1341+ .makeWideIntMul (WideIntMulOp (op), (Expression*)left, (Expression*)right));
1342+ }
13181343BinaryenExpressionRef BinaryenSelect (BinaryenModuleRef module ,
13191344 BinaryenExpressionRef condition,
13201345 BinaryenExpressionRef ifTrue,
@@ -2946,6 +2971,105 @@ void BinaryenBinarySetRight(BinaryenExpressionRef expr,
29462971 assert (rightExpr);
29472972 static_cast <Binary*>(expression)->right = (Expression*)rightExpr;
29482973}
2974+ // WideIntAddSub
2975+ BinaryenOp BinaryenWideIntAddSubGetOp (BinaryenExpressionRef expr) {
2976+ auto * expression = (Expression*)expr;
2977+ assert (expression->is <WideIntAddSub>());
2978+ return static_cast <WideIntAddSub*>(expression)->op ;
2979+ }
2980+ void BinaryenWideIntAddSubSetOp (BinaryenExpressionRef expr, BinaryenOp op) {
2981+ auto * expression = (Expression*)expr;
2982+ assert (expression->is <WideIntAddSub>());
2983+ static_cast <WideIntAddSub*>(expression)->op = WideIntAddSubOp (op);
2984+ }
2985+ BinaryenExpressionRef
2986+ BinaryenWideIntAddSubGetLeftLow (BinaryenExpressionRef expr) {
2987+ auto * expression = (Expression*)expr;
2988+ assert (expression->is <WideIntAddSub>());
2989+ return static_cast <WideIntAddSub*>(expression)->leftLow ;
2990+ }
2991+ void BinaryenWideIntAddSubSetLeftLow (BinaryenExpressionRef expr,
2992+ BinaryenExpressionRef leftLowExpr) {
2993+ auto * expression = (Expression*)expr;
2994+ assert (expression->is <WideIntAddSub>());
2995+ assert (leftLowExpr);
2996+ static_cast <WideIntAddSub*>(expression)->leftLow = (Expression*)leftLowExpr;
2997+ }
2998+ BinaryenExpressionRef
2999+ BinaryenWideIntAddSubGetLeftHigh (BinaryenExpressionRef expr) {
3000+ auto * expression = (Expression*)expr;
3001+ assert (expression->is <WideIntAddSub>());
3002+ return static_cast <WideIntAddSub*>(expression)->leftHigh ;
3003+ }
3004+ void BinaryenWideIntAddSubSetLeftHigh (BinaryenExpressionRef expr,
3005+ BinaryenExpressionRef leftHighExpr) {
3006+ auto * expression = (Expression*)expr;
3007+ assert (expression->is <WideIntAddSub>());
3008+ assert (leftHighExpr);
3009+ static_cast <WideIntAddSub*>(expression)->leftHigh = (Expression*)leftHighExpr;
3010+ }
3011+ BinaryenExpressionRef
3012+ BinaryenWideIntAddSubGetRightLow (BinaryenExpressionRef expr) {
3013+ auto * expression = (Expression*)expr;
3014+ assert (expression->is <WideIntAddSub>());
3015+ return static_cast <WideIntAddSub*>(expression)->rightLow ;
3016+ }
3017+ void BinaryenWideIntAddSubSetRightLow (BinaryenExpressionRef expr,
3018+ BinaryenExpressionRef rightLowExpr) {
3019+ auto * expression = (Expression*)expr;
3020+ assert (expression->is <WideIntAddSub>());
3021+ assert (rightLowExpr);
3022+ static_cast <WideIntAddSub*>(expression)->rightLow = (Expression*)rightLowExpr;
3023+ }
3024+ BinaryenExpressionRef
3025+ BinaryenWideIntAddSubGetRightHigh (BinaryenExpressionRef expr) {
3026+ auto * expression = (Expression*)expr;
3027+ assert (expression->is <WideIntAddSub>());
3028+ return static_cast <WideIntAddSub*>(expression)->rightHigh ;
3029+ }
3030+ void BinaryenWideIntAddSubSetRightHigh (BinaryenExpressionRef expr,
3031+ BinaryenExpressionRef rightHighExpr) {
3032+ auto * expression = (Expression*)expr;
3033+ assert (expression->is <WideIntAddSub>());
3034+ assert (rightHighExpr);
3035+ static_cast <WideIntAddSub*>(expression)->rightHigh =
3036+ (Expression*)rightHighExpr;
3037+ }
3038+ // WideIntMul
3039+ BinaryenOp BinaryenWideIntMulGetOp (BinaryenExpressionRef expr) {
3040+ auto * expression = (Expression*)expr;
3041+ assert (expression->is <WideIntMul>());
3042+ return static_cast <WideIntMul*>(expression)->op ;
3043+ }
3044+ void BinaryenWideIntMulSetOp (BinaryenExpressionRef expr, BinaryenOp op) {
3045+ auto * expression = (Expression*)expr;
3046+ assert (expression->is <WideIntMul>());
3047+ static_cast <WideIntMul*>(expression)->op = WideIntMulOp (op);
3048+ }
3049+ BinaryenExpressionRef BinaryenWideIntMulGetLeft (BinaryenExpressionRef expr) {
3050+ auto * expression = (Expression*)expr;
3051+ assert (expression->is <WideIntMul>());
3052+ return static_cast <WideIntMul*>(expression)->left ;
3053+ }
3054+ void BinaryenWideIntMulSetLeft (BinaryenExpressionRef expr,
3055+ BinaryenExpressionRef leftExpr) {
3056+ auto * expression = (Expression*)expr;
3057+ assert (expression->is <WideIntMul>());
3058+ assert (leftExpr);
3059+ static_cast <WideIntMul*>(expression)->left = (Expression*)leftExpr;
3060+ }
3061+ BinaryenExpressionRef BinaryenWideIntMulGetRight (BinaryenExpressionRef expr) {
3062+ auto * expression = (Expression*)expr;
3063+ assert (expression->is <WideIntMul>());
3064+ return static_cast <WideIntMul*>(expression)->right ;
3065+ }
3066+ void BinaryenWideIntMulSetRight (BinaryenExpressionRef expr,
3067+ BinaryenExpressionRef rightExpr) {
3068+ auto * expression = (Expression*)expr;
3069+ assert (expression->is <WideIntMul>());
3070+ assert (rightExpr);
3071+ static_cast <WideIntMul*>(expression)->right = (Expression*)rightExpr;
3072+ }
29493073// Select
29503074BinaryenExpressionRef BinaryenSelectGetIfTrue (BinaryenExpressionRef expr) {
29513075 auto * expression = (Expression*)expr;
0 commit comments