@@ -2776,11 +2776,33 @@ switch (op[0]) {
27762776 case ' \0 ' :
27772777 if (strcmp (op, " v128.load" ) == 0 ) { return makeLoad (s, Type::v128, /* isAtomic=*/ false ); }
27782778 goto parse_error;
2779- case ' 3 ' :
2780- if (strcmp (op, " v128.load32_zero " ) == 0 ) { return makeSIMDLoad (s, SIMDLoadOp::Load32Zero ); }
2779+ case ' 1 ' :
2780+ if (strcmp (op, " v128.load16_lane " ) == 0 ) { return makeSIMDLoadStoreLane (s, LoadLaneVec16x8 ); }
27812781 goto parse_error;
2782- case ' 6' :
2783- if (strcmp (op, " v128.load64_zero" ) == 0 ) { return makeSIMDLoad (s, SIMDLoadOp::Load64Zero); }
2782+ case ' 3' : {
2783+ switch (op[12 ]) {
2784+ case ' l' :
2785+ if (strcmp (op, " v128.load32_lane" ) == 0 ) { return makeSIMDLoadStoreLane (s, LoadLaneVec32x4); }
2786+ goto parse_error;
2787+ case ' z' :
2788+ if (strcmp (op, " v128.load32_zero" ) == 0 ) { return makeSIMDLoad (s, SIMDLoadOp::Load32Zero); }
2789+ goto parse_error;
2790+ default : goto parse_error;
2791+ }
2792+ }
2793+ case ' 6' : {
2794+ switch (op[12 ]) {
2795+ case ' l' :
2796+ if (strcmp (op, " v128.load64_lane" ) == 0 ) { return makeSIMDLoadStoreLane (s, LoadLaneVec64x2); }
2797+ goto parse_error;
2798+ case ' z' :
2799+ if (strcmp (op, " v128.load64_zero" ) == 0 ) { return makeSIMDLoad (s, SIMDLoadOp::Load64Zero); }
2800+ goto parse_error;
2801+ default : goto parse_error;
2802+ }
2803+ }
2804+ case ' 8' :
2805+ if (strcmp (op, " v128.load8_lane" ) == 0 ) { return makeSIMDLoadStoreLane (s, LoadLaneVec8x16); }
27842806 goto parse_error;
27852807 default : goto parse_error;
27862808 }
@@ -2791,9 +2813,26 @@ switch (op[0]) {
27912813 case ' o' :
27922814 if (strcmp (op, " v128.or" ) == 0 ) { return makeBinary (s, BinaryOp::OrVec128); }
27932815 goto parse_error;
2794- case ' s' :
2795- if (strcmp (op, " v128.store" ) == 0 ) { return makeStore (s, Type::v128, /* isAtomic=*/ false ); }
2796- goto parse_error;
2816+ case ' s' : {
2817+ switch (op[10 ]) {
2818+ case ' \0 ' :
2819+ if (strcmp (op, " v128.store" ) == 0 ) { return makeStore (s, Type::v128, /* isAtomic=*/ false ); }
2820+ goto parse_error;
2821+ case ' 1' :
2822+ if (strcmp (op, " v128.store16_lane" ) == 0 ) { return makeSIMDLoadStoreLane (s, StoreLaneVec16x8); }
2823+ goto parse_error;
2824+ case ' 3' :
2825+ if (strcmp (op, " v128.store32_lane" ) == 0 ) { return makeSIMDLoadStoreLane (s, StoreLaneVec32x4); }
2826+ goto parse_error;
2827+ case ' 6' :
2828+ if (strcmp (op, " v128.store64_lane" ) == 0 ) { return makeSIMDLoadStoreLane (s, StoreLaneVec64x2); }
2829+ goto parse_error;
2830+ case ' 8' :
2831+ if (strcmp (op, " v128.store8_lane" ) == 0 ) { return makeSIMDLoadStoreLane (s, StoreLaneVec8x16); }
2832+ goto parse_error;
2833+ default : goto parse_error;
2834+ }
2835+ }
27972836 case ' x' :
27982837 if (strcmp (op, " v128.xor" ) == 0 ) { return makeBinary (s, BinaryOp::XorVec128); }
27992838 goto parse_error;
0 commit comments