/*
 * Copyright 2023 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package kelvin

import chisel3._
import chisel3.util._

case class VDecodeOp() {
  // Format0
  val vadd = 0
  val vsub = 1
  val vrsub = 2
  val veq = 6
  val vne = 7
  val vlt = 8
  val vle = 10
  val vgt = 12
  val vge = 14
  val vabsd = 16
  val vmax = 18
  val vmin = 20
  val vadd3 = 24

  // Format1
  val vand = 0
  val vor = 1
  val vxor = 2
  val vnot = 3
  val vrev = 4
  val vror = 5
  val vclb = 8
  val vclz = 9
  val vcpop = 10
  val vmv = 12
  val vmvp = 13
  val acset = 16
  val actr = 17
  val adwinit = 18

  // Format2
  val vsll = 1
  val vsra = 2
  val vsrl = 3
  val vsha = 8
  val vshl = 9
  val vsrans = 16
  val vsraqs = 24

  // Format3
  val vmul = 0
  val vmuls = 2
  val vmulw = 4
  val vmulh = 8
  val vmulhu = 9
  val vdmulh = 16
  val vmacc = 20
  val vmadd = 21

  // Format4
  val vadds = 0
  val vsubs = 2
  val vaddw = 4
  val vsubw = 6
  val vacc = 10
  val vpadd = 12
  val vpsub = 14
  val vhadd = 16
  val vhsub = 20

  // Format6
  val vsliden = 0
  val vslidevn = 0
  val vslidehn = 4
  val vslidep = 8
  val vslidevp = 8
  val vslidehp = 12
  val vsel = 16
  val vevn = 24
  val vodd = 25
  val vevnodd = 26
  val vzip = 28

  // FormatVVV
  val aconv = 8
  val vdwconv = 10
}
