| 141 | } |
| 142 | |
| 143 | impl DecodedInsn { |
| 144 | pub fn mnemonic(&self) -> &'static str { |
| 145 | match self { |
| 146 | Self::Lui { .. } => "lui", |
| 147 | Self::Auipc { .. } => "auipc", |
| 148 | Self::Jal { .. } => "jal", |
| 149 | Self::Jalr { .. } => "jalr", |
| 150 | Self::Branch { funct3, .. } => match funct3 { |
| 151 | 0 => "beq", |
| 152 | 1 => "bne", |
| 153 | 4 => "blt", |
| 154 | 5 => "bge", |
| 155 | 6 => "bltu", |
| 156 | 7 => "bgeu", |
| 157 | _ => "b??", |
| 158 | }, |
| 159 | Self::Load { funct3, .. } => match funct3 { |
| 160 | 0 => "lb", |
| 161 | 1 => "lh", |
| 162 | 2 => "lw", |
| 163 | 3 => "ld", |
| 164 | 4 => "lbu", |
| 165 | 5 => "lhu", |
| 166 | 6 => "lwu", |
| 167 | _ => "l??", |
| 168 | }, |
| 169 | Self::Store { funct3, .. } => match funct3 { |
| 170 | 0 => "sb", |
| 171 | 1 => "sh", |
| 172 | 2 => "sw", |
| 173 | 3 => "sd", |
| 174 | _ => "s??", |
| 175 | }, |
| 176 | Self::AluImm { funct3, funct7, .. } => match funct3 { |
| 177 | 0 => "addi", |
| 178 | 1 => "slli", |
| 179 | 2 => "slti", |
| 180 | 3 => "sltiu", |
| 181 | 4 => "xori", |
| 182 | 5 => { |
| 183 | if funct7 & 0x20 != 0 { |
| 184 | "srai" |
| 185 | } else { |
| 186 | "srli" |
| 187 | } |
| 188 | } |
| 189 | 6 => "ori", |
| 190 | 7 => "andi", |
| 191 | _ => "imm??", |
| 192 | }, |
| 193 | Self::AluImm32 { funct3, funct7, .. } => match funct3 { |
| 194 | 0 => "addiw", |
| 195 | 1 => "slliw", |
| 196 | 5 => { |
| 197 | if funct7 & 0x20 != 0 { |
| 198 | "sraiw" |
| 199 | } else { |
| 200 | "srliw" |