Segment moves to memory are always 16-bit. Remove invalid 32 and 64 bit variants.
Fixes PR34478.
Paths
| Differential D39847
[X86] Avoid unecessary opsize byte in segment move to memory ClosedPublic Authored by niravd on Nov 9 2017, 8:13 AM.
Details
Summary Segment moves to memory are always 16-bit. Remove invalid 32 and 64 bit variants. Fixes PR34478.
Diff Detail
Event TimelineComment Actions gas seems to error on movl %fs,(%rsi) and movl (%rsi), %fs I wonder if we shouldn't just delete MOV32ms and MOV64ms from InstrSystem.td and change MOV16ms to not have OpSize16. They're declared with mem32 and mem64 anyway which is clearly wrong. Same for MOV32sm and MOV64sm. Comment Actions Add OpSizeIgnore modifier to allow consumption of optional 0x66 bytes and remove invalid instructions. We now no longer accept movl/movq versions of these instructions but as Craig points out gas doesn't either. Closed by commit rL318678: [X86] Avoid unecessary opsize byte in segment move to memory (authored by niravd). · Explain WhyNov 20 2017, 10:39 AM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 123365 llvm/lib/Target/X86/MCTargetDesc/X86BaseInfo.h
llvm/lib/Target/X86/X86InstrFormats.td
llvm/lib/Target/X86/X86InstrInfo.td
llvm/lib/Target/X86/X86InstrSystem.td
llvm/lib/Target/X86/X86SchedSandyBridge.td
llvm/test/MC/Disassembler/X86/x86-16.txt
llvm/test/MC/X86/x86-16.s
llvm/test/MC/X86/x86-32.s
llvm/test/MC/X86/x86-64.s
|