[ms-inline asm] Add support for the pushad/popad mnemonics.

rdar://13254235

llvm-svn: 176036
This commit is contained in:
Chad Rosier 2013-02-25 19:06:27 +00:00
parent dbe8890be2
commit 669bb3ee77
2 changed files with 15 additions and 4 deletions
llvm
lib/Target/X86
test/MC/X86

View File

@ -870,16 +870,14 @@ let Defs = [RSP], Uses = [RSP, EFLAGS], mayStore = 1, neverHasSideEffects=1 in
def PUSHF64 : I<0x9C, RawFrm, (outs), (ins), "pushfq", [], IIC_PUSH_F>, def PUSHF64 : I<0x9C, RawFrm, (outs), (ins), "pushfq", [], IIC_PUSH_F>,
Requires<[In64BitMode]>; Requires<[In64BitMode]>;
let Defs = [EDI, ESI, EBP, EBX, EDX, ECX, EAX, ESP], Uses = [ESP], let Defs = [EDI, ESI, EBP, EBX, EDX, ECX, EAX, ESP], Uses = [ESP],
mayLoad=1, neverHasSideEffects=1 in { mayLoad=1, neverHasSideEffects=1 in {
def POPA32 : I<0x61, RawFrm, (outs), (ins), "popa{l}", [], IIC_POP_A>, def POPA32 : I<0x61, RawFrm, (outs), (ins), "popa{l|d}", [], IIC_POP_A>,
Requires<[In32BitMode]>; Requires<[In32BitMode]>;
} }
let Defs = [ESP], Uses = [EDI, ESI, EBP, EBX, EDX, ECX, EAX, ESP], let Defs = [ESP], Uses = [EDI, ESI, EBP, EBX, EDX, ECX, EAX, ESP],
mayStore=1, neverHasSideEffects=1 in { mayStore=1, neverHasSideEffects=1 in {
def PUSHA32 : I<0x60, RawFrm, (outs), (ins), "pusha{l}", [], IIC_PUSH_A>, def PUSHA32 : I<0x60, RawFrm, (outs), (ins), "pusha{l|d}", [], IIC_PUSH_A>,
Requires<[In32BitMode]>; Requires<[In32BitMode]>;
} }

View File

@ -57,4 +57,17 @@ _t21: ## @t21
// CHECK: movl 4(%esi,%eax,2), %eax // CHECK: movl 4(%esi,%eax,2), %eax
// CHECK: # encoding: [0x8b,0x44,0x46,0x04] // CHECK: # encoding: [0x8b,0x44,0x46,0x04]
pusha
// CHECK: pushal
// CHECK: # encoding: [0x60]
popa
// CHECK: popal
// CHECK: # encoding: [0x61]
pushad
// CHECK: pushal
// CHECK: # encoding: [0x60]
popad
// CHECK: popal
// CHECK: # encoding: [0x61]
ret ret