Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

[Bug Report] Inconsistent 0xFD instruction names #1401

Closed
asukakenji opened this issue Dec 2, 2021 · 1 comment · Fixed by #1402
Closed

[Bug Report] Inconsistent 0xFD instruction names #1401

asukakenji opened this issue Dec 2, 2021 · 1 comment · Fixed by #1402

Comments

@asukakenji
Copy link

asukakenji commented Dec 2, 2021

The instruction names written on https://webassembly.github.io/spec/core/binary/instructions.html#vector-instructions are different from that written on https://webassembly.github.io/spec/core/appendix/index-instructions.html.

In the "binary" page, the name of 0xFD 0x01 is v128.load8x8_s, while in the "index" page, its name is i16x8.load8x8_s. According to my observation, i16x8.load8x8_s should be the correct name and v128.load8x8_s is a typo by copy-and-paste.

Some other instructions have the same issue. Here is a summary of the discrepancies I found:

Opcode "binary" page "index" page
0xFD 0x01 v128.load8x8_s i16x8.load8x8_s
0xFD 0x02 v128.load8x8_u i16x8.load8x8_u
0xFD 0x03 v128.load16x4_s i32x4.load16x4_s
0xFD 0x04 v128.load16x4_u i32x4.load16x4_u
0xFD 0x05 v128.load32x2_s i64x2.load32x2_s
0xFD 0x06 v128.load32x2_u i64x2.load32x2_u
0xFD 0x07 v128.load8_splat i8x16.load_splat
0xFD 0x08 v128.load16_splat i16x8.load_splat
0xFD 0x09 v128.load32_splat i32x4.load_splat
0xFD 0x0A v128.load64_splat i64x2.load_splat

The source code of the "binary" page could be found here:

\hex{FD}~~1{:}\Bu32~~m{:}\Bmemarg &\Rightarrow& \V128.\LOAD\K{8x8\_s}~m \\ &&|&
\hex{FD}~~2{:}\Bu32~~m{:}\Bmemarg &\Rightarrow& \V128.\LOAD\K{8x8\_u}~m \\ &&|&
\hex{FD}~~3{:}\Bu32~~m{:}\Bmemarg &\Rightarrow& \V128.\LOAD\K{16x4\_s}~m \\ &&|&
\hex{FD}~~4{:}\Bu32~~m{:}\Bmemarg &\Rightarrow& \V128.\LOAD\K{16x4\_u}~m \\ &&|&
\hex{FD}~~5{:}\Bu32~~m{:}\Bmemarg &\Rightarrow& \V128.\LOAD\K{32x2\_s}~m \\ &&|&
\hex{FD}~~6{:}\Bu32~~m{:}\Bmemarg &\Rightarrow& \V128.\LOAD\K{32x2\_u}~m \\ &&|&
\hex{FD}~~7{:}\Bu32~~m{:}\Bmemarg &\Rightarrow& \V128.\LOAD\K{8\_splat}~m \\ &&|&
\hex{FD}~~8{:}\Bu32~~m{:}\Bmemarg &\Rightarrow& \V128.\LOAD\K{16\_splat}~m \\ &&|&
\hex{FD}~~9{:}\Bu32~~m{:}\Bmemarg &\Rightarrow& \V128.\LOAD\K{32\_splat}~m \\ &&|&
\hex{FD}~~10{:}\Bu32~~m{:}\Bmemarg &\Rightarrow& \V128.\LOAD\K{64\_splat}~m \\ &&|&

while the source code of the "index" page could be found here:

Instruction(r'\I16X8.\LOAD\K{8x8\_s}~\memarg', r'\hex{FD}~~\hex{01}', r'[\I32] \to [\V128]', r'valid-load-extend', r'exec-load-extend'),
Instruction(r'\I16X8.\LOAD\K{8x8\_u}~\memarg', r'\hex{FD}~~\hex{02}', r'[\I32] \to [\V128]', r'valid-load-extend', r'exec-load-extend'),
Instruction(r'\I32X4.\LOAD\K{16x4\_s}~\memarg', r'\hex{FD}~~\hex{03}', r'[\I32] \to [\V128]', r'valid-load-extend', r'exec-load-extend'),
Instruction(r'\I32X4.\LOAD\K{16x4\_u}~\memarg', r'\hex{FD}~~\hex{04}', r'[\I32] \to [\V128]', r'valid-load-extend', r'exec-load-extend'),
Instruction(r'\I64X2.\LOAD\K{32x2\_s}~\memarg', r'\hex{FD}~~\hex{05}', r'[\I32] \to [\V128]', r'valid-load-extend', r'exec-load-extend'),
Instruction(r'\I64X2.\LOAD\K{32x2\_u}~\memarg', r'\hex{FD}~~\hex{06}', r'[\I32] \to [\V128]', r'valid-load-extend', r'exec-load-extend'),
Instruction(r'\I8X16.\LOAD\K{\_splat}~\memarg', r'\hex{FD}~~\hex{07}', r'[\I32] \to [\V128]', r'valid-load-splat', r'exec-load-splat'),
Instruction(r'\I16X8.\LOAD\K{\_splat}~\memarg', r'\hex{FD}~~\hex{08}', r'[\I32] \to [\V128]', r'valid-load-splat', r'exec-load-splat'),
Instruction(r'\I32X4.\LOAD\K{\_splat}~\memarg', r'\hex{FD}~~\hex{09}', r'[\I32] \to [\V128]', r'valid-load-splat', r'exec-load-splat'),
Instruction(r'\I64X2.\LOAD\K{\_splat}~\memarg', r'\hex{FD}~~\hex{0A}', r'[\I32] \to [\V128]', r'valid-load-splat', r'exec-load-splat'),

@rossberg
Copy link
Member

rossberg commented Dec 2, 2021

Thanks. Actually, v128.load8x8_s is the correct name, the instruction table still contained outdated names. See #1402.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants