@@ -590,88 +590,83 @@ instr ::= ... |
590590The [ instruction binary format] [ ] is modified as follows:
591591
592592```
593- memarg8 ::= 0x00 o: offset => {align 0, offset: o}
594- memarg16 ::= 0x01 o: offset => {align 1, offset: o}
595- memarg32 ::= 0x02 o: offset => {align 2, offset: o}
596- memarg64 ::= 0x03 o: offset => {align 3, offset: o}
597-
598593instr ::= ...
599- | 0xFE 0x00 m:memarg32 => memory.atomic.notify m
600- | 0xFE 0x01 m:memarg32 => memory.atomic.wait32 m
601- | 0xFE 0x02 m:memarg64 => memory.atomic.wait64 m
602-
603- | 0xFE 0x03 0x00 => atomic.fence
604-
605- | 0xFE 0x10 m:memarg32 => i32.atomic.load m
606- | 0xFE 0x11 m:memarg64 => i64.atomic.load m
607- | 0xFE 0x12 m:memarg8 => i32.atomic.load8_u m
608- | 0xFE 0x13 m:memarg16 => i32.atomic.load16_u m
609- | 0xFE 0x14 m:memarg8 => i64.atomic.load8_u m
610- | 0xFE 0x15 m:memarg16 => i64.atomic.load16_u m
611- | 0xFE 0x16 m:memarg32 => i64.atomic.load32_u m
612- | 0xFE 0x17 m:memarg32 => i32.atomic.store m
613- | 0xFE 0x18 m:memarg64 => i64.atomic.store m
614- | 0xFE 0x19 m:memarg8 => i32.atomic.store8 m
615- | 0xFE 0x1A m:memarg16 => i32.atomic.store16 m
616- | 0xFE 0x1B m:memarg8 => i64.atomic.store8 m
617- | 0xFE 0x1C m:memarg16 => i64.atomic.store16 m
618- | 0xFE 0x1D m:memarg32 => i64.atomic.store32 m
619-
620- | 0xFE 0x1E m:memarg32 => i32.atomic.rmw.add m
621- | 0xFE 0x1F m:memarg64 => i64.atomic.rmw.add m
622- | 0xFE 0x20 m:memarg8 => i32.atomic.rmw8.add_u m
623- | 0xFE 0x21 m:memarg16 => i32.atomic.rmw16.add_u m
624- | 0xFE 0x22 m:memarg8 => i64.atomic.rmw8.add_u m
625- | 0xFE 0x23 m:memarg16 => i64.atomic.rmw16.add_u m
626- | 0xFE 0x24 m:memarg32 => i64.atomic.rmw32.add_u m
627-
628- | 0xFE 0x25 m:memarg32 => i32.atomic.rmw.sub m
629- | 0xFE 0x26 m:memarg64 => i64.atomic.rmw.sub m
630- | 0xFE 0x27 m:memarg8 => i32.atomic.rmw8.sub_u m
631- | 0xFE 0x28 m:memarg16 => i32.atomic.rmw16.sub_u m
632- | 0xFE 0x29 m:memarg8 => i64.atomic.rmw8.sub_u m
633- | 0xFE 0x2A m:memarg16 => i64.atomic.rmw16.sub_u m
634- | 0xFE 0x2B m:memarg32 => i64.atomic.rmw32.sub_u m
635-
636- | 0xFE 0x2C m:memarg32 => i32.atomic.rmw.and m
637- | 0xFE 0x2D m:memarg64 => i64.atomic.rmw.and m
638- | 0xFE 0x2E m:memarg8 => i32.atomic.rmw8.and_u m
639- | 0xFE 0x2F m:memarg16 => i32.atomic.rmw16.and_u m
640- | 0xFE 0x30 m:memarg8 => i64.atomic.rmw8.and_u m
641- | 0xFE 0x31 m:memarg16 => i64.atomic.rmw16.and_u m
642- | 0xFE 0x32 m:memarg32 => i64.atomic.rmw32.and_u m
643-
644- | 0xFE 0x33 m:memarg32 => i32.atomic.rmw.or m
645- | 0xFE 0x34 m:memarg64 => i64.atomic.rmw.or m
646- | 0xFE 0x35 m:memarg8 => i32.atomic.rmw8.or_u m
647- | 0xFE 0x36 m:memarg16 => i32.atomic.rmw16.or_u m
648- | 0xFE 0x37 m:memarg8 => i64.atomic.rmw8.or_u m
649- | 0xFE 0x38 m:memarg16 => i64.atomic.rmw16.or_u m
650- | 0xFE 0x39 m:memarg32 => i64.atomic.rmw32.or_u m
651-
652- | 0xFE 0x3A m:memarg32 => i32.atomic.rmw.xor m
653- | 0xFE 0x3B m:memarg64 => i64.atomic.rmw.xor m
654- | 0xFE 0x3C m:memarg8 => i32.atomic.rmw8.xor_u m
655- | 0xFE 0x3D m:memarg16 => i32.atomic.rmw16.xor_u m
656- | 0xFE 0x3E m:memarg8 => i64.atomic.rmw8.xor_u m
657- | 0xFE 0x3F m:memarg16 => i64.atomic.rmw16.xor_u m
658- | 0xFE 0x40 m:memarg32 => i64.atomic.rmw32.xor_u m
659-
660- | 0xFE 0x41 m:memarg32 => i32.atomic.rmw.xchg m
661- | 0xFE 0x42 m:memarg64 => i64.atomic.rmw.xchg m
662- | 0xFE 0x43 m:memarg8 => i32.atomic.rmw8.xchg_u m
663- | 0xFE 0x44 m:memarg16 => i32.atomic.rmw16.xchg_u m
664- | 0xFE 0x45 m:memarg8 => i64.atomic.rmw8.xchg_u m
665- | 0xFE 0x46 m:memarg16 => i64.atomic.rmw16.xchg_u m
666- | 0xFE 0x47 m:memarg32 => i64.atomic.rmw32.xchg_u m
667-
668- | 0xFE 0x48 m:memarg32 => i32.atomic.rmw.cmpxchg m
669- | 0xFE 0x49 m:memarg64 => i64.atomic.rmw.cmpxchg m
670- | 0xFE 0x4A m:memarg8 => i32.atomic.rmw8.cmpxchg_u m
671- | 0xFE 0x4B m:memarg16 => i32.atomic.rmw16.cmpxchg_u m
672- | 0xFE 0x4C m:memarg8 => i64.atomic.rmw8.cmpxchg_u m
673- | 0xFE 0x4D m:memarg16 => i64.atomic.rmw16.cmpxchg_u m
674- | 0xFE 0x4E m:memarg32 => i64.atomic.rmw32.cmpxchg_u m
594+ | 0xFE 0x00 m:memarg => memory.atomic.notify m
595+ | 0xFE 0x01 m:memarg => memory.atomic.wait32 m
596+ | 0xFE 0x02 m:memarg => memory.atomic.wait64 m
597+
598+ | 0xFE 0x03 0x00 => atomic.fence
599+
600+ | 0xFE 0x10 m:memarg => i32.atomic.load m
601+ | 0xFE 0x11 m:memarg => i64.atomic.load m
602+ | 0xFE 0x12 m:memarg => i32.atomic.load8_u m
603+ | 0xFE 0x13 m:memarg => i32.atomic.load16_u m
604+ | 0xFE 0x14 m:memarg => i64.atomic.load8_u m
605+ | 0xFE 0x15 m:memarg => i64.atomic.load16_u m
606+ | 0xFE 0x16 m:memarg => i64.atomic.load32_u m
607+ | 0xFE 0x17 m:memarg => i32.atomic.store m
608+ | 0xFE 0x18 m:memarg => i64.atomic.store m
609+ | 0xFE 0x19 m:memarg => i32.atomic.store8 m
610+ | 0xFE 0x1A m:memarg => i32.atomic.store16 m
611+ | 0xFE 0x1B m:memarg => i64.atomic.store8 m
612+ | 0xFE 0x1C m:memarg => i64.atomic.store16 m
613+ | 0xFE 0x1D m:memarg => i64.atomic.store32 m
614+
615+ | 0xFE 0x1E m:memarg => i32.atomic.rmw.add m
616+ | 0xFE 0x1F m:memarg => i64.atomic.rmw.add m
617+ | 0xFE 0x20 m:memarg => i32.atomic.rmw8.add_u m
618+ | 0xFE 0x21 m:memarg => i32.atomic.rmw16.add_u m
619+ | 0xFE 0x22 m:memarg => i64.atomic.rmw8.add_u m
620+ | 0xFE 0x23 m:memarg => i64.atomic.rmw16.add_u m
621+ | 0xFE 0x24 m:memarg => i64.atomic.rmw32.add_u m
622+
623+ | 0xFE 0x25 m:memarg => i32.atomic.rmw.sub m
624+ | 0xFE 0x26 m:memarg => i64.atomic.rmw.sub m
625+ | 0xFE 0x27 m:memarg => i32.atomic.rmw8.sub_u m
626+ | 0xFE 0x28 m:memarg => i32.atomic.rmw16.sub_u m
627+ | 0xFE 0x29 m:memarg => i64.atomic.rmw8.sub_u m
628+ | 0xFE 0x2A m:memarg => i64.atomic.rmw16.sub_u m
629+ | 0xFE 0x2B m:memarg => i64.atomic.rmw32.sub_u m
630+
631+ | 0xFE 0x2C m:memarg => i32.atomic.rmw.and m
632+ | 0xFE 0x2D m:memarg => i64.atomic.rmw.and m
633+ | 0xFE 0x2E m:memarg => i32.atomic.rmw8.and_u m
634+ | 0xFE 0x2F m:memarg => i32.atomic.rmw16.and_u m
635+ | 0xFE 0x30 m:memarg => i64.atomic.rmw8.and_u m
636+ | 0xFE 0x31 m:memarg => i64.atomic.rmw16.and_u m
637+ | 0xFE 0x32 m:memarg => i64.atomic.rmw32.and_u m
638+
639+ | 0xFE 0x33 m:memarg => i32.atomic.rmw.or m
640+ | 0xFE 0x34 m:memarg => i64.atomic.rmw.or m
641+ | 0xFE 0x35 m:memarg => i32.atomic.rmw8.or_u m
642+ | 0xFE 0x36 m:memarg => i32.atomic.rmw16.or_u m
643+ | 0xFE 0x37 m:memarg => i64.atomic.rmw8.or_u m
644+ | 0xFE 0x38 m:memarg => i64.atomic.rmw16.or_u m
645+ | 0xFE 0x39 m:memarg => i64.atomic.rmw32.or_u m
646+
647+ | 0xFE 0x3A m:memarg => i32.atomic.rmw.xor m
648+ | 0xFE 0x3B m:memarg => i64.atomic.rmw.xor m
649+ | 0xFE 0x3C m:memarg => i32.atomic.rmw8.xor_u m
650+ | 0xFE 0x3D m:memarg => i32.atomic.rmw16.xor_u m
651+ | 0xFE 0x3E m:memarg => i64.atomic.rmw8.xor_u m
652+ | 0xFE 0x3F m:memarg => i64.atomic.rmw16.xor_u m
653+ | 0xFE 0x40 m:memarg => i64.atomic.rmw32.xor_u m
654+
655+ | 0xFE 0x41 m:memarg => i32.atomic.rmw.xchg m
656+ | 0xFE 0x42 m:memarg => i64.atomic.rmw.xchg m
657+ | 0xFE 0x43 m:memarg => i32.atomic.rmw8.xchg_u m
658+ | 0xFE 0x44 m:memarg => i32.atomic.rmw16.xchg_u m
659+ | 0xFE 0x45 m:memarg => i64.atomic.rmw8.xchg_u m
660+ | 0xFE 0x46 m:memarg => i64.atomic.rmw16.xchg_u m
661+ | 0xFE 0x47 m:memarg => i64.atomic.rmw32.xchg_u m
662+
663+ | 0xFE 0x48 m:memarg => i32.atomic.rmw.cmpxchg m
664+ | 0xFE 0x49 m:memarg => i64.atomic.rmw.cmpxchg m
665+ | 0xFE 0x4A m:memarg => i32.atomic.rmw8.cmpxchg_u m
666+ | 0xFE 0x4B m:memarg => i32.atomic.rmw16.cmpxchg_u m
667+ | 0xFE 0x4C m:memarg => i64.atomic.rmw8.cmpxchg_u m
668+ | 0xFE 0x4D m:memarg => i64.atomic.rmw16.cmpxchg_u m
669+ | 0xFE 0x4E m:memarg => i64.atomic.rmw32.cmpxchg_u m
675670```
676671
677672[ ECMAScript agent ] : https://tc39.github.io/ecma262/#sec-agents
0 commit comments