1/*************************************************************************************** 2* Copyright (c) 2020-2021 Institute of Computing Technology, Chinese Academy of Sciences 3* Copyright (c) 2020-2021 Peng Cheng Laboratory 4* 5* XiangShan is licensed under Mulan PSL v2. 6* You can use this software according to the terms and conditions of the Mulan PSL v2. 7* You may obtain a copy of Mulan PSL v2 at: 8* http://license.coscl.org.cn/MulanPSL2 9* 10* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 11* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 12* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 13* 14* See the Mulan PSL v2 for more details. 15***************************************************************************************/ 16 17package xiangshan.backend.decode.isa.predecode 18 19import chisel3.util._ 20import xiangshan.frontend.BrType 21 22object PreDecodeInst { 23 // def C_JAL = BitPat("b????????????????_?01_?_??_???_??_???_01") // RV32C 24 def C_J = BitPat("b????????????????_101_?_??_???_??_???_01") 25 def C_EBREAK = BitPat("b????????????????_100_?_00_000_00_000_10") 26 def C_JALR = BitPat("b????????????????_100_?_??_???_00_000_10") // c.jalr & c.jr 27 def C_BRANCH = BitPat("b????????????????_11?_?_??_???_??_???_01") 28 def JAL = BitPat("b????????????????_???_?????_1101111") 29 def JALR = BitPat("b????????????????_000_?????_1100111") 30 def BRANCH = BitPat("b????????????????_???_?????_1100011") 31 def NOP = BitPat("b???????????????0_100_01010_0000001") //li a0,0 32 33 34 val brTable = Array( 35 // C_JAL -> List(BrType.jal), 36 C_EBREAK -> List(BrType.notCFI), // c.ebreak should not be decoded as jalr, higher priority than c.jalr 37 C_J -> List(BrType.jal), 38 C_JALR -> List(BrType.jalr), 39 C_BRANCH -> List(BrType.branch), 40 JAL -> List(BrType.jal), 41 JALR -> List(BrType.jalr), 42 BRANCH -> List(BrType.branch) 43 ) 44} 45