1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 12:41:49 +01:00

[X86] Print %st(0) as %st when its implicit to the instruction. Continue printing it as %st(0) when its encoded in the instruction.

This is a step back from the change I made in r352985. This appears to be more consistent with gcc and objdump behavior.

llvm-svn: 353015
This commit is contained in:
Craig Topper 2019-02-04 04:15:10 +00:00
parent e50c657b48
commit c4b858bb71
39 changed files with 1000 additions and 972 deletions

View File

@ -1114,8 +1114,7 @@ bool X86AsmParser::ParseRegister(unsigned &RegNo,
}
// Parse "%st" as "%st(0)" and "%st(1)", which is multiple tokens.
if (RegNo == 0 && (Tok.getString() == "st" || Tok.getString() == "ST")) {
RegNo = X86::ST0;
if (RegNo == X86::ST0) {
Parser.Lex(); // Eat 'st'
// Check to see if we have '(4)' after %st.

View File

@ -199,3 +199,14 @@ void X86ATTInstPrinter::printU8Imm(const MCInst *MI, unsigned Op,
O << markup("<imm:") << '$' << formatImm(MI->getOperand(Op).getImm() & 0xff)
<< markup(">");
}
void X86ATTInstPrinter::printSTiRegOperand(const MCInst *MI, unsigned OpNo,
raw_ostream &OS) {
const MCOperand &Op = MI->getOperand(OpNo);
unsigned Reg = Op.getReg();
// Override the default printing to print st(0) instead st.
if (Reg == X86::ST0)
OS << markup("<reg:") << "%st(0)" << markup(">");
else
printRegName(OS, Reg);
}

View File

@ -43,6 +43,7 @@ public:
void printSrcIdx(const MCInst *MI, unsigned Op, raw_ostream &O);
void printDstIdx(const MCInst *MI, unsigned Op, raw_ostream &O);
void printU8Imm(const MCInst *MI, unsigned Op, raw_ostream &OS);
void printSTiRegOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
void printanymem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
printMemReference(MI, OpNo, O);

View File

@ -159,3 +159,14 @@ void X86IntelInstPrinter::printU8Imm(const MCInst *MI, unsigned Op,
O << formatImm(MI->getOperand(Op).getImm() & 0xff);
}
void X86IntelInstPrinter::printSTiRegOperand(const MCInst *MI, unsigned OpNo,
raw_ostream &OS) {
const MCOperand &Op = MI->getOperand(OpNo);
unsigned Reg = Op.getReg();
// Override the default printing to print st(0) instead st.
if (Reg == X86::ST0)
OS << "st(0)";
else
printRegName(OS, Reg);
}

View File

@ -38,6 +38,7 @@ public:
void printSrcIdx(const MCInst *MI, unsigned OpNo, raw_ostream &O);
void printDstIdx(const MCInst *MI, unsigned OpNo, raw_ostream &O);
void printU8Imm(const MCInst *MI, unsigned Op, raw_ostream &O);
void printSTiRegOperand(const MCInst *MI, unsigned OpNo, raw_ostream &OS);
void printanymem(const MCInst *MI, unsigned OpNo, raw_ostream &O) {
printMemReference(MI, OpNo, O);

View File

@ -257,24 +257,24 @@ defm DIVR: FPBinary<fdiv, MRM7m, "divr", 0>;
} // Defs = [FPSW]
class FPST0rInst<Format fp, string asm>
: FPI<0xD8, fp, (outs), (ins RST:$op), asm>;
: FPI<0xD8, fp, (outs), (ins RSTi:$op), asm>;
class FPrST0Inst<Format fp, string asm>
: FPI<0xDC, fp, (outs), (ins RST:$op), asm>;
: FPI<0xDC, fp, (outs), (ins RSTi:$op), asm>;
class FPrST0PInst<Format fp, string asm>
: FPI<0xDE, fp, (outs), (ins RST:$op), asm>;
: FPI<0xDE, fp, (outs), (ins RSTi:$op), asm>;
// NOTE: GAS and apparently all other AT&T style assemblers have a broken notion
// of some of the 'reverse' forms of the fsub and fdiv instructions. As such,
// we have to put some 'r's in and take them out of weird places.
let SchedRW = [WriteFAdd], Defs = [FPSW] in {
def ADD_FST0r : FPST0rInst <MRM0r, "fadd\t$op">;
def ADD_FrST0 : FPrST0Inst <MRM0r, "fadd\t{%st(0), $op|$op, st(0)}">;
def ADD_FrST0 : FPrST0Inst <MRM0r, "fadd\t{%st, $op|$op, st}">;
def ADD_FPrST0 : FPrST0PInst<MRM0r, "faddp\t$op">;
def SUBR_FST0r : FPST0rInst <MRM5r, "fsubr\t$op">;
def SUB_FrST0 : FPrST0Inst <MRM5r, "fsub{r}\t{%st(0), $op|$op, st(0)}">;
def SUB_FrST0 : FPrST0Inst <MRM5r, "fsub{r}\t{%st, $op|$op, st}">;
def SUB_FPrST0 : FPrST0PInst<MRM5r, "fsub{r}p\t$op">;
def SUB_FST0r : FPST0rInst <MRM4r, "fsub\t$op">;
def SUBR_FrST0 : FPrST0Inst <MRM4r, "fsub{|r}\t{%st(0), $op|$op, st(0)}">;
def SUBR_FrST0 : FPrST0Inst <MRM4r, "fsub{|r}\t{%st, $op|$op, st}">;
def SUBR_FPrST0 : FPrST0PInst<MRM4r, "fsub{|r}p\t$op">;
} // SchedRW
let SchedRW = [WriteFCom], Defs = [FPSW] in {
@ -283,15 +283,15 @@ def COMP_FST0r : FPST0rInst <MRM3r, "fcomp\t$op">;
} // SchedRW
let SchedRW = [WriteFMul], Defs = [FPSW] in {
def MUL_FST0r : FPST0rInst <MRM1r, "fmul\t$op">;
def MUL_FrST0 : FPrST0Inst <MRM1r, "fmul\t{%st(0), $op|$op, st(0)}">;
def MUL_FrST0 : FPrST0Inst <MRM1r, "fmul\t{%st, $op|$op, st}">;
def MUL_FPrST0 : FPrST0PInst<MRM1r, "fmulp\t$op">;
} // SchedRW
let SchedRW = [WriteFDiv], Defs = [FPSW] in {
def DIVR_FST0r : FPST0rInst <MRM7r, "fdivr\t$op">;
def DIV_FrST0 : FPrST0Inst <MRM7r, "fdiv{r}\t{%st(0), $op|$op, st(0)}">;
def DIV_FrST0 : FPrST0Inst <MRM7r, "fdiv{r}\t{%st, $op|$op, st}">;
def DIV_FPrST0 : FPrST0PInst<MRM7r, "fdiv{r}p\t$op">;
def DIV_FST0r : FPST0rInst <MRM6r, "fdiv\t$op">;
def DIVR_FrST0 : FPrST0Inst <MRM6r, "fdiv{|r}\t{%st(0), $op|$op, st(0)}">;
def DIVR_FrST0 : FPrST0Inst <MRM6r, "fdiv{|r}\t{%st, $op|$op, st}">;
def DIVR_FPrST0 : FPrST0PInst<MRM6r, "fdiv{|r}p\t$op">;
} // SchedRW
@ -397,22 +397,22 @@ defm CMOVNP : FPCMov<X86_COND_NP>;
let Predicates = [HasCMov] in {
// These are not factored because there's no clean way to pass DA/DB.
def CMOVB_F : FPI<0xDA, MRM0r, (outs), (ins RST:$op),
"fcmovb\t{$op, %st(0)|st(0), $op}">;
def CMOVBE_F : FPI<0xDA, MRM2r, (outs), (ins RST:$op),
"fcmovbe\t{$op, %st(0)|st(0), $op}">;
def CMOVE_F : FPI<0xDA, MRM1r, (outs), (ins RST:$op),
"fcmove\t{$op, %st(0)|st(0), $op}">;
def CMOVP_F : FPI<0xDA, MRM3r, (outs), (ins RST:$op),
"fcmovu\t{$op, %st(0)|st(0), $op}">;
def CMOVNB_F : FPI<0xDB, MRM0r, (outs), (ins RST:$op),
"fcmovnb\t{$op, %st(0)|st(0), $op}">;
def CMOVNBE_F: FPI<0xDB, MRM2r, (outs), (ins RST:$op),
"fcmovnbe\t{$op, %st(0)|st(0), $op}">;
def CMOVNE_F : FPI<0xDB, MRM1r, (outs), (ins RST:$op),
"fcmovne\t{$op, %st(0)|st(0), $op}">;
def CMOVNP_F : FPI<0xDB, MRM3r, (outs), (ins RST:$op),
"fcmovnu\t{$op, %st(0)|st(0), $op}">;
def CMOVB_F : FPI<0xDA, MRM0r, (outs), (ins RSTi:$op),
"fcmovb\t{$op, %st|st, $op}">;
def CMOVBE_F : FPI<0xDA, MRM2r, (outs), (ins RSTi:$op),
"fcmovbe\t{$op, %st|st, $op}">;
def CMOVE_F : FPI<0xDA, MRM1r, (outs), (ins RSTi:$op),
"fcmove\t{$op, %st|st, $op}">;
def CMOVP_F : FPI<0xDA, MRM3r, (outs), (ins RSTi:$op),
"fcmovu\t{$op, %st|st, $op}">;
def CMOVNB_F : FPI<0xDB, MRM0r, (outs), (ins RSTi:$op),
"fcmovnb\t{$op, %st|st, $op}">;
def CMOVNBE_F: FPI<0xDB, MRM2r, (outs), (ins RSTi:$op),
"fcmovnbe\t{$op, %st|st, $op}">;
def CMOVNE_F : FPI<0xDB, MRM1r, (outs), (ins RSTi:$op),
"fcmovne\t{$op, %st|st, $op}">;
def CMOVNP_F : FPI<0xDB, MRM3r, (outs), (ins RSTi:$op),
"fcmovnu\t{$op, %st|st, $op}">;
} // Predicates = [HasCMov]
} // SchedRW
@ -541,10 +541,10 @@ def ISTT_FP64m : FPI<0xDD, MRM1m, (outs), (ins i64mem:$dst), "fisttp{ll}\t$dst">
// FP Stack manipulation instructions.
let SchedRW = [WriteMove] in {
def LD_Frr : FPI<0xD9, MRM0r, (outs), (ins RST:$op), "fld\t$op">;
def ST_Frr : FPI<0xDD, MRM2r, (outs), (ins RST:$op), "fst\t$op">;
def ST_FPrr : FPI<0xDD, MRM3r, (outs), (ins RST:$op), "fstp\t$op">;
def XCH_F : FPI<0xD9, MRM1r, (outs), (ins RST:$op), "fxch\t$op">;
def LD_Frr : FPI<0xD9, MRM0r, (outs), (ins RSTi:$op), "fld\t$op">;
def ST_Frr : FPI<0xDD, MRM2r, (outs), (ins RSTi:$op), "fst\t$op">;
def ST_FPrr : FPI<0xDD, MRM3r, (outs), (ins RSTi:$op), "fstp\t$op">;
def XCH_F : FPI<0xD9, MRM1r, (outs), (ins RSTi:$op), "fxch\t$op">;
}
// Floating point constant loads.
@ -604,23 +604,23 @@ def UCOM_FpIr80: FpI_<(outs), (ins RFP80:$lhs, RFP80:$rhs), CompareFP,
let Defs = [FPSW], Uses = [ST0] in {
def UCOM_Fr : FPI<0xDD, MRM4r, // FPSW = cmp ST(0) with ST(i)
(outs), (ins RST:$reg), "fucom\t$reg">;
(outs), (ins RSTi:$reg), "fucom\t$reg">;
def UCOM_FPr : FPI<0xDD, MRM5r, // FPSW = cmp ST(0) with ST(i), pop
(outs), (ins RST:$reg), "fucomp\t$reg">;
(outs), (ins RSTi:$reg), "fucomp\t$reg">;
def UCOM_FPPr : FPI<0xDA, MRM_E9, // cmp ST(0) with ST(1), pop, pop
(outs), (ins), "fucompp">;
}
let Defs = [EFLAGS, FPSW], Uses = [ST0] in {
def UCOM_FIr : FPI<0xDB, MRM5r, // CC = cmp ST(0) with ST(i)
(outs), (ins RST:$reg), "fucomi\t$reg">;
(outs), (ins RSTi:$reg), "fucomi\t$reg">;
def UCOM_FIPr : FPI<0xDF, MRM5r, // CC = cmp ST(0) with ST(i), pop
(outs), (ins RST:$reg), "fucompi\t$reg">;
(outs), (ins RSTi:$reg), "fucompi\t$reg">;
}
let Defs = [EFLAGS, FPSW] in {
def COM_FIr : FPI<0xDB, MRM6r, (outs), (ins RST:$reg), "fcomi\t$reg">;
def COM_FIPr : FPI<0xDF, MRM6r, (outs), (ins RST:$reg), "fcompi\t$reg">;
def COM_FIr : FPI<0xDB, MRM6r, (outs), (ins RSTi:$reg), "fcomi\t$reg">;
def COM_FIPr : FPI<0xDF, MRM6r, (outs), (ins RSTi:$reg), "fcompi\t$reg">;
}
} // SchedRW
@ -644,8 +644,8 @@ def FLDCW16m : I<0xD9, MRM5m, // X87 control world = [mem16]
let SchedRW = [WriteMicrocoded] in {
let Defs = [FPSW] in {
def FNINIT : I<0xDB, MRM_E3, (outs), (ins), "fninit", []>;
def FFREE : FPI<0xDD, MRM0r, (outs), (ins RST:$reg), "ffree\t$reg">;
def FFREEP : FPI<0xDF, MRM0r, (outs), (ins RST:$reg), "ffreep\t$reg">;
def FFREE : FPI<0xDD, MRM0r, (outs), (ins RSTi:$reg), "ffree\t$reg">;
def FFREEP : FPI<0xDF, MRM0r, (outs), (ins RSTi:$reg), "ffreep\t$reg">;
// Clear exceptions
def FNCLEX : I<0xDB, MRM_E2, (outs), (ins), "fnclex", []>;

View File

@ -3238,9 +3238,9 @@ def : InstAlias<"fucompi", (UCOM_FIPr ST1), 0>;
// instructions like "fadd %st(0), %st(0)" as "fadd %st(0)" for consistency with
// gas.
multiclass FpUnaryAlias<string Mnemonic, Instruction Inst, bit EmitAlias = 1> {
def : InstAlias<!strconcat(Mnemonic, "\t{$op, %st(0)|st(0), $op}"),
(Inst RST:$op), EmitAlias>;
def : InstAlias<!strconcat(Mnemonic, "\t{%st(0), %st(0)|st(0), st(0)}"),
def : InstAlias<!strconcat(Mnemonic, "\t{$op, %st|st, $op}"),
(Inst RSTi:$op), EmitAlias>;
def : InstAlias<!strconcat(Mnemonic, "\t{%st, %st|st, st}"),
(Inst ST0), EmitAlias>;
}
@ -3265,12 +3265,12 @@ defm : FpUnaryAlias<"fucompi", UCOM_FIPr>;
// Handle "f{mulp,addp} st(0), $op" the same as "f{mulp,addp} $op", since they
// commute. We also allow fdiv[r]p/fsubrp even though they don't commute,
// solely because gas supports it.
def : InstAlias<"faddp\t{%st(0), $op|$op, st(0)}", (ADD_FPrST0 RST:$op)>;
def : InstAlias<"fmulp\t{%st(0), $op|$op, st(0)}", (MUL_FPrST0 RST:$op)>;
def : InstAlias<"fsub{|r}p\t{%st(0), $op|$op, st(0)}", (SUBR_FPrST0 RST:$op)>;
def : InstAlias<"fsub{r|}p\t{%st(0), $op|$op, st(0)}", (SUB_FPrST0 RST:$op)>;
def : InstAlias<"fdiv{|r}p\t{%st(0), $op|$op, st(0)}", (DIVR_FPrST0 RST:$op)>;
def : InstAlias<"fdiv{r|}p\t{%st(0), $op|$op, st(0)}", (DIV_FPrST0 RST:$op)>;
def : InstAlias<"faddp\t{%st, $op|$op, st}", (ADD_FPrST0 RSTi:$op)>;
def : InstAlias<"fmulp\t{%st, $op|$op, st}", (MUL_FPrST0 RSTi:$op)>;
def : InstAlias<"fsub{|r}p\t{%st, $op|$op, st}", (SUBR_FPrST0 RSTi:$op)>;
def : InstAlias<"fsub{r|}p\t{%st, $op|$op, st}", (SUB_FPrST0 RSTi:$op)>;
def : InstAlias<"fdiv{|r}p\t{%st, $op|$op, st}", (DIVR_FPrST0 RSTi:$op)>;
def : InstAlias<"fdiv{r|}p\t{%st, $op|$op, st}", (DIV_FPrST0 RSTi:$op)>;
def : InstAlias<"fnstsw" , (FNSTSW16r), 0>;

View File

@ -277,7 +277,7 @@ def K7 : X86Reg<"k7", 7>, DwarfRegNum<[125, 100, 100]>;
// pseudo registers, but we still mark them as aliasing FP registers. That
// way both kinds can be live without exceeding the stack depth. ST registers
// are only live around inline assembly.
def ST0 : X86Reg<"st(0)", 0>, DwarfRegNum<[33, 12, 11]>;
def ST0 : X86Reg<"st", 0>, DwarfRegNum<[33, 12, 11]>;
def ST1 : X86Reg<"st(1)", 1>, DwarfRegNum<[34, 13, 12]>;
def ST2 : X86Reg<"st(2)", 2>, DwarfRegNum<[35, 14, 13]>;
def ST3 : X86Reg<"st(3)", 3>, DwarfRegNum<[36, 15, 14]>;
@ -538,6 +538,9 @@ def RST : RegisterClass<"X86", [f80, f64, f32], 32, (sequence "ST%u", 0, 7)> {
let isAllocatable = 0;
}
// Helper to allow %st to print as %st(0) when its encoded in the instruction.
def RSTi : RegisterOperand<RST, "printSTiRegOperand">;
// Generic vector registers: VR64 and VR128.
// Ensure that float types are declared first - only float is legal on SSE1.
def VR64: RegisterClass<"X86", [x86mmx], 64, (sequence "MM%u", 0, 7)>;

View File

@ -508,17 +508,17 @@ define x86_regcallcc double @test_CallargRetDouble(double %a) {
define x86_regcallcc x86_fp80 @test_argRetf80(x86_fp80 %a0) nounwind {
; X32-LABEL: test_argRetf80:
; X32: # %bb.0:
; X32-NEXT: fadd %st(0), %st(0)
; X32-NEXT: fadd %st, %st(0)
; X32-NEXT: retl
;
; WIN64-LABEL: test_argRetf80:
; WIN64: # %bb.0:
; WIN64-NEXT: fadd %st(0), %st(0)
; WIN64-NEXT: fadd %st, %st(0)
; WIN64-NEXT: retq
;
; LINUXOSX64-LABEL: test_argRetf80:
; LINUXOSX64: # %bb.0:
; LINUXOSX64-NEXT: fadd %st(0), %st(0)
; LINUXOSX64-NEXT: fadd %st, %st(0)
; LINUXOSX64-NEXT: retq
%r0 = fadd x86_fp80 %a0, %a0
ret x86_fp80 %r0
@ -529,9 +529,9 @@ define x86_regcallcc x86_fp80 @test_CallargRetf80(x86_fp80 %a) {
; X32-LABEL: test_CallargRetf80:
; X32: # %bb.0:
; X32-NEXT: pushl %esp
; X32-NEXT: fadd %st(0), %st(0)
; X32-NEXT: fadd %st, %st(0)
; X32-NEXT: calll _test_argRetf80
; X32-NEXT: fadd %st(0), %st(0)
; X32-NEXT: fadd %st, %st(0)
; X32-NEXT: popl %esp
; X32-NEXT: retl
;
@ -540,9 +540,9 @@ define x86_regcallcc x86_fp80 @test_CallargRetf80(x86_fp80 %a) {
; WIN64-NEXT: pushq %rsp
; WIN64-NEXT: .seh_pushreg 4
; WIN64-NEXT: .seh_endprologue
; WIN64-NEXT: fadd %st(0), %st(0)
; WIN64-NEXT: fadd %st, %st(0)
; WIN64-NEXT: callq test_argRetf80
; WIN64-NEXT: fadd %st(0), %st(0)
; WIN64-NEXT: fadd %st, %st(0)
; WIN64-NEXT: popq %rsp
; WIN64-NEXT: retq
; WIN64-NEXT: .seh_handlerdata
@ -554,9 +554,9 @@ define x86_regcallcc x86_fp80 @test_CallargRetf80(x86_fp80 %a) {
; LINUXOSX64-NEXT: pushq %rsp
; LINUXOSX64-NEXT: .cfi_def_cfa_offset 16
; LINUXOSX64-NEXT: .cfi_offset %rsp, -16
; LINUXOSX64-NEXT: fadd %st(0), %st(0)
; LINUXOSX64-NEXT: fadd %st, %st(0)
; LINUXOSX64-NEXT: callq test_argRetf80
; LINUXOSX64-NEXT: fadd %st(0), %st(0)
; LINUXOSX64-NEXT: fadd %st, %st(0)
; LINUXOSX64-NEXT: popq %rsp
; LINUXOSX64-NEXT: .cfi_def_cfa_offset 8
; LINUXOSX64-NEXT: retq

View File

@ -6,7 +6,7 @@ target triple = "x86_64-unknown-unknown"
; Test that we can generate an fcmove, and also that it passes verification.
; CHECK-LABEL: cmove_f
; CHECK: fcmove %st({{[0-7]}}), %st(0)
; CHECK: fcmove %st({{[0-7]}}), %st
define x86_fp80 @cmove_f(x86_fp80 %a, x86_fp80 %b, i32 %c) {
%test = icmp eq i32 %c, 0
%add = fadd x86_fp80 %a, %b

View File

@ -486,7 +486,7 @@ define i64 @fptoui_i64_fp80(x86_fp80 %a0) nounwind {
; X64-X87-NEXT: xorl %eax, %eax
; X64-X87-NEXT: fxch %st(1)
; X64-X87-NEXT: fucompi %st(2)
; X64-X87-NEXT: fcmovnbe %st(1), %st(0)
; X64-X87-NEXT: fcmovnbe %st(1), %st
; X64-X87-NEXT: fstp %st(1)
; X64-X87-NEXT: fnstcw -{{[0-9]+}}(%rsp)
; X64-X87-NEXT: movzwl -{{[0-9]+}}(%rsp), %ecx
@ -509,7 +509,7 @@ define i64 @fptoui_i64_fp80(x86_fp80 %a0) nounwind {
; X64-SSSE3-NEXT: xorl %eax, %eax
; X64-SSSE3-NEXT: fxch %st(1)
; X64-SSSE3-NEXT: fucompi %st(2)
; X64-SSSE3-NEXT: fcmovnbe %st(1), %st(0)
; X64-SSSE3-NEXT: fcmovnbe %st(1), %st
; X64-SSSE3-NEXT: fstp %st(1)
; X64-SSSE3-NEXT: fisttpll -{{[0-9]+}}(%rsp)
; X64-SSSE3-NEXT: setbe %al
@ -568,7 +568,7 @@ define i64 @fptoui_i64_fp80_ld(x86_fp80 *%a0) nounwind {
; X64-X87-NEXT: xorl %eax, %eax
; X64-X87-NEXT: fxch %st(1)
; X64-X87-NEXT: fucompi %st(2)
; X64-X87-NEXT: fcmovnbe %st(1), %st(0)
; X64-X87-NEXT: fcmovnbe %st(1), %st
; X64-X87-NEXT: fstp %st(1)
; X64-X87-NEXT: fnstcw -{{[0-9]+}}(%rsp)
; X64-X87-NEXT: movzwl -{{[0-9]+}}(%rsp), %ecx
@ -591,7 +591,7 @@ define i64 @fptoui_i64_fp80_ld(x86_fp80 *%a0) nounwind {
; X64-SSSE3-NEXT: xorl %eax, %eax
; X64-SSSE3-NEXT: fxch %st(1)
; X64-SSSE3-NEXT: fucompi %st(2)
; X64-SSSE3-NEXT: fcmovnbe %st(1), %st(0)
; X64-SSSE3-NEXT: fcmovnbe %st(1), %st
; X64-SSSE3-NEXT: fstp %st(1)
; X64-SSSE3-NEXT: fisttpll -{{[0-9]+}}(%rsp)
; X64-SSSE3-NEXT: setbe %al

View File

@ -75,20 +75,20 @@ define void @test6(double %A, double %B, double %C, double %D, double %E) nounwi
; CHECK-NEXT: fldl {{[0-9]+}}(%esp)
; CHECK-NEXT: fldl {{[0-9]+}}(%esp)
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: foo %st(0) %st(0)
; CHECK-NEXT: foo %st %st
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: fstp %st(0)
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: bar %st(1) %st(0)
; CHECK-NEXT: bar %st(1) %st
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: fstp %st(1)
; CHECK-NEXT: fstp %st(0)
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: baz %st(1) %st(0)
; CHECK-NEXT: baz %st(1) %st
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: fstp %st(0)
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: baz %st(0)
; CHECK-NEXT: baz %st
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: fstp %st(0)
; CHECK-NEXT: retl
@ -116,10 +116,10 @@ define void @testPR4185() {
; CHECK-NEXT: flds LCPI6_0
; CHECK-NEXT: fld %st(0)
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: fistpl %st(0)
; CHECK-NEXT: fistpl %st
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: fistpl %st(0)
; CHECK-NEXT: fistpl %st
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: retl
return:
@ -137,10 +137,10 @@ define void @testPR4185b() {
; CHECK: ## %bb.0: ## %return
; CHECK-NEXT: flds LCPI7_0
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: fistl %st(0)
; CHECK-NEXT: fistl %st
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: fistpl %st(0)
; CHECK-NEXT: fistpl %st
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: retl
return:
@ -162,7 +162,7 @@ define void @testPR4459(x86_fp80 %a) {
; CHECK-NEXT: fld %st(0)
; CHECK-NEXT: fxch %st(1)
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: fistpl %st(0)
; CHECK-NEXT: fistpl %st
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: fstpt (%esp)
; CHECK-NEXT: calll _test3
@ -190,7 +190,7 @@ define void @testPR4484(x86_fp80 %a) {
; CHECK-NEXT: calll _test1
; CHECK-NEXT: fldt {{[-0-9]+}}(%e{{[sb]}}p) ## 10-byte Folded Reload
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: fistpl %st(0)
; CHECK-NEXT: fistpl %st
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: fstpt (%esp)
; CHECK-NEXT: calll _test3
@ -210,18 +210,18 @@ define void @testPR4485(x86_fp80* %a) {
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax
; CHECK-NEXT: fldt (%eax)
; CHECK-NEXT: flds LCPI10_0
; CHECK-NEXT: fmul %st(0), %st(1)
; CHECK-NEXT: fmul %st, %st(1)
; CHECK-NEXT: flds LCPI10_1
; CHECK-NEXT: fmul %st(0), %st(2)
; CHECK-NEXT: fmul %st, %st(2)
; CHECK-NEXT: fxch %st(2)
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: fistpl %st(0)
; CHECK-NEXT: fistpl %st
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: fldt (%eax)
; CHECK-NEXT: fmulp %st(1)
; CHECK-NEXT: fmulp %st(1)
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: fistpl %st(0)
; CHECK-NEXT: fistpl %st
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: retl
entry:
@ -413,7 +413,7 @@ define i32 @PR10602() nounwind ssp {
; CHECK-NEXT: fld %st(0)
; CHECK-NEXT: fxch %st(1)
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: fcomi %st(1), %st(0); pushf; pop %eax
; CHECK-NEXT: fcomi %st(1), %st; pushf; pop %eax
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: fstp %st(0)
; CHECK-NEXT: fstp %st(0)
@ -495,7 +495,7 @@ define double @test_operand_rewrite() {
; CHECK-LABEL: test_operand_rewrite:
; CHECK: ## %bb.0: ## %entry
; CHECK-NEXT: ## InlineAsm Start
; CHECK-NEXT: foo %st(0), %st(1)
; CHECK-NEXT: foo %st, %st(1)
; CHECK-NEXT: ## InlineAsm End
; CHECK-NEXT: fsubp %st(1)
; CHECK-NEXT: retl

View File

@ -14,7 +14,7 @@ define x86_fp80 @foo(x86_fp80 %a) {
; CHECK-NEXT: testb $-128, -{{[0-9]+}}(%rsp)
; CHECK-NEXT: flds {{.*}}(%rip)
; CHECK-NEXT: flds {{.*}}(%rip)
; CHECK-NEXT: fcmovne %st(1), %st(0)
; CHECK-NEXT: fcmovne %st(1), %st
; CHECK-NEXT: fstp %st(1)
; CHECK-NEXT: retq
%1 = tail call x86_fp80 @copysignl(x86_fp80 0xK7FFF8000000000000000, x86_fp80 %a) nounwind readnone

View File

@ -19,18 +19,18 @@ target triple = "x86_64-unknown-linux-gnu"
; KNL-NEXT: fld1
; KNL-NEXT: fldz
; KNL-NEXT: fld %st(0)
; KNL-NEXT: fcmovne %st(2), %st(0)
; KNL-NEXT: fcmovne %st(2), %st
; KNL-NEXT: testb $1, %cl
; KNL-NEXT: fld %st(1)
; KNL-NEXT: fcmovne %st(3), %st(0)
; KNL-NEXT: fcmovne %st(3), %st
; KNL-NEXT: kmovw %k2, %eax
; KNL-NEXT: testb $1, %al
; KNL-NEXT: fld %st(2)
; KNL-NEXT: fcmovne %st(4), %st(0)
; KNL-NEXT: fcmovne %st(4), %st
; KNL-NEXT: kmovw %k0, %eax
; KNL-NEXT: testb $1, %al
; KNL-NEXT: fxch %st(3)
; KNL-NEXT: fcmovne %st(4), %st(0)
; KNL-NEXT: fcmovne %st(4), %st
; KNL-NEXT: fstp %st(4)
; KNL-NEXT: fxch %st(3)
; KNL-NEXT: fstpt (%rdi)
@ -55,18 +55,18 @@ target triple = "x86_64-unknown-linux-gnu"
; SKX-NEXT: fld1
; SKX-NEXT: fldz
; SKX-NEXT: fld %st(0)
; SKX-NEXT: fcmovne %st(2), %st(0)
; SKX-NEXT: fcmovne %st(2), %st
; SKX-NEXT: testb $1, %cl
; SKX-NEXT: fld %st(1)
; SKX-NEXT: fcmovne %st(3), %st(0)
; SKX-NEXT: fcmovne %st(3), %st
; SKX-NEXT: kmovd %k2, %eax
; SKX-NEXT: testb $1, %al
; SKX-NEXT: fld %st(2)
; SKX-NEXT: fcmovne %st(4), %st(0)
; SKX-NEXT: fcmovne %st(4), %st
; SKX-NEXT: kmovd %k0, %eax
; SKX-NEXT: testb $1, %al
; SKX-NEXT: fxch %st(3)
; SKX-NEXT: fcmovne %st(4), %st(0)
; SKX-NEXT: fcmovne %st(4), %st
; SKX-NEXT: fstp %st(4)
; SKX-NEXT: fxch %st(3)
; SKX-NEXT: fstpt (%rdi)

View File

@ -27,7 +27,7 @@ define void @_Z1fe(x86_fp80 %z) local_unnamed_addr #0 {
; SSE2-NEXT: movsd %xmm0, -32(%rbp)
; SSE2-NEXT: fsubl -32(%rbp)
; SSE2-NEXT: flds {{.*}}(%rip)
; SSE2-NEXT: fmul %st(0), %st(1)
; SSE2-NEXT: fmul %st, %st(1)
; SSE2-NEXT: fnstcw -2(%rbp)
; SSE2-NEXT: movzwl -2(%rbp), %eax
; SSE2-NEXT: movw $3199, -2(%rbp) ## imm = 0xC7F
@ -70,7 +70,7 @@ define void @_Z1fe(x86_fp80 %z) local_unnamed_addr #0 {
; SSE2-SCHEDULE-NEXT: movzwl -2(%rbp), %eax
; SSE2-SCHEDULE-NEXT: movw $3199, -2(%rbp) ## imm = 0xC7F
; SSE2-SCHEDULE-NEXT: fldcw -2(%rbp)
; SSE2-SCHEDULE-NEXT: fmul %st(0), %st(1)
; SSE2-SCHEDULE-NEXT: fmul %st, %st(1)
; SSE2-SCHEDULE-NEXT: movw %ax, -2(%rbp)
; SSE2-SCHEDULE-NEXT: fxch %st(1)
; SSE2-SCHEDULE-NEXT: fistl -12(%rbp)
@ -100,7 +100,7 @@ define void @_Z1fe(x86_fp80 %z) local_unnamed_addr #0 {
; SSE3-NEXT: movsd %xmm0, -24(%rbp)
; SSE3-NEXT: fsubl -24(%rbp)
; SSE3-NEXT: flds {{.*}}(%rip)
; SSE3-NEXT: fmul %st(0), %st(1)
; SSE3-NEXT: fmul %st, %st(1)
; SSE3-NEXT: fld %st(1)
; SSE3-NEXT: fisttpl -8(%rbp)
; SSE3-NEXT: xorps %xmm0, %xmm0
@ -129,7 +129,7 @@ define void @_Z1fe(x86_fp80 %z) local_unnamed_addr #0 {
; AVX-NEXT: vmovsd %xmm0, -24(%rbp)
; AVX-NEXT: fsubl -24(%rbp)
; AVX-NEXT: flds {{.*}}(%rip)
; AVX-NEXT: fmul %st(0), %st(1)
; AVX-NEXT: fmul %st, %st(1)
; AVX-NEXT: fld %st(1)
; AVX-NEXT: fisttpl -8(%rbp)
; AVX-NEXT: vcvtsi2sdl -8(%rbp), %xmm1, %xmm0

View File

@ -20,17 +20,17 @@ define void @test(<4 x i64> %a, <4 x x86_fp80> %b, <8 x x86_fp80>* %c) local_unn
; CHECK-NEXT: fld1
; CHECK-NEXT: fldz
; CHECK-NEXT: fld %st(0)
; CHECK-NEXT: fcmove %st(2), %st(0)
; CHECK-NEXT: fcmove %st(2), %st
; CHECK-NEXT: cmpq %rax, %rsi
; CHECK-NEXT: fld %st(1)
; CHECK-NEXT: fcmove %st(3), %st(0)
; CHECK-NEXT: fcmove %st(3), %st
; CHECK-NEXT: cmpq %rdx, %r9
; CHECK-NEXT: fld %st(2)
; CHECK-NEXT: fcmove %st(4), %st(0)
; CHECK-NEXT: fcmove %st(4), %st
; CHECK-NEXT: movl $1, %eax
; CHECK-NEXT: cmpq %r8, %rax
; CHECK-NEXT: fxch %st(3)
; CHECK-NEXT: fcmove %st(4), %st(0)
; CHECK-NEXT: fcmove %st(4), %st
; CHECK-NEXT: fstp %st(4)
; CHECK-NEXT: fldt {{[0-9]+}}(%rsp)
; CHECK-NEXT: fstpt 70(%rdi)
@ -40,15 +40,15 @@ define void @test(<4 x i64> %a, <4 x x86_fp80> %b, <8 x x86_fp80>* %c) local_unn
; CHECK-NEXT: fstpt 30(%rdi)
; CHECK-NEXT: fldt {{[0-9]+}}(%rsp)
; CHECK-NEXT: fstpt 10(%rdi)
; CHECK-NEXT: fadd %st(0), %st(0)
; CHECK-NEXT: fadd %st, %st(0)
; CHECK-NEXT: fstpt 60(%rdi)
; CHECK-NEXT: fxch %st(1)
; CHECK-NEXT: fadd %st(0), %st(0)
; CHECK-NEXT: fadd %st, %st(0)
; CHECK-NEXT: fstpt 40(%rdi)
; CHECK-NEXT: fxch %st(1)
; CHECK-NEXT: fadd %st(0), %st(0)
; CHECK-NEXT: fadd %st, %st(0)
; CHECK-NEXT: fstpt 20(%rdi)
; CHECK-NEXT: fadd %st(0), %st(0)
; CHECK-NEXT: fadd %st, %st(0)
; CHECK-NEXT: fstpt (%rdi)
%1 = icmp eq <4 x i64> <i64 0, i64 1, i64 2, i64 3>, %a
%2 = select <4 x i1> %1, <4 x x86_fp80> <x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000>, <4 x x86_fp80> zeroinitializer

View File

@ -1028,7 +1028,7 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; AVX512_32_WIN-NEXT: xorl %edx, %edx
; AVX512_32_WIN-NEXT: fxch %st(1)
; AVX512_32_WIN-NEXT: fucompi %st(2)
; AVX512_32_WIN-NEXT: fcmovnbe %st(1), %st(0)
; AVX512_32_WIN-NEXT: fcmovnbe %st(1), %st
; AVX512_32_WIN-NEXT: fstp %st(1)
; AVX512_32_WIN-NEXT: fisttpll (%esp)
; AVX512_32_WIN-NEXT: setbe %dl
@ -1049,7 +1049,7 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; AVX512_32_LIN-NEXT: xorl %edx, %edx
; AVX512_32_LIN-NEXT: fxch %st(1)
; AVX512_32_LIN-NEXT: fucompi %st(2)
; AVX512_32_LIN-NEXT: fcmovnbe %st(1), %st(0)
; AVX512_32_LIN-NEXT: fcmovnbe %st(1), %st
; AVX512_32_LIN-NEXT: fstp %st(1)
; AVX512_32_LIN-NEXT: fisttpll (%esp)
; AVX512_32_LIN-NEXT: setbe %dl
@ -1069,7 +1069,7 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; AVX512_64_WIN-NEXT: xorl %ecx, %ecx
; AVX512_64_WIN-NEXT: fxch %st(1)
; AVX512_64_WIN-NEXT: fucompi %st(2)
; AVX512_64_WIN-NEXT: fcmovnbe %st(1), %st(0)
; AVX512_64_WIN-NEXT: fcmovnbe %st(1), %st
; AVX512_64_WIN-NEXT: fstp %st(1)
; AVX512_64_WIN-NEXT: fisttpll (%rsp)
; AVX512_64_WIN-NEXT: setbe %cl
@ -1090,7 +1090,7 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; AVX512_64_LIN-NEXT: xorl %ecx, %ecx
; AVX512_64_LIN-NEXT: fxch %st(1)
; AVX512_64_LIN-NEXT: fucompi %st(2)
; AVX512_64_LIN-NEXT: fcmovnbe %st(1), %st(0)
; AVX512_64_LIN-NEXT: fcmovnbe %st(1), %st
; AVX512_64_LIN-NEXT: fstp %st(1)
; AVX512_64_LIN-NEXT: fisttpll -{{[0-9]+}}(%rsp)
; AVX512_64_LIN-NEXT: setbe %cl
@ -1114,7 +1114,7 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; SSE3_32_WIN-NEXT: xorl %edx, %edx
; SSE3_32_WIN-NEXT: fxch %st(1)
; SSE3_32_WIN-NEXT: fucompi %st(2)
; SSE3_32_WIN-NEXT: fcmovnbe %st(1), %st(0)
; SSE3_32_WIN-NEXT: fcmovnbe %st(1), %st
; SSE3_32_WIN-NEXT: fstp %st(1)
; SSE3_32_WIN-NEXT: fisttpll (%esp)
; SSE3_32_WIN-NEXT: setbe %dl
@ -1135,7 +1135,7 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; SSE3_32_LIN-NEXT: xorl %edx, %edx
; SSE3_32_LIN-NEXT: fxch %st(1)
; SSE3_32_LIN-NEXT: fucompi %st(2)
; SSE3_32_LIN-NEXT: fcmovnbe %st(1), %st(0)
; SSE3_32_LIN-NEXT: fcmovnbe %st(1), %st
; SSE3_32_LIN-NEXT: fstp %st(1)
; SSE3_32_LIN-NEXT: fisttpll (%esp)
; SSE3_32_LIN-NEXT: setbe %dl
@ -1155,7 +1155,7 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; SSE3_64_WIN-NEXT: xorl %eax, %eax
; SSE3_64_WIN-NEXT: fxch %st(1)
; SSE3_64_WIN-NEXT: fucompi %st(2)
; SSE3_64_WIN-NEXT: fcmovnbe %st(1), %st(0)
; SSE3_64_WIN-NEXT: fcmovnbe %st(1), %st
; SSE3_64_WIN-NEXT: fstp %st(1)
; SSE3_64_WIN-NEXT: fisttpll (%rsp)
; SSE3_64_WIN-NEXT: setbe %al
@ -1173,7 +1173,7 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; SSE3_64_LIN-NEXT: xorl %eax, %eax
; SSE3_64_LIN-NEXT: fxch %st(1)
; SSE3_64_LIN-NEXT: fucompi %st(2)
; SSE3_64_LIN-NEXT: fcmovnbe %st(1), %st(0)
; SSE3_64_LIN-NEXT: fcmovnbe %st(1), %st
; SSE3_64_LIN-NEXT: fstp %st(1)
; SSE3_64_LIN-NEXT: fisttpll -{{[0-9]+}}(%rsp)
; SSE3_64_LIN-NEXT: setbe %al
@ -1194,7 +1194,7 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; SSE2_32_WIN-NEXT: xorl %edx, %edx
; SSE2_32_WIN-NEXT: fxch %st(1)
; SSE2_32_WIN-NEXT: fucompi %st(2)
; SSE2_32_WIN-NEXT: fcmovnbe %st(1), %st(0)
; SSE2_32_WIN-NEXT: fcmovnbe %st(1), %st
; SSE2_32_WIN-NEXT: fstp %st(1)
; SSE2_32_WIN-NEXT: fnstcw {{[0-9]+}}(%esp)
; SSE2_32_WIN-NEXT: movzwl {{[0-9]+}}(%esp), %eax
@ -1221,7 +1221,7 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; SSE2_32_LIN-NEXT: xorl %edx, %edx
; SSE2_32_LIN-NEXT: fxch %st(1)
; SSE2_32_LIN-NEXT: fucompi %st(2)
; SSE2_32_LIN-NEXT: fcmovnbe %st(1), %st(0)
; SSE2_32_LIN-NEXT: fcmovnbe %st(1), %st
; SSE2_32_LIN-NEXT: fstp %st(1)
; SSE2_32_LIN-NEXT: fnstcw {{[0-9]+}}(%esp)
; SSE2_32_LIN-NEXT: movzwl {{[0-9]+}}(%esp), %eax
@ -1247,7 +1247,7 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; SSE2_64_WIN-NEXT: xorl %eax, %eax
; SSE2_64_WIN-NEXT: fxch %st(1)
; SSE2_64_WIN-NEXT: fucompi %st(2)
; SSE2_64_WIN-NEXT: fcmovnbe %st(1), %st(0)
; SSE2_64_WIN-NEXT: fcmovnbe %st(1), %st
; SSE2_64_WIN-NEXT: fstp %st(1)
; SSE2_64_WIN-NEXT: fnstcw {{[0-9]+}}(%rsp)
; SSE2_64_WIN-NEXT: movzwl {{[0-9]+}}(%rsp), %ecx
@ -1271,7 +1271,7 @@ define i64 @x_to_u64(x86_fp80 %a) nounwind {
; SSE2_64_LIN-NEXT: xorl %eax, %eax
; SSE2_64_LIN-NEXT: fxch %st(1)
; SSE2_64_LIN-NEXT: fucompi %st(2)
; SSE2_64_LIN-NEXT: fcmovnbe %st(1), %st(0)
; SSE2_64_LIN-NEXT: fcmovnbe %st(1), %st
; SSE2_64_LIN-NEXT: fstp %st(1)
; SSE2_64_LIN-NEXT: fnstcw -{{[0-9]+}}(%rsp)
; SSE2_64_LIN-NEXT: movzwl -{{[0-9]+}}(%rsp), %ecx

View File

@ -293,25 +293,25 @@ define void @test6(i32 %C, <4 x float>* %A, <4 x float>* %B) nounwind {
; ATHLON-NEXT: flds 4(%ecx)
; ATHLON-NEXT: flds (%ecx)
; ATHLON-NEXT: flds (%eax)
; ATHLON-NEXT: fmul %st(0), %st(0)
; ATHLON-NEXT: fmul %st, %st(0)
; ATHLON-NEXT: cmpl $0, {{[0-9]+}}(%esp)
; ATHLON-NEXT: fxch %st(1)
; ATHLON-NEXT: fcmove %st(1), %st(0)
; ATHLON-NEXT: fcmove %st(1), %st
; ATHLON-NEXT: fstp %st(1)
; ATHLON-NEXT: flds 4(%eax)
; ATHLON-NEXT: fmul %st(0), %st(0)
; ATHLON-NEXT: fmul %st, %st(0)
; ATHLON-NEXT: fxch %st(2)
; ATHLON-NEXT: fcmove %st(2), %st(0)
; ATHLON-NEXT: fcmove %st(2), %st
; ATHLON-NEXT: fstp %st(2)
; ATHLON-NEXT: flds 8(%eax)
; ATHLON-NEXT: fmul %st(0), %st(0)
; ATHLON-NEXT: fmul %st, %st(0)
; ATHLON-NEXT: fxch %st(3)
; ATHLON-NEXT: fcmove %st(3), %st(0)
; ATHLON-NEXT: fcmove %st(3), %st
; ATHLON-NEXT: fstp %st(3)
; ATHLON-NEXT: flds 12(%eax)
; ATHLON-NEXT: fmul %st(0), %st(0)
; ATHLON-NEXT: fmul %st, %st(0)
; ATHLON-NEXT: fxch %st(4)
; ATHLON-NEXT: fcmove %st(4), %st(0)
; ATHLON-NEXT: fcmove %st(4), %st
; ATHLON-NEXT: fstp %st(4)
; ATHLON-NEXT: fxch %st(3)
; ATHLON-NEXT: fstps 12(%ecx)
@ -332,13 +332,13 @@ define void @test6(i32 %C, <4 x float>* %A, <4 x float>* %B) nounwind {
; MCU-NEXT: flds 4(%ecx)
; MCU-NEXT: flds 8(%ecx)
; MCU-NEXT: flds 12(%ecx)
; MCU-NEXT: fmul %st(0), %st(0)
; MCU-NEXT: fmul %st, %st(0)
; MCU-NEXT: fxch %st(1)
; MCU-NEXT: fmul %st(0), %st(0)
; MCU-NEXT: fmul %st, %st(0)
; MCU-NEXT: fxch %st(2)
; MCU-NEXT: fmul %st(0), %st(0)
; MCU-NEXT: fmul %st, %st(0)
; MCU-NEXT: fxch %st(3)
; MCU-NEXT: fmul %st(0), %st(0)
; MCU-NEXT: fmul %st, %st(0)
; MCU-NEXT: testl %eax, %eax
; MCU-NEXT: flds (%edx)
; MCU-NEXT: je .LBB5_2

View File

@ -180,7 +180,7 @@ define void @test_fadd(float *%a0, double *%a1) optsize {
; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax
; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
; GENERIC-NEXT: #APP
; GENERIC-NEXT: fadd %st(0), %st(1)
; GENERIC-NEXT: fadd %st, %st(1)
; GENERIC-NEXT: fadd %st(2)
; GENERIC-NEXT: fadds (%ecx)
; GENERIC-NEXT: faddl (%eax)
@ -192,7 +192,7 @@ define void @test_fadd(float *%a0, double *%a1) optsize {
; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00]
; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00]
; ATOM-NEXT: #APP
; ATOM-NEXT: fadd %st(0), %st(1) # sched: [5:5.00]
; ATOM-NEXT: fadd %st, %st(1) # sched: [5:5.00]
; ATOM-NEXT: fadd %st(2) # sched: [5:5.00]
; ATOM-NEXT: fadds (%ecx) # sched: [5:5.00]
; ATOM-NEXT: faddl (%eax) # sched: [5:5.00]
@ -204,7 +204,7 @@ define void @test_fadd(float *%a0, double *%a1) optsize {
; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00]
; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00]
; SLM-NEXT: #APP
; SLM-NEXT: fadd %st(0), %st(1) # sched: [3:1.00]
; SLM-NEXT: fadd %st, %st(1) # sched: [3:1.00]
; SLM-NEXT: fadd %st(2) # sched: [3:1.00]
; SLM-NEXT: fadds (%ecx) # sched: [6:1.00]
; SLM-NEXT: faddl (%eax) # sched: [6:1.00]
@ -216,7 +216,7 @@ define void @test_fadd(float *%a0, double *%a1) optsize {
; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SANDY-NEXT: #APP
; SANDY-NEXT: fadd %st(0), %st(1) # sched: [3:1.00]
; SANDY-NEXT: fadd %st, %st(1) # sched: [3:1.00]
; SANDY-NEXT: fadd %st(2) # sched: [3:1.00]
; SANDY-NEXT: fadds (%ecx) # sched: [10:1.00]
; SANDY-NEXT: faddl (%eax) # sched: [10:1.00]
@ -228,7 +228,7 @@ define void @test_fadd(float *%a0, double *%a1) optsize {
; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; HASWELL-NEXT: #APP
; HASWELL-NEXT: fadd %st(0), %st(1) # sched: [3:1.00]
; HASWELL-NEXT: fadd %st, %st(1) # sched: [3:1.00]
; HASWELL-NEXT: fadd %st(2) # sched: [3:1.00]
; HASWELL-NEXT: fadds (%ecx) # sched: [10:1.00]
; HASWELL-NEXT: faddl (%eax) # sched: [10:1.00]
@ -240,7 +240,7 @@ define void @test_fadd(float *%a0, double *%a1) optsize {
; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; BROADWELL-NEXT: #APP
; BROADWELL-NEXT: fadd %st(0), %st(1) # sched: [3:1.00]
; BROADWELL-NEXT: fadd %st, %st(1) # sched: [3:1.00]
; BROADWELL-NEXT: fadd %st(2) # sched: [3:1.00]
; BROADWELL-NEXT: fadds (%ecx) # sched: [9:1.00]
; BROADWELL-NEXT: faddl (%eax) # sched: [9:1.00]
@ -252,7 +252,7 @@ define void @test_fadd(float *%a0, double *%a1) optsize {
; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SKYLAKE-NEXT: #APP
; SKYLAKE-NEXT: fadd %st(0), %st(1) # sched: [3:1.00]
; SKYLAKE-NEXT: fadd %st, %st(1) # sched: [3:1.00]
; SKYLAKE-NEXT: fadd %st(2) # sched: [3:1.00]
; SKYLAKE-NEXT: fadds (%ecx) # sched: [10:1.00]
; SKYLAKE-NEXT: faddl (%eax) # sched: [10:1.00]
@ -264,7 +264,7 @@ define void @test_fadd(float *%a0, double *%a1) optsize {
; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SKX-NEXT: #APP
; SKX-NEXT: fadd %st(0), %st(1) # sched: [3:1.00]
; SKX-NEXT: fadd %st, %st(1) # sched: [3:1.00]
; SKX-NEXT: fadd %st(2) # sched: [3:1.00]
; SKX-NEXT: fadds (%ecx) # sched: [10:1.00]
; SKX-NEXT: faddl (%eax) # sched: [10:1.00]
@ -276,7 +276,7 @@ define void @test_fadd(float *%a0, double *%a1) optsize {
; BDVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; BDVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; BDVER2-NEXT: #APP
; BDVER2-NEXT: fadd %st(0), %st(1) # sched: [5:1.00]
; BDVER2-NEXT: fadd %st, %st(1) # sched: [5:1.00]
; BDVER2-NEXT: fadd %st(2) # sched: [5:1.00]
; BDVER2-NEXT: fadds (%ecx) # sched: [10:1.00]
; BDVER2-NEXT: faddl (%eax) # sched: [10:1.00]
@ -288,7 +288,7 @@ define void @test_fadd(float *%a0, double *%a1) optsize {
; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00]
; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00]
; BTVER2-NEXT: #APP
; BTVER2-NEXT: fadd %st(0), %st(1) # sched: [3:1.00]
; BTVER2-NEXT: fadd %st, %st(1) # sched: [3:1.00]
; BTVER2-NEXT: fadd %st(2) # sched: [3:1.00]
; BTVER2-NEXT: fadds (%ecx) # sched: [8:1.00]
; BTVER2-NEXT: faddl (%eax) # sched: [8:1.00]
@ -300,7 +300,7 @@ define void @test_fadd(float *%a0, double *%a1) optsize {
; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50]
; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50]
; ZNVER1-NEXT: #APP
; ZNVER1-NEXT: fadd %st(0), %st(1) # sched: [3:1.00]
; ZNVER1-NEXT: fadd %st, %st(1) # sched: [3:1.00]
; ZNVER1-NEXT: fadd %st(2) # sched: [3:1.00]
; ZNVER1-NEXT: fadds (%ecx) # sched: [10:1.00]
; ZNVER1-NEXT: faddl (%eax) # sched: [10:1.00]
@ -807,154 +807,154 @@ define void @test_fcmov() optsize {
; GENERIC-LABEL: test_fcmov:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
; GENERIC-NEXT: fcmovb %st(1), %st(0)
; GENERIC-NEXT: fcmovbe %st(1), %st(0)
; GENERIC-NEXT: fcmove %st(1), %st(0)
; GENERIC-NEXT: fcmovnb %st(1), %st(0)
; GENERIC-NEXT: fcmovnbe %st(1), %st(0)
; GENERIC-NEXT: fcmovne %st(1), %st(0)
; GENERIC-NEXT: fcmovnu %st(1), %st(0)
; GENERIC-NEXT: fcmovu %st(1), %st(0)
; GENERIC-NEXT: fcmovb %st(1), %st
; GENERIC-NEXT: fcmovbe %st(1), %st
; GENERIC-NEXT: fcmove %st(1), %st
; GENERIC-NEXT: fcmovnb %st(1), %st
; GENERIC-NEXT: fcmovnbe %st(1), %st
; GENERIC-NEXT: fcmovne %st(1), %st
; GENERIC-NEXT: fcmovnu %st(1), %st
; GENERIC-NEXT: fcmovu %st(1), %st
; GENERIC-NEXT: #NO_APP
; GENERIC-NEXT: retl
;
; ATOM-LABEL: test_fcmov:
; ATOM: # %bb.0:
; ATOM-NEXT: #APP
; ATOM-NEXT: fcmovb %st(1), %st(0) # sched: [9:4.50]
; ATOM-NEXT: fcmovbe %st(1), %st(0) # sched: [9:4.50]
; ATOM-NEXT: fcmove %st(1), %st(0) # sched: [9:4.50]
; ATOM-NEXT: fcmovnb %st(1), %st(0) # sched: [9:4.50]
; ATOM-NEXT: fcmovnbe %st(1), %st(0) # sched: [9:4.50]
; ATOM-NEXT: fcmovne %st(1), %st(0) # sched: [9:4.50]
; ATOM-NEXT: fcmovnu %st(1), %st(0) # sched: [9:4.50]
; ATOM-NEXT: fcmovu %st(1), %st(0) # sched: [9:4.50]
; ATOM-NEXT: fcmovb %st(1), %st # sched: [9:4.50]
; ATOM-NEXT: fcmovbe %st(1), %st # sched: [9:4.50]
; ATOM-NEXT: fcmove %st(1), %st # sched: [9:4.50]
; ATOM-NEXT: fcmovnb %st(1), %st # sched: [9:4.50]
; ATOM-NEXT: fcmovnbe %st(1), %st # sched: [9:4.50]
; ATOM-NEXT: fcmovne %st(1), %st # sched: [9:4.50]
; ATOM-NEXT: fcmovnu %st(1), %st # sched: [9:4.50]
; ATOM-NEXT: fcmovu %st(1), %st # sched: [9:4.50]
; ATOM-NEXT: #NO_APP
; ATOM-NEXT: retl # sched: [79:39.50]
;
; SLM-LABEL: test_fcmov:
; SLM: # %bb.0:
; SLM-NEXT: #APP
; SLM-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00]
; SLM-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00]
; SLM-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00]
; SLM-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00]
; SLM-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00]
; SLM-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00]
; SLM-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00]
; SLM-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00]
; SLM-NEXT: fcmovb %st(1), %st # sched: [3:1.00]
; SLM-NEXT: fcmovbe %st(1), %st # sched: [3:1.00]
; SLM-NEXT: fcmove %st(1), %st # sched: [3:1.00]
; SLM-NEXT: fcmovnb %st(1), %st # sched: [3:1.00]
; SLM-NEXT: fcmovnbe %st(1), %st # sched: [3:1.00]
; SLM-NEXT: fcmovne %st(1), %st # sched: [3:1.00]
; SLM-NEXT: fcmovnu %st(1), %st # sched: [3:1.00]
; SLM-NEXT: fcmovu %st(1), %st # sched: [3:1.00]
; SLM-NEXT: #NO_APP
; SLM-NEXT: retl # sched: [4:1.00]
;
; SANDY-LABEL: test_fcmov:
; SANDY: # %bb.0:
; SANDY-NEXT: #APP
; SANDY-NEXT: fcmovb %st(1), %st(0) # sched: [3:2.00]
; SANDY-NEXT: fcmovbe %st(1), %st(0) # sched: [3:2.00]
; SANDY-NEXT: fcmove %st(1), %st(0) # sched: [3:2.00]
; SANDY-NEXT: fcmovnb %st(1), %st(0) # sched: [3:2.00]
; SANDY-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:2.00]
; SANDY-NEXT: fcmovne %st(1), %st(0) # sched: [3:2.00]
; SANDY-NEXT: fcmovnu %st(1), %st(0) # sched: [3:2.00]
; SANDY-NEXT: fcmovu %st(1), %st(0) # sched: [3:2.00]
; SANDY-NEXT: fcmovb %st(1), %st # sched: [3:2.00]
; SANDY-NEXT: fcmovbe %st(1), %st # sched: [3:2.00]
; SANDY-NEXT: fcmove %st(1), %st # sched: [3:2.00]
; SANDY-NEXT: fcmovnb %st(1), %st # sched: [3:2.00]
; SANDY-NEXT: fcmovnbe %st(1), %st # sched: [3:2.00]
; SANDY-NEXT: fcmovne %st(1), %st # sched: [3:2.00]
; SANDY-NEXT: fcmovnu %st(1), %st # sched: [3:2.00]
; SANDY-NEXT: fcmovu %st(1), %st # sched: [3:2.00]
; SANDY-NEXT: #NO_APP
; SANDY-NEXT: retl # sched: [6:1.00]
;
; HASWELL-LABEL: test_fcmov:
; HASWELL: # %bb.0:
; HASWELL-NEXT: #APP
; HASWELL-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00]
; HASWELL-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00]
; HASWELL-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00]
; HASWELL-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00]
; HASWELL-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00]
; HASWELL-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00]
; HASWELL-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00]
; HASWELL-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00]
; HASWELL-NEXT: fcmovb %st(1), %st # sched: [3:1.00]
; HASWELL-NEXT: fcmovbe %st(1), %st # sched: [3:1.00]
; HASWELL-NEXT: fcmove %st(1), %st # sched: [3:1.00]
; HASWELL-NEXT: fcmovnb %st(1), %st # sched: [3:1.00]
; HASWELL-NEXT: fcmovnbe %st(1), %st # sched: [3:1.00]
; HASWELL-NEXT: fcmovne %st(1), %st # sched: [3:1.00]
; HASWELL-NEXT: fcmovnu %st(1), %st # sched: [3:1.00]
; HASWELL-NEXT: fcmovu %st(1), %st # sched: [3:1.00]
; HASWELL-NEXT: #NO_APP
; HASWELL-NEXT: retl # sched: [7:1.00]
;
; BROADWELL-LABEL: test_fcmov:
; BROADWELL: # %bb.0:
; BROADWELL-NEXT: #APP
; BROADWELL-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00]
; BROADWELL-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00]
; BROADWELL-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00]
; BROADWELL-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00]
; BROADWELL-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00]
; BROADWELL-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00]
; BROADWELL-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00]
; BROADWELL-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00]
; BROADWELL-NEXT: fcmovb %st(1), %st # sched: [3:1.00]
; BROADWELL-NEXT: fcmovbe %st(1), %st # sched: [3:1.00]
; BROADWELL-NEXT: fcmove %st(1), %st # sched: [3:1.00]
; BROADWELL-NEXT: fcmovnb %st(1), %st # sched: [3:1.00]
; BROADWELL-NEXT: fcmovnbe %st(1), %st # sched: [3:1.00]
; BROADWELL-NEXT: fcmovne %st(1), %st # sched: [3:1.00]
; BROADWELL-NEXT: fcmovnu %st(1), %st # sched: [3:1.00]
; BROADWELL-NEXT: fcmovu %st(1), %st # sched: [3:1.00]
; BROADWELL-NEXT: #NO_APP
; BROADWELL-NEXT: retl # sched: [6:0.50]
;
; SKYLAKE-LABEL: test_fcmov:
; SKYLAKE: # %bb.0:
; SKYLAKE-NEXT: #APP
; SKYLAKE-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00]
; SKYLAKE-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovb %st(1), %st # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovbe %st(1), %st # sched: [3:1.00]
; SKYLAKE-NEXT: fcmove %st(1), %st # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovnb %st(1), %st # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovnbe %st(1), %st # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovne %st(1), %st # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovnu %st(1), %st # sched: [3:1.00]
; SKYLAKE-NEXT: fcmovu %st(1), %st # sched: [3:1.00]
; SKYLAKE-NEXT: #NO_APP
; SKYLAKE-NEXT: retl # sched: [6:0.50]
;
; SKX-LABEL: test_fcmov:
; SKX: # %bb.0:
; SKX-NEXT: #APP
; SKX-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00]
; SKX-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00]
; SKX-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00]
; SKX-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00]
; SKX-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00]
; SKX-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00]
; SKX-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00]
; SKX-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00]
; SKX-NEXT: fcmovb %st(1), %st # sched: [3:1.00]
; SKX-NEXT: fcmovbe %st(1), %st # sched: [3:1.00]
; SKX-NEXT: fcmove %st(1), %st # sched: [3:1.00]
; SKX-NEXT: fcmovnb %st(1), %st # sched: [3:1.00]
; SKX-NEXT: fcmovnbe %st(1), %st # sched: [3:1.00]
; SKX-NEXT: fcmovne %st(1), %st # sched: [3:1.00]
; SKX-NEXT: fcmovnu %st(1), %st # sched: [3:1.00]
; SKX-NEXT: fcmovu %st(1), %st # sched: [3:1.00]
; SKX-NEXT: #NO_APP
; SKX-NEXT: retl # sched: [6:0.50]
;
; BDVER2-LABEL: test_fcmov:
; BDVER2: # %bb.0:
; BDVER2-NEXT: #APP
; BDVER2-NEXT: fcmovb %st(1), %st(0) # sched: [1:1.00]
; BDVER2-NEXT: fcmovbe %st(1), %st(0) # sched: [1:1.00]
; BDVER2-NEXT: fcmove %st(1), %st(0) # sched: [1:1.00]
; BDVER2-NEXT: fcmovnb %st(1), %st(0) # sched: [1:1.00]
; BDVER2-NEXT: fcmovnbe %st(1), %st(0) # sched: [1:1.00]
; BDVER2-NEXT: fcmovne %st(1), %st(0) # sched: [1:1.00]
; BDVER2-NEXT: fcmovnu %st(1), %st(0) # sched: [1:1.00]
; BDVER2-NEXT: fcmovu %st(1), %st(0) # sched: [1:1.00]
; BDVER2-NEXT: fcmovb %st(1), %st # sched: [1:1.00]
; BDVER2-NEXT: fcmovbe %st(1), %st # sched: [1:1.00]
; BDVER2-NEXT: fcmove %st(1), %st # sched: [1:1.00]
; BDVER2-NEXT: fcmovnb %st(1), %st # sched: [1:1.00]
; BDVER2-NEXT: fcmovnbe %st(1), %st # sched: [1:1.00]
; BDVER2-NEXT: fcmovne %st(1), %st # sched: [1:1.00]
; BDVER2-NEXT: fcmovnu %st(1), %st # sched: [1:1.00]
; BDVER2-NEXT: fcmovu %st(1), %st # sched: [1:1.00]
; BDVER2-NEXT: #NO_APP
; BDVER2-NEXT: retl # sched: [5:1.00]
;
; BTVER2-LABEL: test_fcmov:
; BTVER2: # %bb.0:
; BTVER2-NEXT: #APP
; BTVER2-NEXT: fcmovb %st(1), %st(0) # sched: [3:1.00]
; BTVER2-NEXT: fcmovbe %st(1), %st(0) # sched: [3:1.00]
; BTVER2-NEXT: fcmove %st(1), %st(0) # sched: [3:1.00]
; BTVER2-NEXT: fcmovnb %st(1), %st(0) # sched: [3:1.00]
; BTVER2-NEXT: fcmovnbe %st(1), %st(0) # sched: [3:1.00]
; BTVER2-NEXT: fcmovne %st(1), %st(0) # sched: [3:1.00]
; BTVER2-NEXT: fcmovnu %st(1), %st(0) # sched: [3:1.00]
; BTVER2-NEXT: fcmovu %st(1), %st(0) # sched: [3:1.00]
; BTVER2-NEXT: fcmovb %st(1), %st # sched: [3:1.00]
; BTVER2-NEXT: fcmovbe %st(1), %st # sched: [3:1.00]
; BTVER2-NEXT: fcmove %st(1), %st # sched: [3:1.00]
; BTVER2-NEXT: fcmovnb %st(1), %st # sched: [3:1.00]
; BTVER2-NEXT: fcmovnbe %st(1), %st # sched: [3:1.00]
; BTVER2-NEXT: fcmovne %st(1), %st # sched: [3:1.00]
; BTVER2-NEXT: fcmovnu %st(1), %st # sched: [3:1.00]
; BTVER2-NEXT: fcmovu %st(1), %st # sched: [3:1.00]
; BTVER2-NEXT: #NO_APP
; BTVER2-NEXT: retl # sched: [4:1.00]
;
; ZNVER1-LABEL: test_fcmov:
; ZNVER1: # %bb.0:
; ZNVER1-NEXT: #APP
; ZNVER1-NEXT: fcmovb %st(1), %st(0) # sched: [100:0.25]
; ZNVER1-NEXT: fcmovbe %st(1), %st(0) # sched: [100:0.25]
; ZNVER1-NEXT: fcmove %st(1), %st(0) # sched: [100:0.25]
; ZNVER1-NEXT: fcmovnb %st(1), %st(0) # sched: [100:0.25]
; ZNVER1-NEXT: fcmovnbe %st(1), %st(0) # sched: [100:0.25]
; ZNVER1-NEXT: fcmovne %st(1), %st(0) # sched: [100:0.25]
; ZNVER1-NEXT: fcmovnu %st(1), %st(0) # sched: [100:0.25]
; ZNVER1-NEXT: fcmovu %st(1), %st(0) # sched: [100:0.25]
; ZNVER1-NEXT: fcmovb %st(1), %st # sched: [100:0.25]
; ZNVER1-NEXT: fcmovbe %st(1), %st # sched: [100:0.25]
; ZNVER1-NEXT: fcmove %st(1), %st # sched: [100:0.25]
; ZNVER1-NEXT: fcmovnb %st(1), %st # sched: [100:0.25]
; ZNVER1-NEXT: fcmovnbe %st(1), %st # sched: [100:0.25]
; ZNVER1-NEXT: fcmovne %st(1), %st # sched: [100:0.25]
; ZNVER1-NEXT: fcmovnu %st(1), %st # sched: [100:0.25]
; ZNVER1-NEXT: fcmovu %st(1), %st # sched: [100:0.25]
; ZNVER1-NEXT: #NO_APP
; ZNVER1-NEXT: retl # sched: [1:0.50]
tail call void asm sideeffect "fcmovb %st(1), %st(0) \0A\09 fcmovbe %st(1), %st(0) \0A\09 fcmove %st(1), %st(0) \0A\09 fcmovnb %st(1), %st(0) \0A\09 fcmovnbe %st(1), %st(0) \0A\09 fcmovne %st(1), %st(0) \0A\09 fcmovnu %st(1), %st(0) \0A\09 fcmovu %st(1), %st(0)", ""() nounwind
@ -1504,7 +1504,7 @@ define void @test_fdiv(float *%a0, double *%a1) optsize {
; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax
; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
; GENERIC-NEXT: #APP
; GENERIC-NEXT: fdiv %st(0), %st(1)
; GENERIC-NEXT: fdiv %st, %st(1)
; GENERIC-NEXT: fdiv %st(2)
; GENERIC-NEXT: fdivs (%ecx)
; GENERIC-NEXT: fdivl (%eax)
@ -1516,7 +1516,7 @@ define void @test_fdiv(float *%a0, double *%a1) optsize {
; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00]
; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00]
; ATOM-NEXT: #APP
; ATOM-NEXT: fdiv %st(0), %st(1) # sched: [34:17.00]
; ATOM-NEXT: fdiv %st, %st(1) # sched: [34:17.00]
; ATOM-NEXT: fdiv %st(2) # sched: [34:17.00]
; ATOM-NEXT: fdivs (%ecx) # sched: [34:17.00]
; ATOM-NEXT: fdivl (%eax) # sched: [34:17.00]
@ -1528,7 +1528,7 @@ define void @test_fdiv(float *%a0, double *%a1) optsize {
; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00]
; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00]
; SLM-NEXT: #APP
; SLM-NEXT: fdiv %st(0), %st(1) # sched: [19:17.00]
; SLM-NEXT: fdiv %st, %st(1) # sched: [19:17.00]
; SLM-NEXT: fdiv %st(2) # sched: [19:17.00]
; SLM-NEXT: fdivs (%ecx) # sched: [22:17.00]
; SLM-NEXT: fdivl (%eax) # sched: [22:17.00]
@ -1540,7 +1540,7 @@ define void @test_fdiv(float *%a0, double *%a1) optsize {
; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SANDY-NEXT: #APP
; SANDY-NEXT: fdiv %st(0), %st(1) # sched: [14:14.00]
; SANDY-NEXT: fdiv %st, %st(1) # sched: [14:14.00]
; SANDY-NEXT: fdiv %st(2) # sched: [14:14.00]
; SANDY-NEXT: fdivs (%ecx) # sched: [31:1.00]
; SANDY-NEXT: fdivl (%eax) # sched: [31:1.00]
@ -1552,7 +1552,7 @@ define void @test_fdiv(float *%a0, double *%a1) optsize {
; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; HASWELL-NEXT: #APP
; HASWELL-NEXT: fdiv %st(0), %st(1) # sched: [24:1.00]
; HASWELL-NEXT: fdiv %st, %st(1) # sched: [24:1.00]
; HASWELL-NEXT: fdiv %st(2) # sched: [20:1.00]
; HASWELL-NEXT: fdivs (%ecx) # sched: [31:1.00]
; HASWELL-NEXT: fdivl (%eax) # sched: [31:1.00]
@ -1564,7 +1564,7 @@ define void @test_fdiv(float *%a0, double *%a1) optsize {
; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; BROADWELL-NEXT: #APP
; BROADWELL-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00]
; BROADWELL-NEXT: fdiv %st, %st(1) # sched: [15:1.00]
; BROADWELL-NEXT: fdiv %st(2) # sched: [20:1.00]
; BROADWELL-NEXT: fdivs (%ecx) # sched: [21:1.00]
; BROADWELL-NEXT: fdivl (%eax) # sched: [21:1.00]
@ -1576,7 +1576,7 @@ define void @test_fdiv(float *%a0, double *%a1) optsize {
; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SKYLAKE-NEXT: #APP
; SKYLAKE-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00]
; SKYLAKE-NEXT: fdiv %st, %st(1) # sched: [15:1.00]
; SKYLAKE-NEXT: fdiv %st(2) # sched: [20:1.00]
; SKYLAKE-NEXT: fdivs (%ecx) # sched: [22:1.00]
; SKYLAKE-NEXT: fdivl (%eax) # sched: [22:1.00]
@ -1588,7 +1588,7 @@ define void @test_fdiv(float *%a0, double *%a1) optsize {
; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SKX-NEXT: #APP
; SKX-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00]
; SKX-NEXT: fdiv %st, %st(1) # sched: [15:1.00]
; SKX-NEXT: fdiv %st(2) # sched: [20:1.00]
; SKX-NEXT: fdivs (%ecx) # sched: [22:1.00]
; SKX-NEXT: fdivl (%eax) # sched: [22:1.00]
@ -1600,7 +1600,7 @@ define void @test_fdiv(float *%a0, double *%a1) optsize {
; BDVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; BDVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; BDVER2-NEXT: #APP
; BDVER2-NEXT: fdiv %st(0), %st(1) # sched: [9:9.50]
; BDVER2-NEXT: fdiv %st, %st(1) # sched: [9:9.50]
; BDVER2-NEXT: fdiv %st(2) # sched: [9:9.50]
; BDVER2-NEXT: fdivs (%ecx) # sched: [14:9.50]
; BDVER2-NEXT: fdivl (%eax) # sched: [14:9.50]
@ -1612,7 +1612,7 @@ define void @test_fdiv(float *%a0, double *%a1) optsize {
; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00]
; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00]
; BTVER2-NEXT: #APP
; BTVER2-NEXT: fdiv %st(0), %st(1) # sched: [19:19.00]
; BTVER2-NEXT: fdiv %st, %st(1) # sched: [19:19.00]
; BTVER2-NEXT: fdiv %st(2) # sched: [19:19.00]
; BTVER2-NEXT: fdivs (%ecx) # sched: [24:19.00]
; BTVER2-NEXT: fdivl (%eax) # sched: [24:19.00]
@ -1624,7 +1624,7 @@ define void @test_fdiv(float *%a0, double *%a1) optsize {
; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50]
; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50]
; ZNVER1-NEXT: #APP
; ZNVER1-NEXT: fdiv %st(0), %st(1) # sched: [15:1.00]
; ZNVER1-NEXT: fdiv %st, %st(1) # sched: [15:1.00]
; ZNVER1-NEXT: fdiv %st(2) # sched: [15:1.00]
; ZNVER1-NEXT: fdivs (%ecx) # sched: [22:1.00]
; ZNVER1-NEXT: fdivl (%eax) # sched: [22:1.00]
@ -1776,7 +1776,7 @@ define void @test_fdivr(float *%a0, double *%a1) optsize {
; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax
; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
; GENERIC-NEXT: #APP
; GENERIC-NEXT: fdivr %st(0), %st(1)
; GENERIC-NEXT: fdivr %st, %st(1)
; GENERIC-NEXT: fdivr %st(2)
; GENERIC-NEXT: fdivrs (%ecx)
; GENERIC-NEXT: fdivrl (%eax)
@ -1788,7 +1788,7 @@ define void @test_fdivr(float *%a0, double *%a1) optsize {
; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00]
; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00]
; ATOM-NEXT: #APP
; ATOM-NEXT: fdivr %st(0), %st(1) # sched: [34:17.00]
; ATOM-NEXT: fdivr %st, %st(1) # sched: [34:17.00]
; ATOM-NEXT: fdivr %st(2) # sched: [34:17.00]
; ATOM-NEXT: fdivrs (%ecx) # sched: [34:17.00]
; ATOM-NEXT: fdivrl (%eax) # sched: [34:17.00]
@ -1800,7 +1800,7 @@ define void @test_fdivr(float *%a0, double *%a1) optsize {
; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00]
; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00]
; SLM-NEXT: #APP
; SLM-NEXT: fdivr %st(0), %st(1) # sched: [19:17.00]
; SLM-NEXT: fdivr %st, %st(1) # sched: [19:17.00]
; SLM-NEXT: fdivr %st(2) # sched: [19:17.00]
; SLM-NEXT: fdivrs (%ecx) # sched: [22:17.00]
; SLM-NEXT: fdivrl (%eax) # sched: [22:17.00]
@ -1812,7 +1812,7 @@ define void @test_fdivr(float *%a0, double *%a1) optsize {
; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SANDY-NEXT: #APP
; SANDY-NEXT: fdivr %st(0), %st(1) # sched: [14:14.00]
; SANDY-NEXT: fdivr %st, %st(1) # sched: [14:14.00]
; SANDY-NEXT: fdivr %st(2) # sched: [14:14.00]
; SANDY-NEXT: fdivrs (%ecx) # sched: [31:1.00]
; SANDY-NEXT: fdivrl (%eax) # sched: [31:1.00]
@ -1824,7 +1824,7 @@ define void @test_fdivr(float *%a0, double *%a1) optsize {
; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; HASWELL-NEXT: #APP
; HASWELL-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00]
; HASWELL-NEXT: fdivr %st, %st(1) # sched: [20:1.00]
; HASWELL-NEXT: fdivr %st(2) # sched: [24:1.00]
; HASWELL-NEXT: fdivrs (%ecx) # sched: [27:1.00]
; HASWELL-NEXT: fdivrl (%eax) # sched: [27:1.00]
@ -1836,7 +1836,7 @@ define void @test_fdivr(float *%a0, double *%a1) optsize {
; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; BROADWELL-NEXT: #APP
; BROADWELL-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00]
; BROADWELL-NEXT: fdivr %st, %st(1) # sched: [20:1.00]
; BROADWELL-NEXT: fdivr %st(2) # sched: [15:1.00]
; BROADWELL-NEXT: fdivrs (%ecx) # sched: [26:1.00]
; BROADWELL-NEXT: fdivrl (%eax) # sched: [26:1.00]
@ -1848,7 +1848,7 @@ define void @test_fdivr(float *%a0, double *%a1) optsize {
; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SKYLAKE-NEXT: #APP
; SKYLAKE-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00]
; SKYLAKE-NEXT: fdivr %st, %st(1) # sched: [20:1.00]
; SKYLAKE-NEXT: fdivr %st(2) # sched: [15:1.00]
; SKYLAKE-NEXT: fdivrs (%ecx) # sched: [27:1.00]
; SKYLAKE-NEXT: fdivrl (%eax) # sched: [27:1.00]
@ -1860,7 +1860,7 @@ define void @test_fdivr(float *%a0, double *%a1) optsize {
; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SKX-NEXT: #APP
; SKX-NEXT: fdivr %st(0), %st(1) # sched: [20:1.00]
; SKX-NEXT: fdivr %st, %st(1) # sched: [20:1.00]
; SKX-NEXT: fdivr %st(2) # sched: [15:1.00]
; SKX-NEXT: fdivrs (%ecx) # sched: [27:1.00]
; SKX-NEXT: fdivrl (%eax) # sched: [27:1.00]
@ -1872,7 +1872,7 @@ define void @test_fdivr(float *%a0, double *%a1) optsize {
; BDVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; BDVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; BDVER2-NEXT: #APP
; BDVER2-NEXT: fdivr %st(0), %st(1) # sched: [9:9.50]
; BDVER2-NEXT: fdivr %st, %st(1) # sched: [9:9.50]
; BDVER2-NEXT: fdivr %st(2) # sched: [9:9.50]
; BDVER2-NEXT: fdivrs (%ecx) # sched: [14:9.50]
; BDVER2-NEXT: fdivrl (%eax) # sched: [14:9.50]
@ -1884,7 +1884,7 @@ define void @test_fdivr(float *%a0, double *%a1) optsize {
; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00]
; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00]
; BTVER2-NEXT: #APP
; BTVER2-NEXT: fdivr %st(0), %st(1) # sched: [19:19.00]
; BTVER2-NEXT: fdivr %st, %st(1) # sched: [19:19.00]
; BTVER2-NEXT: fdivr %st(2) # sched: [19:19.00]
; BTVER2-NEXT: fdivrs (%ecx) # sched: [24:19.00]
; BTVER2-NEXT: fdivrl (%eax) # sched: [24:19.00]
@ -1896,7 +1896,7 @@ define void @test_fdivr(float *%a0, double *%a1) optsize {
; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50]
; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50]
; ZNVER1-NEXT: #APP
; ZNVER1-NEXT: fdivr %st(0), %st(1) # sched: [15:1.00]
; ZNVER1-NEXT: fdivr %st, %st(1) # sched: [15:1.00]
; ZNVER1-NEXT: fdivr %st(2) # sched: [15:1.00]
; ZNVER1-NEXT: fdivrs (%ecx) # sched: [22:1.00]
; ZNVER1-NEXT: fdivrl (%eax) # sched: [22:1.00]
@ -3243,7 +3243,7 @@ define void @test_fmul(float *%a0, double *%a1) optsize {
; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax
; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
; GENERIC-NEXT: #APP
; GENERIC-NEXT: fmul %st(0), %st(1)
; GENERIC-NEXT: fmul %st, %st(1)
; GENERIC-NEXT: fmul %st(2)
; GENERIC-NEXT: fmuls (%ecx)
; GENERIC-NEXT: fmull (%eax)
@ -3255,7 +3255,7 @@ define void @test_fmul(float *%a0, double *%a1) optsize {
; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00]
; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00]
; ATOM-NEXT: #APP
; ATOM-NEXT: fmul %st(0), %st(1) # sched: [4:4.00]
; ATOM-NEXT: fmul %st, %st(1) # sched: [4:4.00]
; ATOM-NEXT: fmul %st(2) # sched: [4:4.00]
; ATOM-NEXT: fmuls (%ecx) # sched: [4:4.00]
; ATOM-NEXT: fmull (%eax) # sched: [4:4.00]
@ -3267,7 +3267,7 @@ define void @test_fmul(float *%a0, double *%a1) optsize {
; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00]
; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00]
; SLM-NEXT: #APP
; SLM-NEXT: fmul %st(0), %st(1) # sched: [5:2.00]
; SLM-NEXT: fmul %st, %st(1) # sched: [5:2.00]
; SLM-NEXT: fmul %st(2) # sched: [5:2.00]
; SLM-NEXT: fmuls (%ecx) # sched: [8:2.00]
; SLM-NEXT: fmull (%eax) # sched: [8:2.00]
@ -3279,7 +3279,7 @@ define void @test_fmul(float *%a0, double *%a1) optsize {
; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SANDY-NEXT: #APP
; SANDY-NEXT: fmul %st(0), %st(1) # sched: [5:1.00]
; SANDY-NEXT: fmul %st, %st(1) # sched: [5:1.00]
; SANDY-NEXT: fmul %st(2) # sched: [5:1.00]
; SANDY-NEXT: fmuls (%ecx) # sched: [12:1.00]
; SANDY-NEXT: fmull (%eax) # sched: [12:1.00]
@ -3291,7 +3291,7 @@ define void @test_fmul(float *%a0, double *%a1) optsize {
; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; HASWELL-NEXT: #APP
; HASWELL-NEXT: fmul %st(0), %st(1) # sched: [5:1.00]
; HASWELL-NEXT: fmul %st, %st(1) # sched: [5:1.00]
; HASWELL-NEXT: fmul %st(2) # sched: [5:1.00]
; HASWELL-NEXT: fmuls (%ecx) # sched: [12:1.00]
; HASWELL-NEXT: fmull (%eax) # sched: [12:1.00]
@ -3303,7 +3303,7 @@ define void @test_fmul(float *%a0, double *%a1) optsize {
; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; BROADWELL-NEXT: #APP
; BROADWELL-NEXT: fmul %st(0), %st(1) # sched: [5:1.00]
; BROADWELL-NEXT: fmul %st, %st(1) # sched: [5:1.00]
; BROADWELL-NEXT: fmul %st(2) # sched: [5:1.00]
; BROADWELL-NEXT: fmuls (%ecx) # sched: [11:1.00]
; BROADWELL-NEXT: fmull (%eax) # sched: [11:1.00]
@ -3315,7 +3315,7 @@ define void @test_fmul(float *%a0, double *%a1) optsize {
; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SKYLAKE-NEXT: #APP
; SKYLAKE-NEXT: fmul %st(0), %st(1) # sched: [4:1.00]
; SKYLAKE-NEXT: fmul %st, %st(1) # sched: [4:1.00]
; SKYLAKE-NEXT: fmul %st(2) # sched: [4:1.00]
; SKYLAKE-NEXT: fmuls (%ecx) # sched: [11:1.00]
; SKYLAKE-NEXT: fmull (%eax) # sched: [11:1.00]
@ -3327,7 +3327,7 @@ define void @test_fmul(float *%a0, double *%a1) optsize {
; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SKX-NEXT: #APP
; SKX-NEXT: fmul %st(0), %st(1) # sched: [4:1.00]
; SKX-NEXT: fmul %st, %st(1) # sched: [4:1.00]
; SKX-NEXT: fmul %st(2) # sched: [4:1.00]
; SKX-NEXT: fmuls (%ecx) # sched: [11:1.00]
; SKX-NEXT: fmull (%eax) # sched: [11:1.00]
@ -3339,7 +3339,7 @@ define void @test_fmul(float *%a0, double *%a1) optsize {
; BDVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; BDVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; BDVER2-NEXT: #APP
; BDVER2-NEXT: fmul %st(0), %st(1) # sched: [5:1.00]
; BDVER2-NEXT: fmul %st, %st(1) # sched: [5:1.00]
; BDVER2-NEXT: fmul %st(2) # sched: [5:1.00]
; BDVER2-NEXT: fmuls (%ecx) # sched: [10:1.00]
; BDVER2-NEXT: fmull (%eax) # sched: [10:1.00]
@ -3351,7 +3351,7 @@ define void @test_fmul(float *%a0, double *%a1) optsize {
; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00]
; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00]
; BTVER2-NEXT: #APP
; BTVER2-NEXT: fmul %st(0), %st(1) # sched: [2:1.00]
; BTVER2-NEXT: fmul %st, %st(1) # sched: [2:1.00]
; BTVER2-NEXT: fmul %st(2) # sched: [2:1.00]
; BTVER2-NEXT: fmuls (%ecx) # sched: [7:1.00]
; BTVER2-NEXT: fmull (%eax) # sched: [7:1.00]
@ -3363,7 +3363,7 @@ define void @test_fmul(float *%a0, double *%a1) optsize {
; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50]
; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50]
; ZNVER1-NEXT: #APP
; ZNVER1-NEXT: fmul %st(0), %st(1) # sched: [3:0.50]
; ZNVER1-NEXT: fmul %st, %st(1) # sched: [3:0.50]
; ZNVER1-NEXT: fmul %st(2) # sched: [3:0.50]
; ZNVER1-NEXT: fmuls (%ecx) # sched: [10:0.50]
; ZNVER1-NEXT: fmull (%eax) # sched: [10:0.50]
@ -4983,7 +4983,7 @@ define void @test_fsub(float *%a0, double *%a1) optsize {
; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax
; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
; GENERIC-NEXT: #APP
; GENERIC-NEXT: fsub %st(0), %st(1)
; GENERIC-NEXT: fsub %st, %st(1)
; GENERIC-NEXT: fsub %st(2)
; GENERIC-NEXT: fsubs (%ecx)
; GENERIC-NEXT: fsubl (%eax)
@ -4995,7 +4995,7 @@ define void @test_fsub(float *%a0, double *%a1) optsize {
; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00]
; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00]
; ATOM-NEXT: #APP
; ATOM-NEXT: fsub %st(0), %st(1) # sched: [5:5.00]
; ATOM-NEXT: fsub %st, %st(1) # sched: [5:5.00]
; ATOM-NEXT: fsub %st(2) # sched: [5:5.00]
; ATOM-NEXT: fsubs (%ecx) # sched: [5:5.00]
; ATOM-NEXT: fsubl (%eax) # sched: [5:5.00]
@ -5007,7 +5007,7 @@ define void @test_fsub(float *%a0, double *%a1) optsize {
; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00]
; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00]
; SLM-NEXT: #APP
; SLM-NEXT: fsub %st(0), %st(1) # sched: [3:1.00]
; SLM-NEXT: fsub %st, %st(1) # sched: [3:1.00]
; SLM-NEXT: fsub %st(2) # sched: [3:1.00]
; SLM-NEXT: fsubs (%ecx) # sched: [6:1.00]
; SLM-NEXT: fsubl (%eax) # sched: [6:1.00]
@ -5019,7 +5019,7 @@ define void @test_fsub(float *%a0, double *%a1) optsize {
; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SANDY-NEXT: #APP
; SANDY-NEXT: fsub %st(0), %st(1) # sched: [3:1.00]
; SANDY-NEXT: fsub %st, %st(1) # sched: [3:1.00]
; SANDY-NEXT: fsub %st(2) # sched: [3:1.00]
; SANDY-NEXT: fsubs (%ecx) # sched: [10:1.00]
; SANDY-NEXT: fsubl (%eax) # sched: [10:1.00]
@ -5031,7 +5031,7 @@ define void @test_fsub(float *%a0, double *%a1) optsize {
; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; HASWELL-NEXT: #APP
; HASWELL-NEXT: fsub %st(0), %st(1) # sched: [3:1.00]
; HASWELL-NEXT: fsub %st, %st(1) # sched: [3:1.00]
; HASWELL-NEXT: fsub %st(2) # sched: [3:1.00]
; HASWELL-NEXT: fsubs (%ecx) # sched: [10:1.00]
; HASWELL-NEXT: fsubl (%eax) # sched: [10:1.00]
@ -5043,7 +5043,7 @@ define void @test_fsub(float *%a0, double *%a1) optsize {
; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; BROADWELL-NEXT: #APP
; BROADWELL-NEXT: fsub %st(0), %st(1) # sched: [3:1.00]
; BROADWELL-NEXT: fsub %st, %st(1) # sched: [3:1.00]
; BROADWELL-NEXT: fsub %st(2) # sched: [3:1.00]
; BROADWELL-NEXT: fsubs (%ecx) # sched: [9:1.00]
; BROADWELL-NEXT: fsubl (%eax) # sched: [9:1.00]
@ -5055,7 +5055,7 @@ define void @test_fsub(float *%a0, double *%a1) optsize {
; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SKYLAKE-NEXT: #APP
; SKYLAKE-NEXT: fsub %st(0), %st(1) # sched: [3:1.00]
; SKYLAKE-NEXT: fsub %st, %st(1) # sched: [3:1.00]
; SKYLAKE-NEXT: fsub %st(2) # sched: [3:1.00]
; SKYLAKE-NEXT: fsubs (%ecx) # sched: [10:1.00]
; SKYLAKE-NEXT: fsubl (%eax) # sched: [10:1.00]
@ -5067,7 +5067,7 @@ define void @test_fsub(float *%a0, double *%a1) optsize {
; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SKX-NEXT: #APP
; SKX-NEXT: fsub %st(0), %st(1) # sched: [3:1.00]
; SKX-NEXT: fsub %st, %st(1) # sched: [3:1.00]
; SKX-NEXT: fsub %st(2) # sched: [3:1.00]
; SKX-NEXT: fsubs (%ecx) # sched: [10:1.00]
; SKX-NEXT: fsubl (%eax) # sched: [10:1.00]
@ -5079,7 +5079,7 @@ define void @test_fsub(float *%a0, double *%a1) optsize {
; BDVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; BDVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; BDVER2-NEXT: #APP
; BDVER2-NEXT: fsub %st(0), %st(1) # sched: [5:1.00]
; BDVER2-NEXT: fsub %st, %st(1) # sched: [5:1.00]
; BDVER2-NEXT: fsub %st(2) # sched: [5:1.00]
; BDVER2-NEXT: fsubs (%ecx) # sched: [10:1.00]
; BDVER2-NEXT: fsubl (%eax) # sched: [10:1.00]
@ -5091,7 +5091,7 @@ define void @test_fsub(float *%a0, double *%a1) optsize {
; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00]
; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00]
; BTVER2-NEXT: #APP
; BTVER2-NEXT: fsub %st(0), %st(1) # sched: [3:1.00]
; BTVER2-NEXT: fsub %st, %st(1) # sched: [3:1.00]
; BTVER2-NEXT: fsub %st(2) # sched: [3:1.00]
; BTVER2-NEXT: fsubs (%ecx) # sched: [8:1.00]
; BTVER2-NEXT: fsubl (%eax) # sched: [8:1.00]
@ -5103,7 +5103,7 @@ define void @test_fsub(float *%a0, double *%a1) optsize {
; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50]
; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50]
; ZNVER1-NEXT: #APP
; ZNVER1-NEXT: fsub %st(0), %st(1) # sched: [3:1.00]
; ZNVER1-NEXT: fsub %st, %st(1) # sched: [3:1.00]
; ZNVER1-NEXT: fsub %st(2) # sched: [3:1.00]
; ZNVER1-NEXT: fsubs (%ecx) # sched: [10:1.00]
; ZNVER1-NEXT: fsubl (%eax) # sched: [10:1.00]
@ -5255,7 +5255,7 @@ define void @test_fsubr(float *%a0, double *%a1) optsize {
; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %eax
; GENERIC-NEXT: movl {{[0-9]+}}(%esp), %ecx
; GENERIC-NEXT: #APP
; GENERIC-NEXT: fsubr %st(0), %st(1)
; GENERIC-NEXT: fsubr %st, %st(1)
; GENERIC-NEXT: fsubr %st(2)
; GENERIC-NEXT: fsubrs (%ecx)
; GENERIC-NEXT: fsubrl (%eax)
@ -5267,7 +5267,7 @@ define void @test_fsubr(float *%a0, double *%a1) optsize {
; ATOM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [1:1.00]
; ATOM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [1:1.00]
; ATOM-NEXT: #APP
; ATOM-NEXT: fsubr %st(0), %st(1) # sched: [5:5.00]
; ATOM-NEXT: fsubr %st, %st(1) # sched: [5:5.00]
; ATOM-NEXT: fsubr %st(2) # sched: [5:5.00]
; ATOM-NEXT: fsubrs (%ecx) # sched: [5:5.00]
; ATOM-NEXT: fsubrl (%eax) # sched: [5:5.00]
@ -5279,7 +5279,7 @@ define void @test_fsubr(float *%a0, double *%a1) optsize {
; SLM-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00]
; SLM-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00]
; SLM-NEXT: #APP
; SLM-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00]
; SLM-NEXT: fsubr %st, %st(1) # sched: [3:1.00]
; SLM-NEXT: fsubr %st(2) # sched: [3:1.00]
; SLM-NEXT: fsubrs (%ecx) # sched: [6:1.00]
; SLM-NEXT: fsubrl (%eax) # sched: [6:1.00]
@ -5291,7 +5291,7 @@ define void @test_fsubr(float *%a0, double *%a1) optsize {
; SANDY-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SANDY-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SANDY-NEXT: #APP
; SANDY-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00]
; SANDY-NEXT: fsubr %st, %st(1) # sched: [3:1.00]
; SANDY-NEXT: fsubr %st(2) # sched: [3:1.00]
; SANDY-NEXT: fsubrs (%ecx) # sched: [10:1.00]
; SANDY-NEXT: fsubrl (%eax) # sched: [10:1.00]
@ -5303,7 +5303,7 @@ define void @test_fsubr(float *%a0, double *%a1) optsize {
; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; HASWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; HASWELL-NEXT: #APP
; HASWELL-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00]
; HASWELL-NEXT: fsubr %st, %st(1) # sched: [3:1.00]
; HASWELL-NEXT: fsubr %st(2) # sched: [3:1.00]
; HASWELL-NEXT: fsubrs (%ecx) # sched: [10:1.00]
; HASWELL-NEXT: fsubrl (%eax) # sched: [10:1.00]
@ -5315,7 +5315,7 @@ define void @test_fsubr(float *%a0, double *%a1) optsize {
; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; BROADWELL-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; BROADWELL-NEXT: #APP
; BROADWELL-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00]
; BROADWELL-NEXT: fsubr %st, %st(1) # sched: [3:1.00]
; BROADWELL-NEXT: fsubr %st(2) # sched: [3:1.00]
; BROADWELL-NEXT: fsubrs (%ecx) # sched: [9:1.00]
; BROADWELL-NEXT: fsubrl (%eax) # sched: [9:1.00]
@ -5327,7 +5327,7 @@ define void @test_fsubr(float *%a0, double *%a1) optsize {
; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SKYLAKE-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SKYLAKE-NEXT: #APP
; SKYLAKE-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00]
; SKYLAKE-NEXT: fsubr %st, %st(1) # sched: [3:1.00]
; SKYLAKE-NEXT: fsubr %st(2) # sched: [3:1.00]
; SKYLAKE-NEXT: fsubrs (%ecx) # sched: [10:1.00]
; SKYLAKE-NEXT: fsubrl (%eax) # sched: [10:1.00]
@ -5339,7 +5339,7 @@ define void @test_fsubr(float *%a0, double *%a1) optsize {
; SKX-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; SKX-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; SKX-NEXT: #APP
; SKX-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00]
; SKX-NEXT: fsubr %st, %st(1) # sched: [3:1.00]
; SKX-NEXT: fsubr %st(2) # sched: [3:1.00]
; SKX-NEXT: fsubrs (%ecx) # sched: [10:1.00]
; SKX-NEXT: fsubrl (%eax) # sched: [10:1.00]
@ -5351,7 +5351,7 @@ define void @test_fsubr(float *%a0, double *%a1) optsize {
; BDVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [5:0.50]
; BDVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [5:0.50]
; BDVER2-NEXT: #APP
; BDVER2-NEXT: fsubr %st(0), %st(1) # sched: [5:1.00]
; BDVER2-NEXT: fsubr %st, %st(1) # sched: [5:1.00]
; BDVER2-NEXT: fsubr %st(2) # sched: [5:1.00]
; BDVER2-NEXT: fsubrs (%ecx) # sched: [10:1.00]
; BDVER2-NEXT: fsubrl (%eax) # sched: [10:1.00]
@ -5363,7 +5363,7 @@ define void @test_fsubr(float *%a0, double *%a1) optsize {
; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [3:1.00]
; BTVER2-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [3:1.00]
; BTVER2-NEXT: #APP
; BTVER2-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00]
; BTVER2-NEXT: fsubr %st, %st(1) # sched: [3:1.00]
; BTVER2-NEXT: fsubr %st(2) # sched: [3:1.00]
; BTVER2-NEXT: fsubrs (%ecx) # sched: [8:1.00]
; BTVER2-NEXT: fsubrl (%eax) # sched: [8:1.00]
@ -5375,7 +5375,7 @@ define void @test_fsubr(float *%a0, double *%a1) optsize {
; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %eax # sched: [8:0.50]
; ZNVER1-NEXT: movl {{[0-9]+}}(%esp), %ecx # sched: [8:0.50]
; ZNVER1-NEXT: #APP
; ZNVER1-NEXT: fsubr %st(0), %st(1) # sched: [3:1.00]
; ZNVER1-NEXT: fsubr %st, %st(1) # sched: [3:1.00]
; ZNVER1-NEXT: fsubr %st(2) # sched: [3:1.00]
; ZNVER1-NEXT: fsubrs (%ecx) # sched: [10:1.00]
; ZNVER1-NEXT: fsubrl (%eax) # sched: [10:1.00]

View File

@ -325,199 +325,199 @@
# CHECK: fcos
0xd9,0xff
# CHECK: fcmovb %st(0), %st(0)
# CHECK: fcmovb %st(0), %st
0xda,0xc0
# CHECK: fcmovb %st(1), %st(0)
# CHECK: fcmovb %st(1), %st
0xda,0xc1
# CHECK: fcmovb %st(2), %st(0)
# CHECK: fcmovb %st(2), %st
0xda,0xc2
# CHECK: fcmovb %st(3), %st(0)
# CHECK: fcmovb %st(3), %st
0xda,0xc3
# CHECK: fcmovb %st(4), %st(0)
# CHECK: fcmovb %st(4), %st
0xda,0xc4
# CHECK: fcmovb %st(5), %st(0)
# CHECK: fcmovb %st(5), %st
0xda,0xc5
# CHECK: fcmovb %st(6), %st(0)
# CHECK: fcmovb %st(6), %st
0xda,0xc6
# CHECK: fcmovb %st(7), %st(0)
# CHECK: fcmovb %st(7), %st
0xda,0xc7
# CHECK: fcmove %st(0), %st(0)
# CHECK: fcmove %st(0), %st
0xda,0xc8
# CHECK: fcmove %st(1), %st(0)
# CHECK: fcmove %st(1), %st
0xda,0xc9
# CHECK: fcmove %st(2), %st(0)
# CHECK: fcmove %st(2), %st
0xda,0xca
# CHECK: fcmove %st(3), %st(0)
# CHECK: fcmove %st(3), %st
0xda,0xcb
# CHECK: fcmove %st(4), %st(0)
# CHECK: fcmove %st(4), %st
0xda,0xcc
# CHECK: fcmove %st(5), %st(0)
# CHECK: fcmove %st(5), %st
0xda,0xcd
# CHECK: fcmove %st(6), %st(0)
# CHECK: fcmove %st(6), %st
0xda,0xce
# CHECK: fcmove %st(7), %st(0)
# CHECK: fcmove %st(7), %st
0xda,0xcf
# CHECK: fcmovbe %st(0), %st(0)
# CHECK: fcmovbe %st(0), %st
0xda,0xd0
# CHECK: fcmovbe %st(1), %st(0)
# CHECK: fcmovbe %st(1), %st
0xda,0xd1
# CHECK: fcmovbe %st(2), %st(0)
# CHECK: fcmovbe %st(2), %st
0xda,0xd2
# CHECK: fcmovbe %st(3), %st(0)
# CHECK: fcmovbe %st(3), %st
0xda,0xd3
# CHECK: fcmovbe %st(4), %st(0)
# CHECK: fcmovbe %st(4), %st
0xda,0xd4
# CHECK: fcmovbe %st(5), %st(0)
# CHECK: fcmovbe %st(5), %st
0xda,0xd5
# CHECK: fcmovbe %st(6), %st(0)
# CHECK: fcmovbe %st(6), %st
0xda,0xd6
# CHECK: fcmovbe %st(7), %st(0)
# CHECK: fcmovbe %st(7), %st
0xda,0xd7
# CHECK: fcmovu %st(0), %st(0)
# CHECK: fcmovu %st(0), %st
0xda,0xd8
# CHECK: fcmovu %st(1), %st(0)
# CHECK: fcmovu %st(1), %st
0xda,0xd9
# CHECK: fcmovu %st(2), %st(0)
# CHECK: fcmovu %st(2), %st
0xda,0xda
# CHECK: fcmovu %st(3), %st(0)
# CHECK: fcmovu %st(3), %st
0xda,0xdb
# CHECK: fcmovu %st(4), %st(0)
# CHECK: fcmovu %st(4), %st
0xda,0xdc
# CHECK: fcmovu %st(5), %st(0)
# CHECK: fcmovu %st(5), %st
0xda,0xdd
# CHECK: fcmovu %st(6), %st(0)
# CHECK: fcmovu %st(6), %st
0xda,0xde
# CHECK: fcmovu %st(7), %st(0)
# CHECK: fcmovu %st(7), %st
0xda,0xdf
# CHECK: fucompp
0xda,0xe9
# CHECK: fcmovnb %st(0), %st(0)
# CHECK: fcmovnb %st(0), %st
0xdb,0xc0
# CHECK: fcmovnb %st(1), %st(0)
# CHECK: fcmovnb %st(1), %st
0xdb,0xc1
# CHECK: fcmovnb %st(2), %st(0)
# CHECK: fcmovnb %st(2), %st
0xdb,0xc2
# CHECK: fcmovnb %st(3), %st(0)
# CHECK: fcmovnb %st(3), %st
0xdb,0xc3
# CHECK: fcmovnb %st(4), %st(0)
# CHECK: fcmovnb %st(4), %st
0xdb,0xc4
# CHECK: fcmovnb %st(5), %st(0)
# CHECK: fcmovnb %st(5), %st
0xdb,0xc5
# CHECK: fcmovnb %st(6), %st(0)
# CHECK: fcmovnb %st(6), %st
0xdb,0xc6
# CHECK: fcmovnb %st(7), %st(0)
# CHECK: fcmovnb %st(7), %st
0xdb,0xc7
# CHECK: fcmovne %st(0), %st(0)
# CHECK: fcmovne %st(0), %st
0xdb,0xc8
# CHECK: fcmovne %st(1), %st(0)
# CHECK: fcmovne %st(1), %st
0xdb,0xc9
# CHECK: fcmovne %st(2), %st(0)
# CHECK: fcmovne %st(2), %st
0xdb,0xca
# CHECK: fcmovne %st(3), %st(0)
# CHECK: fcmovne %st(3), %st
0xdb,0xcb
# CHECK: fcmovne %st(4), %st(0)
# CHECK: fcmovne %st(4), %st
0xdb,0xcc
# CHECK: fcmovne %st(5), %st(0)
# CHECK: fcmovne %st(5), %st
0xdb,0xcd
# CHECK: fcmovne %st(6), %st(0)
# CHECK: fcmovne %st(6), %st
0xdb,0xce
# CHECK: fcmovne %st(7), %st(0)
# CHECK: fcmovne %st(7), %st
0xdb,0xcf
# CHECK: fcmovnbe %st(0), %st(0)
# CHECK: fcmovnbe %st(0), %st
0xdb,0xd0
# CHECK: fcmovnbe %st(1), %st(0)
# CHECK: fcmovnbe %st(1), %st
0xdb,0xd1
# CHECK: fcmovnbe %st(2), %st(0)
# CHECK: fcmovnbe %st(2), %st
0xdb,0xd2
# CHECK: fcmovnbe %st(3), %st(0)
# CHECK: fcmovnbe %st(3), %st
0xdb,0xd3
# CHECK: fcmovnbe %st(4), %st(0)
# CHECK: fcmovnbe %st(4), %st
0xdb,0xd4
# CHECK: fcmovnbe %st(5), %st(0)
# CHECK: fcmovnbe %st(5), %st
0xdb,0xd5
# CHECK: fcmovnbe %st(6), %st(0)
# CHECK: fcmovnbe %st(6), %st
0xdb,0xd6
# CHECK: fcmovnbe %st(7), %st(0)
# CHECK: fcmovnbe %st(7), %st
0xdb,0xd7
# CHECK: fcmovnu %st(0), %st(0)
# CHECK: fcmovnu %st(0), %st
0xdb,0xd8
# CHECK: fcmovnu %st(1), %st(0)
# CHECK: fcmovnu %st(1), %st
0xdb,0xd9
# CHECK: fcmovnu %st(2), %st(0)
# CHECK: fcmovnu %st(2), %st
0xdb,0xda
# CHECK: fcmovnu %st(3), %st(0)
# CHECK: fcmovnu %st(3), %st
0xdb,0xdb
# CHECK: fcmovnu %st(4), %st(0)
# CHECK: fcmovnu %st(4), %st
0xdb,0xdc
# CHECK: fcmovnu %st(5), %st(0)
# CHECK: fcmovnu %st(5), %st
0xdb,0xdd
# CHECK: fcmovnu %st(6), %st(0)
# CHECK: fcmovnu %st(6), %st
0xdb,0xde
# CHECK: fcmovnu %st(7), %st(0)
# CHECK: fcmovnu %st(7), %st
0xdb,0xdf
# CHECK: fnclex
@ -574,148 +574,148 @@
# CHECK: fcomi %st(7)
0xdb,0xf7
# CHECK: fadd %st(0), %st(0)
# CHECK: fadd %st, %st(0)
0xdc,0xc0
# CHECK: fadd %st(0), %st(1)
# CHECK: fadd %st, %st(1)
0xdc,0xc1
# CHECK: fadd %st(0), %st(2)
# CHECK: fadd %st, %st(2)
0xdc,0xc2
# CHECK: fadd %st(0), %st(3)
# CHECK: fadd %st, %st(3)
0xdc,0xc3
# CHECK: fadd %st(0), %st(4)
# CHECK: fadd %st, %st(4)
0xdc,0xc4
# CHECK: fadd %st(0), %st(5)
# CHECK: fadd %st, %st(5)
0xdc,0xc5
# CHECK: fadd %st(0), %st(6)
# CHECK: fadd %st, %st(6)
0xdc,0xc6
# CHECK: fadd %st(0), %st(7)
# CHECK: fadd %st, %st(7)
0xdc,0xc7
# CHECK: fmul %st(0), %st(0)
# CHECK: fmul %st, %st(0)
0xdc,0xc8
# CHECK: fmul %st(0), %st(1)
# CHECK: fmul %st, %st(1)
0xdc,0xc9
# CHECK: fmul %st(0), %st(2)
# CHECK: fmul %st, %st(2)
0xdc,0xca
# CHECK: fmul %st(0), %st(3)
# CHECK: fmul %st, %st(3)
0xdc,0xcb
# CHECK: fmul %st(0), %st(4)
# CHECK: fmul %st, %st(4)
0xdc,0xcc
# CHECK: fmul %st(0), %st(5)
# CHECK: fmul %st, %st(5)
0xdc,0xcd
# CHECK: fmul %st(0), %st(6)
# CHECK: fmul %st, %st(6)
0xdc,0xce
# CHECK: fmul %st(0), %st(7)
# CHECK: fmul %st, %st(7)
0xdc,0xcf
# CHECK: fsub %st(0), %st(0)
# CHECK: fsub %st, %st(0)
0xdc,0xe0
# CHECK: fsub %st(0), %st(1)
# CHECK: fsub %st, %st(1)
0xdc,0xe1
# CHECK: fsub %st(0), %st(2)
# CHECK: fsub %st, %st(2)
0xdc,0xe2
# CHECK: fsub %st(0), %st(3)
# CHECK: fsub %st, %st(3)
0xdc,0xe3
# CHECK: fsub %st(0), %st(4)
# CHECK: fsub %st, %st(4)
0xdc,0xe4
# CHECK: fsub %st(0), %st(5)
# CHECK: fsub %st, %st(5)
0xdc,0xe5
# CHECK: fsub %st(0), %st(6)
# CHECK: fsub %st, %st(6)
0xdc,0xe6
# CHECK: fsub %st(0), %st(7)
# CHECK: fsub %st, %st(7)
0xdc,0xe7
# CHECK: fsubr %st(0), %st(0)
# CHECK: fsubr %st, %st(0)
0xdc,0xe8
# CHECK: fsubr %st(0), %st(1)
# CHECK: fsubr %st, %st(1)
0xdc,0xe9
# CHECK: fsubr %st(0), %st(2)
# CHECK: fsubr %st, %st(2)
0xdc,0xea
# CHECK: fsubr %st(0), %st(3)
# CHECK: fsubr %st, %st(3)
0xdc,0xeb
# CHECK: fsubr %st(0), %st(4)
# CHECK: fsubr %st, %st(4)
0xdc,0xec
# CHECK: fsubr %st(0), %st(5)
# CHECK: fsubr %st, %st(5)
0xdc,0xed
# CHECK: fsubr %st(0), %st(6)
# CHECK: fsubr %st, %st(6)
0xdc,0xee
# CHECK: fsubr %st(0), %st(7)
# CHECK: fsubr %st, %st(7)
0xdc,0xef
# CHECK: fdiv %st(0), %st(0)
# CHECK: fdiv %st, %st(0)
0xdc,0xf0
# CHECK: fdiv %st(0), %st(1)
# CHECK: fdiv %st, %st(1)
0xdc,0xf1
# CHECK: fdiv %st(0), %st(2)
# CHECK: fdiv %st, %st(2)
0xdc,0xf2
# CHECK: fdiv %st(0), %st(3)
# CHECK: fdiv %st, %st(3)
0xdc,0xf3
# CHECK: fdiv %st(0), %st(4)
# CHECK: fdiv %st, %st(4)
0xdc,0xf4
# CHECK: fdiv %st(0), %st(5)
# CHECK: fdiv %st, %st(5)
0xdc,0xf5
# CHECK: fdiv %st(0), %st(6)
# CHECK: fdiv %st, %st(6)
0xdc,0xf6
# CHECK: fdiv %st(0), %st(7)
# CHECK: fdiv %st, %st(7)
0xdc,0xf7
# CHECK: fdivr %st(0), %st(0)
# CHECK: fdivr %st, %st(0)
0xdc,0xf8
# CHECK: fdivr %st(0), %st(1)
# CHECK: fdivr %st, %st(1)
0xdc,0xf9
# CHECK: fdivr %st(0), %st(2)
# CHECK: fdivr %st, %st(2)
0xdc,0xfa
# CHECK: fdivr %st(0), %st(3)
# CHECK: fdivr %st, %st(3)
0xdc,0xfb
# CHECK: fdivr %st(0), %st(4)
# CHECK: fdivr %st, %st(4)
0xdc,0xfc
# CHECK: fdivr %st(0), %st(5)
# CHECK: fdivr %st, %st(5)
0xdc,0xfd
# CHECK: fdivr %st(0), %st(6)
# CHECK: fdivr %st, %st(6)
0xdc,0xfe
# CHECK: fdivr %st(0), %st(7)
# CHECK: fdivr %st, %st(7)
0xdc,0xff
# CHECK: ffree %st(0)

View File

@ -64,37 +64,37 @@ cmovpl %eax, %eax
// CHECK: encoding: [0x0f,0x48,0xc0]
cmovsl %eax, %eax
// CHECK: fcmovbe %st(4), %st(0)
// CHECK: fcmovbe %st(4), %st
// CHECK: encoding: [0xda,0xd4]
fcmovbe %st(4), %st(0)
fcmovbe %st(4), %st
// CHECK: fcmovb %st(4), %st(0)
// CHECK: fcmovb %st(4), %st
// CHECK: encoding: [0xda,0xc4]
fcmovb %st(4), %st(0)
fcmovb %st(4), %st
// CHECK: fcmove %st(4), %st(0)
// CHECK: fcmove %st(4), %st
// CHECK: encoding: [0xda,0xcc]
fcmove %st(4), %st(0)
fcmove %st(4), %st
// CHECK: fcmovnbe %st(4), %st(0)
// CHECK: fcmovnbe %st(4), %st
// CHECK: encoding: [0xdb,0xd4]
fcmovnbe %st(4), %st(0)
fcmovnbe %st(4), %st
// CHECK: fcmovnb %st(4), %st(0)
// CHECK: fcmovnb %st(4), %st
// CHECK: encoding: [0xdb,0xc4]
fcmovnb %st(4), %st(0)
fcmovnb %st(4), %st
// CHECK: fcmovne %st(4), %st(0)
// CHECK: fcmovne %st(4), %st
// CHECK: encoding: [0xdb,0xcc]
fcmovne %st(4), %st(0)
fcmovne %st(4), %st
// CHECK: fcmovnu %st(4), %st(0)
// CHECK: fcmovnu %st(4), %st
// CHECK: encoding: [0xdb,0xdc]
fcmovnu %st(4), %st(0)
fcmovnu %st(4), %st
// CHECK: fcmovu %st(4), %st(0)
// CHECK: fcmovu %st(4), %st
// CHECK: encoding: [0xda,0xdc]
fcmovu %st(4), %st(0)
fcmovu %st(4), %st
// CHECK: fcomi %st(4)
// CHECK: encoding: [0xdb,0xf4]

View File

@ -64,37 +64,37 @@ cmovpl %r13d, %r13d
// CHECK: encoding: [0x45,0x0f,0x48,0xed]
cmovsl %r13d, %r13d
// CHECK: fcmovbe %st(4), %st(0)
// CHECK: fcmovbe %st(4), %st
// CHECK: encoding: [0xda,0xd4]
fcmovbe %st(4), %st(0)
fcmovbe %st(4), %st
// CHECK: fcmovb %st(4), %st(0)
// CHECK: fcmovb %st(4), %st
// CHECK: encoding: [0xda,0xc4]
fcmovb %st(4), %st(0)
fcmovb %st(4), %st
// CHECK: fcmove %st(4), %st(0)
// CHECK: fcmove %st(4), %st
// CHECK: encoding: [0xda,0xcc]
fcmove %st(4), %st(0)
fcmove %st(4), %st
// CHECK: fcmovnbe %st(4), %st(0)
// CHECK: fcmovnbe %st(4), %st
// CHECK: encoding: [0xdb,0xd4]
fcmovnbe %st(4), %st(0)
fcmovnbe %st(4), %st
// CHECK: fcmovnb %st(4), %st(0)
// CHECK: fcmovnb %st(4), %st
// CHECK: encoding: [0xdb,0xc4]
fcmovnb %st(4), %st(0)
fcmovnb %st(4), %st
// CHECK: fcmovne %st(4), %st(0)
// CHECK: fcmovne %st(4), %st
// CHECK: encoding: [0xdb,0xcc]
fcmovne %st(4), %st(0)
fcmovne %st(4), %st
// CHECK: fcmovnu %st(4), %st(0)
// CHECK: fcmovnu %st(4), %st
// CHECK: encoding: [0xdb,0xdc]
fcmovnu %st(4), %st(0)
fcmovnu %st(4), %st
// CHECK: fcmovu %st(4), %st(0)
// CHECK: fcmovu %st(4), %st
// CHECK: encoding: [0xda,0xdc]
fcmovu %st(4), %st(0)
fcmovu %st(4), %st
// CHECK: fcomi %st(4)
// CHECK: encoding: [0xdb,0xf4]

View File

@ -59,9 +59,9 @@ fadds 64(%edx,%eax)
// CHECK: encoding: [0xd8,0x02]
fadds (%edx)
// CHECK: fadd %st(0), %st(4)
// CHECK: fadd %st, %st(4)
// CHECK: encoding: [0xdc,0xc4]
fadd %st(0), %st(4)
fadd %st, %st(4)
// CHECK: fadd %st(4)
// CHECK: encoding: [0xd8,0xc4]
@ -315,9 +315,9 @@ fdivrs 64(%edx,%eax)
// CHECK: encoding: [0xd8,0x3a]
fdivrs (%edx)
// CHECK: fdivr %st(0), %st(4)
// CHECK: fdivr %st, %st(4)
// CHECK: encoding: [0xdc,0xfc]
fdivr %st(0), %st(4)
fdivr %st, %st(4)
// CHECK: fdivr %st(4)
// CHECK: encoding: [0xd8,0xfc]
@ -347,9 +347,9 @@ fdivs 64(%edx,%eax)
// CHECK: encoding: [0xd8,0x32]
fdivs (%edx)
// CHECK: fdiv %st(0), %st(4)
// CHECK: fdiv %st, %st(4)
// CHECK: encoding: [0xdc,0xf4]
fdiv %st(0), %st(4)
fdiv %st, %st(4)
// CHECK: fdiv %st(4)
// CHECK: encoding: [0xd8,0xf4]
@ -1147,9 +1147,9 @@ fmuls 64(%edx,%eax)
// CHECK: encoding: [0xd8,0x0a]
fmuls (%edx)
// CHECK: fmul %st(0), %st(4)
// CHECK: fmul %st, %st(4)
// CHECK: encoding: [0xdc,0xcc]
fmul %st(0), %st(4)
fmul %st, %st(4)
// CHECK: fmul %st(4)
// CHECK: encoding: [0xd8,0xcc]
@ -1535,9 +1535,9 @@ fsubrs 64(%edx,%eax)
// CHECK: encoding: [0xd8,0x2a]
fsubrs (%edx)
// CHECK: fsubr %st(0), %st(4)
// CHECK: fsubr %st, %st(4)
// CHECK: encoding: [0xdc,0xec]
fsubr %st(0), %st(4)
fsubr %st, %st(4)
// CHECK: fsubr %st(4)
// CHECK: encoding: [0xd8,0xec]
@ -1567,9 +1567,9 @@ fsubs 64(%edx,%eax)
// CHECK: encoding: [0xd8,0x22]
fsubs (%edx)
// CHECK: fsub %st(0), %st(4)
// CHECK: fsub %st, %st(4)
// CHECK: encoding: [0xdc,0xe4]
fsub %st(0), %st(4)
fsub %st, %st(4)
// CHECK: fsub %st(4)
// CHECK: encoding: [0xd8,0xe4]

View File

@ -59,9 +59,9 @@ fadds 64(%rdx,%rax)
// CHECK: encoding: [0xd8,0x02]
fadds (%rdx)
// CHECK: fadd %st(0), %st(4)
// CHECK: fadd %st, %st(4)
// CHECK: encoding: [0xdc,0xc4]
fadd %st(0), %st(4)
fadd %st, %st(4)
// CHECK: fadd %st(4)
// CHECK: encoding: [0xd8,0xc4]
@ -315,9 +315,9 @@ fdivrs 64(%rdx,%rax)
// CHECK: encoding: [0xd8,0x3a]
fdivrs (%rdx)
// CHECK: fdivr %st(0), %st(4)
// CHECK: fdivr %st, %st(4)
// CHECK: encoding: [0xdc,0xfc]
fdivr %st(0), %st(4)
fdivr %st, %st(4)
// CHECK: fdivr %st(4)
// CHECK: encoding: [0xd8,0xfc]
@ -347,9 +347,9 @@ fdivs 64(%rdx,%rax)
// CHECK: encoding: [0xd8,0x32]
fdivs (%rdx)
// CHECK: fdiv %st(0), %st(4)
// CHECK: fdiv %st, %st(4)
// CHECK: encoding: [0xdc,0xf4]
fdiv %st(0), %st(4)
fdiv %st, %st(4)
// CHECK: fdiv %st(4)
// CHECK: encoding: [0xd8,0xf4]
@ -1147,9 +1147,9 @@ fmuls 64(%rdx,%rax)
// CHECK: encoding: [0xd8,0x0a]
fmuls (%rdx)
// CHECK: fmul %st(0), %st(4)
// CHECK: fmul %st, %st(4)
// CHECK: encoding: [0xdc,0xcc]
fmul %st(0), %st(4)
fmul %st, %st(4)
// CHECK: fmul %st(4)
// CHECK: encoding: [0xd8,0xcc]
@ -1535,9 +1535,9 @@ fsubrs 64(%rdx,%rax)
// CHECK: encoding: [0xd8,0x2a]
fsubrs (%rdx)
// CHECK: fsubr %st(0), %st(4)
// CHECK: fsubr %st, %st(4)
// CHECK: encoding: [0xdc,0xec]
fsubr %st(0), %st(4)
fsubr %st, %st(4)
// CHECK: fsubr %st(4)
// CHECK: encoding: [0xd8,0xec]
@ -1567,9 +1567,9 @@ fsubs 64(%rdx,%rax)
// CHECK: encoding: [0xd8,0x22]
fsubs (%rdx)
// CHECK: fsub %st(0), %st(4)
// CHECK: fsub %st, %st(4)
// CHECK: encoding: [0xdc,0xe4]
fsub %st(0), %st(4)
fsub %st, %st(4)
// CHECK: fsub %st(4)
// CHECK: encoding: [0xd8,0xe4]

View File

@ -635,12 +635,12 @@ fsubr ST(0), ST(1)
fdiv ST(0), ST(1)
fdivr ST(0), ST(1)
// CHECK: fadd %st(0), %st(1)
// CHECK: fmul %st(0), %st(1)
// CHECK: fsubr %st(0), %st(1)
// CHECK: fsub %st(0), %st(1)
// CHECK: fdivr %st(0), %st(1)
// CHECK: fdiv %st(0), %st(1)
// CHECK: fadd %st, %st(1)
// CHECK: fmul %st, %st(1)
// CHECK: fsubr %st, %st(1)
// CHECK: fsub %st, %st(1)
// CHECK: fdivr %st, %st(1)
// CHECK: fdiv %st, %st(1)
fadd ST(1), ST(0)
fmul ST(1), ST(0)
fsub ST(1), ST(0)

View File

@ -2876,35 +2876,35 @@
// CHECK: encoding: [0x0f,0x0b]
ud2
// CHECK: fcmovb %st(2), %st(0)
// CHECK: fcmovb %st(2), %st
// CHECK: encoding: [0xda,0xc2]
fcmovb %st(2),%st
// CHECK: fcmove %st(2), %st(0)
// CHECK: fcmove %st(2), %st
// CHECK: encoding: [0xda,0xca]
fcmove %st(2),%st
// CHECK: fcmovbe %st(2), %st(0)
// CHECK: fcmovbe %st(2), %st
// CHECK: encoding: [0xda,0xd2]
fcmovbe %st(2),%st
// CHECK: fcmovu %st(2), %st(0)
// CHECK: fcmovu %st(2), %st
// CHECK: encoding: [0xda,0xda]
fcmovu %st(2),%st
// CHECK: fcmovnb %st(2), %st(0)
// CHECK: fcmovnb %st(2), %st
// CHECK: encoding: [0xdb,0xc2]
fcmovnb %st(2),%st
// CHECK: fcmovne %st(2), %st(0)
// CHECK: fcmovne %st(2), %st
// CHECK: encoding: [0xdb,0xca]
fcmovne %st(2),%st
// CHECK: fcmovnbe %st(2), %st(0)
// CHECK: fcmovnbe %st(2), %st
// CHECK: encoding: [0xdb,0xd2]
fcmovnbe %st(2),%st
// CHECK: fcmovnu %st(2), %st(0)
// CHECK: fcmovnu %st(2), %st
// CHECK: encoding: [0xdb,0xda]
fcmovnu %st(2),%st

View File

@ -416,21 +416,21 @@ enter $0x7ace,$0x7f
mov %cs, %ax
// rdar://8456391
fcmovb %st(1), %st(0) // CHECK: fcmovb %st(1), %st(0)
fcmove %st(1), %st(0) // CHECK: fcmove %st(1), %st(0)
fcmovbe %st(1), %st(0) // CHECK: fcmovbe %st(1), %st(0)
fcmovu %st(1), %st(0) // CHECK: fcmovu %st(1), %st(0)
fcmovb %st(1), %st // CHECK: fcmovb %st(1), %st
fcmove %st(1), %st // CHECK: fcmove %st(1), %st
fcmovbe %st(1), %st // CHECK: fcmovbe %st(1), %st
fcmovu %st(1), %st // CHECK: fcmovu %st(1), %st
fcmovnb %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0)
fcmovne %st(1), %st(0) // CHECK: fcmovne %st(1), %st(0)
fcmovnbe %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0)
fcmovnu %st(1), %st(0) // CHECK: fcmovnu %st(1), %st(0)
fcmovnb %st(1), %st // CHECK: fcmovnb %st(1), %st
fcmovne %st(1), %st // CHECK: fcmovne %st(1), %st
fcmovnbe %st(1), %st // CHECK: fcmovnbe %st(1), %st
fcmovnu %st(1), %st // CHECK: fcmovnu %st(1), %st
fcmovnae %st(1), %st(0) // CHECK: fcmovb %st(1), %st(0)
fcmovna %st(1), %st(0) // CHECK: fcmovbe %st(1), %st(0)
fcmovnae %st(1), %st // CHECK: fcmovb %st(1), %st
fcmovna %st(1), %st // CHECK: fcmovbe %st(1), %st
fcmovae %st(1), %st(0) // CHECK: fcmovnb %st(1), %st(0)
fcmova %st(1), %st(0) // CHECK: fcmovnbe %st(1), %st(0)
fcmovae %st(1), %st // CHECK: fcmovnb %st(1), %st
fcmova %st(1), %st // CHECK: fcmovnbe %st(1), %st
// rdar://8456417
.byte (88 + 1) & 15 // CHECK: .byte 9
@ -462,14 +462,14 @@ faddp %st, %st(1)
fmulp %st, %st(2)
// rdar://8468087 - Encode these accurately, they are not synonyms.
// CHECK: fmul %st(0), %st(1)
// CHECK: fmul %st, %st(1)
// CHECK: encoding: [0xdc,0xc9]
// CHECK: fmul %st(1)
// CHECK: encoding: [0xd8,0xc9]
fmul %st, %st(1)
fmul %st(1), %st
// CHECK: fadd %st(0), %st(1)
// CHECK: fadd %st, %st(1)
// CHECK: encoding: [0xdc,0xc1]
// CHECK: fadd %st(1)
// CHECK: encoding: [0xd8,0xc1]
@ -582,15 +582,15 @@ movmskpd %xmm6, %eax
// CHECK: encoding: [0x66,0x0f,0x50,0xc6]
// rdar://8491845 - Gas supports commuted forms of non-commutable instructions.
fdivrp %st(0), %st(1) // CHECK: encoding: [0xde,0xf9]
fdivrp %st(1), %st(0) // CHECK: encoding: [0xde,0xf9]
fdivrp %st, %st(1) // CHECK: encoding: [0xde,0xf9]
fdivrp %st(1), %st // CHECK: encoding: [0xde,0xf9]
fsubrp %st(0), %st(1) // CHECK: encoding: [0xde,0xe9]
fsubrp %st(1), %st(0) // CHECK: encoding: [0xde,0xe9]
fsubrp %st, %st(1) // CHECK: encoding: [0xde,0xe9]
fsubrp %st(1), %st // CHECK: encoding: [0xde,0xe9]
// also PR8861
fdivp %st(0), %st(1) // CHECK: encoding: [0xde,0xf1]
fdivp %st(1), %st(0) // CHECK: encoding: [0xde,0xf1]
fdivp %st, %st(1) // CHECK: encoding: [0xde,0xf1]
fdivp %st(1), %st // CHECK: encoding: [0xde,0xf1]
movl foo(%rip), %eax
@ -1397,12 +1397,12 @@ stac
// CHECK: fsubrp %st(1)
// CHECK: fdivp %st(1)
// CHECK: fdivrp %st(1)
faddp %st(0), %st(1)
fmulp %st(0), %st(1)
fsubp %st(0), %st(1)
fsubrp %st(0), %st(1)
fdivp %st(0), %st(1)
fdivrp %st(0), %st(1)
faddp %st, %st(1)
fmulp %st, %st(1)
fsubp %st, %st(1)
fsubrp %st, %st(1)
fdivp %st, %st(1)
fdivrp %st, %st(1)
// CHECK: faddp %st(1)
// CHECK: fmulp %st(1)
@ -1410,12 +1410,12 @@ fdivrp %st(0), %st(1)
// CHECK: fsubrp %st(1)
// CHECK: fdivp %st(1)
// CHECK: fdivrp %st(1)
faddp %st(1), %st(0)
fmulp %st(1), %st(0)
fsubp %st(1), %st(0)
fsubrp %st(1), %st(0)
fdivp %st(1), %st(0)
fdivrp %st(1), %st(0)
faddp %st(1), %st
fmulp %st(1), %st
fsubp %st(1), %st
fsubrp %st(1), %st
fdivp %st(1), %st
fdivrp %st(1), %st
// CHECK: faddp %st(1)
// CHECK: fmulp %st(1)
@ -1449,25 +1449,25 @@ fdivrp
// CHECK: fsubr %st(1)
// CHECK: fdiv %st(1)
// CHECK: fdivr %st(1)
fadd %st(1), %st(0)
fmul %st(1), %st(0)
fsub %st(1), %st(0)
fsubr %st(1), %st(0)
fdiv %st(1), %st(0)
fdivr %st(1), %st(0)
fadd %st(1), %st
fmul %st(1), %st
fsub %st(1), %st
fsubr %st(1), %st
fdiv %st(1), %st
fdivr %st(1), %st
// CHECK: fadd %st(0), %st(1)
// CHECK: fmul %st(0), %st(1)
// CHECK: fsub %st(0), %st(1)
// CHECK: fsubr %st(0), %st(1)
// CHECK: fdiv %st(0), %st(1)
// CHECK: fdivr %st(0), %st(1)
fadd %st(0), %st(1)
fmul %st(0), %st(1)
fsub %st(0), %st(1)
fsubr %st(0), %st(1)
fdiv %st(0), %st(1)
fdivr %st(0), %st(1)
// CHECK: fadd %st, %st(1)
// CHECK: fmul %st, %st(1)
// CHECK: fsub %st, %st(1)
// CHECK: fsubr %st, %st(1)
// CHECK: fdiv %st, %st(1)
// CHECK: fdivr %st, %st(1)
fadd %st, %st(1)
fmul %st, %st(1)
fsub %st, %st(1)
fsubr %st, %st(1)
fdiv %st, %st(1)
fdivr %st, %st(1)
// CHECK: fadd %st(1)
// CHECK: fmul %st(1)

View File

@ -5,7 +5,7 @@ f2xm1
fabs
fadd %st(0), %st(1)
fadd %st, %st(1)
fadd %st(2)
fadds (%ecx)
faddl (%ecx)
@ -21,14 +21,14 @@ fchs
fnclex
fcmovb %st(1), %st(0)
fcmovbe %st(1), %st(0)
fcmove %st(1), %st(0)
fcmovnb %st(1), %st(0)
fcmovnbe %st(1), %st(0)
fcmovne %st(1), %st(0)
fcmovnu %st(1), %st(0)
fcmovu %st(1), %st(0)
fcmovb %st(1), %st
fcmovbe %st(1), %st
fcmove %st(1), %st
fcmovnb %st(1), %st
fcmovnbe %st(1), %st
fcmovne %st(1), %st
fcmovnu %st(1), %st
fcmovu %st(1), %st
fcom %st(1)
fcom %st(3)
@ -47,7 +47,7 @@ fcos
fdecstp
fdiv %st(0), %st(1)
fdiv %st, %st(1)
fdiv %st(2)
fdivs (%ecx)
fdivl (%eax)
@ -56,7 +56,7 @@ fdivp %st(2)
fidivs (%ecx)
fidivl (%eax)
fdivr %st(0), %st(1)
fdivr %st, %st(1)
fdivr %st(2)
fdivrs (%ecx)
fdivrl (%eax)
@ -106,7 +106,7 @@ fldln2
fldpi
fldz
fmul %st(0), %st(1)
fmul %st, %st(1)
fmul %st(2)
fmuls (%ecx)
fmull (%eax)
@ -153,7 +153,7 @@ fnstsw (%eax)
frstor (%eax)
fsave (%eax)
fsub %st(0), %st(1)
fsub %st, %st(1)
fsub %st(2)
fsubs (%ecx)
fsubl (%eax)
@ -162,7 +162,7 @@ fsubp %st(2)
fisubs (%ecx)
fisubl (%eax)
fsubr %st(0), %st(1)
fsubr %st, %st(1)
fsubr %st(2)
fsubrs (%ecx)
fsubrl (%eax)
@ -208,7 +208,7 @@ fyl2xp1
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 99 49.50 U f2xm1
# CHECK-NEXT: 1 1 1.00 U fabs
# CHECK-NEXT: 1 5 5.00 U fadd %st(0), %st(1)
# CHECK-NEXT: 1 5 5.00 U fadd %st, %st(1)
# CHECK-NEXT: 1 5 5.00 U fadd %st(2)
# CHECK-NEXT: 1 5 5.00 * U fadds (%ecx)
# CHECK-NEXT: 1 5 5.00 * U faddl (%ecx)
@ -220,14 +220,14 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.50 U fbstp (%eax)
# CHECK-NEXT: 1 1 1.00 U fchs
# CHECK-NEXT: 1 25 12.50 U fnclex
# CHECK-NEXT: 1 9 4.50 U fcmovb %st(1), %st(0)
# CHECK-NEXT: 1 9 4.50 U fcmovbe %st(1), %st(0)
# CHECK-NEXT: 1 9 4.50 U fcmove %st(1), %st(0)
# CHECK-NEXT: 1 9 4.50 U fcmovnb %st(1), %st(0)
# CHECK-NEXT: 1 9 4.50 U fcmovnbe %st(1), %st(0)
# CHECK-NEXT: 1 9 4.50 U fcmovne %st(1), %st(0)
# CHECK-NEXT: 1 9 4.50 U fcmovnu %st(1), %st(0)
# CHECK-NEXT: 1 9 4.50 U fcmovu %st(1), %st(0)
# CHECK-NEXT: 1 9 4.50 U fcmovb %st(1), %st
# CHECK-NEXT: 1 9 4.50 U fcmovbe %st(1), %st
# CHECK-NEXT: 1 9 4.50 U fcmove %st(1), %st
# CHECK-NEXT: 1 9 4.50 U fcmovnb %st(1), %st
# CHECK-NEXT: 1 9 4.50 U fcmovnbe %st(1), %st
# CHECK-NEXT: 1 9 4.50 U fcmovne %st(1), %st
# CHECK-NEXT: 1 9 4.50 U fcmovnu %st(1), %st
# CHECK-NEXT: 1 9 4.50 U fcmovu %st(1), %st
# CHECK-NEXT: 1 5 5.00 U fcom %st(1)
# CHECK-NEXT: 1 5 5.00 U fcom %st(3)
# CHECK-NEXT: 1 5 5.00 U fcoms (%ecx)
@ -241,7 +241,7 @@ fyl2xp1
# CHECK-NEXT: 1 9 4.50 U fcompi %st(3)
# CHECK-NEXT: 1 174 87.00 U fcos
# CHECK-NEXT: 1 1 0.50 U fdecstp
# CHECK-NEXT: 1 34 17.00 U fdiv %st(0), %st(1)
# CHECK-NEXT: 1 34 17.00 U fdiv %st, %st(1)
# CHECK-NEXT: 1 34 17.00 U fdiv %st(2)
# CHECK-NEXT: 1 34 17.00 * U fdivs (%ecx)
# CHECK-NEXT: 1 34 17.00 * U fdivl (%eax)
@ -249,7 +249,7 @@ fyl2xp1
# CHECK-NEXT: 1 34 17.00 U fdivp %st(2)
# CHECK-NEXT: 1 34 17.00 * U fidivs (%ecx)
# CHECK-NEXT: 1 34 17.00 * U fidivl (%eax)
# CHECK-NEXT: 1 34 17.00 U fdivr %st(0), %st(1)
# CHECK-NEXT: 1 34 17.00 U fdivr %st, %st(1)
# CHECK-NEXT: 1 34 17.00 U fdivr %st(2)
# CHECK-NEXT: 1 34 17.00 * U fdivrs (%ecx)
# CHECK-NEXT: 1 34 17.00 * U fdivrl (%eax)
@ -288,7 +288,7 @@ fyl2xp1
# CHECK-NEXT: 1 10 5.00 U fldln2
# CHECK-NEXT: 1 10 5.00 U fldpi
# CHECK-NEXT: 1 1 0.50 U fldz
# CHECK-NEXT: 1 4 4.00 U fmul %st(0), %st(1)
# CHECK-NEXT: 1 4 4.00 U fmul %st, %st(1)
# CHECK-NEXT: 1 4 4.00 U fmul %st(2)
# CHECK-NEXT: 1 4 4.00 * U fmuls (%ecx)
# CHECK-NEXT: 1 4 4.00 * U fmull (%eax)
@ -321,7 +321,7 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.50 U frstor (%eax)
# CHECK-NEXT: 1 1 0.50 U wait
# CHECK-NEXT: 1 100 0.50 U fnsave (%eax)
# CHECK-NEXT: 1 5 5.00 U fsub %st(0), %st(1)
# CHECK-NEXT: 1 5 5.00 U fsub %st, %st(1)
# CHECK-NEXT: 1 5 5.00 U fsub %st(2)
# CHECK-NEXT: 1 5 5.00 * U fsubs (%ecx)
# CHECK-NEXT: 1 5 5.00 * U fsubl (%eax)
@ -329,7 +329,7 @@ fyl2xp1
# CHECK-NEXT: 1 5 5.00 U fsubp %st(2)
# CHECK-NEXT: 1 5 5.00 * U fisubs (%ecx)
# CHECK-NEXT: 1 5 5.00 * U fisubl (%eax)
# CHECK-NEXT: 1 5 5.00 U fsubr %st(0), %st(1)
# CHECK-NEXT: 1 5 5.00 U fsubr %st, %st(1)
# CHECK-NEXT: 1 5 5.00 U fsubr %st(2)
# CHECK-NEXT: 1 5 5.00 * U fsubrs (%ecx)
# CHECK-NEXT: 1 5 5.00 * U fsubrl (%eax)
@ -367,7 +367,7 @@ fyl2xp1
# CHECK-NEXT: [0] [1] Instructions:
# CHECK-NEXT: 49.50 49.50 f2xm1
# CHECK-NEXT: - 1.00 fabs
# CHECK-NEXT: 5.00 - fadd %st(0), %st(1)
# CHECK-NEXT: 5.00 - fadd %st, %st(1)
# CHECK-NEXT: 5.00 - fadd %st(2)
# CHECK-NEXT: 5.00 - fadds (%ecx)
# CHECK-NEXT: 5.00 - faddl (%ecx)
@ -379,14 +379,14 @@ fyl2xp1
# CHECK-NEXT: 0.50 0.50 fbstp (%eax)
# CHECK-NEXT: - 1.00 fchs
# CHECK-NEXT: 12.50 12.50 fnclex
# CHECK-NEXT: 4.50 4.50 fcmovb %st(1), %st(0)
# CHECK-NEXT: 4.50 4.50 fcmovbe %st(1), %st(0)
# CHECK-NEXT: 4.50 4.50 fcmove %st(1), %st(0)
# CHECK-NEXT: 4.50 4.50 fcmovnb %st(1), %st(0)
# CHECK-NEXT: 4.50 4.50 fcmovnbe %st(1), %st(0)
# CHECK-NEXT: 4.50 4.50 fcmovne %st(1), %st(0)
# CHECK-NEXT: 4.50 4.50 fcmovnu %st(1), %st(0)
# CHECK-NEXT: 4.50 4.50 fcmovu %st(1), %st(0)
# CHECK-NEXT: 4.50 4.50 fcmovb %st(1), %st
# CHECK-NEXT: 4.50 4.50 fcmovbe %st(1), %st
# CHECK-NEXT: 4.50 4.50 fcmove %st(1), %st
# CHECK-NEXT: 4.50 4.50 fcmovnb %st(1), %st
# CHECK-NEXT: 4.50 4.50 fcmovnbe %st(1), %st
# CHECK-NEXT: 4.50 4.50 fcmovne %st(1), %st
# CHECK-NEXT: 4.50 4.50 fcmovnu %st(1), %st
# CHECK-NEXT: 4.50 4.50 fcmovu %st(1), %st
# CHECK-NEXT: 5.00 - fcom %st(1)
# CHECK-NEXT: 5.00 - fcom %st(3)
# CHECK-NEXT: 5.00 - fcoms (%ecx)
@ -400,7 +400,7 @@ fyl2xp1
# CHECK-NEXT: 4.50 4.50 fcompi %st(3)
# CHECK-NEXT: 87.00 87.00 fcos
# CHECK-NEXT: 0.50 0.50 fdecstp
# CHECK-NEXT: 17.00 17.00 fdiv %st(0), %st(1)
# CHECK-NEXT: 17.00 17.00 fdiv %st, %st(1)
# CHECK-NEXT: 17.00 17.00 fdiv %st(2)
# CHECK-NEXT: 17.00 17.00 fdivs (%ecx)
# CHECK-NEXT: 17.00 17.00 fdivl (%eax)
@ -408,7 +408,7 @@ fyl2xp1
# CHECK-NEXT: 17.00 17.00 fdivp %st(2)
# CHECK-NEXT: 17.00 17.00 fidivs (%ecx)
# CHECK-NEXT: 17.00 17.00 fidivl (%eax)
# CHECK-NEXT: 17.00 17.00 fdivr %st(0), %st(1)
# CHECK-NEXT: 17.00 17.00 fdivr %st, %st(1)
# CHECK-NEXT: 17.00 17.00 fdivr %st(2)
# CHECK-NEXT: 17.00 17.00 fdivrs (%ecx)
# CHECK-NEXT: 17.00 17.00 fdivrl (%eax)
@ -447,7 +447,7 @@ fyl2xp1
# CHECK-NEXT: 5.00 5.00 fldln2
# CHECK-NEXT: 5.00 5.00 fldpi
# CHECK-NEXT: 0.50 0.50 fldz
# CHECK-NEXT: 4.00 - fmul %st(0), %st(1)
# CHECK-NEXT: 4.00 - fmul %st, %st(1)
# CHECK-NEXT: 4.00 - fmul %st(2)
# CHECK-NEXT: 4.00 - fmuls (%ecx)
# CHECK-NEXT: 4.00 - fmull (%eax)
@ -480,7 +480,7 @@ fyl2xp1
# CHECK-NEXT: 0.50 0.50 frstor (%eax)
# CHECK-NEXT: 0.50 0.50 wait
# CHECK-NEXT: 0.50 0.50 fnsave (%eax)
# CHECK-NEXT: 5.00 - fsub %st(0), %st(1)
# CHECK-NEXT: 5.00 - fsub %st, %st(1)
# CHECK-NEXT: 5.00 - fsub %st(2)
# CHECK-NEXT: 5.00 - fsubs (%ecx)
# CHECK-NEXT: 5.00 - fsubl (%eax)
@ -488,7 +488,7 @@ fyl2xp1
# CHECK-NEXT: 5.00 - fsubp %st(2)
# CHECK-NEXT: 5.00 - fisubs (%ecx)
# CHECK-NEXT: 5.00 - fisubl (%eax)
# CHECK-NEXT: 5.00 - fsubr %st(0), %st(1)
# CHECK-NEXT: 5.00 - fsubr %st, %st(1)
# CHECK-NEXT: 5.00 - fsubr %st(2)
# CHECK-NEXT: 5.00 - fsubrs (%ecx)
# CHECK-NEXT: 5.00 - fsubrl (%eax)

View File

@ -5,7 +5,7 @@ f2xm1
fabs
fadd %st(0), %st(1)
fadd %st, %st(1)
fadd %st(2)
fadds (%ecx)
faddl (%ecx)
@ -21,14 +21,14 @@ fchs
fnclex
fcmovb %st(1), %st(0)
fcmovbe %st(1), %st(0)
fcmove %st(1), %st(0)
fcmovnb %st(1), %st(0)
fcmovnbe %st(1), %st(0)
fcmovne %st(1), %st(0)
fcmovnu %st(1), %st(0)
fcmovu %st(1), %st(0)
fcmovb %st(1), %st
fcmovbe %st(1), %st
fcmove %st(1), %st
fcmovnb %st(1), %st
fcmovnbe %st(1), %st
fcmovne %st(1), %st
fcmovnu %st(1), %st
fcmovu %st(1), %st
fcom %st(1)
fcom %st(3)
@ -47,7 +47,7 @@ fcos
fdecstp
fdiv %st(0), %st(1)
fdiv %st, %st(1)
fdiv %st(2)
fdivs (%ecx)
fdivl (%eax)
@ -56,7 +56,7 @@ fdivp %st(2)
fidivs (%ecx)
fidivl (%eax)
fdivr %st(0), %st(1)
fdivr %st, %st(1)
fdivr %st(2)
fdivrs (%ecx)
fdivrl (%eax)
@ -106,7 +106,7 @@ fldln2
fldpi
fldz
fmul %st(0), %st(1)
fmul %st, %st(1)
fmul %st(2)
fmuls (%ecx)
fmull (%eax)
@ -153,7 +153,7 @@ fnstsw (%eax)
frstor (%eax)
fsave (%eax)
fsub %st(0), %st(1)
fsub %st, %st(1)
fsub %st(2)
fsubs (%ecx)
fsubl (%eax)
@ -162,7 +162,7 @@ fsubp %st(2)
fisubs (%ecx)
fisubl (%eax)
fsubr %st(0), %st(1)
fsubr %st, %st(1)
fsubr %st(2)
fsubrs (%ecx)
fsubrl (%eax)
@ -208,7 +208,7 @@ fyl2xp1
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 100 0.50 U f2xm1
# CHECK-NEXT: 1 1 1.00 U fabs
# CHECK-NEXT: 1 5 1.00 U fadd %st(0), %st(1)
# CHECK-NEXT: 1 5 1.00 U fadd %st, %st(1)
# CHECK-NEXT: 1 5 1.00 U fadd %st(2)
# CHECK-NEXT: 1 10 1.00 * U fadds (%ecx)
# CHECK-NEXT: 1 10 1.00 * U faddl (%ecx)
@ -220,14 +220,14 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.50 U fbstp (%eax)
# CHECK-NEXT: 1 1 1.00 U fchs
# CHECK-NEXT: 1 100 0.50 U fnclex
# CHECK-NEXT: 1 1 1.00 U fcmovb %st(1), %st(0)
# CHECK-NEXT: 1 1 1.00 U fcmovbe %st(1), %st(0)
# CHECK-NEXT: 1 1 1.00 U fcmove %st(1), %st(0)
# CHECK-NEXT: 1 1 1.00 U fcmovnb %st(1), %st(0)
# CHECK-NEXT: 1 1 1.00 U fcmovnbe %st(1), %st(0)
# CHECK-NEXT: 1 1 1.00 U fcmovne %st(1), %st(0)
# CHECK-NEXT: 1 1 1.00 U fcmovnu %st(1), %st(0)
# CHECK-NEXT: 1 1 1.00 U fcmovu %st(1), %st(0)
# CHECK-NEXT: 1 1 1.00 U fcmovb %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcmovbe %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcmove %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcmovnb %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcmovnbe %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcmovne %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcmovnu %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcmovu %st(1), %st
# CHECK-NEXT: 2 1 1.00 U fcom %st(1)
# CHECK-NEXT: 2 1 1.00 U fcom %st(3)
# CHECK-NEXT: 1 6 1.00 U fcoms (%ecx)
@ -241,7 +241,7 @@ fyl2xp1
# CHECK-NEXT: 2 1 1.00 U fcompi %st(3)
# CHECK-NEXT: 1 100 0.50 U fcos
# CHECK-NEXT: 1 100 0.50 U fdecstp
# CHECK-NEXT: 1 9 9.50 U fdiv %st(0), %st(1)
# CHECK-NEXT: 1 9 9.50 U fdiv %st, %st(1)
# CHECK-NEXT: 1 9 9.50 U fdiv %st(2)
# CHECK-NEXT: 1 14 9.50 * U fdivs (%ecx)
# CHECK-NEXT: 1 14 9.50 * U fdivl (%eax)
@ -249,7 +249,7 @@ fyl2xp1
# CHECK-NEXT: 1 9 9.50 U fdivp %st(2)
# CHECK-NEXT: 1 14 9.50 * U fidivs (%ecx)
# CHECK-NEXT: 1 14 9.50 * U fidivl (%eax)
# CHECK-NEXT: 1 9 9.50 U fdivr %st(0), %st(1)
# CHECK-NEXT: 1 9 9.50 U fdivr %st, %st(1)
# CHECK-NEXT: 1 9 9.50 U fdivr %st(2)
# CHECK-NEXT: 1 14 9.50 * U fdivrs (%ecx)
# CHECK-NEXT: 1 14 9.50 * U fdivrl (%eax)
@ -288,7 +288,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fldln2
# CHECK-NEXT: 1 3 1.00 U fldpi
# CHECK-NEXT: 1 3 1.00 U fldz
# CHECK-NEXT: 1 5 1.00 U fmul %st(0), %st(1)
# CHECK-NEXT: 1 5 1.00 U fmul %st, %st(1)
# CHECK-NEXT: 1 5 1.00 U fmul %st(2)
# CHECK-NEXT: 1 10 1.00 * U fmuls (%ecx)
# CHECK-NEXT: 1 10 1.00 * U fmull (%eax)
@ -321,7 +321,7 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.50 U frstor (%eax)
# CHECK-NEXT: 1 100 0.50 U wait
# CHECK-NEXT: 1 100 0.50 U fnsave (%eax)
# CHECK-NEXT: 1 5 1.00 U fsub %st(0), %st(1)
# CHECK-NEXT: 1 5 1.00 U fsub %st, %st(1)
# CHECK-NEXT: 1 5 1.00 U fsub %st(2)
# CHECK-NEXT: 1 10 1.00 * U fsubs (%ecx)
# CHECK-NEXT: 1 10 1.00 * U fsubl (%eax)
@ -329,7 +329,7 @@ fyl2xp1
# CHECK-NEXT: 1 5 1.00 U fsubp %st(2)
# CHECK-NEXT: 1 10 1.00 * U fisubs (%ecx)
# CHECK-NEXT: 1 10 1.00 * U fisubl (%eax)
# CHECK-NEXT: 1 5 1.00 U fsubr %st(0), %st(1)
# CHECK-NEXT: 1 5 1.00 U fsubr %st, %st(1)
# CHECK-NEXT: 1 5 1.00 U fsubr %st(2)
# CHECK-NEXT: 1 10 1.00 * U fsubrs (%ecx)
# CHECK-NEXT: 1 10 1.00 * U fsubrl (%eax)
@ -388,7 +388,7 @@ fyl2xp1
# CHECK-NEXT: [0.0] [0.1] [1] [2] [3] [4] [5] [6] [7.0] [7.1] [8.0] [8.1] [9] [10] [11] [12] [13] [14] [15] [16.0] [16.1] [17] [18] Instructions:
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - f2xm1
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - 1.00 - - - - - - - fabs
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fadd %st(0), %st(1)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fadd %st, %st(1)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fadd %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - fadds (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - faddl (%ecx)
@ -400,14 +400,14 @@ fyl2xp1
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - fbstp (%eax)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - 1.00 - - - - - - - fchs
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - fnclex
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovb %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovbe %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmove %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovnb %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovnbe %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovne %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovnu %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovu %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovb %st(1), %st
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovbe %st(1), %st
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmove %st(1), %st
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovnb %st(1), %st
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovnbe %st(1), %st
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovne %st(1), %st
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovnu %st(1), %st
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcmovu %st(1), %st
# CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcom %st(1)
# CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcom %st(3)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - 1.00 - - - - - - - fcoms (%ecx)
@ -421,7 +421,7 @@ fyl2xp1
# CHECK-NEXT: - - - - - 1.00 - - 0.50 0.50 - - - - 1.00 - - - - - - - - fcompi %st(3)
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - fcos
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - fdecstp
# CHECK-NEXT: - - - - - - - - 9.50 9.50 - - - - - 1.00 - - - - - - - fdiv %st(0), %st(1)
# CHECK-NEXT: - - - - - - - - 9.50 9.50 - - - - - 1.00 - - - - - - - fdiv %st, %st(1)
# CHECK-NEXT: - - - - - - - - 9.50 9.50 - - - - - 1.00 - - - - - - - fdiv %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - - 9.50 9.50 - - - - - 1.00 - - - 0.50 0.50 - - fdivs (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - - 9.50 9.50 - - - - - 1.00 - - - 0.50 0.50 - - fdivl (%eax)
@ -429,7 +429,7 @@ fyl2xp1
# CHECK-NEXT: - - - - - - - - 9.50 9.50 - - - - - 1.00 - - - - - - - fdivp %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - - 9.50 9.50 - - - - - 1.00 - - - 0.50 0.50 - - fidivs (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - - 9.50 9.50 - - - - - 1.00 - - - 0.50 0.50 - - fidivl (%eax)
# CHECK-NEXT: - - - - - - - - 9.50 9.50 - - - - - 1.00 - - - - - - - fdivr %st(0), %st(1)
# CHECK-NEXT: - - - - - - - - 9.50 9.50 - - - - - 1.00 - - - - - - - fdivr %st, %st(1)
# CHECK-NEXT: - - - - - - - - 9.50 9.50 - - - - - 1.00 - - - - - - - fdivr %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - - 9.50 9.50 - - - - - 1.00 - - - 0.50 0.50 - - fdivrs (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - - 9.50 9.50 - - - - - 1.00 - - - 0.50 0.50 - - fdivrl (%eax)
@ -468,7 +468,7 @@ fyl2xp1
# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - - - - - - - fldln2
# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - - - - - - - fldpi
# CHECK-NEXT: - - - - - - - - - - - - - 1.00 - 1.00 - - - - - - - fldz
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - 1.00 - - - - - - - fmul %st(0), %st(1)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - 1.00 - - - - - - - fmul %st, %st(1)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - - 1.00 - - - - - - - fmul %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - - 1.00 - - - 0.50 0.50 - - fmuls (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - - 1.00 - - - 0.50 0.50 - - fmull (%eax)
@ -501,7 +501,7 @@ fyl2xp1
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - frstor (%eax)
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - wait
# CHECK-NEXT: - - - - - 0.50 0.50 - - - - - - - - - - - - - - - - fnsave (%eax)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fsub %st(0), %st(1)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fsub %st, %st(1)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fsub %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - fsubs (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - fsubl (%eax)
@ -509,7 +509,7 @@ fyl2xp1
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fsubp %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - fisubs (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - fisubl (%eax)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fsubr %st(0), %st(1)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fsubr %st, %st(1)
# CHECK-NEXT: - - - - - - - - 0.50 0.50 - - - - 1.00 - - - - - - - - fsubr %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - fsubrs (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 0.50 - - - - 1.00 - - - - 0.50 0.50 - - fsubrl (%eax)

View File

@ -5,7 +5,7 @@ f2xm1
fabs
fadd %st(0), %st(1)
fadd %st, %st(1)
fadd %st(2)
fadds (%ecx)
faddl (%ecx)
@ -21,14 +21,14 @@ fchs
fnclex
fcmovb %st(1), %st(0)
fcmovbe %st(1), %st(0)
fcmove %st(1), %st(0)
fcmovnb %st(1), %st(0)
fcmovnbe %st(1), %st(0)
fcmovne %st(1), %st(0)
fcmovnu %st(1), %st(0)
fcmovu %st(1), %st(0)
fcmovb %st(1), %st
fcmovbe %st(1), %st
fcmove %st(1), %st
fcmovnb %st(1), %st
fcmovnbe %st(1), %st
fcmovne %st(1), %st
fcmovnu %st(1), %st
fcmovu %st(1), %st
fcom %st(1)
fcom %st(3)
@ -47,7 +47,7 @@ fcos
fdecstp
fdiv %st(0), %st(1)
fdiv %st, %st(1)
fdiv %st(2)
fdivs (%ecx)
fdivl (%eax)
@ -56,7 +56,7 @@ fdivp %st(2)
fidivs (%ecx)
fidivl (%eax)
fdivr %st(0), %st(1)
fdivr %st, %st(1)
fdivr %st(2)
fdivrs (%ecx)
fdivrl (%eax)
@ -106,7 +106,7 @@ fldln2
fldpi
fldz
fmul %st(0), %st(1)
fmul %st, %st(1)
fmul %st(2)
fmuls (%ecx)
fmull (%eax)
@ -153,7 +153,7 @@ fnstsw (%eax)
frstor (%eax)
fsave (%eax)
fsub %st(0), %st(1)
fsub %st, %st(1)
fsub %st(2)
fsubs (%ecx)
fsubl (%eax)
@ -162,7 +162,7 @@ fsubp %st(2)
fisubs (%ecx)
fisubl (%eax)
fsubr %st(0), %st(1)
fsubr %st, %st(1)
fsubr %st(2)
fsubrs (%ecx)
fsubrl (%eax)
@ -208,7 +208,7 @@ fyl2xp1
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 100 0.25 U f2xm1
# CHECK-NEXT: 1 1 1.00 U fabs
# CHECK-NEXT: 1 3 1.00 U fadd %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st(2)
# CHECK-NEXT: 2 9 1.00 * U fadds (%ecx)
# CHECK-NEXT: 2 9 1.00 * U faddl (%ecx)
@ -220,14 +220,14 @@ fyl2xp1
# CHECK-NEXT: 2 1 1.00 U fbstp (%eax)
# CHECK-NEXT: 1 1 1.00 U fchs
# CHECK-NEXT: 4 4 1.00 U fnclex
# CHECK-NEXT: 1 3 1.00 U fcmovb %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovbe %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmove %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnb %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnbe %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovne %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnu %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovu %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovb %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovbe %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmove %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnb %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnbe %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovne %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnu %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovu %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcom %st(1)
# CHECK-NEXT: 1 1 1.00 U fcom %st(3)
# CHECK-NEXT: 2 7 1.00 U fcoms (%ecx)
@ -241,7 +241,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fcompi %st(3)
# CHECK-NEXT: 1 100 0.25 U fcos
# CHECK-NEXT: 2 2 1.00 U fdecstp
# CHECK-NEXT: 1 15 1.00 U fdiv %st(0), %st(1)
# CHECK-NEXT: 1 15 1.00 U fdiv %st, %st(1)
# CHECK-NEXT: 1 20 1.00 U fdiv %st(2)
# CHECK-NEXT: 2 21 1.00 * U fdivs (%ecx)
# CHECK-NEXT: 2 21 1.00 * U fdivl (%eax)
@ -249,7 +249,7 @@ fyl2xp1
# CHECK-NEXT: 1 15 1.00 U fdivp %st(2)
# CHECK-NEXT: 3 24 1.00 * U fidivs (%ecx)
# CHECK-NEXT: 3 24 1.00 * U fidivl (%eax)
# CHECK-NEXT: 1 20 1.00 U fdivr %st(0), %st(1)
# CHECK-NEXT: 1 20 1.00 U fdivr %st, %st(1)
# CHECK-NEXT: 1 15 1.00 U fdivr %st(2)
# CHECK-NEXT: 2 26 1.00 * U fdivrs (%ecx)
# CHECK-NEXT: 2 26 1.00 * U fdivrl (%eax)
@ -288,7 +288,7 @@ fyl2xp1
# CHECK-NEXT: 2 1 1.00 U fldln2
# CHECK-NEXT: 2 1 1.00 U fldpi
# CHECK-NEXT: 1 1 0.50 U fldz
# CHECK-NEXT: 1 5 1.00 U fmul %st(0), %st(1)
# CHECK-NEXT: 1 5 1.00 U fmul %st, %st(1)
# CHECK-NEXT: 1 5 1.00 U fmul %st(2)
# CHECK-NEXT: 2 11 1.00 * U fmuls (%ecx)
# CHECK-NEXT: 2 11 1.00 * U fmull (%eax)
@ -321,7 +321,7 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.25 U frstor (%eax)
# CHECK-NEXT: 2 2 0.50 U wait
# CHECK-NEXT: 1 100 0.25 U fnsave (%eax)
# CHECK-NEXT: 1 3 1.00 U fsub %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st(2)
# CHECK-NEXT: 2 9 1.00 * U fsubs (%ecx)
# CHECK-NEXT: 2 9 1.00 * U fsubl (%eax)
@ -329,7 +329,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fsubp %st(2)
# CHECK-NEXT: 3 12 2.00 * U fisubs (%ecx)
# CHECK-NEXT: 3 12 2.00 * U fisubl (%eax)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(2)
# CHECK-NEXT: 2 9 1.00 * U fsubrs (%ecx)
# CHECK-NEXT: 2 9 1.00 * U fsubrl (%eax)
@ -375,7 +375,7 @@ fyl2xp1
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - f2xm1
# CHECK-NEXT: - - - - - - - 1.00 - - fabs
# CHECK-NEXT: - - - 1.00 - - - - - - fadd %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fadd %st, %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fadd %st(2)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - fadds (%ecx)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - faddl (%ecx)
@ -387,14 +387,14 @@ fyl2xp1
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 fbstp (%eax)
# CHECK-NEXT: - - - - - - - 1.00 - - fchs
# CHECK-NEXT: - - 1.00 1.00 - - - 1.00 1.00 - fnclex
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovb %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovbe %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmove %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnb %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnbe %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovne %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnu %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovu %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovb %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovbe %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmove %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnb %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnbe %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovne %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnu %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovu %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcom %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fcom %st(3)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - fcoms (%ecx)
@ -408,7 +408,7 @@ fyl2xp1
# CHECK-NEXT: - - - 1.00 - - - - - - fcompi %st(3)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fcos
# CHECK-NEXT: - - 1.00 1.00 - - - - - - fdecstp
# CHECK-NEXT: - - 1.00 - - - - - - - fdiv %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdiv %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdiv %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivs (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivl (%eax)
@ -416,7 +416,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 - - - - - - - fdivp %st(2)
# CHECK-NEXT: - - 1.00 1.00 0.50 0.50 - - - - fidivs (%ecx)
# CHECK-NEXT: - - 1.00 1.00 0.50 0.50 - - - - fidivl (%eax)
# CHECK-NEXT: - - 1.00 - - - - - - - fdivr %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdivr %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdivr %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivrs (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivrl (%eax)
@ -455,7 +455,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldln2
# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldpi
# CHECK-NEXT: - - 0.50 0.50 - - - - - - fldz
# CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fmul %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fmuls (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fmull (%eax)
@ -488,7 +488,7 @@ fyl2xp1
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - frstor (%eax)
# CHECK-NEXT: - - 0.50 0.50 - - - 0.50 0.50 - wait
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fnsave (%eax)
# CHECK-NEXT: - - - 1.00 - - - - - - fsub %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fsub %st, %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fsub %st(2)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - fsubs (%ecx)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - fsubl (%eax)
@ -496,7 +496,7 @@ fyl2xp1
# CHECK-NEXT: - - - 1.00 - - - - - - fsubp %st(2)
# CHECK-NEXT: - - - 2.00 0.50 0.50 - - - - fisubs (%ecx)
# CHECK-NEXT: - - - 2.00 0.50 0.50 - - - - fisubl (%eax)
# CHECK-NEXT: - - - 1.00 - - - - - - fsubr %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fsubr %st, %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fsubr %st(2)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - fsubrs (%ecx)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - fsubrl (%eax)

View File

@ -5,7 +5,7 @@ f2xm1
fabs
fadd %st(0), %st(1)
fadd %st, %st(1)
fadd %st(2)
fadds (%ecx)
faddl (%ecx)
@ -21,14 +21,14 @@ fchs
fnclex
fcmovb %st(1), %st(0)
fcmovbe %st(1), %st(0)
fcmove %st(1), %st(0)
fcmovnb %st(1), %st(0)
fcmovnbe %st(1), %st(0)
fcmovne %st(1), %st(0)
fcmovnu %st(1), %st(0)
fcmovu %st(1), %st(0)
fcmovb %st(1), %st
fcmovbe %st(1), %st
fcmove %st(1), %st
fcmovnb %st(1), %st
fcmovnbe %st(1), %st
fcmovne %st(1), %st
fcmovnu %st(1), %st
fcmovu %st(1), %st
fcom %st(1)
fcom %st(3)
@ -47,7 +47,7 @@ fcos
fdecstp
fdiv %st(0), %st(1)
fdiv %st, %st(1)
fdiv %st(2)
fdivs (%ecx)
fdivl (%eax)
@ -56,7 +56,7 @@ fdivp %st(2)
fidivs (%ecx)
fidivl (%eax)
fdivr %st(0), %st(1)
fdivr %st, %st(1)
fdivr %st(2)
fdivrs (%ecx)
fdivrl (%eax)
@ -106,7 +106,7 @@ fldln2
fldpi
fldz
fmul %st(0), %st(1)
fmul %st, %st(1)
fmul %st(2)
fmuls (%ecx)
fmull (%eax)
@ -153,7 +153,7 @@ fnstsw (%eax)
frstor (%eax)
fsave (%eax)
fsub %st(0), %st(1)
fsub %st, %st(1)
fsub %st(2)
fsubs (%ecx)
fsubl (%eax)
@ -162,7 +162,7 @@ fsubp %st(2)
fisubs (%ecx)
fisubl (%eax)
fsubr %st(0), %st(1)
fsubr %st, %st(1)
fsubr %st(2)
fsubrs (%ecx)
fsubrl (%eax)
@ -208,7 +208,7 @@ fyl2xp1
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 100 0.50 U f2xm1
# CHECK-NEXT: 1 2 1.00 U fabs
# CHECK-NEXT: 1 3 1.00 U fadd %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st(2)
# CHECK-NEXT: 1 8 1.00 * U fadds (%ecx)
# CHECK-NEXT: 1 8 1.00 * U faddl (%ecx)
@ -220,14 +220,14 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.50 U fbstp (%eax)
# CHECK-NEXT: 1 2 1.00 U fchs
# CHECK-NEXT: 1 100 0.50 U fnclex
# CHECK-NEXT: 1 3 1.00 U fcmovb %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovbe %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmove %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnb %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnbe %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovne %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnu %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovu %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovb %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovbe %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmove %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnb %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnbe %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovne %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnu %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovu %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcom %st(1)
# CHECK-NEXT: 1 3 1.00 U fcom %st(3)
# CHECK-NEXT: 1 8 1.00 U fcoms (%ecx)
@ -241,7 +241,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fcompi %st(3)
# CHECK-NEXT: 1 100 0.50 U fcos
# CHECK-NEXT: 1 100 0.50 U fdecstp
# CHECK-NEXT: 1 19 19.00 U fdiv %st(0), %st(1)
# CHECK-NEXT: 1 19 19.00 U fdiv %st, %st(1)
# CHECK-NEXT: 1 19 19.00 U fdiv %st(2)
# CHECK-NEXT: 1 24 19.00 * U fdivs (%ecx)
# CHECK-NEXT: 1 24 19.00 * U fdivl (%eax)
@ -249,7 +249,7 @@ fyl2xp1
# CHECK-NEXT: 1 19 19.00 U fdivp %st(2)
# CHECK-NEXT: 1 24 19.00 * U fidivs (%ecx)
# CHECK-NEXT: 1 24 19.00 * U fidivl (%eax)
# CHECK-NEXT: 1 19 19.00 U fdivr %st(0), %st(1)
# CHECK-NEXT: 1 19 19.00 U fdivr %st, %st(1)
# CHECK-NEXT: 1 19 19.00 U fdivr %st(2)
# CHECK-NEXT: 1 24 19.00 * U fdivrs (%ecx)
# CHECK-NEXT: 1 24 19.00 * U fdivrl (%eax)
@ -288,7 +288,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fldln2
# CHECK-NEXT: 1 3 1.00 U fldpi
# CHECK-NEXT: 1 3 1.00 U fldz
# CHECK-NEXT: 1 2 1.00 U fmul %st(0), %st(1)
# CHECK-NEXT: 1 2 1.00 U fmul %st, %st(1)
# CHECK-NEXT: 1 2 1.00 U fmul %st(2)
# CHECK-NEXT: 1 7 1.00 * U fmuls (%ecx)
# CHECK-NEXT: 1 7 1.00 * U fmull (%eax)
@ -321,7 +321,7 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.50 U frstor (%eax)
# CHECK-NEXT: 1 100 0.50 U wait
# CHECK-NEXT: 1 100 0.50 U fnsave (%eax)
# CHECK-NEXT: 1 3 1.00 U fsub %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st(2)
# CHECK-NEXT: 1 8 1.00 * U fsubs (%ecx)
# CHECK-NEXT: 1 8 1.00 * U fsubl (%eax)
@ -329,7 +329,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fsubp %st(2)
# CHECK-NEXT: 1 8 1.00 * U fisubs (%ecx)
# CHECK-NEXT: 1 8 1.00 * U fisubl (%eax)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(2)
# CHECK-NEXT: 1 8 1.00 * U fsubrs (%ecx)
# CHECK-NEXT: 1 8 1.00 * U fsubrl (%eax)
@ -379,7 +379,7 @@ fyl2xp1
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - f2xm1
# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - fabs
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fadd %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fadd %st, %st(1)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fadd %st(2)
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - fadds (%ecx)
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - faddl (%ecx)
@ -391,14 +391,14 @@ fyl2xp1
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fbstp (%eax)
# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - fchs
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fnclex
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovb %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovbe %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmove %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovnb %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovnbe %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovne %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovnu %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovu %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovb %st(1), %st
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovbe %st(1), %st
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmove %st(1), %st
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovnb %st(1), %st
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovnbe %st(1), %st
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovne %st(1), %st
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovnu %st(1), %st
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fcmovu %st(1), %st
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - fcom %st(1)
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - fcom %st(3)
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - 1.00 - - - - - - fcoms (%ecx)
@ -412,7 +412,7 @@ fyl2xp1
# CHECK-NEXT: 1.00 - - 1.00 - 1.00 - - - - - - - - fcompi %st(3)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fcos
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fdecstp
# CHECK-NEXT: - - - - 19.00 - 1.00 - - - - - - - fdiv %st(0), %st(1)
# CHECK-NEXT: - - - - 19.00 - 1.00 - - - - - - - fdiv %st, %st(1)
# CHECK-NEXT: - - - - 19.00 - 1.00 - - - - - - - fdiv %st(2)
# CHECK-NEXT: - - - - 19.00 - 1.00 1.00 - - - - - - fdivs (%ecx)
# CHECK-NEXT: - - - - 19.00 - 1.00 1.00 - - - - - - fdivl (%eax)
@ -420,7 +420,7 @@ fyl2xp1
# CHECK-NEXT: - - - - 19.00 - 1.00 - - - - - - - fdivp %st(2)
# CHECK-NEXT: - - - - 19.00 - 1.00 1.00 - - - - - - fidivs (%ecx)
# CHECK-NEXT: - - - - 19.00 - 1.00 1.00 - - - - - - fidivl (%eax)
# CHECK-NEXT: - - - - 19.00 - 1.00 - - - - - - - fdivr %st(0), %st(1)
# CHECK-NEXT: - - - - 19.00 - 1.00 - - - - - - - fdivr %st, %st(1)
# CHECK-NEXT: - - - - 19.00 - 1.00 - - - - - - - fdivr %st(2)
# CHECK-NEXT: - - - - 19.00 - 1.00 1.00 - - - - - - fdivrs (%ecx)
# CHECK-NEXT: - - - - 19.00 - 1.00 1.00 - - - - - - fdivrl (%eax)
@ -459,7 +459,7 @@ fyl2xp1
# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - fldln2
# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - fldpi
# CHECK-NEXT: - - - - - - 1.00 - - - 1.00 - - - fldz
# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - fmul %st(0), %st(1)
# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - fmul %st, %st(1)
# CHECK-NEXT: - - - - 1.00 - 1.00 - - - - - - - fmul %st(2)
# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - fmuls (%ecx)
# CHECK-NEXT: - - - - 1.00 - 1.00 1.00 - - - - - - fmull (%eax)
@ -492,7 +492,7 @@ fyl2xp1
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - frstor (%eax)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - wait
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - fnsave (%eax)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fsub %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fsub %st, %st(1)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fsub %st(2)
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - fsubs (%ecx)
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - fsubl (%eax)
@ -500,7 +500,7 @@ fyl2xp1
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fsubp %st(2)
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - fisubs (%ecx)
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - fisubl (%eax)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fsubr %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fsubr %st, %st(1)
# CHECK-NEXT: - - - 1.00 - 1.00 - - - - - - - - fsubr %st(2)
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - fsubrs (%ecx)
# CHECK-NEXT: - - - 1.00 - 1.00 - 1.00 - - - - - - fsubrl (%eax)

View File

@ -5,7 +5,7 @@ f2xm1
fabs
fadd %st(0), %st(1)
fadd %st, %st(1)
fadd %st(2)
fadds (%ecx)
faddl (%ecx)
@ -21,14 +21,14 @@ fchs
fnclex
fcmovb %st(1), %st(0)
fcmovbe %st(1), %st(0)
fcmove %st(1), %st(0)
fcmovnb %st(1), %st(0)
fcmovnbe %st(1), %st(0)
fcmovne %st(1), %st(0)
fcmovnu %st(1), %st(0)
fcmovu %st(1), %st(0)
fcmovb %st(1), %st
fcmovbe %st(1), %st
fcmove %st(1), %st
fcmovnb %st(1), %st
fcmovnbe %st(1), %st
fcmovne %st(1), %st
fcmovnu %st(1), %st
fcmovu %st(1), %st
fcom %st(1)
fcom %st(3)
@ -47,7 +47,7 @@ fcos
fdecstp
fdiv %st(0), %st(1)
fdiv %st, %st(1)
fdiv %st(2)
fdivs (%ecx)
fdivl (%eax)
@ -56,7 +56,7 @@ fdivp %st(2)
fidivs (%ecx)
fidivl (%eax)
fdivr %st(0), %st(1)
fdivr %st, %st(1)
fdivr %st(2)
fdivrs (%ecx)
fdivrl (%eax)
@ -106,7 +106,7 @@ fldln2
fldpi
fldz
fmul %st(0), %st(1)
fmul %st, %st(1)
fmul %st(2)
fmuls (%ecx)
fmull (%eax)
@ -153,7 +153,7 @@ fnstsw (%eax)
frstor (%eax)
fsave (%eax)
fsub %st(0), %st(1)
fsub %st, %st(1)
fsub %st(2)
fsubs (%ecx)
fsubl (%eax)
@ -162,7 +162,7 @@ fsubp %st(2)
fisubs (%ecx)
fisubl (%eax)
fsubr %st(0), %st(1)
fsubr %st, %st(1)
fsubr %st(2)
fsubrs (%ecx)
fsubrl (%eax)
@ -208,7 +208,7 @@ fyl2xp1
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 100 0.33 U f2xm1
# CHECK-NEXT: 1 1 1.00 U fabs
# CHECK-NEXT: 1 3 1.00 U fadd %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st(2)
# CHECK-NEXT: 2 10 1.00 * U fadds (%ecx)
# CHECK-NEXT: 2 10 1.00 * U faddl (%ecx)
@ -220,14 +220,14 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.33 U fbstp (%eax)
# CHECK-NEXT: 1 1 1.00 U fchs
# CHECK-NEXT: 1 100 0.33 U fnclex
# CHECK-NEXT: 3 3 2.00 U fcmovb %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovbe %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmove %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovnb %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovnbe %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovne %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovnu %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovu %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovb %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmovbe %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmove %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmovnb %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmovnbe %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmovne %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmovnu %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmovu %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcom %st(1)
# CHECK-NEXT: 1 1 1.00 U fcom %st(3)
# CHECK-NEXT: 2 8 1.00 U fcoms (%ecx)
@ -241,7 +241,7 @@ fyl2xp1
# CHECK-NEXT: 3 3 1.00 U fcompi %st(3)
# CHECK-NEXT: 1 100 0.33 U fcos
# CHECK-NEXT: 1 1 1.00 U fdecstp
# CHECK-NEXT: 1 14 14.00 U fdiv %st(0), %st(1)
# CHECK-NEXT: 1 14 14.00 U fdiv %st, %st(1)
# CHECK-NEXT: 1 14 14.00 U fdiv %st(2)
# CHECK-NEXT: 2 31 1.00 * U fdivs (%ecx)
# CHECK-NEXT: 2 31 1.00 * U fdivl (%eax)
@ -249,7 +249,7 @@ fyl2xp1
# CHECK-NEXT: 1 14 14.00 U fdivp %st(2)
# CHECK-NEXT: 3 34 1.00 * U fidivs (%ecx)
# CHECK-NEXT: 3 34 1.00 * U fidivl (%eax)
# CHECK-NEXT: 1 14 14.00 U fdivr %st(0), %st(1)
# CHECK-NEXT: 1 14 14.00 U fdivr %st, %st(1)
# CHECK-NEXT: 1 14 14.00 U fdivr %st(2)
# CHECK-NEXT: 2 31 1.00 * U fdivrs (%ecx)
# CHECK-NEXT: 2 31 1.00 * U fdivrl (%eax)
@ -288,7 +288,7 @@ fyl2xp1
# CHECK-NEXT: 2 1 1.00 U fldln2
# CHECK-NEXT: 2 1 1.00 U fldpi
# CHECK-NEXT: 1 1 1.00 U fldz
# CHECK-NEXT: 1 5 1.00 U fmul %st(0), %st(1)
# CHECK-NEXT: 1 5 1.00 U fmul %st, %st(1)
# CHECK-NEXT: 1 5 1.00 U fmul %st(2)
# CHECK-NEXT: 2 12 1.00 * U fmuls (%ecx)
# CHECK-NEXT: 2 12 1.00 * U fmull (%eax)
@ -321,7 +321,7 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.33 U frstor (%eax)
# CHECK-NEXT: 1 100 0.33 U wait
# CHECK-NEXT: 1 100 0.33 U fnsave (%eax)
# CHECK-NEXT: 1 3 1.00 U fsub %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st(2)
# CHECK-NEXT: 2 10 1.00 * U fsubs (%ecx)
# CHECK-NEXT: 2 10 1.00 * U fsubl (%eax)
@ -329,7 +329,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fsubp %st(2)
# CHECK-NEXT: 3 13 2.00 * U fisubs (%ecx)
# CHECK-NEXT: 3 13 2.00 * U fisubl (%eax)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(2)
# CHECK-NEXT: 2 10 1.00 * U fsubrs (%ecx)
# CHECK-NEXT: 2 10 1.00 * U fsubrl (%eax)
@ -373,7 +373,7 @@ fyl2xp1
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - f2xm1
# CHECK-NEXT: - - - - - 1.00 - - fabs
# CHECK-NEXT: - - - 1.00 - - - - fadd %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fadd %st, %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fadd %st(2)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 fadds (%ecx)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 faddl (%ecx)
@ -385,14 +385,14 @@ fyl2xp1
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fbstp (%eax)
# CHECK-NEXT: - - - - - 1.00 - - fchs
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fnclex
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovb %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovbe %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmove %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovnb %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovnbe %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovne %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovnu %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovu %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovb %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovbe %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmove %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovnb %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovnbe %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovne %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovnu %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovu %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - fcom %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fcom %st(3)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 fcoms (%ecx)
@ -406,7 +406,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 1.00 - 1.00 - - fcompi %st(3)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fcos
# CHECK-NEXT: - - - - - 1.00 - - fdecstp
# CHECK-NEXT: - 14.00 1.00 - - - - - fdiv %st(0), %st(1)
# CHECK-NEXT: - 14.00 1.00 - - - - - fdiv %st, %st(1)
# CHECK-NEXT: - 14.00 1.00 - - - - - fdiv %st(2)
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 fdivs (%ecx)
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 fdivl (%eax)
@ -414,7 +414,7 @@ fyl2xp1
# CHECK-NEXT: - 14.00 1.00 - - - - - fdivp %st(2)
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 fidivs (%ecx)
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 fidivl (%eax)
# CHECK-NEXT: - 14.00 1.00 - - - - - fdivr %st(0), %st(1)
# CHECK-NEXT: - 14.00 1.00 - - - - - fdivr %st, %st(1)
# CHECK-NEXT: - 14.00 1.00 - - - - - fdivr %st(2)
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 fdivrs (%ecx)
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 fdivrl (%eax)
@ -453,7 +453,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 1.00 - - - - fldln2
# CHECK-NEXT: - - 1.00 1.00 - - - - fldpi
# CHECK-NEXT: - - - - - 1.00 - - fldz
# CHECK-NEXT: - - 1.00 - - - - - fmul %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - fmul %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - fmul %st(2)
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 fmuls (%ecx)
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 fmull (%eax)
@ -486,7 +486,7 @@ fyl2xp1
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - frstor (%eax)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - wait
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fnsave (%eax)
# CHECK-NEXT: - - - 1.00 - - - - fsub %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fsub %st, %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fsub %st(2)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 fsubs (%ecx)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 fsubl (%eax)
@ -494,7 +494,7 @@ fyl2xp1
# CHECK-NEXT: - - - 1.00 - - - - fsubp %st(2)
# CHECK-NEXT: - - - 2.00 - - 0.50 0.50 fisubs (%ecx)
# CHECK-NEXT: - - - 2.00 - - 0.50 0.50 fisubl (%eax)
# CHECK-NEXT: - - - 1.00 - - - - fsubr %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fsubr %st, %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fsubr %st(2)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 fsubrs (%ecx)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 fsubrl (%eax)

View File

@ -5,7 +5,7 @@ f2xm1
fabs
fadd %st(0), %st(1)
fadd %st, %st(1)
fadd %st(2)
fadds (%ecx)
faddl (%ecx)
@ -21,14 +21,14 @@ fchs
fnclex
fcmovb %st(1), %st(0)
fcmovbe %st(1), %st(0)
fcmove %st(1), %st(0)
fcmovnb %st(1), %st(0)
fcmovnbe %st(1), %st(0)
fcmovne %st(1), %st(0)
fcmovnu %st(1), %st(0)
fcmovu %st(1), %st(0)
fcmovb %st(1), %st
fcmovbe %st(1), %st
fcmove %st(1), %st
fcmovnb %st(1), %st
fcmovnbe %st(1), %st
fcmovne %st(1), %st
fcmovnu %st(1), %st
fcmovu %st(1), %st
fcom %st(1)
fcom %st(3)
@ -47,7 +47,7 @@ fcos
fdecstp
fdiv %st(0), %st(1)
fdiv %st, %st(1)
fdiv %st(2)
fdivs (%ecx)
fdivl (%eax)
@ -56,7 +56,7 @@ fdivp %st(2)
fidivs (%ecx)
fidivl (%eax)
fdivr %st(0), %st(1)
fdivr %st, %st(1)
fdivr %st(2)
fdivrs (%ecx)
fdivrl (%eax)
@ -106,7 +106,7 @@ fldln2
fldpi
fldz
fmul %st(0), %st(1)
fmul %st, %st(1)
fmul %st(2)
fmuls (%ecx)
fmull (%eax)
@ -153,7 +153,7 @@ fnstsw (%eax)
frstor (%eax)
fsave (%eax)
fsub %st(0), %st(1)
fsub %st, %st(1)
fsub %st(2)
fsubs (%ecx)
fsubl (%eax)
@ -162,7 +162,7 @@ fsubp %st(2)
fisubs (%ecx)
fisubl (%eax)
fsubr %st(0), %st(1)
fsubr %st, %st(1)
fsubr %st(2)
fsubrs (%ecx)
fsubrl (%eax)
@ -208,7 +208,7 @@ fyl2xp1
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 100 0.25 U f2xm1
# CHECK-NEXT: 1 1 1.00 U fabs
# CHECK-NEXT: 1 3 1.00 U fadd %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st(2)
# CHECK-NEXT: 2 10 1.00 * U fadds (%ecx)
# CHECK-NEXT: 2 10 1.00 * U faddl (%ecx)
@ -220,14 +220,14 @@ fyl2xp1
# CHECK-NEXT: 2 1 1.00 U fbstp (%eax)
# CHECK-NEXT: 1 1 1.00 U fchs
# CHECK-NEXT: 4 4 1.00 U fnclex
# CHECK-NEXT: 1 3 1.00 U fcmovb %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovbe %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmove %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnb %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnbe %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovne %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnu %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovu %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovb %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovbe %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmove %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnb %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnbe %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovne %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnu %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovu %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcom %st(1)
# CHECK-NEXT: 1 1 1.00 U fcom %st(3)
# CHECK-NEXT: 2 8 1.00 U fcoms (%ecx)
@ -241,7 +241,7 @@ fyl2xp1
# CHECK-NEXT: 3 1 0.50 U fcompi %st(3)
# CHECK-NEXT: 1 100 0.25 U fcos
# CHECK-NEXT: 2 2 1.00 U fdecstp
# CHECK-NEXT: 1 24 1.00 U fdiv %st(0), %st(1)
# CHECK-NEXT: 1 24 1.00 U fdiv %st, %st(1)
# CHECK-NEXT: 1 20 1.00 U fdiv %st(2)
# CHECK-NEXT: 2 31 1.00 * U fdivs (%ecx)
# CHECK-NEXT: 2 31 1.00 * U fdivl (%eax)
@ -249,7 +249,7 @@ fyl2xp1
# CHECK-NEXT: 1 24 1.00 U fdivp %st(2)
# CHECK-NEXT: 3 34 1.00 * U fidivs (%ecx)
# CHECK-NEXT: 3 34 1.00 * U fidivl (%eax)
# CHECK-NEXT: 1 20 1.00 U fdivr %st(0), %st(1)
# CHECK-NEXT: 1 20 1.00 U fdivr %st, %st(1)
# CHECK-NEXT: 1 24 1.00 U fdivr %st(2)
# CHECK-NEXT: 2 27 1.00 * U fdivrs (%ecx)
# CHECK-NEXT: 2 27 1.00 * U fdivrl (%eax)
@ -288,7 +288,7 @@ fyl2xp1
# CHECK-NEXT: 2 1 1.00 U fldln2
# CHECK-NEXT: 2 1 1.00 U fldpi
# CHECK-NEXT: 1 1 0.50 U fldz
# CHECK-NEXT: 1 5 1.00 U fmul %st(0), %st(1)
# CHECK-NEXT: 1 5 1.00 U fmul %st, %st(1)
# CHECK-NEXT: 1 5 1.00 U fmul %st(2)
# CHECK-NEXT: 2 12 1.00 * U fmuls (%ecx)
# CHECK-NEXT: 2 12 1.00 * U fmull (%eax)
@ -321,7 +321,7 @@ fyl2xp1
# CHECK-NEXT: 90 1 22.50 U frstor (%eax)
# CHECK-NEXT: 2 2 0.50 U wait
# CHECK-NEXT: 147 1 36.75 U fnsave (%eax)
# CHECK-NEXT: 1 3 1.00 U fsub %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st(2)
# CHECK-NEXT: 2 10 1.00 * U fsubs (%ecx)
# CHECK-NEXT: 2 10 1.00 * U fsubl (%eax)
@ -329,7 +329,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fsubp %st(2)
# CHECK-NEXT: 3 13 2.00 * U fisubs (%ecx)
# CHECK-NEXT: 3 13 2.00 * U fisubl (%eax)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(2)
# CHECK-NEXT: 2 10 1.00 * U fsubrs (%ecx)
# CHECK-NEXT: 2 10 1.00 * U fsubrl (%eax)
@ -375,7 +375,7 @@ fyl2xp1
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - f2xm1
# CHECK-NEXT: - - 1.00 - - - - - - - fabs
# CHECK-NEXT: - - - 1.00 - - - - - - fadd %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fadd %st, %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fadd %st(2)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - fadds (%ecx)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - faddl (%ecx)
@ -387,14 +387,14 @@ fyl2xp1
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 fbstp (%eax)
# CHECK-NEXT: - - 1.00 - - - - - - - fchs
# CHECK-NEXT: - - 1.00 1.00 - - - 1.00 1.00 - fnclex
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovb %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovbe %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmove %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnb %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnbe %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovne %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnu %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovu %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovb %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovbe %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmove %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnb %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnbe %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovne %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnu %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovu %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcom %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fcom %st(3)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - fcoms (%ecx)
@ -408,7 +408,7 @@ fyl2xp1
# CHECK-NEXT: - - 0.50 0.50 - - - - - - fcompi %st(3)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fcos
# CHECK-NEXT: - - 1.00 1.00 - - - - - - fdecstp
# CHECK-NEXT: - - 1.00 - - - - - - - fdiv %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdiv %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdiv %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivs (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivl (%eax)
@ -416,7 +416,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 - - - - - - - fdivp %st(2)
# CHECK-NEXT: - - 1.00 1.00 0.50 0.50 - - - - fidivs (%ecx)
# CHECK-NEXT: - - 1.00 1.00 0.50 0.50 - - - - fidivl (%eax)
# CHECK-NEXT: - - 1.00 - - - - - - - fdivr %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdivr %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdivr %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivrs (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivrl (%eax)
@ -455,7 +455,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldln2
# CHECK-NEXT: - - 1.00 1.00 - - - - - - fldpi
# CHECK-NEXT: - - 0.50 0.50 - - - - - - fldz
# CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fmul %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fmuls (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fmull (%eax)
@ -488,7 +488,7 @@ fyl2xp1
# CHECK-NEXT: - - - - - - - - - - frstor (%eax)
# CHECK-NEXT: - - 0.50 0.50 - - - 0.50 0.50 - wait
# CHECK-NEXT: - - - - - - - - - - fnsave (%eax)
# CHECK-NEXT: - - - 1.00 - - - - - - fsub %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fsub %st, %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fsub %st(2)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - fsubs (%ecx)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - fsubl (%eax)
@ -496,7 +496,7 @@ fyl2xp1
# CHECK-NEXT: - - - 1.00 - - - - - - fsubp %st(2)
# CHECK-NEXT: - - - 2.00 0.50 0.50 - - - - fisubs (%ecx)
# CHECK-NEXT: - - - 2.00 0.50 0.50 - - - - fisubl (%eax)
# CHECK-NEXT: - - - 1.00 - - - - - - fsubr %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fsubr %st, %st(1)
# CHECK-NEXT: - - - 1.00 - - - - - - fsubr %st(2)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - fsubrs (%ecx)
# CHECK-NEXT: - - - 1.00 0.50 0.50 - - - - fsubrl (%eax)

View File

@ -5,7 +5,7 @@ f2xm1
fabs
fadd %st(0), %st(1)
fadd %st, %st(1)
fadd %st(2)
fadds (%ecx)
faddl (%ecx)
@ -21,14 +21,14 @@ fchs
fnclex
fcmovb %st(1), %st(0)
fcmovbe %st(1), %st(0)
fcmove %st(1), %st(0)
fcmovnb %st(1), %st(0)
fcmovnbe %st(1), %st(0)
fcmovne %st(1), %st(0)
fcmovnu %st(1), %st(0)
fcmovu %st(1), %st(0)
fcmovb %st(1), %st
fcmovbe %st(1), %st
fcmove %st(1), %st
fcmovnb %st(1), %st
fcmovnbe %st(1), %st
fcmovne %st(1), %st
fcmovnu %st(1), %st
fcmovu %st(1), %st
fcom %st(1)
fcom %st(3)
@ -47,7 +47,7 @@ fcos
fdecstp
fdiv %st(0), %st(1)
fdiv %st, %st(1)
fdiv %st(2)
fdivs (%ecx)
fdivl (%eax)
@ -56,7 +56,7 @@ fdivp %st(2)
fidivs (%ecx)
fidivl (%eax)
fdivr %st(0), %st(1)
fdivr %st, %st(1)
fdivr %st(2)
fdivrs (%ecx)
fdivrl (%eax)
@ -106,7 +106,7 @@ fldln2
fldpi
fldz
fmul %st(0), %st(1)
fmul %st, %st(1)
fmul %st(2)
fmuls (%ecx)
fmull (%eax)
@ -153,7 +153,7 @@ fnstsw (%eax)
frstor (%eax)
fsave (%eax)
fsub %st(0), %st(1)
fsub %st, %st(1)
fsub %st(2)
fsubs (%ecx)
fsubl (%eax)
@ -162,7 +162,7 @@ fsubp %st(2)
fisubs (%ecx)
fisubl (%eax)
fsubr %st(0), %st(1)
fsubr %st, %st(1)
fsubr %st(2)
fsubrs (%ecx)
fsubrl (%eax)
@ -208,7 +208,7 @@ fyl2xp1
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 100 1.00 U f2xm1
# CHECK-NEXT: 1 1 0.50 U fabs
# CHECK-NEXT: 1 3 1.00 U fadd %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st(2)
# CHECK-NEXT: 1 6 1.00 * U fadds (%ecx)
# CHECK-NEXT: 1 6 1.00 * U faddl (%ecx)
@ -220,14 +220,14 @@ fyl2xp1
# CHECK-NEXT: 1 100 1.00 U fbstp (%eax)
# CHECK-NEXT: 1 1 0.50 U fchs
# CHECK-NEXT: 1 100 1.00 U fnclex
# CHECK-NEXT: 1 3 1.00 U fcmovb %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovbe %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmove %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnb %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnbe %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovne %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnu %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovu %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovb %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovbe %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmove %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnb %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnbe %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovne %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnu %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovu %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcom %st(1)
# CHECK-NEXT: 1 3 1.00 U fcom %st(3)
# CHECK-NEXT: 1 6 1.00 U fcoms (%ecx)
@ -241,7 +241,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fcompi %st(3)
# CHECK-NEXT: 1 100 1.00 U fcos
# CHECK-NEXT: 1 100 1.00 U fdecstp
# CHECK-NEXT: 1 19 17.00 U fdiv %st(0), %st(1)
# CHECK-NEXT: 1 19 17.00 U fdiv %st, %st(1)
# CHECK-NEXT: 1 19 17.00 U fdiv %st(2)
# CHECK-NEXT: 1 22 17.00 * U fdivs (%ecx)
# CHECK-NEXT: 1 22 17.00 * U fdivl (%eax)
@ -249,7 +249,7 @@ fyl2xp1
# CHECK-NEXT: 1 19 17.00 U fdivp %st(2)
# CHECK-NEXT: 1 22 17.00 * U fidivs (%ecx)
# CHECK-NEXT: 1 22 17.00 * U fidivl (%eax)
# CHECK-NEXT: 1 19 17.00 U fdivr %st(0), %st(1)
# CHECK-NEXT: 1 19 17.00 U fdivr %st, %st(1)
# CHECK-NEXT: 1 19 17.00 U fdivr %st(2)
# CHECK-NEXT: 1 22 17.00 * U fdivrs (%ecx)
# CHECK-NEXT: 1 22 17.00 * U fdivrl (%eax)
@ -288,7 +288,7 @@ fyl2xp1
# CHECK-NEXT: 2 1 1.00 U fldln2
# CHECK-NEXT: 2 1 1.00 U fldpi
# CHECK-NEXT: 1 1 0.50 U fldz
# CHECK-NEXT: 1 5 2.00 U fmul %st(0), %st(1)
# CHECK-NEXT: 1 5 2.00 U fmul %st, %st(1)
# CHECK-NEXT: 1 5 2.00 U fmul %st(2)
# CHECK-NEXT: 1 8 2.00 * U fmuls (%ecx)
# CHECK-NEXT: 1 8 2.00 * U fmull (%eax)
@ -321,7 +321,7 @@ fyl2xp1
# CHECK-NEXT: 1 100 1.00 U frstor (%eax)
# CHECK-NEXT: 1 100 1.00 U wait
# CHECK-NEXT: 1 100 1.00 U fnsave (%eax)
# CHECK-NEXT: 1 3 1.00 U fsub %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st(2)
# CHECK-NEXT: 1 6 1.00 * U fsubs (%ecx)
# CHECK-NEXT: 1 6 1.00 * U fsubl (%eax)
@ -329,7 +329,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fsubp %st(2)
# CHECK-NEXT: 1 6 1.00 * U fisubs (%ecx)
# CHECK-NEXT: 1 6 1.00 * U fisubl (%eax)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(2)
# CHECK-NEXT: 1 6 1.00 * U fsubrs (%ecx)
# CHECK-NEXT: 1 6 1.00 * U fsubrl (%eax)
@ -373,7 +373,7 @@ fyl2xp1
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
# CHECK-NEXT: - - - 1.00 - - - - f2xm1
# CHECK-NEXT: - - - 0.50 0.50 - - - fabs
# CHECK-NEXT: - - - - 1.00 - - - fadd %st(0), %st(1)
# CHECK-NEXT: - - - - 1.00 - - - fadd %st, %st(1)
# CHECK-NEXT: - - - - 1.00 - - - fadd %st(2)
# CHECK-NEXT: - - - - 1.00 - - 1.00 fadds (%ecx)
# CHECK-NEXT: - - - - 1.00 - - 1.00 faddl (%ecx)
@ -385,14 +385,14 @@ fyl2xp1
# CHECK-NEXT: - - - 1.00 - - - - fbstp (%eax)
# CHECK-NEXT: - - - 0.50 0.50 - - - fchs
# CHECK-NEXT: - - - 1.00 - - - - fnclex
# CHECK-NEXT: - - - - 1.00 - - - fcmovb %st(1), %st(0)
# CHECK-NEXT: - - - - 1.00 - - - fcmovbe %st(1), %st(0)
# CHECK-NEXT: - - - - 1.00 - - - fcmove %st(1), %st(0)
# CHECK-NEXT: - - - - 1.00 - - - fcmovnb %st(1), %st(0)
# CHECK-NEXT: - - - - 1.00 - - - fcmovnbe %st(1), %st(0)
# CHECK-NEXT: - - - - 1.00 - - - fcmovne %st(1), %st(0)
# CHECK-NEXT: - - - - 1.00 - - - fcmovnu %st(1), %st(0)
# CHECK-NEXT: - - - - 1.00 - - - fcmovu %st(1), %st(0)
# CHECK-NEXT: - - - - 1.00 - - - fcmovb %st(1), %st
# CHECK-NEXT: - - - - 1.00 - - - fcmovbe %st(1), %st
# CHECK-NEXT: - - - - 1.00 - - - fcmove %st(1), %st
# CHECK-NEXT: - - - - 1.00 - - - fcmovnb %st(1), %st
# CHECK-NEXT: - - - - 1.00 - - - fcmovnbe %st(1), %st
# CHECK-NEXT: - - - - 1.00 - - - fcmovne %st(1), %st
# CHECK-NEXT: - - - - 1.00 - - - fcmovnu %st(1), %st
# CHECK-NEXT: - - - - 1.00 - - - fcmovu %st(1), %st
# CHECK-NEXT: - - - - 1.00 - - - fcom %st(1)
# CHECK-NEXT: - - - - 1.00 - - - fcom %st(3)
# CHECK-NEXT: - - - - 1.00 - - 1.00 fcoms (%ecx)
@ -406,7 +406,7 @@ fyl2xp1
# CHECK-NEXT: - - - - 1.00 - - - fcompi %st(3)
# CHECK-NEXT: - - - 1.00 - - - - fcos
# CHECK-NEXT: - - - 1.00 - - - - fdecstp
# CHECK-NEXT: - 17.00 - 1.00 - - - - fdiv %st(0), %st(1)
# CHECK-NEXT: - 17.00 - 1.00 - - - - fdiv %st, %st(1)
# CHECK-NEXT: - 17.00 - 1.00 - - - - fdiv %st(2)
# CHECK-NEXT: - 17.00 - 1.00 - - - 1.00 fdivs (%ecx)
# CHECK-NEXT: - 17.00 - 1.00 - - - 1.00 fdivl (%eax)
@ -414,7 +414,7 @@ fyl2xp1
# CHECK-NEXT: - 17.00 - 1.00 - - - - fdivp %st(2)
# CHECK-NEXT: - 17.00 - 1.00 - - - 1.00 fidivs (%ecx)
# CHECK-NEXT: - 17.00 - 1.00 - - - 1.00 fidivl (%eax)
# CHECK-NEXT: - 17.00 - 1.00 - - - - fdivr %st(0), %st(1)
# CHECK-NEXT: - 17.00 - 1.00 - - - - fdivr %st, %st(1)
# CHECK-NEXT: - 17.00 - 1.00 - - - - fdivr %st(2)
# CHECK-NEXT: - 17.00 - 1.00 - - - 1.00 fdivrs (%ecx)
# CHECK-NEXT: - 17.00 - 1.00 - - - 1.00 fdivrl (%eax)
@ -453,7 +453,7 @@ fyl2xp1
# CHECK-NEXT: - - - 1.00 1.00 - - - fldln2
# CHECK-NEXT: - - - 1.00 1.00 - - - fldpi
# CHECK-NEXT: - - - 0.50 0.50 - - - fldz
# CHECK-NEXT: - - 2.00 1.00 - - - - fmul %st(0), %st(1)
# CHECK-NEXT: - - 2.00 1.00 - - - - fmul %st, %st(1)
# CHECK-NEXT: - - 2.00 1.00 - - - - fmul %st(2)
# CHECK-NEXT: - - 2.00 1.00 - - - 1.00 fmuls (%ecx)
# CHECK-NEXT: - - 2.00 1.00 - - - 1.00 fmull (%eax)
@ -486,7 +486,7 @@ fyl2xp1
# CHECK-NEXT: - - - 1.00 - - - - frstor (%eax)
# CHECK-NEXT: - - - 1.00 - - - - wait
# CHECK-NEXT: - - - 1.00 - - - - fnsave (%eax)
# CHECK-NEXT: - - - - 1.00 - - - fsub %st(0), %st(1)
# CHECK-NEXT: - - - - 1.00 - - - fsub %st, %st(1)
# CHECK-NEXT: - - - - 1.00 - - - fsub %st(2)
# CHECK-NEXT: - - - - 1.00 - - 1.00 fsubs (%ecx)
# CHECK-NEXT: - - - - 1.00 - - 1.00 fsubl (%eax)
@ -494,7 +494,7 @@ fyl2xp1
# CHECK-NEXT: - - - - 1.00 - - - fsubp %st(2)
# CHECK-NEXT: - - - - 1.00 - - 1.00 fisubs (%ecx)
# CHECK-NEXT: - - - - 1.00 - - 1.00 fisubl (%eax)
# CHECK-NEXT: - - - - 1.00 - - - fsubr %st(0), %st(1)
# CHECK-NEXT: - - - - 1.00 - - - fsubr %st, %st(1)
# CHECK-NEXT: - - - - 1.00 - - - fsubr %st(2)
# CHECK-NEXT: - - - - 1.00 - - 1.00 fsubrs (%ecx)
# CHECK-NEXT: - - - - 1.00 - - 1.00 fsubrl (%eax)

View File

@ -5,7 +5,7 @@ f2xm1
fabs
fadd %st(0), %st(1)
fadd %st, %st(1)
fadd %st(2)
fadds (%ecx)
faddl (%ecx)
@ -21,14 +21,14 @@ fchs
fnclex
fcmovb %st(1), %st(0)
fcmovbe %st(1), %st(0)
fcmove %st(1), %st(0)
fcmovnb %st(1), %st(0)
fcmovnbe %st(1), %st(0)
fcmovne %st(1), %st(0)
fcmovnu %st(1), %st(0)
fcmovu %st(1), %st(0)
fcmovb %st(1), %st
fcmovbe %st(1), %st
fcmove %st(1), %st
fcmovnb %st(1), %st
fcmovnbe %st(1), %st
fcmovne %st(1), %st
fcmovnu %st(1), %st
fcmovu %st(1), %st
fcom %st(1)
fcom %st(3)
@ -47,7 +47,7 @@ fcos
fdecstp
fdiv %st(0), %st(1)
fdiv %st, %st(1)
fdiv %st(2)
fdivs (%ecx)
fdivl (%eax)
@ -56,7 +56,7 @@ fdivp %st(2)
fidivs (%ecx)
fidivl (%eax)
fdivr %st(0), %st(1)
fdivr %st, %st(1)
fdivr %st(2)
fdivrs (%ecx)
fdivrl (%eax)
@ -106,7 +106,7 @@ fldln2
fldpi
fldz
fmul %st(0), %st(1)
fmul %st, %st(1)
fmul %st(2)
fmuls (%ecx)
fmull (%eax)
@ -153,7 +153,7 @@ fnstsw (%eax)
frstor (%eax)
fsave (%eax)
fsub %st(0), %st(1)
fsub %st, %st(1)
fsub %st(2)
fsubs (%ecx)
fsubl (%eax)
@ -162,7 +162,7 @@ fsubp %st(2)
fisubs (%ecx)
fisubl (%eax)
fsubr %st(0), %st(1)
fsubr %st, %st(1)
fsubr %st(2)
fsubrs (%ecx)
fsubrl (%eax)
@ -208,7 +208,7 @@ fyl2xp1
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 100 0.33 U f2xm1
# CHECK-NEXT: 1 1 1.00 U fabs
# CHECK-NEXT: 1 3 1.00 U fadd %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st(2)
# CHECK-NEXT: 2 10 1.00 * U fadds (%ecx)
# CHECK-NEXT: 2 10 1.00 * U faddl (%ecx)
@ -220,14 +220,14 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.33 U fbstp (%eax)
# CHECK-NEXT: 1 1 1.00 U fchs
# CHECK-NEXT: 1 100 0.33 U fnclex
# CHECK-NEXT: 3 3 2.00 U fcmovb %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovbe %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmove %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovnb %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovnbe %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovne %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovnu %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovu %st(1), %st(0)
# CHECK-NEXT: 3 3 2.00 U fcmovb %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmovbe %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmove %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmovnb %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmovnbe %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmovne %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmovnu %st(1), %st
# CHECK-NEXT: 3 3 2.00 U fcmovu %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcom %st(1)
# CHECK-NEXT: 1 1 1.00 U fcom %st(3)
# CHECK-NEXT: 2 8 1.00 U fcoms (%ecx)
@ -241,7 +241,7 @@ fyl2xp1
# CHECK-NEXT: 3 3 1.00 U fcompi %st(3)
# CHECK-NEXT: 1 100 0.33 U fcos
# CHECK-NEXT: 1 1 1.00 U fdecstp
# CHECK-NEXT: 1 14 14.00 U fdiv %st(0), %st(1)
# CHECK-NEXT: 1 14 14.00 U fdiv %st, %st(1)
# CHECK-NEXT: 1 14 14.00 U fdiv %st(2)
# CHECK-NEXT: 2 31 1.00 * U fdivs (%ecx)
# CHECK-NEXT: 2 31 1.00 * U fdivl (%eax)
@ -249,7 +249,7 @@ fyl2xp1
# CHECK-NEXT: 1 14 14.00 U fdivp %st(2)
# CHECK-NEXT: 3 34 1.00 * U fidivs (%ecx)
# CHECK-NEXT: 3 34 1.00 * U fidivl (%eax)
# CHECK-NEXT: 1 14 14.00 U fdivr %st(0), %st(1)
# CHECK-NEXT: 1 14 14.00 U fdivr %st, %st(1)
# CHECK-NEXT: 1 14 14.00 U fdivr %st(2)
# CHECK-NEXT: 2 31 1.00 * U fdivrs (%ecx)
# CHECK-NEXT: 2 31 1.00 * U fdivrl (%eax)
@ -288,7 +288,7 @@ fyl2xp1
# CHECK-NEXT: 2 1 1.00 U fldln2
# CHECK-NEXT: 2 1 1.00 U fldpi
# CHECK-NEXT: 1 1 1.00 U fldz
# CHECK-NEXT: 1 5 1.00 U fmul %st(0), %st(1)
# CHECK-NEXT: 1 5 1.00 U fmul %st, %st(1)
# CHECK-NEXT: 1 5 1.00 U fmul %st(2)
# CHECK-NEXT: 2 12 1.00 * U fmuls (%ecx)
# CHECK-NEXT: 2 12 1.00 * U fmull (%eax)
@ -321,7 +321,7 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.33 U frstor (%eax)
# CHECK-NEXT: 1 100 0.33 U wait
# CHECK-NEXT: 1 100 0.33 U fnsave (%eax)
# CHECK-NEXT: 1 3 1.00 U fsub %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st(2)
# CHECK-NEXT: 2 10 1.00 * U fsubs (%ecx)
# CHECK-NEXT: 2 10 1.00 * U fsubl (%eax)
@ -329,7 +329,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fsubp %st(2)
# CHECK-NEXT: 3 13 2.00 * U fisubs (%ecx)
# CHECK-NEXT: 3 13 2.00 * U fisubl (%eax)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(2)
# CHECK-NEXT: 2 10 1.00 * U fsubrs (%ecx)
# CHECK-NEXT: 2 10 1.00 * U fsubrl (%eax)
@ -373,7 +373,7 @@ fyl2xp1
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6.0] [6.1] Instructions:
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - f2xm1
# CHECK-NEXT: - - - - - 1.00 - - fabs
# CHECK-NEXT: - - - 1.00 - - - - fadd %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fadd %st, %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fadd %st(2)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 fadds (%ecx)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 faddl (%ecx)
@ -385,14 +385,14 @@ fyl2xp1
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fbstp (%eax)
# CHECK-NEXT: - - - - - 1.00 - - fchs
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fnclex
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovb %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovbe %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmove %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovnb %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovnbe %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovne %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovnu %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovu %st(1), %st(0)
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovb %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovbe %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmove %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovnb %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovnbe %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovne %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovnu %st(1), %st
# CHECK-NEXT: - - 0.50 - - 2.50 - - fcmovu %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - fcom %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fcom %st(3)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 fcoms (%ecx)
@ -406,7 +406,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 1.00 - 1.00 - - fcompi %st(3)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fcos
# CHECK-NEXT: - - - - - 1.00 - - fdecstp
# CHECK-NEXT: - 14.00 1.00 - - - - - fdiv %st(0), %st(1)
# CHECK-NEXT: - 14.00 1.00 - - - - - fdiv %st, %st(1)
# CHECK-NEXT: - 14.00 1.00 - - - - - fdiv %st(2)
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 fdivs (%ecx)
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 fdivl (%eax)
@ -414,7 +414,7 @@ fyl2xp1
# CHECK-NEXT: - 14.00 1.00 - - - - - fdivp %st(2)
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 fidivs (%ecx)
# CHECK-NEXT: - - 1.00 1.00 - - 0.50 0.50 fidivl (%eax)
# CHECK-NEXT: - 14.00 1.00 - - - - - fdivr %st(0), %st(1)
# CHECK-NEXT: - 14.00 1.00 - - - - - fdivr %st, %st(1)
# CHECK-NEXT: - 14.00 1.00 - - - - - fdivr %st(2)
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 fdivrs (%ecx)
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 fdivrl (%eax)
@ -453,7 +453,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 1.00 - - - - fldln2
# CHECK-NEXT: - - 1.00 1.00 - - - - fldpi
# CHECK-NEXT: - - - - - 1.00 - - fldz
# CHECK-NEXT: - - 1.00 - - - - - fmul %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - fmul %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - fmul %st(2)
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 fmuls (%ecx)
# CHECK-NEXT: - - 1.00 - - - 0.50 0.50 fmull (%eax)
@ -486,7 +486,7 @@ fyl2xp1
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - frstor (%eax)
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - wait
# CHECK-NEXT: - - 0.33 0.33 - 0.33 - - fnsave (%eax)
# CHECK-NEXT: - - - 1.00 - - - - fsub %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fsub %st, %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fsub %st(2)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 fsubs (%ecx)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 fsubl (%eax)
@ -494,7 +494,7 @@ fyl2xp1
# CHECK-NEXT: - - - 1.00 - - - - fsubp %st(2)
# CHECK-NEXT: - - - 2.00 - - 0.50 0.50 fisubs (%ecx)
# CHECK-NEXT: - - - 2.00 - - 0.50 0.50 fisubl (%eax)
# CHECK-NEXT: - - - 1.00 - - - - fsubr %st(0), %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fsubr %st, %st(1)
# CHECK-NEXT: - - - 1.00 - - - - fsubr %st(2)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 fsubrs (%ecx)
# CHECK-NEXT: - - - 1.00 - - 0.50 0.50 fsubrl (%eax)

View File

@ -5,7 +5,7 @@ f2xm1
fabs
fadd %st(0), %st(1)
fadd %st, %st(1)
fadd %st(2)
fadds (%ecx)
faddl (%ecx)
@ -21,14 +21,14 @@ fchs
fnclex
fcmovb %st(1), %st(0)
fcmovbe %st(1), %st(0)
fcmove %st(1), %st(0)
fcmovnb %st(1), %st(0)
fcmovnbe %st(1), %st(0)
fcmovne %st(1), %st(0)
fcmovnu %st(1), %st(0)
fcmovu %st(1), %st(0)
fcmovb %st(1), %st
fcmovbe %st(1), %st
fcmove %st(1), %st
fcmovnb %st(1), %st
fcmovnbe %st(1), %st
fcmovne %st(1), %st
fcmovnu %st(1), %st
fcmovu %st(1), %st
fcom %st(1)
fcom %st(3)
@ -47,7 +47,7 @@ fcos
fdecstp
fdiv %st(0), %st(1)
fdiv %st, %st(1)
fdiv %st(2)
fdivs (%ecx)
fdivl (%eax)
@ -56,7 +56,7 @@ fdivp %st(2)
fidivs (%ecx)
fidivl (%eax)
fdivr %st(0), %st(1)
fdivr %st, %st(1)
fdivr %st(2)
fdivrs (%ecx)
fdivrl (%eax)
@ -106,7 +106,7 @@ fldln2
fldpi
fldz
fmul %st(0), %st(1)
fmul %st, %st(1)
fmul %st(2)
fmuls (%ecx)
fmull (%eax)
@ -153,7 +153,7 @@ fnstsw (%eax)
frstor (%eax)
fsave (%eax)
fsub %st(0), %st(1)
fsub %st, %st(1)
fsub %st(2)
fsubs (%ecx)
fsubl (%eax)
@ -162,7 +162,7 @@ fsubp %st(2)
fisubs (%ecx)
fisubl (%eax)
fsubr %st(0), %st(1)
fsubr %st, %st(1)
fsubr %st(2)
fsubrs (%ecx)
fsubrl (%eax)
@ -208,7 +208,7 @@ fyl2xp1
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 100 0.25 U f2xm1
# CHECK-NEXT: 1 1 1.00 U fabs
# CHECK-NEXT: 1 3 1.00 U fadd %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st(2)
# CHECK-NEXT: 2 10 1.00 * U fadds (%ecx)
# CHECK-NEXT: 2 10 1.00 * U faddl (%ecx)
@ -220,14 +220,14 @@ fyl2xp1
# CHECK-NEXT: 2 1 1.00 U fbstp (%eax)
# CHECK-NEXT: 1 1 1.00 U fchs
# CHECK-NEXT: 4 4 1.00 U fnclex
# CHECK-NEXT: 1 3 1.00 U fcmovb %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovbe %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmove %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnb %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnbe %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovne %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnu %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovu %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovb %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovbe %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmove %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnb %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnbe %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovne %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnu %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovu %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcom %st(1)
# CHECK-NEXT: 1 1 1.00 U fcom %st(3)
# CHECK-NEXT: 2 8 1.00 U fcoms (%ecx)
@ -241,7 +241,7 @@ fyl2xp1
# CHECK-NEXT: 1 2 1.00 U fcompi %st(3)
# CHECK-NEXT: 1 100 0.25 U fcos
# CHECK-NEXT: 2 2 1.00 U fdecstp
# CHECK-NEXT: 1 15 1.00 U fdiv %st(0), %st(1)
# CHECK-NEXT: 1 15 1.00 U fdiv %st, %st(1)
# CHECK-NEXT: 1 20 1.00 U fdiv %st(2)
# CHECK-NEXT: 2 22 1.00 * U fdivs (%ecx)
# CHECK-NEXT: 2 22 1.00 * U fdivl (%eax)
@ -249,7 +249,7 @@ fyl2xp1
# CHECK-NEXT: 1 15 1.00 U fdivp %st(2)
# CHECK-NEXT: 3 25 1.00 * U fidivs (%ecx)
# CHECK-NEXT: 3 25 1.00 * U fidivl (%eax)
# CHECK-NEXT: 1 20 1.00 U fdivr %st(0), %st(1)
# CHECK-NEXT: 1 20 1.00 U fdivr %st, %st(1)
# CHECK-NEXT: 1 15 1.00 U fdivr %st(2)
# CHECK-NEXT: 2 27 1.00 * U fdivrs (%ecx)
# CHECK-NEXT: 2 27 1.00 * U fdivrl (%eax)
@ -288,7 +288,7 @@ fyl2xp1
# CHECK-NEXT: 2 1 1.00 U fldln2
# CHECK-NEXT: 2 1 1.00 U fldpi
# CHECK-NEXT: 1 1 0.50 U fldz
# CHECK-NEXT: 1 4 1.00 U fmul %st(0), %st(1)
# CHECK-NEXT: 1 4 1.00 U fmul %st, %st(1)
# CHECK-NEXT: 1 4 1.00 U fmul %st(2)
# CHECK-NEXT: 2 11 1.00 * U fmuls (%ecx)
# CHECK-NEXT: 2 11 1.00 * U fmull (%eax)
@ -321,7 +321,7 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.25 U frstor (%eax)
# CHECK-NEXT: 2 2 0.50 U wait
# CHECK-NEXT: 1 100 0.25 U fnsave (%eax)
# CHECK-NEXT: 1 3 1.00 U fsub %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st(2)
# CHECK-NEXT: 2 10 1.00 * U fsubs (%ecx)
# CHECK-NEXT: 2 10 1.00 * U fsubl (%eax)
@ -329,7 +329,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fsubp %st(2)
# CHECK-NEXT: 3 13 2.00 * U fisubs (%ecx)
# CHECK-NEXT: 3 13 2.00 * U fisubl (%eax)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(2)
# CHECK-NEXT: 2 10 1.00 * U fsubrs (%ecx)
# CHECK-NEXT: 2 10 1.00 * U fsubrl (%eax)
@ -375,7 +375,7 @@ fyl2xp1
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - f2xm1
# CHECK-NEXT: - - 1.00 - - - - - - - fabs
# CHECK-NEXT: - - - - - - - 1.00 - - fadd %st(0), %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fadd %st, %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fadd %st(2)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - fadds (%ecx)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - faddl (%ecx)
@ -387,14 +387,14 @@ fyl2xp1
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 fbstp (%eax)
# CHECK-NEXT: - - 1.00 - - - - - - - fchs
# CHECK-NEXT: - - 1.00 1.00 - - - 1.00 1.00 - fnclex
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovb %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovbe %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmove %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnb %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnbe %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovne %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnu %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovu %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovb %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovbe %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmove %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnb %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnbe %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovne %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnu %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovu %st(1), %st
# CHECK-NEXT: - - - - - - - 1.00 - - fcom %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fcom %st(3)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - fcoms (%ecx)
@ -408,7 +408,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 - - - - - - - fcompi %st(3)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fcos
# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fdecstp
# CHECK-NEXT: - - 1.00 - - - - - - - fdiv %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdiv %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdiv %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivs (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivl (%eax)
@ -416,7 +416,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 - - - - - - - fdivp %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - 1.00 - - fidivs (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - 1.00 - - fidivl (%eax)
# CHECK-NEXT: - - 1.00 - - - - - - - fdivr %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdivr %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdivr %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivrs (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivrl (%eax)
@ -455,7 +455,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldln2
# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldpi
# CHECK-NEXT: - - 0.50 - - - - 0.50 - - fldz
# CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fmul %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fmuls (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fmull (%eax)
@ -488,7 +488,7 @@ fyl2xp1
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - frstor (%eax)
# CHECK-NEXT: - - 0.50 0.50 - - - 0.50 0.50 - wait
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fnsave (%eax)
# CHECK-NEXT: - - - - - - - 1.00 - - fsub %st(0), %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fsub %st, %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fsub %st(2)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - fsubs (%ecx)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - fsubl (%eax)
@ -496,7 +496,7 @@ fyl2xp1
# CHECK-NEXT: - - - - - - - 1.00 - - fsubp %st(2)
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - fisubs (%ecx)
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - fisubl (%eax)
# CHECK-NEXT: - - - - - - - 1.00 - - fsubr %st(0), %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fsubr %st, %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fsubr %st(2)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - fsubrs (%ecx)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - fsubrl (%eax)

View File

@ -5,7 +5,7 @@ f2xm1
fabs
fadd %st(0), %st(1)
fadd %st, %st(1)
fadd %st(2)
fadds (%ecx)
faddl (%ecx)
@ -21,14 +21,14 @@ fchs
fnclex
fcmovb %st(1), %st(0)
fcmovbe %st(1), %st(0)
fcmove %st(1), %st(0)
fcmovnb %st(1), %st(0)
fcmovnbe %st(1), %st(0)
fcmovne %st(1), %st(0)
fcmovnu %st(1), %st(0)
fcmovu %st(1), %st(0)
fcmovb %st(1), %st
fcmovbe %st(1), %st
fcmove %st(1), %st
fcmovnb %st(1), %st
fcmovnbe %st(1), %st
fcmovne %st(1), %st
fcmovnu %st(1), %st
fcmovu %st(1), %st
fcom %st(1)
fcom %st(3)
@ -47,7 +47,7 @@ fcos
fdecstp
fdiv %st(0), %st(1)
fdiv %st, %st(1)
fdiv %st(2)
fdivs (%ecx)
fdivl (%eax)
@ -56,7 +56,7 @@ fdivp %st(2)
fidivs (%ecx)
fidivl (%eax)
fdivr %st(0), %st(1)
fdivr %st, %st(1)
fdivr %st(2)
fdivrs (%ecx)
fdivrl (%eax)
@ -106,7 +106,7 @@ fldln2
fldpi
fldz
fmul %st(0), %st(1)
fmul %st, %st(1)
fmul %st(2)
fmuls (%ecx)
fmull (%eax)
@ -153,7 +153,7 @@ fnstsw (%eax)
frstor (%eax)
fsave (%eax)
fsub %st(0), %st(1)
fsub %st, %st(1)
fsub %st(2)
fsubs (%ecx)
fsubl (%eax)
@ -162,7 +162,7 @@ fsubp %st(2)
fisubs (%ecx)
fisubl (%eax)
fsubr %st(0), %st(1)
fsubr %st, %st(1)
fsubr %st(2)
fsubrs (%ecx)
fsubrl (%eax)
@ -208,7 +208,7 @@ fyl2xp1
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 100 0.25 U f2xm1
# CHECK-NEXT: 1 1 1.00 U fabs
# CHECK-NEXT: 1 3 1.00 U fadd %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st(2)
# CHECK-NEXT: 2 10 1.00 * U fadds (%ecx)
# CHECK-NEXT: 2 10 1.00 * U faddl (%ecx)
@ -220,14 +220,14 @@ fyl2xp1
# CHECK-NEXT: 2 1 1.00 U fbstp (%eax)
# CHECK-NEXT: 1 1 1.00 U fchs
# CHECK-NEXT: 4 4 1.00 U fnclex
# CHECK-NEXT: 1 3 1.00 U fcmovb %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovbe %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmove %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnb %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnbe %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovne %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovnu %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovu %st(1), %st(0)
# CHECK-NEXT: 1 3 1.00 U fcmovb %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovbe %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmove %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnb %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnbe %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovne %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovnu %st(1), %st
# CHECK-NEXT: 1 3 1.00 U fcmovu %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcom %st(1)
# CHECK-NEXT: 1 1 1.00 U fcom %st(3)
# CHECK-NEXT: 2 8 1.00 U fcoms (%ecx)
@ -241,7 +241,7 @@ fyl2xp1
# CHECK-NEXT: 1 2 1.00 U fcompi %st(3)
# CHECK-NEXT: 1 100 0.25 U fcos
# CHECK-NEXT: 2 2 1.00 U fdecstp
# CHECK-NEXT: 1 15 1.00 U fdiv %st(0), %st(1)
# CHECK-NEXT: 1 15 1.00 U fdiv %st, %st(1)
# CHECK-NEXT: 1 20 1.00 U fdiv %st(2)
# CHECK-NEXT: 2 22 1.00 * U fdivs (%ecx)
# CHECK-NEXT: 2 22 1.00 * U fdivl (%eax)
@ -249,7 +249,7 @@ fyl2xp1
# CHECK-NEXT: 1 15 1.00 U fdivp %st(2)
# CHECK-NEXT: 3 25 1.00 * U fidivs (%ecx)
# CHECK-NEXT: 3 25 1.00 * U fidivl (%eax)
# CHECK-NEXT: 1 20 1.00 U fdivr %st(0), %st(1)
# CHECK-NEXT: 1 20 1.00 U fdivr %st, %st(1)
# CHECK-NEXT: 1 15 1.00 U fdivr %st(2)
# CHECK-NEXT: 2 27 1.00 * U fdivrs (%ecx)
# CHECK-NEXT: 2 27 1.00 * U fdivrl (%eax)
@ -288,7 +288,7 @@ fyl2xp1
# CHECK-NEXT: 2 1 1.00 U fldln2
# CHECK-NEXT: 2 1 1.00 U fldpi
# CHECK-NEXT: 1 1 0.50 U fldz
# CHECK-NEXT: 1 4 1.00 U fmul %st(0), %st(1)
# CHECK-NEXT: 1 4 1.00 U fmul %st, %st(1)
# CHECK-NEXT: 1 4 1.00 U fmul %st(2)
# CHECK-NEXT: 2 11 1.00 * U fmuls (%ecx)
# CHECK-NEXT: 2 11 1.00 * U fmull (%eax)
@ -321,7 +321,7 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.25 U frstor (%eax)
# CHECK-NEXT: 2 2 0.50 U wait
# CHECK-NEXT: 1 100 0.25 U fnsave (%eax)
# CHECK-NEXT: 1 3 1.00 U fsub %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st(2)
# CHECK-NEXT: 2 10 1.00 * U fsubs (%ecx)
# CHECK-NEXT: 2 10 1.00 * U fsubl (%eax)
@ -329,7 +329,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fsubp %st(2)
# CHECK-NEXT: 3 13 2.00 * U fisubs (%ecx)
# CHECK-NEXT: 3 13 2.00 * U fisubl (%eax)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(2)
# CHECK-NEXT: 2 10 1.00 * U fsubrs (%ecx)
# CHECK-NEXT: 2 10 1.00 * U fsubrl (%eax)
@ -375,7 +375,7 @@ fyl2xp1
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Instructions:
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - f2xm1
# CHECK-NEXT: - - 1.00 - - - - - - - fabs
# CHECK-NEXT: - - - - - - - 1.00 - - fadd %st(0), %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fadd %st, %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fadd %st(2)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - fadds (%ecx)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - faddl (%ecx)
@ -387,14 +387,14 @@ fyl2xp1
# CHECK-NEXT: - - - - 0.33 0.33 1.00 - - 0.33 fbstp (%eax)
# CHECK-NEXT: - - 1.00 - - - - - - - fchs
# CHECK-NEXT: - - 1.00 1.00 - - - 1.00 1.00 - fnclex
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovb %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovbe %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmove %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnb %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnbe %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovne %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnu %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovu %st(1), %st(0)
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovb %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovbe %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmove %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnb %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnbe %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovne %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovnu %st(1), %st
# CHECK-NEXT: - - - 1.00 - - - - - - fcmovu %st(1), %st
# CHECK-NEXT: - - - - - - - 1.00 - - fcom %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fcom %st(3)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - fcoms (%ecx)
@ -408,7 +408,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 - - - - - - - fcompi %st(3)
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fcos
# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fdecstp
# CHECK-NEXT: - - 1.00 - - - - - - - fdiv %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdiv %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdiv %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivs (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivl (%eax)
@ -416,7 +416,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 - - - - - - - fdivp %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - 1.00 - - fidivs (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - 1.00 - - fidivl (%eax)
# CHECK-NEXT: - - 1.00 - - - - - - - fdivr %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdivr %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fdivr %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivrs (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fdivrl (%eax)
@ -455,7 +455,7 @@ fyl2xp1
# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldln2
# CHECK-NEXT: - - 1.00 - - - - 1.00 - - fldpi
# CHECK-NEXT: - - 0.50 - - - - 0.50 - - fldz
# CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(0), %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fmul %st, %st(1)
# CHECK-NEXT: - - 1.00 - - - - - - - fmul %st(2)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fmuls (%ecx)
# CHECK-NEXT: - - 1.00 - 0.50 0.50 - - - - fmull (%eax)
@ -488,7 +488,7 @@ fyl2xp1
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - frstor (%eax)
# CHECK-NEXT: - - 0.50 0.50 - - - 0.50 0.50 - wait
# CHECK-NEXT: - - 0.25 0.25 - - - 0.25 0.25 - fnsave (%eax)
# CHECK-NEXT: - - - - - - - 1.00 - - fsub %st(0), %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fsub %st, %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fsub %st(2)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - fsubs (%ecx)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - fsubl (%eax)
@ -496,7 +496,7 @@ fyl2xp1
# CHECK-NEXT: - - - - - - - 1.00 - - fsubp %st(2)
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - fisubs (%ecx)
# CHECK-NEXT: - - - - 0.50 0.50 - 2.00 - - fisubl (%eax)
# CHECK-NEXT: - - - - - - - 1.00 - - fsubr %st(0), %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fsubr %st, %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - fsubr %st(2)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - fsubrs (%ecx)
# CHECK-NEXT: - - - - 0.50 0.50 - 1.00 - - fsubrl (%eax)

View File

@ -5,7 +5,7 @@ f2xm1
fabs
fadd %st(0), %st(1)
fadd %st, %st(1)
fadd %st(2)
fadds (%ecx)
faddl (%ecx)
@ -21,14 +21,14 @@ fchs
fnclex
fcmovb %st(1), %st(0)
fcmovbe %st(1), %st(0)
fcmove %st(1), %st(0)
fcmovnb %st(1), %st(0)
fcmovnbe %st(1), %st(0)
fcmovne %st(1), %st(0)
fcmovnu %st(1), %st(0)
fcmovu %st(1), %st(0)
fcmovb %st(1), %st
fcmovbe %st(1), %st
fcmove %st(1), %st
fcmovnb %st(1), %st
fcmovnbe %st(1), %st
fcmovne %st(1), %st
fcmovnu %st(1), %st
fcmovu %st(1), %st
fcom %st(1)
fcom %st(3)
@ -47,7 +47,7 @@ fcos
fdecstp
fdiv %st(0), %st(1)
fdiv %st, %st(1)
fdiv %st(2)
fdivs (%ecx)
fdivl (%eax)
@ -56,7 +56,7 @@ fdivp %st(2)
fidivs (%ecx)
fidivl (%eax)
fdivr %st(0), %st(1)
fdivr %st, %st(1)
fdivr %st(2)
fdivrs (%ecx)
fdivrl (%eax)
@ -106,7 +106,7 @@ fldln2
fldpi
fldz
fmul %st(0), %st(1)
fmul %st, %st(1)
fmul %st(2)
fmuls (%ecx)
fmull (%eax)
@ -153,7 +153,7 @@ fnstsw (%eax)
frstor (%eax)
fsave (%eax)
fsub %st(0), %st(1)
fsub %st, %st(1)
fsub %st(2)
fsubs (%ecx)
fsubl (%eax)
@ -162,7 +162,7 @@ fsubp %st(2)
fisubs (%ecx)
fisubl (%eax)
fsubr %st(0), %st(1)
fsubr %st, %st(1)
fsubr %st(2)
fsubrs (%ecx)
fsubrl (%eax)
@ -208,7 +208,7 @@ fyl2xp1
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
# CHECK-NEXT: 1 100 0.25 U f2xm1
# CHECK-NEXT: 1 2 1.00 U fabs
# CHECK-NEXT: 1 3 1.00 U fadd %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fadd %st(2)
# CHECK-NEXT: 1 10 1.00 * U fadds (%ecx)
# CHECK-NEXT: 1 10 1.00 * U faddl (%ecx)
@ -220,14 +220,14 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.25 U fbstp (%eax)
# CHECK-NEXT: 1 1 1.00 U fchs
# CHECK-NEXT: 1 100 0.25 U fnclex
# CHECK-NEXT: 1 100 0.25 U fcmovb %st(1), %st(0)
# CHECK-NEXT: 1 100 0.25 U fcmovbe %st(1), %st(0)
# CHECK-NEXT: 1 100 0.25 U fcmove %st(1), %st(0)
# CHECK-NEXT: 1 100 0.25 U fcmovnb %st(1), %st(0)
# CHECK-NEXT: 1 100 0.25 U fcmovnbe %st(1), %st(0)
# CHECK-NEXT: 1 100 0.25 U fcmovne %st(1), %st(0)
# CHECK-NEXT: 1 100 0.25 U fcmovnu %st(1), %st(0)
# CHECK-NEXT: 1 100 0.25 U fcmovu %st(1), %st(0)
# CHECK-NEXT: 1 100 0.25 U fcmovb %st(1), %st
# CHECK-NEXT: 1 100 0.25 U fcmovbe %st(1), %st
# CHECK-NEXT: 1 100 0.25 U fcmove %st(1), %st
# CHECK-NEXT: 1 100 0.25 U fcmovnb %st(1), %st
# CHECK-NEXT: 1 100 0.25 U fcmovnbe %st(1), %st
# CHECK-NEXT: 1 100 0.25 U fcmovne %st(1), %st
# CHECK-NEXT: 1 100 0.25 U fcmovnu %st(1), %st
# CHECK-NEXT: 1 100 0.25 U fcmovu %st(1), %st
# CHECK-NEXT: 1 1 1.00 U fcom %st(1)
# CHECK-NEXT: 1 1 1.00 U fcom %st(3)
# CHECK-NEXT: 1 8 1.00 U fcoms (%ecx)
@ -241,7 +241,7 @@ fyl2xp1
# CHECK-NEXT: 1 9 0.50 U fcompi %st(3)
# CHECK-NEXT: 1 100 0.25 U fcos
# CHECK-NEXT: 1 11 1.00 U fdecstp
# CHECK-NEXT: 1 15 1.00 U fdiv %st(0), %st(1)
# CHECK-NEXT: 1 15 1.00 U fdiv %st, %st(1)
# CHECK-NEXT: 1 15 1.00 U fdiv %st(2)
# CHECK-NEXT: 1 22 1.00 * U fdivs (%ecx)
# CHECK-NEXT: 1 22 1.00 * U fdivl (%eax)
@ -249,7 +249,7 @@ fyl2xp1
# CHECK-NEXT: 1 15 1.00 U fdivp %st(2)
# CHECK-NEXT: 1 22 1.00 * U fidivs (%ecx)
# CHECK-NEXT: 1 22 1.00 * U fidivl (%eax)
# CHECK-NEXT: 1 15 1.00 U fdivr %st(0), %st(1)
# CHECK-NEXT: 1 15 1.00 U fdivr %st, %st(1)
# CHECK-NEXT: 1 15 1.00 U fdivr %st(2)
# CHECK-NEXT: 1 22 1.00 * U fdivrs (%ecx)
# CHECK-NEXT: 1 22 1.00 * U fdivrl (%eax)
@ -288,7 +288,7 @@ fyl2xp1
# CHECK-NEXT: 1 11 1.00 U fldln2
# CHECK-NEXT: 1 11 1.00 U fldpi
# CHECK-NEXT: 1 8 0.50 U fldz
# CHECK-NEXT: 1 3 0.50 U fmul %st(0), %st(1)
# CHECK-NEXT: 1 3 0.50 U fmul %st, %st(1)
# CHECK-NEXT: 1 3 0.50 U fmul %st(2)
# CHECK-NEXT: 2 10 0.50 * U fmuls (%ecx)
# CHECK-NEXT: 2 10 0.50 * U fmull (%eax)
@ -321,7 +321,7 @@ fyl2xp1
# CHECK-NEXT: 1 100 0.25 U frstor (%eax)
# CHECK-NEXT: 1 1 1.00 U wait
# CHECK-NEXT: 1 100 0.25 U fnsave (%eax)
# CHECK-NEXT: 1 3 1.00 U fsub %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsub %st(2)
# CHECK-NEXT: 1 10 1.00 * U fsubs (%ecx)
# CHECK-NEXT: 1 10 1.00 * U fsubl (%eax)
@ -329,7 +329,7 @@ fyl2xp1
# CHECK-NEXT: 1 3 1.00 U fsubp %st(2)
# CHECK-NEXT: 1 10 1.00 * U fisubs (%ecx)
# CHECK-NEXT: 1 10 1.00 * U fisubl (%eax)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(0), %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st, %st(1)
# CHECK-NEXT: 1 3 1.00 U fsubr %st(2)
# CHECK-NEXT: 1 10 1.00 * U fsubrs (%ecx)
# CHECK-NEXT: 1 10 1.00 * U fsubrl (%eax)
@ -377,7 +377,7 @@ fyl2xp1
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] Instructions:
# CHECK-NEXT: - - - - - - - - - - - - f2xm1
# CHECK-NEXT: - - - - - - - - - - 1.00 - fabs
# CHECK-NEXT: - - - - - - - 1.00 - - - - fadd %st(0), %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - - - fadd %st, %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - - - fadd %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - fadds (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - faddl (%ecx)
@ -389,14 +389,14 @@ fyl2xp1
# CHECK-NEXT: - - - - - - - - - - - - fbstp (%eax)
# CHECK-NEXT: - - - - - - - - - - 1.00 - fchs
# CHECK-NEXT: - - - - - - - - - - - - fnclex
# CHECK-NEXT: - - - - - - - - - - - - fcmovb %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - - - - - fcmovbe %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - - - - - fcmove %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - - - - - fcmovnb %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - - - - - fcmovnbe %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - - - - - fcmovne %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - - - - - fcmovnu %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - - - - - fcmovu %st(1), %st(0)
# CHECK-NEXT: - - - - - - - - - - - - fcmovb %st(1), %st
# CHECK-NEXT: - - - - - - - - - - - - fcmovbe %st(1), %st
# CHECK-NEXT: - - - - - - - - - - - - fcmove %st(1), %st
# CHECK-NEXT: - - - - - - - - - - - - fcmovnb %st(1), %st
# CHECK-NEXT: - - - - - - - - - - - - fcmovnbe %st(1), %st
# CHECK-NEXT: - - - - - - - - - - - - fcmovne %st(1), %st
# CHECK-NEXT: - - - - - - - - - - - - fcmovnu %st(1), %st
# CHECK-NEXT: - - - - - - - - - - - - fcmovu %st(1), %st
# CHECK-NEXT: - - - - - - - 1.00 - - - - fcom %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - - - fcom %st(3)
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - fcoms (%ecx)
@ -410,7 +410,7 @@ fyl2xp1
# CHECK-NEXT: 0.50 0.50 - - - - - 0.50 - 0.50 - - fcompi %st(3)
# CHECK-NEXT: - - - - - - - - - - - - fcos
# CHECK-NEXT: 0.50 0.50 - - - - - - - - 1.00 - fdecstp
# CHECK-NEXT: - - - - - - - - - - 1.00 - fdiv %st(0), %st(1)
# CHECK-NEXT: - - - - - - - - - - 1.00 - fdiv %st, %st(1)
# CHECK-NEXT: - - - - - - - - - - 1.00 - fdiv %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - 1.00 - fdivs (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - 1.00 - fdivl (%eax)
@ -418,7 +418,7 @@ fyl2xp1
# CHECK-NEXT: - - - - - - - - - - 1.00 - fdivp %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - 1.00 - fidivs (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - 1.00 - fidivl (%eax)
# CHECK-NEXT: - - - - - - - - - - 1.00 - fdivr %st(0), %st(1)
# CHECK-NEXT: - - - - - - - - - - 1.00 - fdivr %st, %st(1)
# CHECK-NEXT: - - - - - - - - - - 1.00 - fdivr %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - 1.00 - fdivrs (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - - - - 1.00 - fdivrl (%eax)
@ -457,7 +457,7 @@ fyl2xp1
# CHECK-NEXT: 0.50 0.50 - - - - - - - - 1.00 - fldln2
# CHECK-NEXT: 0.50 0.50 - - - - - - - - 1.00 - fldpi
# CHECK-NEXT: 0.50 0.50 - - - - - - 0.50 - 0.50 - fldz
# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - fmul %st(0), %st(1)
# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - fmul %st, %st(1)
# CHECK-NEXT: - - - - - - - 0.50 0.50 - - - fmul %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - 0.50 0.50 - - - fmuls (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - 0.50 0.50 - - - fmull (%eax)
@ -490,7 +490,7 @@ fyl2xp1
# CHECK-NEXT: - - - - - - - - - - - - frstor (%eax)
# CHECK-NEXT: - - - - - - - 1.00 - - - - wait
# CHECK-NEXT: - - - - - - - - - - - - fnsave (%eax)
# CHECK-NEXT: - - - - - - - 1.00 - - - - fsub %st(0), %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - - - fsub %st, %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - - - fsub %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - fsubs (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - fsubl (%eax)
@ -498,7 +498,7 @@ fyl2xp1
# CHECK-NEXT: - - - - - - - 1.00 - - - - fsubp %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - fisubs (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - fisubl (%eax)
# CHECK-NEXT: - - - - - - - 1.00 - - - - fsubr %st(0), %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - - - fsubr %st, %st(1)
# CHECK-NEXT: - - - - - - - 1.00 - - - - fsubr %st(2)
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - fsubrs (%ecx)
# CHECK-NEXT: 0.50 0.50 - - - - - 1.00 - - - - fsubrl (%eax)

View File

@ -841,6 +841,7 @@ OperandType RecognizableInstr::typeFromString(const std::string &s,
TYPE("f32mem", TYPE_M)
TYPE("ssmem", TYPE_M)
TYPE("RST", TYPE_ST)
TYPE("RSTi", TYPE_ST)
TYPE("i128mem", TYPE_M)
TYPE("i256mem", TYPE_M)
TYPE("i512mem", TYPE_M)
@ -963,6 +964,7 @@ OperandEncoding
RecognizableInstr::rmRegisterEncodingFromString(const std::string &s,
uint8_t OpSize) {
ENCODING("RST", ENCODING_FP)
ENCODING("RSTi", ENCODING_FP)
ENCODING("GR16", ENCODING_RM)
ENCODING("GR32", ENCODING_RM)
ENCODING("GR32orGR64", ENCODING_RM)