MV.X and MV.swizzle =================== swizzle needs a MV. see below for a potential way to use the funct7 to do a swizzle in rs2. +---------------+-------------+-------+----------+----------+--------+----------+--------+--------+ | Encoding | 31:27 | 26:25 | 24:20 | 19:15 | 14:12 | 11:7 | 6:2 | 1:0 | +---------------+-------------+-------+----------+----------+--------+----------+--------+--------+ | RV32-I-type + imm[11:0] + rs1[4:0] + funct3 | rd[4:0] + opcode + 0b11 | +---------------+-------------+-------+----------+----------+--------+----------+--------+--------+ | RV32-I-type + fn4[11:8] swizzle[7:0] + rs1[4:0] + 0b000 | rd[4:0] + OP-V + 0b11 | +---------------+-------------+-------+----------+----------+--------+----------+--------+--------+ * funct3 = MV * OP-V = 0b1010111 * fn4 = 4 bit function. * fn4 = 0b0000 - INT MV-SWIZZLE ? * fn4 = 0b0001 - FP MV-SWIZZLE ? swizzle (only active on SV or P48/P64 when SUBVL!=0): +-----+---+ | 1:0 | x | +-----+---+ | 3:2 | y | +-----+---+ | 5:4 | z | +-----+---+ | 7:6 | w | +-----+---+ ---- potential MV.X? register-version of MV-swizzle? +---------------+-------------+-------+----------+----------+--------+----------+--------+--------+ | Encoding | 31:27 | 26:25 | 24:20 | 19:15 | 14:12 | 11:7 | 6:2 | 1:0 | +---------------+-------------+-------+----------+----------+--------+----------+--------+--------+ | RV32-R-type + funct7 + rs2[4:0] + rs1[4:0] + funct3 | rd[4:0] + opcode + 0b11 | +---------------+-------------+-------+----------+----------+--------+----------+--------+--------+ | RV32-R-type + 0b0000000 + rs2[4:0] + rs1[4:0] + 0b001 | rd[4:0] + OP-V + 0b11 | +---------------+-------------+-------+----------+----------+--------+----------+--------+--------+ * funct3 = MV.X * OP-V = 0b1010111 * funct7 = 0b0000000 - INT MV.X * funct7 = 0b0000001 - FP MV.X * funct7 = 0b0000010 - INT MV.swizzle to say that rs2 is a swizzle argument? * funct7 = 0b0000011 - FP MV.swizzle to say that rs2 is a swizzle argument? question: do we need a swizzle MV.X as well? macro-op fusion =============== there is the potential for macro-op fusion of mv-swizzle with the following instruction and/or preceding instruction.