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

Added instruction format class 3.15 and floating-point compare instructions.

llvm-svn: 6594
This commit is contained in:
Misha Brukman 2003-06-04 02:26:14 +00:00
parent 15a27e40c6
commit ee88ddfc38
2 changed files with 22 additions and 11 deletions

View File

@ -188,15 +188,12 @@ def FSUBD : F3_16<2, 0b110100, 0x46, "fsubd">; // fsubd f, f, f
def FSUBQ : F3_16<2, 0b110100, 0x47, "fsubq">; // fsubq f, f, f def FSUBQ : F3_16<2, 0b110100, 0x47, "fsubq">; // fsubq f, f, f
// Section A.13: Floating-point compare - p159 // Section A.13: Floating-point compare - p159
// FIXME: FCMPS, FCMPD, FCMPQ !!! def FCMPS : F3_15<2, 0b110101, 0b010100001, "fcmps">; // fcmps %fcc, r1, r2
#if 0 def FCMPD : F3_15<2, 0b110101, 0b010100010, "fcmpd">; // fcmpd %fcc, r1, r2
def FSTOX : F3_14<2, 0b110100, 0b011001001, "fstod">; // fstod rs2, rd def FCMPQ : F3_15<2, 0b110101, 0b010100011, "fcmpq">; // fcmpq %fcc, r1, r2
def FDTOX : F3_14<2, 0b110100, 0b011001101, "fstoq">; // fstoq rs2, rd def FCMPES : F3_15<2, 0b110101, 0b010100101, "fcmpes">; // fcmpes %fcc, r1, r2
def FQTOX : F3_14<2, 0b110100, 0b011000110, "fstos">; // fstos rs2, rd def FCMPED : F3_15<2, 0b110101, 0b010100110, "fcmped">; // fcmped %fcc, r1, r2
def FSTOI : F3_14<2, 0b110100, 0b011001110, "fdtoq">; // fdtoq rs2, rd def FCMPEQ : F3_15<2, 0b110101, 0b010100111, "fcmpeq">; // fcmpeq %fcc, r1, r2
def FDTOI : F3_14<2, 0b110100, 0b011000111, "fqtos">; // fqtos rs2, rd
def FQTOI : F3_14<2, 0b110100, 0b011001011, "fqtod">; // fqtod rs2, rd
#endif
// Section A.14: Convert floating-point to integer - p161 // Section A.14: Convert floating-point to integer - p161
def FSTOX : F3_14<2, 0b110100, 0b010000001, "fstox">; // fstox rs2, rd def FSTOX : F3_14<2, 0b110100, 0b010000001, "fstox">; // fstox rs2, rd

View File

@ -202,12 +202,26 @@ class F3_13<bits<2> opVal, bits<6> op3Val, string name> : F3_rs1 {
} }
class F3_14<bits<2> opVal, bits<6> op3Val, class F3_14<bits<2> opVal, bits<6> op3Val,
bits<9> opfval, string name> : F3_rs2rd { bits<9> opfVal, string name> : F3_rs2rd {
set op = opVal; set op = opVal;
set op3 = op3Val; set op3 = op3Val;
set Name = name; set Name = name;
//set Inst{18-14} = dontcare; //set Inst{18-14} = dontcare;
set Inst{13-5} = opfval; set Inst{13-5} = opfVal;
}
class F3_15<bits<2> opVal, bits<6> op3Val,
bits<9> opfVal, string name> : F3 {
bits<2> cc;
bits<5> rs1;
bits<5> rs2;
set op = opVal;
set op3 = op3Val;
set Inst{26-25} = cc;
set Inst{18-14} = rs1;
set Inst{13-5} = opfVal;
set Inst{4-0} = rs2;
} }
class F3_16<bits<2> opVal, bits<6> op3Val, class F3_16<bits<2> opVal, bits<6> op3Val,