// Nexted Lvalues not implemented (seems to be in Treenail) InstructionSet Zbb { architectural_state { unsigned int XLEN=32; const register unsigned<32> XLEN_R = 32; register unsigned X[32] [[is_main_reg]]; } instructions { ZIP [[enable=XLEN==32]] { encoding: 12'b000010001111 :: rs1[4:0] :: 3'b001 :: rd[4:0] :: 7'b0010011; assembly: "{name(rd)}, {name(rs1)}"; behavior: { for(unsigned int i = 0; i<=XLEN/2-1; i++){ X[rd][2*i] = X[rs1][i]; X[rd][2*i+1] = X[rs1][i+XLEN/2]; } } } } }