Skip to content

Commit

Permalink
[mips] synci microMIPS instruction definition.
Browse files Browse the repository at this point in the history
Add synci to the microMIPS instruction definitions, mark the MIPS sync & synci
as not being part of microMIPS. This does not cover the sync instruction alias,
as that will be handled with a different patch. Add sync to the valid tests for
microMIPS.

Reviewers: vkalintiris

Differential Revision: https://reviews.llvm.org/D25795

llvm-svn: 284962
  • Loading branch information
Simon Dardis committed Oct 24, 2016
1 parent d900714 commit 9c34854
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 3 deletions.
11 changes: 11 additions & 0 deletions llvm/lib/Target/Mips/MicroMipsInstrFormats.td
Expand Up @@ -599,6 +599,17 @@ class SYNC_FM_MM : MMArch {
let Inst{5-0} = 0x3c;
}

class SYNCI_FM_MM : MMArch {
bits<5> rs;
bits<16> offset;
bits<32> Inst;

let Inst{31-26} = 0b010000;
let Inst{25-21} = 0b10000;
let Inst{20-16} = rs;
let Inst{15-0} = offset;
}

class BRK_FM_MM : MMArch {
bits<10> code_1;
bits<10> code_2;
Expand Down
1 change: 1 addition & 0 deletions llvm/lib/Target/Mips/MicroMipsInstrInfo.td
Expand Up @@ -927,6 +927,7 @@ let DecoderNamespace = "MicroMips", Predicates = [InMicroMips] in {

/// Control Instructions
def SYNC_MM : MMRel, SYNC_FT<"sync">, SYNC_FM_MM;
def SYNCI_MM : MMRel, SYNCI_FT<"synci">, SYNCI_FM_MM;
def BREAK_MM : MMRel, BRK_FT<"break">, BRK_FM_MM;
def SYSCALL_MM : MMRel, SYS_FT<"syscall", uimm10, II_SYSCALL>, SYS_FM_MM;
def WAIT_MM : WaitMM<"wait">, WAIT_FM_MM;
Expand Down
6 changes: 3 additions & 3 deletions llvm/lib/Target/Mips/MipsInstrInfo.td
Expand Up @@ -1874,10 +1874,10 @@ let DecoderNamespace = "COP3_" in {
def SDC3 : SW_FT3<"sdc3", COP3Opnd, II_SDC3, store>, LW_FM<0x3f>,
ISA_MIPS2;
}
}

def SYNC : MMRel, StdMMR6Rel, SYNC_FT<"sync">, SYNC_FM, ISA_MIPS2;
def SYNCI : MMRel, StdMMR6Rel, SYNCI_FT<"synci">, SYNCI_FM, ISA_MIPS32R2;
def SYNC : MMRel, StdMMR6Rel, SYNC_FT<"sync">, SYNC_FM, ISA_MIPS2;
def SYNCI : MMRel, StdMMR6Rel, SYNCI_FT<"synci">, SYNCI_FM, ISA_MIPS32R2;
}

let AdditionalPredicates = [NotInMicroMips] in {
def TEQ : MMRel, TEQ_FT<"teq", GPR32Opnd, uimm10, II_TEQ>, TEQ_FM<0x34>, ISA_MIPS2;
Expand Down
4 changes: 4 additions & 0 deletions llvm/test/MC/Mips/micromips/valid.s
Expand Up @@ -207,3 +207,7 @@ recip.s $f2, $f4 # CHECK: recip.s $f2, $f4 # encoding: [0x54,0x
recip.d $f2, $f4 # CHECK: recip.d $f2, $f4 # encoding: [0x54,0x44,0x52,0x3b]
rsqrt.s $f3, $f5 # CHECK: rsqrt.s $f3, $f5 # encoding: [0x54,0x65,0x02,0x3b]
rsqrt.d $f2, $f4 # CHECK: rsqrt.d $f2, $f4 # encoding: [0x54,0x44,0x42,0x3b]
sync # CHECK: sync # encoding: [0x00,0x00,0x6b,0x7c]
sync 0 # CHECK: sync 0 # encoding: [0x00,0x00,0x6b,0x7c]
sync 1 # CHECK: sync 1 # encoding: [0x00,0x01,0x6b,0x7c]
synci 64($5) # CHECK: synci 64($5) # encoding: [0x42,0x00,0x00,0x40]

0 comments on commit 9c34854

Please sign in to comment.