diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-09-25 19:08:02 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-09-25 19:08:02 +0000 |
commit | 4e4d2d7d9aa0961b6a9130336f46d95944410197 (patch) | |
tree | 7c03309dbf36fe3ecf7555e46f5802fcc330be61 | |
parent | a6dff2faeb78c5020e7ba7f3892873cdd25e6cc4 (diff) | |
download | external_llvm-4e4d2d7d9aa0961b6a9130336f46d95944410197.zip external_llvm-4e4d2d7d9aa0961b6a9130336f46d95944410197.tar.gz external_llvm-4e4d2d7d9aa0961b6a9130336f46d95944410197.tar.bz2 |
New style x87 cmp instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42312 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/X86FloatingPoint.cpp | 6 | ||||
-rw-r--r-- | lib/Target/X86/X86InstrFPStack.td | 18 |
2 files changed, 24 insertions, 0 deletions
diff --git a/lib/Target/X86/X86FloatingPoint.cpp b/lib/Target/X86/X86FloatingPoint.cpp index ea9a8f7..37a9f60 100644 --- a/lib/Target/X86/X86FloatingPoint.cpp +++ b/lib/Target/X86/X86FloatingPoint.cpp @@ -463,6 +463,12 @@ static const TableEntry OpcodeTable[] = { { X86::NEW_CMOVP_Fp32 , X86::CMOVP_F }, { X86::NEW_CMOVP_Fp64 , 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_Fp64 , X86::SIN_F }, diff --git a/lib/Target/X86/X86InstrFPStack.td b/lib/Target/X86/X86InstrFPStack.td index 737c745..ec63732 100644 --- a/lib/Target/X86/X86InstrFPStack.td +++ b/lib/Target/X86/X86InstrFPStack.td @@ -503,6 +503,7 @@ def LD_F1 : FPI<0xE8, RawFrm, (outs), (ins), "fld1">, D9; // Floating point compares. +let Defs = [EFLAGS] in { def UCOM_Fpr32 : FpIf32<(outs), (ins RFP32:$lhs, RFP32:$rhs), CompareFP, []>; // FPSW = cmp ST(0) with ST(i) 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, [(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 { def UCOM_Fr : FPI<0xE0, AddRegFrm, // FPSW = cmp ST(0) with ST(i) (outs), (ins RST:$reg), |