1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00

New style x87 cmp instructions.

llvm-svn: 42312
This commit is contained in:
Evan Cheng 2007-09-25 19:08:02 +00:00
parent d98abb62ce
commit a58633d67b
2 changed files with 24 additions and 0 deletions

View File

@ -463,6 +463,12 @@ static const TableEntry OpcodeTable[] = {
{ X86::NEW_CMOVP_Fp32 , X86::CMOVP_F }, { X86::NEW_CMOVP_Fp32 , X86::CMOVP_F },
{ X86::NEW_CMOVP_Fp64 , X86::CMOVP_F }, { X86::NEW_CMOVP_Fp64 , X86::CMOVP_F },
{ X86::NEW_CMOVP_Fp80 , X86::CMOVP_F }, { X86::NEW_CMOVP_Fp80 , X86::CMOVP_F },
{ X86::NEW_UCOM_FpIr32 , X86::UCOM_FIr },
{ X86::NEW_UCOM_FpIr64 , X86::UCOM_FIr },
{ X86::NEW_UCOM_FpIr80 , X86::UCOM_FIr },
{ X86::NEW_UCOM_Fpr32 , X86::UCOM_Fr },
{ X86::NEW_UCOM_Fpr64 , X86::UCOM_Fr },
{ X86::NEW_UCOM_Fpr80 , X86::UCOM_Fr },
{ X86::SIN_Fp32 , X86::SIN_F }, { X86::SIN_Fp32 , X86::SIN_F },
{ X86::SIN_Fp64 , X86::SIN_F }, { X86::SIN_Fp64 , X86::SIN_F },

View File

@ -503,6 +503,7 @@ def LD_F1 : FPI<0xE8, RawFrm, (outs), (ins), "fld1">, D9;
// Floating point compares. // Floating point compares.
let Defs = [EFLAGS] in {
def UCOM_Fpr32 : FpIf32<(outs), (ins RFP32:$lhs, RFP32:$rhs), CompareFP, def UCOM_Fpr32 : FpIf32<(outs), (ins RFP32:$lhs, RFP32:$rhs), CompareFP,
[]>; // FPSW = cmp ST(0) with ST(i) []>; // FPSW = cmp ST(0) with ST(i)
def UCOM_FpIr32: FpIf32<(outs), (ins RFP32:$lhs, RFP32:$rhs), CompareFP, def UCOM_FpIr32: FpIf32<(outs), (ins RFP32:$lhs, RFP32:$rhs), CompareFP,
@ -516,6 +517,23 @@ def UCOM_Fpr80 : FpI_<(outs), (ins RFP80:$lhs, RFP80:$rhs), CompareFP,
def UCOM_FpIr80: FpI_<(outs), (ins RFP80:$lhs, RFP80:$rhs), CompareFP, def UCOM_FpIr80: FpI_<(outs), (ins RFP80:$lhs, RFP80:$rhs), CompareFP,
[(X86cmp RFP80:$lhs, RFP80:$rhs)]>; // CC = ST(0) cmp ST(i) [(X86cmp RFP80:$lhs, RFP80:$rhs)]>; // CC = ST(0) cmp ST(i)
def NEW_UCOM_Fpr32 : FpIf32<(outs), (ins RFP32:$lhs, RFP32:$rhs), CompareFP,
[]>; // FPSW = cmp ST(0) with ST(i)
def NEW_UCOM_FpIr32: FpIf32<(outs), (ins RFP32:$lhs, RFP32:$rhs), CompareFP,
[(X86cmp_new RFP32:$lhs, RFP32:$rhs),
(implicit EFLAGS)]>; // CC = ST(0) cmp ST(i)
def NEW_UCOM_Fpr64 : FpIf64<(outs), (ins RFP64:$lhs, RFP64:$rhs), CompareFP,
[]>; // FPSW = cmp ST(0) with ST(i)
def NEW_UCOM_FpIr64: FpIf64<(outs), (ins RFP64:$lhs, RFP64:$rhs), CompareFP,
[(X86cmp_new RFP64:$lhs, RFP64:$rhs),
(implicit EFLAGS)]>; // CC = ST(0) cmp ST(i)
def NEW_UCOM_Fpr80 : FpI_<(outs), (ins RFP80:$lhs, RFP80:$rhs), CompareFP,
[]>; // FPSW = cmp ST(0) with ST(i)
def NEW_UCOM_FpIr80: FpI_<(outs), (ins RFP80:$lhs, RFP80:$rhs), CompareFP,
[(X86cmp_new RFP80:$lhs, RFP80:$rhs),
(implicit EFLAGS)]>; // CC = ST(0) cmp ST(i)
}
let Defs = [EFLAGS], Uses = [ST0] in { let Defs = [EFLAGS], Uses = [ST0] in {
def UCOM_Fr : FPI<0xE0, AddRegFrm, // FPSW = cmp ST(0) with ST(i) def UCOM_Fr : FPI<0xE0, AddRegFrm, // FPSW = cmp ST(0) with ST(i)
(outs), (ins RST:$reg), (outs), (ins RST:$reg),