41 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| import "RV64IBase.core_desc"
 | |
| 
 | |
| InsructionSet RV64M extends RV64IBase {
 | |
|     instructions{       
 | |
|         MULW{
 | |
|             encoding: b0000001 | rs2[4:0] | rs1[4:0] | b000 | rd[4:0] | b0111011;
 | |
|             args_disass:"x%rd$d, x%rs1$d, x%rs2$d";
 | |
|             if(rd != 0){
 | |
|                 X[rd]<= X[rs1] * X[rs2];
 | |
|             }
 | |
|         }
 | |
|         DIVW {
 | |
|             encoding: b0000001 | rs2[4:0] | rs1[4:0] | b100 | rd[4:0] | b0111011;
 | |
|             args_disass:"x%rd$d, x%rs1$d, x%rs2$d";
 | |
|             if(rd != 0){
 | |
|                 X[rd] <= X[rs1]s / X[rs2]s;
 | |
|             }
 | |
|         }
 | |
|         DIVUW {
 | |
|             encoding: b0000001 | rs2[4:0] | rs1[4:0] | b101 | rd[4:0] | b0111011;
 | |
|             args_disass:"x%rd$d, x%rs1$d, x%rs2$d";
 | |
|             if(rd != 0){
 | |
|                 X[rd] <= X[rs1] / X[rs2];
 | |
|             }
 | |
|         }
 | |
|         REMW {
 | |
|             encoding: b0000001 | rs2[4:0] | rs1[4:0] | b110 | rd[4:0] | b0111011;
 | |
|             args_disass:"x%rd$d, x%rs1$d, x%rs2$d";
 | |
|             if(rd != 0){
 | |
|                 X[rd] <= X[rs1]s % X[rs2]s;
 | |
|             }
 | |
|         }
 | |
|         REMUW {
 | |
|             encoding: b0000001 | rs2[4:0] | rs1[4:0] | b111 | rd[4:0] | b0111011;
 | |
|             args_disass:"x%rd$d, x%rs1$d, x%rs2$d";
 | |
|             if(rd != 0){
 | |
|                 X[rd] <= X[rs1] % X[rs2];
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| } |