@@ -309,9 +309,26 @@ switch (buf[0]) {
309309 switch (buf[1 ]) {
310310 case ' 1' : {
311311 switch (buf[6 ]) {
312- case ' a' :
313- if (op == " f16x8.add" sv) {
314- CHECK_ERR (makeBinary (ctx, pos, annotations, BinaryOp::AddVecF16x8));
312+ case ' a' : {
313+ switch (buf[7 ]) {
314+ case ' b' :
315+ if (op == " f16x8.abs" sv) {
316+ CHECK_ERR (makeUnary (ctx, pos, annotations, UnaryOp::AbsVecF16x8));
317+ return Ok{};
318+ }
319+ goto parse_error;
320+ case ' d' :
321+ if (op == " f16x8.add" sv) {
322+ CHECK_ERR (makeBinary (ctx, pos, annotations, BinaryOp::AddVecF16x8));
323+ return Ok{};
324+ }
325+ goto parse_error;
326+ default : goto parse_error;
327+ }
328+ }
329+ case ' c' :
330+ if (op == " f16x8.ceil" sv) {
331+ CHECK_ERR (makeUnary (ctx, pos, annotations, UnaryOp::CeilVecF16x8));
315332 return Ok{};
316333 }
317334 goto parse_error;
@@ -338,6 +355,12 @@ switch (buf[0]) {
338355 default : goto parse_error;
339356 }
340357 }
358+ case ' f' :
359+ if (op == " f16x8.floor" sv) {
360+ CHECK_ERR (makeUnary (ctx, pos, annotations, UnaryOp::FloorVecF16x8));
361+ return Ok{};
362+ }
363+ goto parse_error;
341364 case ' g' : {
342365 switch (buf[7 ]) {
343366 case ' e' :
@@ -395,12 +418,29 @@ switch (buf[0]) {
395418 default : goto parse_error;
396419 }
397420 }
398- case ' n' :
399- if (op == " f16x8.ne" sv) {
400- CHECK_ERR (makeBinary (ctx, pos, annotations, BinaryOp::NeVecF16x8));
401- return Ok{};
421+ case ' n' : {
422+ switch (buf[8 ]) {
423+ case ' \0 ' :
424+ if (op == " f16x8.ne" sv) {
425+ CHECK_ERR (makeBinary (ctx, pos, annotations, BinaryOp::NeVecF16x8));
426+ return Ok{};
427+ }
428+ goto parse_error;
429+ case ' a' :
430+ if (op == " f16x8.nearest" sv) {
431+ CHECK_ERR (makeUnary (ctx, pos, annotations, UnaryOp::NearestVecF16x8));
432+ return Ok{};
433+ }
434+ goto parse_error;
435+ case ' g' :
436+ if (op == " f16x8.neg" sv) {
437+ CHECK_ERR (makeUnary (ctx, pos, annotations, UnaryOp::NegVecF16x8));
438+ return Ok{};
439+ }
440+ goto parse_error;
441+ default : goto parse_error;
402442 }
403- goto parse_error;
443+ }
404444 case ' p' : {
405445 switch (buf[8 ]) {
406446 case ' a' :
@@ -432,6 +472,12 @@ switch (buf[0]) {
432472 return Ok{};
433473 }
434474 goto parse_error;
475+ case ' q' :
476+ if (op == " f16x8.sqrt" sv) {
477+ CHECK_ERR (makeUnary (ctx, pos, annotations, UnaryOp::SqrtVecF16x8));
478+ return Ok{};
479+ }
480+ goto parse_error;
435481 case ' u' :
436482 if (op == " f16x8.sub" sv) {
437483 CHECK_ERR (makeBinary (ctx, pos, annotations, BinaryOp::SubVecF16x8));
@@ -441,6 +487,12 @@ switch (buf[0]) {
441487 default : goto parse_error;
442488 }
443489 }
490+ case ' t' :
491+ if (op == " f16x8.trunc" sv) {
492+ CHECK_ERR (makeUnary (ctx, pos, annotations, UnaryOp::TruncVecF16x8));
493+ return Ok{};
494+ }
495+ goto parse_error;
444496 default : goto parse_error;
445497 }
446498 }
0 commit comments