mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-30 06:40:53 +00:00
Add retw and lretw instructions. Also, fix Intel syntax parsing for all
ret instructions. llvm-svn: 154468
This commit is contained in:
parent
eaf8eba8c4
commit
a5e1970cd0
@ -21,20 +21,25 @@ let isTerminator = 1, isReturn = 1, isBarrier = 1,
|
||||
def RET : I <0xC3, RawFrm, (outs), (ins variable_ops),
|
||||
"ret",
|
||||
[(X86retflag 0)], IIC_RET>;
|
||||
def RETW : I <0xC3, RawFrm, (outs), (ins variable_ops),
|
||||
"ret{w}",
|
||||
[], IIC_RET>, OpSize;
|
||||
def RETI : Ii16<0xC2, RawFrm, (outs), (ins i16imm:$amt, variable_ops),
|
||||
"ret\t$amt",
|
||||
[(X86retflag timm:$amt)], IIC_RET_IMM>;
|
||||
def RETIW : Ii16<0xC2, RawFrm, (outs), (ins i16imm:$amt, variable_ops),
|
||||
"retw\t$amt",
|
||||
"ret{w}\t$amt",
|
||||
[], IIC_RET_IMM>, OpSize;
|
||||
def LRETL : I <0xCB, RawFrm, (outs), (ins),
|
||||
"lretl", [], IIC_RET>;
|
||||
"{l}ret{l|f}", [], IIC_RET>;
|
||||
def LRETW : I <0xCB, RawFrm, (outs), (ins),
|
||||
"{l}ret{w|f}", [], IIC_RET>, OpSize;
|
||||
def LRETQ : RI <0xCB, RawFrm, (outs), (ins),
|
||||
"lretq", [], IIC_RET>;
|
||||
"{l}ret{q|f}", [], IIC_RET>;
|
||||
def LRETI : Ii16<0xCA, RawFrm, (outs), (ins i16imm:$amt),
|
||||
"lret\t$amt", [], IIC_RET>;
|
||||
"{l}ret{l|f}\t$amt", [], IIC_RET>;
|
||||
def LRETIW : Ii16<0xCA, RawFrm, (outs), (ins i16imm:$amt),
|
||||
"lretw\t$amt", [], IIC_RET>, OpSize;
|
||||
"{l}ret{w|f}\t$amt", [], IIC_RET>, OpSize;
|
||||
}
|
||||
|
||||
// Unconditional branches.
|
||||
|
@ -99,3 +99,9 @@
|
||||
# CHECK: iretq
|
||||
0x48 0xcf
|
||||
|
||||
# CHECK: ret
|
||||
0x66 0xc3
|
||||
|
||||
# CHECK: retf
|
||||
0x66 0xcb
|
||||
|
||||
|
@ -42,3 +42,16 @@ LBB0_3:
|
||||
|
||||
// CHECK: encoding: [0x0f,0xc2,0xd1,0x01]
|
||||
cmpltps XMM2, XMM1
|
||||
|
||||
// CHECK: encoding: [0xc3]
|
||||
ret
|
||||
|
||||
// CHECK: encoding: [0xcb]
|
||||
retf
|
||||
|
||||
// CHECK: encoding: [0xc2,0x08,0x00]
|
||||
ret 8
|
||||
|
||||
// CHECK: encoding: [0xca,0x08,0x00]
|
||||
retf 8
|
||||
|
||||
|
@ -990,3 +990,11 @@ xchgl %ecx, %eax
|
||||
// CHECK: xchgl %ecx, %eax
|
||||
// CHECK: encoding: [0x91]
|
||||
xchgl %eax, %ecx
|
||||
|
||||
// CHECK: retw
|
||||
// CHECK: encoding: [0x66,0xc3]
|
||||
retw
|
||||
|
||||
// CHECK: lretw
|
||||
// CHECK: encoding: [0x66,0xcb]
|
||||
lretw
|
||||
|
@ -50,6 +50,9 @@
|
||||
// CHECK: ret
|
||||
ret
|
||||
|
||||
// CHECK: retw
|
||||
retw
|
||||
|
||||
// FIXME: Check that this matches SUB32ri8
|
||||
// CHECK: subl $1, %eax
|
||||
subl $1, %eax
|
||||
@ -841,6 +844,7 @@ iretq
|
||||
lretq // CHECK: lretq # encoding: [0x48,0xcb]
|
||||
lretl // CHECK: lretl # encoding: [0xcb]
|
||||
lret // CHECK: lretl # encoding: [0xcb]
|
||||
lretw // CHECK: lretw # encoding: [0x66,0xcb]
|
||||
|
||||
// rdar://8403907
|
||||
sysret
|
||||
|
Loading…
Reference in New Issue
Block a user