Skip to content
New issue

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

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

Already on GitHub? Sign in 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.

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

Successfully merging a pull request may close this issue.

2 participants