diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/Target/X86/X86InstrFormats.td | 22 | ||||
-rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.td | 20 |
2 files changed, 19 insertions, 23 deletions
diff --git a/llvm/lib/Target/X86/X86InstrFormats.td b/llvm/lib/Target/X86/X86InstrFormats.td index 6cf6781e038..8779940cbfc 100644 --- a/llvm/lib/Target/X86/X86InstrFormats.td +++ b/llvm/lib/Target/X86/X86InstrFormats.td @@ -403,6 +403,13 @@ class Ii32S<bits<8> o, Format f, dag outs, dag ins, string asm, let CodeSize = 3; } +class Ii64<bits<8> o, Format f, dag outs, dag ins, string asm, + list<dag> pattern, InstrItinClass itin = NoItinerary> + : X86Inst<o, f, Imm64, outs, ins, asm, itin> { + let Pattern = pattern; + let CodeSize = 3; +} + class Ii16PCRel<bits<8> o, Format f, dag outs, dag ins, string asm, list<dag> pattern, InstrItinClass itin = NoItinerary> : X86Inst<o, f, Imm16PCRel, outs, ins, asm, itin> { @@ -929,20 +936,9 @@ class RIi32 <bits<8> o, Format F, dag outs, dag ins, string asm, class RIi32S <bits<8> o, Format F, dag outs, dag ins, string asm, list<dag> pattern, InstrItinClass itin = NoItinerary> : Ii32S<o, F, outs, ins, asm, pattern, itin>, REX_W; - -class RIi64<bits<8> o, Format f, dag outs, dag ins, string asm, - list<dag> pattern, InstrItinClass itin = NoItinerary> - : X86Inst<o, f, Imm64, outs, ins, asm, itin>, REX_W { - let Pattern = pattern; - let CodeSize = 3; -} - -class RIi64_NOREX<bits<8> o, Format f, dag outs, dag ins, string asm, +class RIi64<bits<8> o, Format F, dag outs, dag ins, string asm, list<dag> pattern, InstrItinClass itin = NoItinerary> - : X86Inst<o, f, Imm64, outs, ins, asm, itin> { - let Pattern = pattern; - let CodeSize = 3; -} + : Ii64<o, F, outs, ins, asm, pattern, itin>, REX_W; class RS2I<bits<8> o, Format F, dag outs, dag ins, string asm, list<dag> pattern, InstrItinClass itin = NoItinerary> diff --git a/llvm/lib/Target/X86/X86InstrInfo.td b/llvm/lib/Target/X86/X86InstrInfo.td index 5a09785e0e8..5eaf55b09f2 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.td +++ b/llvm/lib/Target/X86/X86InstrInfo.td @@ -1581,15 +1581,15 @@ def MOV32o16a : Ii16<0xA3, RawFrmMemOffs, (outs), (ins offset16_32:$dst), // and use the movabs mnemonic to indicate this specific form. let mayLoad = 1 in { let Defs = [AL] in -def MOV8ao64 : RIi64_NOREX<0xA0, RawFrmMemOffs, (outs), (ins offset64_8:$src), - "movabs{b}\t{$src, %al|al, $src}", [], IIC_MOV_MEM>, - AdSize64; +def MOV8ao64 : Ii64<0xA0, RawFrmMemOffs, (outs), (ins offset64_8:$src), + "movabs{b}\t{$src, %al|al, $src}", [], IIC_MOV_MEM>, + AdSize64; let Defs = [AX] in -def MOV16ao64 : RIi64_NOREX<0xA1, RawFrmMemOffs, (outs), (ins offset64_16:$src), +def MOV16ao64 : Ii64<0xA1, RawFrmMemOffs, (outs), (ins offset64_16:$src), "movabs{w}\t{$src, %ax|ax, $src}", [], IIC_MOV_MEM>, OpSize16, AdSize64; let Defs = [EAX] in -def MOV32ao64 : RIi64_NOREX<0xA1, RawFrmMemOffs, (outs), (ins offset64_32:$src), +def MOV32ao64 : Ii64<0xA1, RawFrmMemOffs, (outs), (ins offset64_32:$src), "movabs{l}\t{$src, %eax|eax, $src}", [], IIC_MOV_MEM>, OpSize32, AdSize64; let Defs = [RAX] in @@ -1600,15 +1600,15 @@ def MOV64ao64 : RIi64<0xA1, RawFrmMemOffs, (outs), (ins offset64_64:$src), let mayStore = 1 in { let Uses = [AL] in -def MOV8o64a : RIi64_NOREX<0xA2, RawFrmMemOffs, (outs), (ins offset64_8:$dst), - "movabs{b}\t{%al, $dst|$dst, al}", [], IIC_MOV_MEM>, - AdSize64; +def MOV8o64a : Ii64<0xA2, RawFrmMemOffs, (outs), (ins offset64_8:$dst), + "movabs{b}\t{%al, $dst|$dst, al}", [], IIC_MOV_MEM>, + AdSize64; let Uses = [AX] in -def MOV16o64a : RIi64_NOREX<0xA3, RawFrmMemOffs, (outs), (ins offset64_16:$dst), +def MOV16o64a : Ii64<0xA3, RawFrmMemOffs, (outs), (ins offset64_16:$dst), "movabs{w}\t{%ax, $dst|$dst, ax}", [], IIC_MOV_MEM>, OpSize16, AdSize64; let Uses = [EAX] in -def MOV32o64a : RIi64_NOREX<0xA3, RawFrmMemOffs, (outs), (ins offset64_32:$dst), +def MOV32o64a : Ii64<0xA3, RawFrmMemOffs, (outs), (ins offset64_32:$dst), "movabs{l}\t{%eax, $dst|$dst, eax}", [], IIC_MOV_MEM>, OpSize32, AdSize64; let Uses = [RAX] in |