[mips] Add disassembly support for comparison instructions
llvm-svn: 332340
This commit is contained in:
parent
b79ecec20d
commit
aa6bdba0ca
|
@ -363,11 +363,13 @@ multiclass C_COND_MM<string TypeStr, RegisterOperand RC, bits<2> fmt,
|
|||
let BaseOpcode = "c.ngt."#NAME;
|
||||
}
|
||||
}
|
||||
let DecoderNamespace = "MicroMips" in {
|
||||
defm S : C_COND_MM<"s", FGR32Opnd, 0b00, II_C_CC_S>,
|
||||
ISA_MICROMIPS32_NOT_MIPS32R6;
|
||||
defm D32 : C_COND_MM<"d", AFGR64Opnd, 0b01, II_C_CC_D>,
|
||||
ISA_MICROMIPS32_NOT_MIPS32R6, FGR_32;
|
||||
}
|
||||
|
||||
defm S : C_COND_MM<"s", FGR32Opnd, 0b00, II_C_CC_S>,
|
||||
ISA_MICROMIPS32_NOT_MIPS32R6;
|
||||
defm D32 : C_COND_MM<"d", AFGR64Opnd, 0b01, II_C_CC_D>,
|
||||
ISA_MICROMIPS32_NOT_MIPS32R6, FGR_32;
|
||||
let DecoderNamespace = "Mips64" in
|
||||
defm D64 : C_COND_MM<"d", FGR64Opnd, 0b01, II_C_CC_D>,
|
||||
ISA_MICROMIPS32_NOT_MIPS32R6, FGR_64;
|
||||
|
|
|
@ -258,3 +258,35 @@
|
|||
0x54 0x86 0x20 0x3b # CHECK: mfc1 $4, $f6
|
||||
0x54 0x86 0x38 0x3b # CHECK: mthc1 $4, $f6
|
||||
0x54 0x86 0x30 0x3b # CHECK: mfhc1 $4, $f6
|
||||
0x54 0xe6 0x00 0x3c # CHECK: c.f.s $f6, $f7
|
||||
0x54 0xe6 0x00 0x7c # CHECK: c.un.s $f6, $f7
|
||||
0x54 0xe6 0x00 0xbc # CHECK: c.eq.s $f6, $f7
|
||||
0x54 0xe6 0x01 0x3c # CHECK: c.olt.s $f6, $f7
|
||||
0x54 0xe6 0x01 0x7c # CHECK: c.ult.s $f6, $f7
|
||||
0x54 0xe6 0x01 0xbc # CHECK: c.ole.s $f6, $f7
|
||||
0x54 0xe6 0x01 0xfc # CHECK: c.ule.s $f6, $f7
|
||||
0x54 0xe6 0x02 0x3c # CHECK: c.sf.s $f6, $f7
|
||||
0x54 0xe6 0x02 0x7c # CHECK: c.ngle.s $f6, $f7
|
||||
0x54 0xe6 0x02 0xbc # CHECK: c.seq.s $f6, $f7
|
||||
0x54 0xe6 0x02 0xfc # CHECK: c.ngl.s $f6, $f7
|
||||
0x54 0xe6 0x03 0x3c # CHECK: c.lt.s $f6, $f7
|
||||
0x54 0xe6 0x03 0x7c # CHECK: c.nge.s $f6, $f7
|
||||
0x54 0xe6 0x03 0xbc # CHECK: c.le.s $f6, $f7
|
||||
0x54 0xe6 0x03 0xfc # CHECK: c.ngt.s $f6, $f7
|
||||
0x54 0x1e 0x06 0x3c # CHECK: c.sf.d $f30, $f0
|
||||
0x55 0xcc 0x04 0x3c # CHECK: c.f.d $f12, $f14
|
||||
0x55 0xcc 0x04 0x7c # CHECK: c.un.d $f12, $f14
|
||||
0x55 0xcc 0x04 0xbc # CHECK: c.eq.d $f12, $f14
|
||||
0x55 0xcc 0x04 0xfc # CHECK: c.ueq.d $f12, $f14
|
||||
0x55 0xcc 0x05 0x3c # CHECK: c.olt.d $f12, $f14
|
||||
0x55 0xcc 0x05 0x7c # CHECK: c.ult.d $f12, $f14
|
||||
0x55 0xcc 0x05 0xbc # CHECK: c.ole.d $f12, $f14
|
||||
0x55 0xcc 0x05 0xfc # CHECK: c.ule.d $f12, $f14
|
||||
0x55 0xcc 0x06 0x3c # CHECK: c.sf.d $f12, $f14
|
||||
0x55 0xcc 0x06 0x7c # CHECK: c.ngle.d $f12, $f14
|
||||
0x55 0xcc 0x06 0xbc # CHECK: c.seq.d $f12, $f14
|
||||
0x55 0xcc 0x06 0xfc # CHECK: c.ngl.d $f12, $f14
|
||||
0x55 0xcc 0x07 0x3c # CHECK: c.lt.d $f12, $f14
|
||||
0x55 0xcc 0x07 0x7c # CHECK: c.nge.d $f12, $f14
|
||||
0x55 0xcc 0x07 0xbc # CHECK: c.le.d $f12, $f14
|
||||
0x55 0xcc 0x07 0xfc # CHECK: c.ngt.d $f12, $f14
|
||||
|
|
|
@ -93,6 +93,70 @@
|
|||
# CHECK-EL: nmadd.d $f2, $f4, $f6, $f8 # encoding: [0x06,0x55,0x0a,0x11]
|
||||
# CHECK-EL: nmsub.s $f2, $f4, $f6, $f8 # encoding: [0x06,0x55,0x22,0x11]
|
||||
# CHECK-EL: nmsub.d $f2, $f4, $f6, $f8 # encoding: [0x06,0x55,0x2a,0x11]
|
||||
# CHECK-EL: c.f.s $f6, $f7 # encoding: [0xe6,0x54,0x3c,0x00]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_F_S_MM
|
||||
# CHECK-EL: c.un.s $f6, $f7 # encoding: [0xe6,0x54,0x7c,0x00]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_UN_S_MM
|
||||
# CHECK-EL: c.eq.s $f6, $f7 # encoding: [0xe6,0x54,0xbc,0x00]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_EQ_S_MM
|
||||
# CHECK-EL: c.olt.s $f6, $f7 # encoding: [0xe6,0x54,0x3c,0x01]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_OLT_S_MM
|
||||
# CHECK-EL: c.ult.s $f6, $f7 # encoding: [0xe6,0x54,0x7c,0x01]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_ULT_S_MM
|
||||
# CHECK-EL: c.ole.s $f6, $f7 # encoding: [0xe6,0x54,0xbc,0x01]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_OLE_S_MM
|
||||
# CHECK-EL: c.ule.s $f6, $f7 # encoding: [0xe6,0x54,0xfc,0x01]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_ULE_S_MM
|
||||
# CHECK-EL: c.sf.s $f6, $f7 # encoding: [0xe6,0x54,0x3c,0x02]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_SF_S_MM
|
||||
# CHECK-EL: c.ngle.s $f6, $f7 # encoding: [0xe6,0x54,0x7c,0x02]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_NGLE_S_MM
|
||||
# CHECK-EL: c.seq.s $f6, $f7 # encoding: [0xe6,0x54,0xbc,0x02]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_SEQ_S_MM
|
||||
# CHECK-EL: c.ngl.s $f6, $f7 # encoding: [0xe6,0x54,0xfc,0x02]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_NGL_S_MM
|
||||
# CHECK-EL: c.lt.s $f6, $f7 # encoding: [0xe6,0x54,0x3c,0x03]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_LT_S_MM
|
||||
# CHECK-EL: c.nge.s $f6, $f7 # encoding: [0xe6,0x54,0x7c,0x03]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_NGE_S_MM
|
||||
# CHECK-EL: c.le.s $f6, $f7 # encoding: [0xe6,0x54,0xbc,0x03]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_LE_S_MM
|
||||
# CHECK-EL: c.ngt.s $f6, $f7 # encoding: [0xe6,0x54,0xfc,0x03]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_NGT_S_MM
|
||||
# CHECK-EL: c.sf.d $f30, $f0 # encoding: [0x1e,0x54,0x3c,0x06]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_SF_D32_MM
|
||||
# CHECK-EL: c.f.d $f12, $f14 # encoding: [0xcc,0x55,0x3c,0x04]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_F_D32_MM
|
||||
# CHECK-EL: c.un.d $f12, $f14 # encoding: [0xcc,0x55,0x7c,0x04]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_UN_D32_MM
|
||||
# CHECK-EL: c.eq.d $f12, $f14 # encoding: [0xcc,0x55,0xbc,0x04]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_EQ_D32_MM
|
||||
# CHECK-EL: c.ueq.d $f12, $f14 # encoding: [0xcc,0x55,0xfc,0x04]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_UEQ_D32_MM
|
||||
# CHECK-EL: c.olt.d $f12, $f14 # encoding: [0xcc,0x55,0x3c,0x05]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_OLT_D32_MM
|
||||
# CHECK-EL: c.ult.d $f12, $f14 # encoding: [0xcc,0x55,0x7c,0x05]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_ULT_D32_MM
|
||||
# CHECK-EL: c.ole.d $f12, $f14 # encoding: [0xcc,0x55,0xbc,0x05]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_OLE_D32_MM
|
||||
# CHECK-EL: c.ule.d $f12, $f14 # encoding: [0xcc,0x55,0xfc,0x05]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_ULE_D32_MM
|
||||
# CHECK-EL: c.sf.d $f12, $f14 # encoding: [0xcc,0x55,0x3c,0x06]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_SF_D32_MM
|
||||
# CHECK-EL: c.ngle.d $f12, $f14 # encoding: [0xcc,0x55,0x7c,0x06]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_NGLE_D32_MM
|
||||
# CHECK-EL: c.seq.d $f12, $f14 # encoding: [0xcc,0x55,0xbc,0x06]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_SEQ_D32_MM
|
||||
# CHECK-EL: c.ngl.d $f12, $f14 # encoding: [0xcc,0x55,0xfc,0x06]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_NGL_D32_MM
|
||||
# CHECK-EL: c.lt.d $f12, $f14 # encoding: [0xcc,0x55,0x3c,0x07]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_LT_D32_MM
|
||||
# CHECK-EL: c.nge.d $f12, $f14 # encoding: [0xcc,0x55,0x7c,0x07]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_NGE_D32_MM
|
||||
# CHECK-EL: c.le.d $f12, $f14 # encoding: [0xcc,0x55,0xbc,0x07]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_LE_D32_MM
|
||||
# CHECK-EL: c.ngt.d $f12, $f14 # encoding: [0xcc,0x55,0xfc,0x07]
|
||||
# CHECK-EL-NEXT: # <MCInst #{{[0-9]+}} C_NGT_D32_MM
|
||||
#------------------------------------------------------------------------------
|
||||
# Big endian
|
||||
#------------------------------------------------------------------------------
|
||||
|
@ -187,6 +251,70 @@
|
|||
# CHECK-EB: nmsub.s $f2, $f4, $f6, $f8 # encoding: [0x55,0x06,0x11,0x22]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} NMSUB_S_MM
|
||||
# CHECK-EB: nmsub.d $f2, $f4, $f6, $f8 # encoding: [0x55,0x06,0x11,0x2a]
|
||||
# CHECK-EB: c.f.s $f6, $f7 # encoding: [0x54,0xe6,0x00,0x3c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_F_S_MM
|
||||
# CHECK-EB: c.un.s $f6, $f7 # encoding: [0x54,0xe6,0x00,0x7c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_UN_S_MM
|
||||
# CHECK-EB: c.eq.s $f6, $f7 # encoding: [0x54,0xe6,0x00,0xbc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_EQ_S_MM
|
||||
# CHECK-EB: c.olt.s $f6, $f7 # encoding: [0x54,0xe6,0x01,0x3c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_OLT_S_MM
|
||||
# CHECK-EB: c.ult.s $f6, $f7 # encoding: [0x54,0xe6,0x01,0x7c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_ULT_S_MM
|
||||
# CHECK-EB: c.ole.s $f6, $f7 # encoding: [0x54,0xe6,0x01,0xbc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_OLE_S_MM
|
||||
# CHECK-EB: c.ule.s $f6, $f7 # encoding: [0x54,0xe6,0x01,0xfc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_ULE_S_MM
|
||||
# CHECK-EB: c.sf.s $f6, $f7 # encoding: [0x54,0xe6,0x02,0x3c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_SF_S_MM
|
||||
# CHECK-EB: c.ngle.s $f6, $f7 # encoding: [0x54,0xe6,0x02,0x7c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_NGLE_S_MM
|
||||
# CHECK-EB: c.seq.s $f6, $f7 # encoding: [0x54,0xe6,0x02,0xbc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_SEQ_S_MM
|
||||
# CHECK-EB: c.ngl.s $f6, $f7 # encoding: [0x54,0xe6,0x02,0xfc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_NGL_S_MM
|
||||
# CHECK-EB: c.lt.s $f6, $f7 # encoding: [0x54,0xe6,0x03,0x3c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_LT_S_MM
|
||||
# CHECK-EB: c.nge.s $f6, $f7 # encoding: [0x54,0xe6,0x03,0x7c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_NGE_S_MM
|
||||
# CHECK-EB: c.le.s $f6, $f7 # encoding: [0x54,0xe6,0x03,0xbc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_LE_S_MM
|
||||
# CHECK-EB: c.ngt.s $f6, $f7 # encoding: [0x54,0xe6,0x03,0xfc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_NGT_S_MM
|
||||
# CHECK-EB: c.sf.d $f30, $f0 # encoding: [0x54,0x1e,0x06,0x3c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_SF_D32_MM
|
||||
# CHECK-EB: c.f.d $f12, $f14 # encoding: [0x55,0xcc,0x04,0x3c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_F_D32_MM
|
||||
# CHECK-EB: c.un.d $f12, $f14 # encoding: [0x55,0xcc,0x04,0x7c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_UN_D32_MM
|
||||
# CHECK-EB: c.eq.d $f12, $f14 # encoding: [0x55,0xcc,0x04,0xbc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_EQ_D32_MM
|
||||
# CHECK-EB: c.ueq.d $f12, $f14 # encoding: [0x55,0xcc,0x04,0xfc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_UEQ_D32_MM
|
||||
# CHECK-EB: c.olt.d $f12, $f14 # encoding: [0x55,0xcc,0x05,0x3c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_OLT_D32_MM
|
||||
# CHECK-EB: c.ult.d $f12, $f14 # encoding: [0x55,0xcc,0x05,0x7c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_ULT_D32_MM
|
||||
# CHECK-EB: c.ole.d $f12, $f14 # encoding: [0x55,0xcc,0x05,0xbc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_OLE_D32_MM
|
||||
# CHECK-EB: c.ule.d $f12, $f14 # encoding: [0x55,0xcc,0x05,0xfc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_ULE_D32_MM
|
||||
# CHECK-EB: c.sf.d $f12, $f14 # encoding: [0x55,0xcc,0x06,0x3c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_SF_D32_MM
|
||||
# CHECK-EB: c.ngle.d $f12, $f14 # encoding: [0x55,0xcc,0x06,0x7c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_NGLE_D32_MM
|
||||
# CHECK-EB: c.seq.d $f12, $f14 # encoding: [0x55,0xcc,0x06,0xbc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_SEQ_D32_MM
|
||||
# CHECK-EB: c.ngl.d $f12, $f14 # encoding: [0x55,0xcc,0x06,0xfc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_NGL_D32_MM
|
||||
# CHECK-EB: c.lt.d $f12, $f14 # encoding: [0x55,0xcc,0x07,0x3c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_LT_D32_MM
|
||||
# CHECK-EB: c.nge.d $f12, $f14 # encoding: [0x55,0xcc,0x07,0x7c]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_NGE_D32_MM
|
||||
# CHECK-EB: c.le.d $f12, $f14 # encoding: [0x55,0xcc,0x07,0xbc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_LE_D32_MM
|
||||
# CHECK-EB: c.ngt.d $f12, $f14 # encoding: [0x55,0xcc,0x07,0xfc]
|
||||
# CHECK-EB-NEXT: # <MCInst #{{[0-9]+}} C_NGT_D32_MM
|
||||
|
||||
add.s $f4, $f6, $f8
|
||||
add.d $f4, $f6, $f8
|
||||
|
@ -246,3 +374,35 @@
|
|||
nmadd.d $f2, $f4, $f6, $f8
|
||||
nmsub.s $f2, $f4, $f6, $f8
|
||||
nmsub.d $f2, $f4, $f6, $f8
|
||||
c.f.s $f6, $f7
|
||||
c.un.s $f6, $f7
|
||||
c.eq.s $f6, $f7
|
||||
c.olt.s $f6, $f7
|
||||
c.ult.s $f6, $f7
|
||||
c.ole.s $f6, $f7
|
||||
c.ule.s $f6, $f7
|
||||
c.sf.s $f6, $f7
|
||||
c.ngle.s $f6, $f7
|
||||
c.seq.s $f6, $f7
|
||||
c.ngl.s $f6, $f7
|
||||
c.lt.s $f6, $f7
|
||||
c.nge.s $f6, $f7
|
||||
c.le.s $f6, $f7
|
||||
c.ngt.s $f6, $f7
|
||||
c.sf.d $f30, $f0
|
||||
c.f.d $f12, $f14
|
||||
c.un.d $f12, $f14
|
||||
c.eq.d $f12, $f14
|
||||
c.ueq.d $f12, $f14
|
||||
c.olt.d $f12, $f14
|
||||
c.ult.d $f12, $f14
|
||||
c.ole.d $f12, $f14
|
||||
c.ule.d $f12, $f14
|
||||
c.sf.d $f12, $f14
|
||||
c.ngle.d $f12, $f14
|
||||
c.seq.d $f12, $f14
|
||||
c.ngl.d $f12, $f14
|
||||
c.lt.d $f12, $f14
|
||||
c.nge.d $f12, $f14
|
||||
c.le.d $f12, $f14
|
||||
c.ngt.d $f12, $f14
|
||||
|
|
Loading…
Reference in New Issue