[Test] Test "tests/webtbs/tw13294" is possibly invalid
Original Reporter info from Mantis: CuriousKit @CuriousKit
-
Reporter name: J. Gareth Moreton
Original Reporter info from Mantis: CuriousKit @CuriousKit
- Reporter name: J. Gareth Moreton
Description:
The test specified checks to see if MOVD works properly when using XMM registers. However, the variable that it is reading and writing to is 64-bit, whereas MOVD specifically handles 32-bit data (it's in the "D" in the mnemonic). As thus, when the patches from #35700 (closed) are applied, the test fails to compile on both i386 and x86_64 with the following errors:
tw13294.pp(12,7) Error: Asm: [movd reg??,mem64] invalid combination of opcode and operands
tw13294.pp(13,7) Error: Asm: [movd mem64,reg??] invalid combination of opcode and operands
This, in my eyes, is a correct failure, since the variables are of type Int64. Given the nature of the test, either it needs to be rewritten to use LongInts, or new variables of type LongInt map onto a and b using "absolute", and those passed into the assembler blocks. It's also indictive of a possible test bug anyway because the upper 32 bits of b may not be initialised.
Steps to reproduce:
Attempt to compile the test with the patches from #35700 (closed) applied.
Additional information:
When using similar assembly language written under Intel mode, the memory operand size can be overridden with "DWORD PTR", allowing the test to compile and run as expected. I am not certain what the equivalent trick in AT&T mode is, because using "movdl" still raises the same errors (which might indicate another compiler bug).
Mantis conversion info:
- Mantis ID: 35701
- OS: Microsoft Windows
- OS Build: 10 Professional
- Build: r42196
- Platform: i386 and x86_64
- Version: 3.3.1
- Fixed in version: 3.3.1
- Fixed in revision: 42268 (#fb387da8)