package kelvin | |
import chisel3._ | |
import chisel3.util._ | |
// Opcode list will maintain unique IDs even if not populated in command queue. | |
case class VEncodeOp() { | |
val undef = 0 | |
// Duplicate | |
val vdup = 1 | |
// Load/Store | |
val vld = 2 | |
val vst = 3 | |
val vstq = 4 | |
// Misc | |
val vcget = 5 | |
// Format0 | |
val vadd = 6 | |
val vsub = 7 | |
val vrsub = 8 | |
val veq = 9 | |
val vne = 10 | |
val vlt = 11 | |
val vle = 12 | |
val vgt = 13 | |
val vge = 14 | |
val vabsd = 15 | |
val vmax = 16 | |
val vmin = 17 | |
val vadd3 = 18 | |
// Format1 | |
val vand = 19 | |
val vor = 20 | |
val vxor = 21 | |
val vnot = 22 | |
val vrev = 23 | |
val vror = 24 | |
val vclb = 25 | |
val vclz = 26 | |
val vcpop = 27 | |
val vmv = 28 | |
val vmv2 = 29 | |
val vmvp = 30 | |
val acset = 31 | |
val actr = 32 | |
val adwinit = 33 | |
// Format2 | |
val vshl = 34 | |
val vshr = 35 | |
val vshf = 36 | |
val vsrans = 37 | |
val vsraqs = 38 | |
// Format3 | |
val vmul = 39 | |
val vmul2 = 40 | |
val vmuls = 41 | |
val vmuls2 = 42 | |
val vmulh = 43 | |
val vmulh2 = 44 | |
val vdmulh = 45 | |
val vdmulh2 = 46 | |
val vmulw = 47 | |
val vmadd = 48 | |
// Format4 | |
val vadds = 49 | |
val vsubs = 50 | |
val vaddw = 51 | |
val vsubw = 52 | |
val vacc = 53 | |
val vpadd = 54 | |
val vpsub = 55 | |
val vhadd = 56 | |
val vhsub = 57 | |
// Format6 | |
val vslidevn = 58 | |
val vslidehn = 59 | |
val vslidehn2 = 60 | |
val vslidevp = 61 | |
val vslidehp = 62 | |
val vslidehp2 = 63 | |
val vsel = 64 | |
val vevn = 65 | |
val vodd = 66 | |
val vevnodd = 67 | |
val vzip = 68 | |
// FormatVVV | |
val aconv = 69 | |
val vdwconv = 70 | |
val adwconv = 71 | |
// Entries | |
val entries = 72 | |
val bits = log2Ceil(entries) | |
} |