1292915Sdim//=- MicroMips64r6InstrFormats.td - Instruction Formats -*- tablegen -* -=// 2292915Sdim// 3292915Sdim// The LLVM Compiler Infrastructure 4292915Sdim// 5292915Sdim// This file is distributed under the University of Illinois Open Source 6292915Sdim// License. See LICENSE.TXT for details. 7292915Sdim// 8292915Sdim//===----------------------------------------------------------------------===// 9292915Sdim// 10292915Sdim// This file describes microMIPS64r6 instruction formats. 11292915Sdim// 12292915Sdim//===----------------------------------------------------------------------===// 13292915Sdim 14292915Sdimclass DAUI_FM_MMR6 { 15292915Sdim bits<5> rt; 16292915Sdim bits<5> rs; 17292915Sdim bits<16> imm; 18292915Sdim 19292915Sdim bits<32> Inst; 20292915Sdim 21292915Sdim let Inst{31-26} = 0b111100; 22292915Sdim let Inst{25-21} = rt; 23292915Sdim let Inst{20-16} = rs; 24292915Sdim let Inst{15-0} = imm; 25292915Sdim} 26292915Sdim 27292915Sdimclass POOL32I_ADD_IMM_FM_MMR6<bits<5> funct> { 28292915Sdim bits<5> rs; 29292915Sdim bits<16> imm; 30292915Sdim 31292915Sdim bits<32> Inst; 32292915Sdim 33292915Sdim let Inst{31-26} = 0b010000; 34292915Sdim let Inst{25-21} = funct; 35292915Sdim let Inst{20-16} = rs; 36292915Sdim let Inst{15-0} = imm; 37292915Sdim} 38292915Sdim 39292915Sdimclass POOL32S_EXTBITS_FM_MMR6<bits<6> funct> { 40292915Sdim bits<5> rt; 41292915Sdim bits<5> rs; 42292915Sdim bits<5> size; 43292915Sdim bits<5> pos; 44292915Sdim 45292915Sdim bits<32> Inst; 46292915Sdim 47292915Sdim let Inst{31-26} = 0b010110; 48292915Sdim let Inst{25-21} = rt; 49292915Sdim let Inst{20-16} = rs; 50292915Sdim let Inst{15-11} = size; 51292915Sdim let Inst{10-6} = pos; 52292915Sdim let Inst{5-0} = funct; 53292915Sdim} 54292915Sdim 55292915Sdimclass POOL32S_DALIGN_FM_MMR6 { 56292915Sdim bits<5> rs; 57292915Sdim bits<5> rt; 58292915Sdim bits<5> rd; 59292915Sdim bits<3> bp; 60292915Sdim 61292915Sdim bits<32> Inst; 62292915Sdim 63292915Sdim let Inst{31-26} = 0b010110; 64292915Sdim let Inst{25-21} = rs; 65292915Sdim let Inst{20-16} = rt; 66292915Sdim let Inst{15-11} = rd; 67292915Sdim let Inst{10-8} = bp; 68292915Sdim let Inst{7-6} = 0b00; 69292915Sdim let Inst{5-0} = 0b011100; 70292915Sdim} 71292915Sdim 72292915Sdimclass POOL32A_DIVMOD_FM_MMR6<string instr_asm, bits<9> funct> 73292915Sdim : MMR6Arch<instr_asm> { 74292915Sdim bits<5> rd; 75292915Sdim bits<5> rs; 76292915Sdim bits<5> rt; 77292915Sdim 78292915Sdim bits<32> Inst; 79292915Sdim 80292915Sdim let Inst{31-26} = 0b010110; 81292915Sdim let Inst{25-21} = rd; 82292915Sdim let Inst{20-16} = rs; 83292915Sdim let Inst{15-11} = rt; 84292915Sdim let Inst{10-9} = 0b00; 85292915Sdim let Inst{8-0} = funct; 86292915Sdim} 87