@@ -309,9 +309,60 @@ switch (buf[0]) {
309309 switch (buf[1 ]) {
310310 case ' 1' : {
311311 switch (buf[6 ]) {
312- case ' e' :
313- if (op == " f16x8.extract_lane" sv) {
314- CHECK_ERR (makeSIMDExtract (ctx, pos, annotations, SIMDExtractOp::ExtractLaneVecF16x8, 8 ));
312+ case ' e' : {
313+ switch (buf[7 ]) {
314+ case ' q' :
315+ if (op == " f16x8.eq" sv) {
316+ CHECK_ERR (makeBinary (ctx, pos, annotations, BinaryOp::EqVecF16x8));
317+ return Ok{};
318+ }
319+ goto parse_error;
320+ case ' x' :
321+ if (op == " f16x8.extract_lane" sv) {
322+ CHECK_ERR (makeSIMDExtract (ctx, pos, annotations, SIMDExtractOp::ExtractLaneVecF16x8, 8 ));
323+ return Ok{};
324+ }
325+ goto parse_error;
326+ default : goto parse_error;
327+ }
328+ }
329+ case ' g' : {
330+ switch (buf[7 ]) {
331+ case ' e' :
332+ if (op == " f16x8.ge" sv) {
333+ CHECK_ERR (makeBinary (ctx, pos, annotations, BinaryOp::GeVecF16x8));
334+ return Ok{};
335+ }
336+ goto parse_error;
337+ case ' t' :
338+ if (op == " f16x8.gt" sv) {
339+ CHECK_ERR (makeBinary (ctx, pos, annotations, BinaryOp::GtVecF16x8));
340+ return Ok{};
341+ }
342+ goto parse_error;
343+ default : goto parse_error;
344+ }
345+ }
346+ case ' l' : {
347+ switch (buf[7 ]) {
348+ case ' e' :
349+ if (op == " f16x8.le" sv) {
350+ CHECK_ERR (makeBinary (ctx, pos, annotations, BinaryOp::LeVecF16x8));
351+ return Ok{};
352+ }
353+ goto parse_error;
354+ case ' t' :
355+ if (op == " f16x8.lt" sv) {
356+ CHECK_ERR (makeBinary (ctx, pos, annotations, BinaryOp::LtVecF16x8));
357+ return Ok{};
358+ }
359+ goto parse_error;
360+ default : goto parse_error;
361+ }
362+ }
363+ case ' n' :
364+ if (op == " f16x8.ne" sv) {
365+ CHECK_ERR (makeBinary (ctx, pos, annotations, BinaryOp::NeVecF16x8));
315366 return Ok{};
316367 }
317368 goto parse_error;
0 commit comments