Also, following D81841, don't try to encode f16 literals in i16/u16
instructions.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Time | Test | |
---|---|---|
360 ms | linux > HWAddressSanitizer-x86_64.TestCases::sizes.cpp |
Event Timeline
llvm/test/MC/Disassembler/AMDGPU/vop3_vi.txt | ||
---|---|---|
300 | The inline constant is disassembled as 0x3800 not 0.5. SIMCCodeEmitter does not recognise this constant as an inline 16-bit integer, so the encoding: line shows 0xff not 0xf0. What is the correct behaviour here? |
llvm/test/MC/Disassembler/AMDGPU/vop3_vi.txt | ||
---|---|---|
300 | It should be f0. |
llvm/test/MC/Disassembler/AMDGPU/vop3_vi.txt | ||
---|---|---|
300 | I believe 0xff is an expected result. Change 5f5f566 disabled use of fp inline constants with 16-bit integer operands. When disassembled, these inline constants are deliberately printed in hex to stress that the value is not an inline constant but a literal. And yes, the produced dump is incorrect (missing literal) but so is the original code. |
llvm/test/MC/Disassembler/AMDGPU/vop3_vi.txt | ||
---|---|---|
300 | I would probably say the expected result is an error message if 0.5 cannot really be supported. Isn't it? |
llvm/test/MC/Disassembler/AMDGPU/vop3_vi.txt | ||
---|---|---|
300 | I agree, an error message would be helpful, but possibility to disassemble incorrect code is useful as well. |
The inline constant is disassembled as 0x3800 not 0.5.
SIMCCodeEmitter does not recognise this constant as an inline 16-bit integer, so the encoding: line shows 0xff not 0xf0.
What is the correct behaviour here?