mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-23 17:32:49 +00:00
[mips] Modify definitions of floating point comparison instructions.
No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170077 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
89828a6a56
commit
b573539c6b
@ -284,6 +284,14 @@ class BC1F_FT<string opstr, InstrItinClass Itin,
|
|||||||
let Uses = [FCR31];
|
let Uses = [FCR31];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CEQS_FT<string typestr, RegisterClass RC, InstrItinClass Itin,
|
||||||
|
SDPatternOperator OpNode = null_frag> :
|
||||||
|
InstSE<(outs), (ins RC:$fs, RC:$ft, condcode:$cond),
|
||||||
|
!strconcat("c.$cond.", typestr, "\t$fs, $ft"),
|
||||||
|
[(OpNode RC:$fs, RC:$ft, imm:$cond)], Itin, FrmFR> {
|
||||||
|
let Defs = [FCR31];
|
||||||
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Floating Point Instructions
|
// Floating Point Instructions
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
@ -537,15 +545,12 @@ class FCMP<bits<5> fmt, RegisterClass RC, string typestr> :
|
|||||||
[(MipsFPCmp RC:$fs, RC:$ft, imm:$cc)]>;
|
[(MipsFPCmp RC:$fs, RC:$ft, imm:$cc)]>;
|
||||||
|
|
||||||
/// Floating Point Compare
|
/// Floating Point Compare
|
||||||
let Defs=[FCR31] in {
|
def FCMP_S32 : CEQS_FT<"s", FGR32, IIFcmp, MipsFPCmp>, CEQS_FM<16>;
|
||||||
def FCMP_S32 : FCMP<0x10, FGR32, "s">;
|
def FCMP_D32 : CEQS_FT<"d", AFGR64, IIFcmp, MipsFPCmp>, CEQS_FM<17>,
|
||||||
def FCMP_D32 : FCMP<0x11, AFGR64, "d">,
|
Requires<[NotFP64bit, HasStdEnc]>;
|
||||||
Requires<[NotFP64bit, HasStdEnc]>;
|
let DecoderNamespace = "Mips64" in
|
||||||
def FCMP_D64 : FCMP<0x11, FGR64, "d">,
|
def FCMP_D64 : CEQS_FT<"d", FGR64, IIFcmp, MipsFPCmp>, CEQS_FM<17>,
|
||||||
Requires<[IsFP64bit, HasStdEnc]> {
|
Requires<[IsFP64bit, HasStdEnc]>;
|
||||||
let DecoderNamespace = "Mips64";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Floating Point Pseudo-Instructions
|
// Floating Point Pseudo-Instructions
|
||||||
|
@ -466,3 +466,19 @@ class BC1F_FM<bit nd, bit tf> {
|
|||||||
let Inst{16} = tf;
|
let Inst{16} = tf;
|
||||||
let Inst{15-0} = offset;
|
let Inst{15-0} = offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CEQS_FM<bits<5> fmt> {
|
||||||
|
bits<5> fs;
|
||||||
|
bits<5> ft;
|
||||||
|
bits<4> cond;
|
||||||
|
|
||||||
|
bits<32> Inst;
|
||||||
|
|
||||||
|
let Inst{31-26} = 0x11;
|
||||||
|
let Inst{25-21} = fmt;
|
||||||
|
let Inst{20-16} = ft;
|
||||||
|
let Inst{15-11} = fs;
|
||||||
|
let Inst{10-8} = 0; // cc
|
||||||
|
let Inst{7-4} = 0x3;
|
||||||
|
let Inst{3-0} = cond;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user