Plan 9 from Bell Labs’s /sys/src/libmach/riscv.compress.txt

Copyright © 2021 Plan 9 Foundation
Distributed under the MIT License.
Download the Plan 9 distribution.


/* 00-07 ([1:0] = 0) ([15:13] = 0-7) */
	{"ADDI4SPN $I,D", 23, 6, 5, 11, 12, 7, 8, 9, 10},          /* 12:5 → 5:4|9:6|2|3 */
	{"FLD A,fD",      25, 10, 11, 12, 5, 6},                   /* 12:10|6:5 → 5:3|7:6 */
	{"LW A,D",        26, 6, 10, 11, 12, 5},                   /* 12:10|6:5 → 5:3|2|6 */
	{"FLW A,fD",      26, 6, 10, 11, 12, 5},                   /* 12:10|6:5 → 5:3|2|6 */
	{"? ",	0},
	{"FSD f2,A",      25, 10, 11, 12, 5, 6},                   /* 12:10|6:5 → 5:3|7:6 */
	{"SW 2,A",        26, 6, 10, 11, 12, 5},                   /* 12:10|6:5 → 5:3|2|6 */
	{"FSW f2,A",      26, 6, 10, 11, 12, 5},                   /* 12:10|6:5 → 5:3|2|6 */

/* 08-0F ([1:0] = 1) ([15:13] = 0-7 not 4) */
	{"ADDI $I,D",    -26, 3, 4, 5, 6, 12},                     /* 12|6:2 → * 5:0 */
	{"JAL p",        -21, 3, 4, 5, 11, 2, 7, 6, 9, 10, 8, 12}, /* 12:2 → * 11|4|9:8|10|6|7|3:1|5 */
	{"LI $I,D",      -26, 3, 4, 5, 6, 12},                     /* 12|6:2 → * 5:0 */
	{"LUI $I,D",     -15, 2, 3, 4, 5, 6, 12},                  /* 12|6:2 → * 17:12 */
	{"? ",	0},
	{"J p",          -21, 3, 4, 5, 11, 2, 7, 6, 9, 10, 8, 12}, /* 12:2 → * 11|4|9:8|10|6|7|3:1|5 */
	{"BEQZ S,p",     -24, 3, 4, 10, 11, 2, 5, 6, 12},          /* 12:10|6:2 → * 8|4|3|7:6|2:1|5 */
	{"BNEZ S,p",     -24, 3, 4, 10, 11, 2, 5, 6, 12},          /* 12:10|6:2 → * 8|4|3|7:6|2:1|5 */

/* 10-17  ([1:0] = 2) ([15:13] = 0-7 not 4) */
	{"SLLI $I,D",     26, 3, 4, 5, 6, 12},                     /* 12|6:2 → 5:0 */
	{"FLDSP I,fD",    24, 5, 6, 12, 2, 3, 4},                  /* 12|6:2 → 5:3|8:6 */
	{"LWSP I,D",      25, 4, 5, 6, 12, 2, 3},                  /* 12|6:2 → 5:2|7:6 */
	{"FLWSP I,fD      25, 4, 5, 6, 12, 2, 3},                  /* 12|6:2 → 5:2|7:6 */
	{"? ",	0},
	{"FSDSP f2,$I",   24, 10, 11, 12, 7, 8, 9},                /* 12:7 → 5:3|8:6 */
	{"SWSP 2,$I",     25, 9, 10, 11, 12, 7, 8},                /* 12:7 → 5:2|7:6 */
	{"FSWSP f2,$I",   25, 9, 10, 11, 12, 7, 8},                /* 12:7 → 5:2|7:6 */

/* 18-1A  ([1:0] = 1) ([15:13] = 4) ([11:10] = 0-2) */
	{"SRLI $I,D",     26, 3, 4, 5, 6, 12},                     /* 12|6:2 → 5:0 */
	{"SRAI $I,D",     26, 3, 4, 5, 6, 12},                     /* 12|6:2 → 5:0 */
	{"ANDI $I,D",    -26, 3, 4, 5, 6, 12},                     /* 12|6:2 → * 5:0 */

/* 1B-1E ([1:0] = 1) ([15:13] = 4) ([11:10] = 3) ([6:5] = 0-3) */
	{"SUB 2,D",	0},
	{"XOR 2,D",	0},
	{"OR 2,D",	0},
	{"AND 2,D",	0},

/* 1F-22 ([1:0] = 2) ([15:13] = 4) ([12] = 0-1) (rs2 = 0-nonzero) */
	{"JR S",	0},
	{"MV 2,D",	0},
	{"JALR S",	0},
	{"ADD 2,D",	0},

/* 23-23 ([1:0] = 1) ([15:13] = 3) ( rd = 2) */
	{"ADDI16SP $I",  -23, 6, 2, 5, 3, 4, 12},                  /* 12|6:2 → * 9|4|6|8:7|5 */
maxn 17 maxop 16 maxperm 34

	aop = WBITS(1,0) << 3 + WBITS(15,13);
	if((aop & 0x7) == 4){
		switch(WBITS(1,0)){
		case 1:
			aop = 0x18 + WBITS(12,10);
			if(aop == 0x1B)
				aop += WBITS(6,5);
			break;
		case 2:
			aop = 0x1F + (WBITS(12,12) << 1) + (rs2 != 0);
			break;
		}
	}
	cop = &coptab[aop];
	
	imm = 0;
	ibits = cop->ibits;
	while((i = ibits&0xF) != 0){
		imm = (imm<<1) | ((ibits & (1<<i)) != 0);

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@plan9.bell-labs.com.