Fix for loads > 8 steps In the backend: - Allow up to 32 uops - Decode affected instructions - Set vd offset for them - Set vs2 offset for them - Set segment_index for them All existing load-store tests now pass Change-Id: I2c77efd78d71dc418032b3d16f8c9297505dce37
diff --git a/hdl/verilog/rvv/design/rvv_backend_decode_unit_ari.sv b/hdl/verilog/rvv/design/rvv_backend_decode_unit_ari.sv index dd4febd..05f27d8 100644 --- a/hdl/verilog/rvv/design/rvv_backend_decode_unit_ari.sv +++ b/hdl/verilog/rvv/design/rvv_backend_decode_unit_ari.sv
@@ -3567,13 +3567,13 @@ else begin case(eew_max) EEW8: begin - uop_vstart = csr_vstart[4 +: `UOP_INDEX_WIDTH]; + uop_vstart = csr_vstart[4 +: `UOP_INDEX_WIDTH_ARI]; end EEW16: begin - uop_vstart = csr_vstart[3 +: `UOP_INDEX_WIDTH]; + uop_vstart = csr_vstart[3 +: `UOP_INDEX_WIDTH_ARI]; end EEW32: begin - uop_vstart = csr_vstart[2 +: `UOP_INDEX_WIDTH]; + uop_vstart = csr_vstart[2 +: `UOP_INDEX_WIDTH_ARI]; end default: begin uop_vstart = 'b0;
diff --git a/hdl/verilog/rvv/design/rvv_backend_decode_unit_lsu.sv b/hdl/verilog/rvv/design/rvv_backend_decode_unit_lsu.sv index c39222e..d56d924 100644 --- a/hdl/verilog/rvv/design/rvv_backend_decode_unit_lsu.sv +++ b/hdl/verilog/rvv/design/rvv_backend_decode_unit_lsu.sv
@@ -47,7 +47,7 @@ EMUL_e emul_vs2; EMUL_e emul_vd_nf; EMUL_e emul_max_vd_vs2; - EMUL_e emul_max; + logic [`UOP_INDEX_WIDTH:0] emul_max; EEW_e eew_vd; EEW_e eew_vs2; EEW_e eew_max; @@ -221,7 +221,7 @@ emul_vs2 = EMUL_NONE; emul_max_vd_vs2 = EMUL_NONE; emul_vd_nf = EMUL_NONE; - emul_max = EMUL_NONE; + emul_max = (`UOP_INDEX_WIDTH+1)'('d0); if (valid_lsu) begin case(funct6_lsu.lsu_funct6.lsu_mop) @@ -229,6 +229,7 @@ case(funct6_lsu.lsu_funct6.lsu_umop) US_US, US_FF: begin + // TODO(davidgao): rearrange the cases based on reachability case(inst_nf) // emul_vd = ceil(inst_funct3/csr_sew*csr_lmul) // emul_vs2: no emul_vs2 for unit @@ -248,25 +249,25 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL4: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL8: begin emul_vd = EMUL8; emul_max_vd_vs2 = EMUL8; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -279,25 +280,25 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL1: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL2: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL4: begin emul_vd = EMUL8; emul_max_vd_vs2 = EMUL8; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -308,25 +309,25 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL1_2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL1: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL2: begin emul_vd = EMUL8; emul_max_vd_vs2 = EMUL8; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -340,19 +341,19 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL4: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL8: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end endcase end @@ -365,13 +366,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL8: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end endcase end @@ -390,19 +391,19 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL4: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -415,19 +416,19 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL1: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL2: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -438,19 +439,19 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL1_2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL1: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -464,19 +465,19 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL4: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL8: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -489,13 +490,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL8: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end endcase end @@ -514,13 +515,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -533,13 +534,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL1: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -550,13 +551,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL1_2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -570,13 +571,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL4: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -589,13 +590,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL8: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -614,13 +615,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -633,13 +634,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL1: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -650,13 +651,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL1_2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -670,13 +671,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL4: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -689,13 +690,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL8: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -714,7 +715,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -727,7 +728,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -738,7 +739,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -752,7 +753,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -765,7 +766,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -784,7 +785,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -797,7 +798,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -808,7 +809,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -822,7 +823,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -835,7 +836,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -854,7 +855,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -867,7 +868,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -878,7 +879,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -892,7 +893,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -905,7 +906,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -924,7 +925,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -937,7 +938,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -948,7 +949,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -962,7 +963,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -975,7 +976,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -989,25 +990,25 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end NF2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end NF4: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end NF8: begin emul_vd = EMUL8; emul_max_vd_vs2 = EMUL8; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1022,7 +1023,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end endcase end @@ -1030,6 +1031,7 @@ end CS: begin + // TODO(davidgao): rearrange the cases based on reachability case(inst_nf) // emul_vd = ceil(inst_funct3/csr_sew*csr_lmul) // emul_vs2: no emul_vs2 for stride @@ -1049,25 +1051,25 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL4: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL8: begin emul_vd = EMUL8; emul_max_vd_vs2 = EMUL8; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1080,25 +1082,25 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL1: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL2: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL4: begin emul_vd = EMUL8; emul_max_vd_vs2 = EMUL8; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1109,25 +1111,25 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL1_2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL1: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL2: begin emul_vd = EMUL8; emul_max_vd_vs2 = EMUL8; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1141,19 +1143,19 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL4: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL8: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end endcase end @@ -1166,13 +1168,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL8: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end endcase end @@ -1191,19 +1193,19 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL4: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1216,19 +1218,19 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL1: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL2: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1239,19 +1241,19 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL1_2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL1: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1265,19 +1267,19 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL4: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL8: begin emul_vd = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1290,13 +1292,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL8: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end endcase end @@ -1315,13 +1317,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -1334,13 +1336,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL1: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -1351,13 +1353,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL1_2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -1371,13 +1373,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL4: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -1390,13 +1392,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL8: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -1415,13 +1417,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1434,13 +1436,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL1: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1451,13 +1453,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL1_2: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1471,13 +1473,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL4: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1490,13 +1492,13 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL8: begin emul_vd = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1515,7 +1517,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -1528,7 +1530,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -1539,7 +1541,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -1553,7 +1555,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -1566,7 +1568,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -1585,7 +1587,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -1598,7 +1600,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -1609,7 +1611,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -1623,7 +1625,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -1636,7 +1638,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -1655,7 +1657,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -1668,7 +1670,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -1679,7 +1681,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -1693,7 +1695,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -1706,7 +1708,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -1725,7 +1727,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1738,7 +1740,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1749,7 +1751,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1763,7 +1765,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1776,7 +1778,7 @@ emul_vd = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1808,28 +1810,28 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL4: begin emul_vd = EMUL4; emul_vs2 = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL8: begin emul_vd = EMUL8; emul_vs2 = EMUL8; emul_max_vd_vs2 = EMUL8; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1843,28 +1845,28 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL1: begin emul_vd = EMUL1; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL1; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL2; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL4: begin emul_vd = EMUL4; emul_vs2 = EMUL8; emul_max_vd_vs2 = EMUL8; emul_vd_nf = EMUL4; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1876,28 +1878,28 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL1_2: begin emul_vd = EMUL1; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL1; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL1: begin emul_vd = EMUL1; emul_vs2 = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL1; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL8; emul_max_vd_vs2 = EMUL8; emul_vd_nf = EMUL2; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1911,28 +1913,28 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL4: begin emul_vd = EMUL4; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL8: begin emul_vd = EMUL8; emul_vs2 = EMUL4; emul_max_vd_vs2 = EMUL8; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1944,28 +1946,28 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL1; - emul_max = EMUL1; + emul_max = (`UOP_INDEX_WIDTH+1)'('d1); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL4: begin emul_vd = EMUL4; emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL8: begin emul_vd = EMUL8; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL8; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -1985,21 +1987,21 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL4: begin emul_vd = EMUL4; emul_vs2 = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -2013,21 +2015,28 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL1: begin emul_vd = EMUL1; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL4; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); + end + LMUL4: begin + emul_vd = EMUL4; + emul_vs2 = EMUL8; + emul_max_vd_vs2 = EMUL8; + emul_vd_nf = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d16); end endcase end @@ -2039,21 +2048,28 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL1_2: begin emul_vd = EMUL1; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL2; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL1: begin emul_vd = EMUL1; emul_vs2 = EMUL4; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL2; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); + end + LMUL2: begin + emul_vd = EMUL2; + emul_vs2 = EMUL8; + emul_max_vd_vs2 = EMUL8; + emul_vd_nf = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d16); end endcase end @@ -2067,21 +2083,21 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL4: begin emul_vd = EMUL4; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -2093,21 +2109,21 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL2; - emul_max = EMUL2; + emul_max = (`UOP_INDEX_WIDTH+1)'('d2); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL4: begin emul_vd = EMUL4; emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL4; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -2127,14 +2143,14 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -2148,14 +2164,21 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL1: begin emul_vd = EMUL1; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL3; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); + end + LMUL2: begin + emul_vd = EMUL2; + emul_vs2 = EMUL4; + emul_max_vd_vs2 = EMUL4; + emul_vd_nf = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d12); end endcase end @@ -2167,14 +2190,28 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL1_2: begin emul_vd = EMUL1; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL3; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); + end + LMUL1: begin + emul_vd = EMUL1; + emul_vs2 = EMUL4; + emul_max_vd_vs2 = EMUL4; + emul_vd_nf = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d12); + end + LMUL2: begin + emul_vd = EMUL2; + emul_vs2 = EMUL8; + emul_max_vd_vs2 = EMUL8; + emul_vd_nf = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d24); end endcase end @@ -2188,14 +2225,14 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -2207,14 +2244,14 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL3; - emul_max = EMUL3; + emul_max = (`UOP_INDEX_WIDTH+1)'('d3); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -2234,14 +2271,14 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -2255,14 +2292,21 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL1: begin emul_vd = EMUL1; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); + end + LMUL2: begin + emul_vd = EMUL2; + emul_vs2 = EMUL4; + emul_max_vd_vs2 = EMUL4; + emul_vd_nf = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d16); end endcase end @@ -2274,14 +2318,28 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL1_2: begin emul_vd = EMUL1; emul_vs2 = EMUL2; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL4; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); + end + LMUL1: begin + emul_vd = EMUL1; + emul_vs2 = EMUL4; + emul_max_vd_vs2 = EMUL4; + emul_vd_nf = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d16); + end + LMUL2: begin + emul_vd = EMUL2; + emul_vs2 = EMUL8; + emul_max_vd_vs2 = EMUL8; + emul_vd_nf = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d32); end endcase end @@ -2295,14 +2353,14 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -2314,14 +2372,14 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL4; - emul_max = EMUL4; + emul_max = (`UOP_INDEX_WIDTH+1)'('d4); end LMUL2: begin emul_vd = EMUL2; emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL2; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -2341,7 +2399,7 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -2355,7 +2413,14 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); + end + LMUL1: begin + emul_vd = EMUL1; + emul_vs2 = EMUL2; + emul_max_vd_vs2 = EMUL2; + emul_vd_nf = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d10); end endcase end @@ -2367,7 +2432,21 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); + end + LMUL1_2: begin + emul_vd = EMUL1; + emul_vs2 = EMUL2; + emul_max_vd_vs2 = EMUL2; + emul_vd_nf = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d10); + end + LMUL1: begin + emul_vd = EMUL1; + emul_vs2 = EMUL4; + emul_max_vd_vs2 = EMUL4; + emul_vd_nf = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d20); end endcase end @@ -2381,7 +2460,7 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -2393,7 +2472,7 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL5; - emul_max = EMUL5; + emul_max = (`UOP_INDEX_WIDTH+1)'('d5); end endcase end @@ -2413,7 +2492,7 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -2427,7 +2506,14 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); + end + LMUL1: begin + emul_vd = EMUL1; + emul_vs2 = EMUL2; + emul_max_vd_vs2 = EMUL2; + emul_vd_nf = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d12); end endcase end @@ -2439,7 +2525,21 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); + end + LMUL1_2: begin + emul_vd = EMUL1; + emul_vs2 = EMUL2; + emul_max_vd_vs2 = EMUL2; + emul_vd_nf = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d12); + end + LMUL1: begin + emul_vd = EMUL1; + emul_vs2 = EMUL4; + emul_max_vd_vs2 = EMUL4; + emul_vd_nf = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d24); end endcase end @@ -2453,7 +2553,7 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -2465,7 +2565,7 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL6; - emul_max = EMUL6; + emul_max = (`UOP_INDEX_WIDTH+1)'('d6); end endcase end @@ -2485,7 +2585,7 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -2499,7 +2599,14 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); + end + LMUL1: begin + emul_vd = EMUL1; + emul_vs2 = EMUL2; + emul_max_vd_vs2 = EMUL2; + emul_vd_nf = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d14); end endcase end @@ -2511,7 +2618,21 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); + end + LMUL1_2: begin + emul_vd = EMUL1; + emul_vs2 = EMUL2; + emul_max_vd_vs2 = EMUL2; + emul_vd_nf = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d14); + end + LMUL1: begin + emul_vd = EMUL1; + emul_vs2 = EMUL4; + emul_max_vd_vs2 = EMUL4; + emul_vd_nf = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d28); end endcase end @@ -2525,7 +2646,7 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -2537,7 +2658,7 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL7; - emul_max = EMUL7; + emul_max = (`UOP_INDEX_WIDTH+1)'('d7); end endcase end @@ -2557,7 +2678,7 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -2571,7 +2692,14 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); + end + LMUL1: begin + emul_vd = EMUL1; + emul_vs2 = EMUL2; + emul_max_vd_vs2 = EMUL2; + emul_vd_nf = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d16); end endcase end @@ -2583,7 +2711,21 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); + end + LMUL1_2: begin + emul_vd = EMUL1; + emul_vs2 = EMUL2; + emul_max_vd_vs2 = EMUL2; + emul_vd_nf = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d16); + end + LMUL1: begin + emul_vd = EMUL1; + emul_vs2 = EMUL4; + emul_max_vd_vs2 = EMUL4; + emul_vd_nf = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d32); end endcase end @@ -2597,7 +2739,7 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -2609,7 +2751,7 @@ emul_vs2 = EMUL1; emul_max_vd_vs2 = EMUL1; emul_vd_nf = EMUL8; - emul_max = EMUL8; + emul_max = (`UOP_INDEX_WIDTH+1)'('d8); end endcase end @@ -2959,7 +3101,7 @@ assign check_sew = (eew_max != EEW_NONE); // check the validation of EMUL - assign check_lmul = (emul_max != EMUL_NONE); + assign check_lmul = (emul_max != (`UOP_INDEX_WIDTH+1)'('0)); // get evl always_comb begin @@ -2971,7 +3113,7 @@ US_WHOLE_REGISTER: begin // evl = NFIELD*VLEN/EEW case(emul_max) - EMUL1: begin + (`UOP_INDEX_WIDTH+1)'('d1): begin case(eew_max) EEW8: begin evl = 1*`VLEN/8; @@ -2984,7 +3126,7 @@ end endcase end - EMUL2: begin + (`UOP_INDEX_WIDTH+1)'('d2): begin case(eew_max) EEW8: begin evl = 2*`VLEN/8; @@ -2997,7 +3139,7 @@ end endcase end - EMUL4: begin + (`UOP_INDEX_WIDTH+1)'('d4): begin case(eew_max) EEW8: begin evl = 4*`VLEN/8; @@ -3010,7 +3152,7 @@ end endcase end - EMUL8: begin + (`UOP_INDEX_WIDTH+1)'('d8): begin case(eew_max) EEW8: begin evl = 8*`VLEN/8; @@ -3065,31 +3207,7 @@ // // get the max uop index always_comb begin - uop_index_max = 'b0; - - case(emul_max) - EMUL2: begin - uop_index_max = (`UOP_INDEX_WIDTH)'('d1); - end - EMUL3: begin - uop_index_max = (`UOP_INDEX_WIDTH)'('d2); - end - EMUL4: begin - uop_index_max = (`UOP_INDEX_WIDTH)'('d3); - end - EMUL5: begin - uop_index_max = (`UOP_INDEX_WIDTH)'('d4); - end - EMUL6: begin - uop_index_max = (`UOP_INDEX_WIDTH)'('d5); - end - EMUL7: begin - uop_index_max = (`UOP_INDEX_WIDTH)'('d6); - end - EMUL8: begin - uop_index_max = (`UOP_INDEX_WIDTH)'('d7); - end - endcase + uop_index_max = (`UOP_INDEX_WIDTH)'(emul_max - 1); end // generate uop valid @@ -3411,23 +3529,60 @@ case({emul_vs2,emul_vd}) {EMUL1,EMUL1}: vd_offset[i] = uop_index_current[i][`UOP_INDEX_WIDTH-1:0]; - {EMUL2,EMUL1}, - {EMUL8,EMUL4}: + {EMUL2,EMUL1}: vd_offset[i] = {1'b0, uop_index_current[i][`UOP_INDEX_WIDTH-1:1]}; {EMUL4,EMUL2}: begin - if (inst_nf==NF2) begin - case(uop_index_current[i][`UOP_INDEX_WIDTH-1:1]) - 2'd1 : vd_offset[i] = 3'd2; - 2'd2 : vd_offset[i] = 3'd1; - default: vd_offset[i] = {1'b0, uop_index_current[i][`UOP_INDEX_WIDTH-1:1]}; - endcase - end + case (inst_nf) + NF2: begin + // TODO(davidgao): improve readability. + vd_offset[i] = {uop_index_current[i][1], uop_index_current[i][2]}; + end + NF3: begin + case(uop_index_current[i][3:1]) + 3'd1 : vd_offset[i] = 3'd2; + 3'd2 : vd_offset[i] = 3'd4; + 3'd3 : vd_offset[i] = 3'd1; + 3'd4 : vd_offset[i] = 3'd3; + default: vd_offset[i] = uop_index_current[i][3:1]; + endcase + end + NF4: begin + // TODO(davidgao): improve readability. + vd_offset[i] = {uop_index_current[i][2:1], uop_index_current[i][3]}; + end + default: vd_offset[i] = uop_index_current[i][`UOP_INDEX_WIDTH-1:1]; + endcase + end + {EMUL8,EMUL4}: begin + if (inst_nf==NF2) + vd_offset[i] = {uop_index_current[i][1], uop_index_current[i][3:2]}; else vd_offset[i] = {1'b0, uop_index_current[i][`UOP_INDEX_WIDTH-1:1]}; end - {EMUL4,EMUL1}, - {EMUL8,EMUL2}: + {EMUL4,EMUL1}: vd_offset[i] = {2'b0, uop_index_current[i][`UOP_INDEX_WIDTH-1:2]}; + {EMUL8,EMUL2}: begin + case (inst_nf) + NF2: begin + // TODO(davidgao): improve readability. + vd_offset[i] = {uop_index_current[i][2], uop_index_current[i][3]}; + end + NF3: begin + case(uop_index_current[i][4:2]) + 3'd1 : vd_offset[i] = 3'd2; + 3'd2 : vd_offset[i] = 3'd4; + 3'd3 : vd_offset[i] = 3'd1; + 3'd4 : vd_offset[i] = 3'd3; + default: vd_offset[i] = uop_index_current[i][4:2]; + endcase + end + NF4: begin + // TODO(davidgao): improve readability. + vd_offset[i] = {uop_index_current[i][3:2], uop_index_current[i][4]}; + end + default: vd_offset[i] = uop_index_current[i][`UOP_INDEX_WIDTH-1:2]; + endcase + end endcase end endcase @@ -3520,20 +3675,23 @@ {EEW32,EEW16}: begin case(emul_vs2) EMUL2: begin + vs2_offset[i] = uop_index_current[i][0]; + vs2_valid[i] = 1'b1; + end + EMUL4: begin case(inst_nf) - NF2: vs2_offset[i] = {1'b0, uop_index_current[i][2], uop_index_current[i][0]}; - NF3, - NF4: vs2_offset[i] = {2'b0, uop_index_current[i][0]}; + NF2: vs2_offset[i] = {uop_index_current[i][2], uop_index_current[i][0]}; + NF3: vs2_offset[i] = {uop_index_current[i][3:1] >= 3'd3, uop_index_current[i][0]}; + NF4: vs2_offset[i] = {uop_index_current[i][3], uop_index_current[i][0]}; default: vs2_offset[i] = uop_index_current[i]; //NF1 endcase vs2_valid[i] = 1'b1; end - EMUL4: begin - vs2_offset[i] = (inst_nf==NF2) ? {1'b0, uop_index_current[i][2], uop_index_current[i][0]} : uop_index_current[i]; - vs2_valid[i] = 1'b1; - end EMUL8: begin - vs2_offset[i] = uop_index_current[i]; + case(inst_nf) + NF2: vs2_offset[i] = {uop_index_current[i][3:2], uop_index_current[i][0]}; + default: vs2_offset[i] = uop_index_current[i]; //NF1 + endcase vs2_valid[i] = 1'b1; end default: begin //EMUL1 @@ -3546,20 +3704,20 @@ {EEW32,EEW8}: begin case(emul_vs2) EMUL2: begin - case(inst_nf) - NF2: vs2_offset[i] = {1'b0, uop_index_current[i][2], uop_index_current[i][0]}; - NF3, - NF4: vs2_offset[i] = {2'b0, uop_index_current[i][0]}; - default: vs2_offset[i] = uop_index_current[i]; //NF1 - endcase + vs2_offset[i] = uop_index_current[i][0]; vs2_valid[i] = 1'b1; end EMUL4: begin - vs2_offset[i] = (inst_nf==NF2) ? {1'b0, uop_index_current[i][1:0]} : uop_index_current[i]; + vs2_offset[i] = uop_index_current[i][1:0]; vs2_valid[i] = 1'b1; end EMUL8: begin - vs2_offset[i] = uop_index_current[i]; + case(inst_nf) + NF2: vs2_offset[i] = {uop_index_current[i][3], uop_index_current[i][1:0]}; + NF3: vs2_offset[i] = {uop_index_current[i][4:2] >= 3'd3, uop_index_current[i][1:0]}; + NF4: vs2_offset[i] = {uop_index_current[i][4], uop_index_current[i][1:0]}; + default: vs2_offset[i] = uop_index_current[i]; //NF1 + endcase vs2_valid[i] = 1'b1; end default: begin //EMUL1 @@ -3666,15 +3824,14 @@ {EEW16,EEW8}, {EEW32,EEW16}: begin case(emul_vs2) - EMUL2: seg_field_index[i] = {2'b0, uop_index_current[i][0]}; - EMUL4: seg_field_index[i] = {1'b0, uop_index_current[i][2], uop_index_current[i][0]}; + EMUL2, EMUL4, EMUL8: seg_field_index[i] = {2'b0, uop_index_current[i][0]}; endcase end // 4:1 {EEW32,EEW8}: begin case(emul_vs2) EMUL2: seg_field_index[i] = {2'b0, uop_index_current[i][0]}; - EMUL4: seg_field_index[i] = {1'b0, uop_index_current[i][1:0]}; + EMUL4, EMUL8: seg_field_index[i] = {1'b0, uop_index_current[i][1:0]}; endcase end endcase
diff --git a/hdl/verilog/rvv/inc/rvv_backend_define.svh b/hdl/verilog/rvv/inc/rvv_backend_define.svh index 1adb0c7..74518de 100755 --- a/hdl/verilog/rvv/inc/rvv_backend_define.svh +++ b/hdl/verilog/rvv/inc/rvv_backend_define.svh
@@ -98,9 +98,10 @@ `define HWORD_WIDTH 16 `define WORD_WIDTH 32 -// an instruction will be split to EMUL_max=8 uops at most +// an instruction will be split to 4xEMUL_max=32 uops at most `define EMUL_MAX 8 -`define UOP_INDEX_WIDTH $clog2(`EMUL_MAX) +`define UOP_INDEX_WIDTH 5 +`define UOP_INDEX_WIDTH_ARI $clog2(`EMUL_MAX) // Vector CSR `define VLEN 128
diff --git a/tests/cocotb/rvv_load_store_test.py b/tests/cocotb/rvv_load_store_test.py index 00c499a..ea9b0b4 100644 --- a/tests/cocotb/rvv_load_store_test.py +++ b/tests/cocotb/rvv_load_store_test.py
@@ -898,8 +898,8 @@ make_test_case('vluxseg2ei16_v_u8m1x2', vl=15, n_segs=2), make_test_case('vluxseg2ei16_v_u8m2x2', vl=32, n_segs=2), make_test_case('vluxseg2ei16_v_u8m2x2', vl=31, n_segs=2), - # make_test_case('vluxseg2ei16_v_u8m4x2', vl=64, n_segs=2), - # make_test_case('vluxseg2ei16_v_u8m4x2', vl=63, n_segs=2), + make_test_case('vluxseg2ei16_v_u8m4x2', vl=64, n_segs=2), + make_test_case('vluxseg2ei16_v_u8m4x2', vl=63, n_segs=2), # Unordered, segment 3 make_test_case('vluxseg3ei16_v_u8mf4x3', vl=4, n_segs=3), make_test_case('vluxseg3ei16_v_u8mf4x3', vl=3, n_segs=3), @@ -907,8 +907,8 @@ make_test_case('vluxseg3ei16_v_u8mf2x3', vl=7, n_segs=3), make_test_case('vluxseg3ei16_v_u8m1x3', vl=16, n_segs=3), make_test_case('vluxseg3ei16_v_u8m1x3', vl=15, n_segs=3), - # make_test_case('vluxseg3ei16_v_u8m2x3', vl=32, n_segs=3), - # make_test_case('vluxseg3ei16_v_u8m2x3', vl=31, n_segs=3), + make_test_case('vluxseg3ei16_v_u8m2x3', vl=32, n_segs=3), + make_test_case('vluxseg3ei16_v_u8m2x3', vl=31, n_segs=3), # Unordered, segment 4 make_test_case('vluxseg4ei16_v_u8mf4x4', vl=4, n_segs=4), make_test_case('vluxseg4ei16_v_u8mf4x4', vl=3, n_segs=4), @@ -916,36 +916,36 @@ make_test_case('vluxseg4ei16_v_u8mf2x4', vl=7, n_segs=4), make_test_case('vluxseg4ei16_v_u8m1x4', vl=16, n_segs=4), make_test_case('vluxseg4ei16_v_u8m1x4', vl=15, n_segs=4), - # make_test_case('vluxseg4ei16_v_u8m2x4', vl=32, n_segs=4), - # make_test_case('vluxseg4ei16_v_u8m2x4', vl=31, n_segs=4), + make_test_case('vluxseg4ei16_v_u8m2x4', vl=32, n_segs=4), + make_test_case('vluxseg4ei16_v_u8m2x4', vl=31, n_segs=4), # Unordered, segment 5 make_test_case('vluxseg5ei16_v_u8mf4x5', vl=4, n_segs=5), make_test_case('vluxseg5ei16_v_u8mf4x5', vl=3, n_segs=5), make_test_case('vluxseg5ei16_v_u8mf2x5', vl=8, n_segs=5), make_test_case('vluxseg5ei16_v_u8mf2x5', vl=7, n_segs=5), - # make_test_case('vluxseg5ei16_v_u8m1x5', vl=16, n_segs=5), - # make_test_case('vluxseg5ei16_v_u8m1x5', vl=15, n_segs=5), + make_test_case('vluxseg5ei16_v_u8m1x5', vl=16, n_segs=5), + make_test_case('vluxseg5ei16_v_u8m1x5', vl=15, n_segs=5), # Unordered, segment 6 make_test_case('vluxseg6ei16_v_u8mf4x6', vl=4, n_segs=6), make_test_case('vluxseg6ei16_v_u8mf4x6', vl=3, n_segs=6), make_test_case('vluxseg6ei16_v_u8mf2x6', vl=8, n_segs=6), make_test_case('vluxseg6ei16_v_u8mf2x6', vl=7, n_segs=6), - # make_test_case('vluxseg6ei16_v_u8m1x6', vl=16, n_segs=6), - # make_test_case('vluxseg6ei16_v_u8m1x6', vl=15, n_segs=6), + make_test_case('vluxseg6ei16_v_u8m1x6', vl=16, n_segs=6), + make_test_case('vluxseg6ei16_v_u8m1x6', vl=15, n_segs=6), # Unordered, segment 7 make_test_case('vluxseg7ei16_v_u8mf4x7', vl=4, n_segs=7), make_test_case('vluxseg7ei16_v_u8mf4x7', vl=3, n_segs=7), make_test_case('vluxseg7ei16_v_u8mf2x7', vl=8, n_segs=7), make_test_case('vluxseg7ei16_v_u8mf2x7', vl=7, n_segs=7), - # make_test_case('vluxseg7ei16_v_u8m1x7', vl=16, n_segs=7), - # make_test_case('vluxseg7ei16_v_u8m1x7', vl=15, n_segs=7), + make_test_case('vluxseg7ei16_v_u8m1x7', vl=16, n_segs=7), + make_test_case('vluxseg7ei16_v_u8m1x7', vl=15, n_segs=7), # Unordered, segment 8 make_test_case('vluxseg8ei16_v_u8mf4x8', vl=4, n_segs=8), make_test_case('vluxseg8ei16_v_u8mf4x8', vl=3, n_segs=8), make_test_case('vluxseg8ei16_v_u8mf2x8', vl=8, n_segs=8), make_test_case('vluxseg8ei16_v_u8mf2x8', vl=7, n_segs=8), - # make_test_case('vluxseg8ei16_v_u8m1x8', vl=16, n_segs=8), - # make_test_case('vluxseg8ei16_v_u8m1x8', vl=15, n_segs=8), + make_test_case('vluxseg8ei16_v_u8m1x8', vl=16, n_segs=8), + make_test_case('vluxseg8ei16_v_u8m1x8', vl=15, n_segs=8), # Ordered, segment 2 make_test_case('vloxseg2ei16_v_u8mf4x2', vl=4, n_segs=2), make_test_case('vloxseg2ei16_v_u8mf4x2', vl=3, n_segs=2), @@ -955,8 +955,8 @@ make_test_case('vloxseg2ei16_v_u8m1x2', vl=15, n_segs=2), make_test_case('vloxseg2ei16_v_u8m2x2', vl=32, n_segs=2), make_test_case('vloxseg2ei16_v_u8m2x2', vl=31, n_segs=2), - # make_test_case('vloxseg2ei16_v_u8m4x2', vl=64, n_segs=2), - # make_test_case('vloxseg2ei16_v_u8m4x2', vl=63, n_segs=2), + make_test_case('vloxseg2ei16_v_u8m4x2', vl=64, n_segs=2), + make_test_case('vloxseg2ei16_v_u8m4x2', vl=63, n_segs=2), # Ordered, segment 3 make_test_case('vloxseg3ei16_v_u8mf4x3', vl=4, n_segs=3), make_test_case('vloxseg3ei16_v_u8mf4x3', vl=3, n_segs=3), @@ -964,8 +964,8 @@ make_test_case('vloxseg3ei16_v_u8mf2x3', vl=7, n_segs=3), make_test_case('vloxseg3ei16_v_u8m1x3', vl=16, n_segs=3), make_test_case('vloxseg3ei16_v_u8m1x3', vl=15, n_segs=3), - # make_test_case('vloxseg3ei16_v_u8m2x3', vl=32, n_segs=3), - # make_test_case('vloxseg3ei16_v_u8m2x3', vl=31, n_segs=3), + make_test_case('vloxseg3ei16_v_u8m2x3', vl=32, n_segs=3), + make_test_case('vloxseg3ei16_v_u8m2x3', vl=31, n_segs=3), # Ordered, segment 4 make_test_case('vloxseg4ei16_v_u8mf4x4', vl=4, n_segs=4), make_test_case('vloxseg4ei16_v_u8mf4x4', vl=3, n_segs=4), @@ -973,36 +973,36 @@ make_test_case('vloxseg4ei16_v_u8mf2x4', vl=7, n_segs=4), make_test_case('vloxseg4ei16_v_u8m1x4', vl=16, n_segs=4), make_test_case('vloxseg4ei16_v_u8m1x4', vl=15, n_segs=4), - # make_test_case('vloxseg4ei16_v_u8m2x4', vl=32, n_segs=4), - # make_test_case('vloxseg4ei16_v_u8m2x4', vl=31, n_segs=4), + make_test_case('vloxseg4ei16_v_u8m2x4', vl=32, n_segs=4), + make_test_case('vloxseg4ei16_v_u8m2x4', vl=31, n_segs=4), # Ordered, segment 5 make_test_case('vloxseg5ei16_v_u8mf4x5', vl=4, n_segs=5), make_test_case('vloxseg5ei16_v_u8mf4x5', vl=3, n_segs=5), make_test_case('vloxseg5ei16_v_u8mf2x5', vl=8, n_segs=5), make_test_case('vloxseg5ei16_v_u8mf2x5', vl=7, n_segs=5), - # make_test_case('vloxseg5ei16_v_u8m1x5', vl=16, n_segs=5), - # make_test_case('vloxseg5ei16_v_u8m1x5', vl=15, n_segs=5), + make_test_case('vloxseg5ei16_v_u8m1x5', vl=16, n_segs=5), + make_test_case('vloxseg5ei16_v_u8m1x5', vl=15, n_segs=5), # Ordered, segment 6 make_test_case('vloxseg6ei16_v_u8mf4x6', vl=4, n_segs=6), make_test_case('vloxseg6ei16_v_u8mf4x6', vl=3, n_segs=6), make_test_case('vloxseg6ei16_v_u8mf2x6', vl=8, n_segs=6), make_test_case('vloxseg6ei16_v_u8mf2x6', vl=7, n_segs=6), - # make_test_case('vloxseg6ei16_v_u8m1x6', vl=16, n_segs=6), - # make_test_case('vloxseg6ei16_v_u8m1x6', vl=15, n_segs=6), + make_test_case('vloxseg6ei16_v_u8m1x6', vl=16, n_segs=6), + make_test_case('vloxseg6ei16_v_u8m1x6', vl=15, n_segs=6), # Ordered, segment 7 make_test_case('vloxseg7ei16_v_u8mf4x7', vl=4, n_segs=7), make_test_case('vloxseg7ei16_v_u8mf4x7', vl=3, n_segs=7), make_test_case('vloxseg7ei16_v_u8mf2x7', vl=8, n_segs=7), make_test_case('vloxseg7ei16_v_u8mf2x7', vl=7, n_segs=7), - # make_test_case('vloxseg7ei16_v_u8m1x7', vl=16, n_segs=7), - # make_test_case('vloxseg7ei16_v_u8m1x7', vl=15, n_segs=7), + make_test_case('vloxseg7ei16_v_u8m1x7', vl=16, n_segs=7), + make_test_case('vloxseg7ei16_v_u8m1x7', vl=15, n_segs=7), # Ordered, segment 8 make_test_case('vloxseg8ei16_v_u8mf4x8', vl=4, n_segs=8), make_test_case('vloxseg8ei16_v_u8mf4x8', vl=3, n_segs=8), make_test_case('vloxseg8ei16_v_u8mf2x8', vl=8, n_segs=8), make_test_case('vloxseg8ei16_v_u8mf2x8', vl=7, n_segs=8), - # make_test_case('vloxseg8ei16_v_u8m1x8', vl=16, n_segs=8), - # make_test_case('vloxseg8ei16_v_u8m1x8', vl=15, n_segs=8), + make_test_case('vloxseg8ei16_v_u8m1x8', vl=16, n_segs=8), + make_test_case('vloxseg8ei16_v_u8m1x8', vl=15, n_segs=8), ], dtype = np.uint8, index_dtype = np.uint16, @@ -1152,56 +1152,54 @@ make_test_case('vluxseg2ei32_v_u8mf2x2', vl=7, n_segs=2), make_test_case('vluxseg2ei32_v_u8m1x2', vl=16, n_segs=2), make_test_case('vluxseg2ei32_v_u8m1x2', vl=15, n_segs=2), - # make_test_case('vluxseg2ei32_v_u8m2x2', vl=32, n_segs=2), - # make_test_case('vluxseg2ei32_v_u8m2x2', vl=31, n_segs=2), - # make_test_case('vluxseg2ei32_v_u8m4x2', vl=64, n_segs=2), - # make_test_case('vluxseg2ei32_v_u8m4x2', vl=63, n_segs=2), + make_test_case('vluxseg2ei32_v_u8m2x2', vl=32, n_segs=2), + make_test_case('vluxseg2ei32_v_u8m2x2', vl=31, n_segs=2), # Unordered, segment 3 make_test_case('vluxseg3ei32_v_u8mf4x3', vl=4, n_segs=3), make_test_case('vluxseg3ei32_v_u8mf4x3', vl=3, n_segs=3), make_test_case('vluxseg3ei32_v_u8mf2x3', vl=8, n_segs=3), make_test_case('vluxseg3ei32_v_u8mf2x3', vl=7, n_segs=3), - # make_test_case('vluxseg3ei32_v_u8m1x3', vl=16, n_segs=3), - # make_test_case('vluxseg3ei32_v_u8m1x3', vl=15, n_segs=3), - # make_test_case('vluxseg3ei32_v_u8m2x3', vl=32, n_segs=3), - # make_test_case('vluxseg3ei32_v_u8m2x3', vl=31, n_segs=3), + make_test_case('vluxseg3ei32_v_u8m1x3', vl=16, n_segs=3), + make_test_case('vluxseg3ei32_v_u8m1x3', vl=15, n_segs=3), + make_test_case('vluxseg3ei32_v_u8m2x3', vl=32, n_segs=3), + make_test_case('vluxseg3ei32_v_u8m2x3', vl=31, n_segs=3), # Unordered, segment 4 make_test_case('vluxseg4ei32_v_u8mf4x4', vl=4, n_segs=4), make_test_case('vluxseg4ei32_v_u8mf4x4', vl=3, n_segs=4), make_test_case('vluxseg4ei32_v_u8mf2x4', vl=8, n_segs=4), make_test_case('vluxseg4ei32_v_u8mf2x4', vl=7, n_segs=4), - # make_test_case('vluxseg4ei32_v_u8m1x4', vl=16, n_segs=4), - # make_test_case('vluxseg4ei32_v_u8m1x4', vl=15, n_segs=4), - # make_test_case('vluxseg4ei32_v_u8m2x4', vl=32, n_segs=4), - # make_test_case('vluxseg4ei32_v_u8m2x4', vl=31, n_segs=4), + make_test_case('vluxseg4ei32_v_u8m1x4', vl=16, n_segs=4), + make_test_case('vluxseg4ei32_v_u8m1x4', vl=15, n_segs=4), + make_test_case('vluxseg4ei32_v_u8m2x4', vl=32, n_segs=4), + make_test_case('vluxseg4ei32_v_u8m2x4', vl=31, n_segs=4), # Unordered, segment 5 make_test_case('vluxseg5ei32_v_u8mf4x5', vl=4, n_segs=5), make_test_case('vluxseg5ei32_v_u8mf4x5', vl=3, n_segs=5), - # make_test_case('vluxseg5ei32_v_u8mf2x5', vl=8, n_segs=5), - # make_test_case('vluxseg5ei32_v_u8mf2x5', vl=7, n_segs=5), - # make_test_case('vluxseg5ei32_v_u8m1x5', vl=16, n_segs=5), - # make_test_case('vluxseg5ei32_v_u8m1x5', vl=15, n_segs=5), + make_test_case('vluxseg5ei32_v_u8mf2x5', vl=8, n_segs=5), + make_test_case('vluxseg5ei32_v_u8mf2x5', vl=7, n_segs=5), + make_test_case('vluxseg5ei32_v_u8m1x5', vl=16, n_segs=5), + make_test_case('vluxseg5ei32_v_u8m1x5', vl=15, n_segs=5), # Unordered, segment 6 make_test_case('vluxseg6ei32_v_u8mf4x6', vl=4, n_segs=6), make_test_case('vluxseg6ei32_v_u8mf4x6', vl=3, n_segs=6), - # make_test_case('vluxseg6ei32_v_u8mf2x6', vl=8, n_segs=6), - # make_test_case('vluxseg6ei32_v_u8mf2x6', vl=7, n_segs=6), - # make_test_case('vluxseg6ei32_v_u8m1x6', vl=16, n_segs=6), - # make_test_case('vluxseg6ei32_v_u8m1x6', vl=15, n_segs=6), + make_test_case('vluxseg6ei32_v_u8mf2x6', vl=8, n_segs=6), + make_test_case('vluxseg6ei32_v_u8mf2x6', vl=7, n_segs=6), + make_test_case('vluxseg6ei32_v_u8m1x6', vl=16, n_segs=6), + make_test_case('vluxseg6ei32_v_u8m1x6', vl=15, n_segs=6), # Unordered, segment 7 make_test_case('vluxseg7ei32_v_u8mf4x7', vl=4, n_segs=7), make_test_case('vluxseg7ei32_v_u8mf4x7', vl=3, n_segs=7), - # make_test_case('vluxseg7ei32_v_u8mf2x7', vl=8, n_segs=7), - # make_test_case('vluxseg7ei32_v_u8mf2x7', vl=7, n_segs=7), - # make_test_case('vluxseg7ei32_v_u8m1x7', vl=16, n_segs=7), - # make_test_case('vluxseg7ei32_v_u8m1x7', vl=15, n_segs=7), + make_test_case('vluxseg7ei32_v_u8mf2x7', vl=8, n_segs=7), + make_test_case('vluxseg7ei32_v_u8mf2x7', vl=7, n_segs=7), + make_test_case('vluxseg7ei32_v_u8m1x7', vl=16, n_segs=7), + make_test_case('vluxseg7ei32_v_u8m1x7', vl=15, n_segs=7), # Unordered, segment 8 make_test_case('vluxseg8ei32_v_u8mf4x8', vl=4, n_segs=8), make_test_case('vluxseg8ei32_v_u8mf4x8', vl=3, n_segs=8), - # make_test_case('vluxseg8ei32_v_u8mf2x8', vl=8, n_segs=8), - # make_test_case('vluxseg8ei32_v_u8mf2x8', vl=7, n_segs=8), - # make_test_case('vluxseg8ei32_v_u8m1x8', vl=16, n_segs=8), - # make_test_case('vluxseg8ei32_v_u8m1x8', vl=15, n_segs=8), + make_test_case('vluxseg8ei32_v_u8mf2x8', vl=8, n_segs=8), + make_test_case('vluxseg8ei32_v_u8mf2x8', vl=7, n_segs=8), + make_test_case('vluxseg8ei32_v_u8m1x8', vl=16, n_segs=8), + make_test_case('vluxseg8ei32_v_u8m1x8', vl=15, n_segs=8), # Ordered, segment 2 make_test_case('vloxseg2ei32_v_u8mf4x2', vl=4, n_segs=2), make_test_case('vloxseg2ei32_v_u8mf4x2', vl=3, n_segs=2), @@ -1209,56 +1207,54 @@ make_test_case('vloxseg2ei32_v_u8mf2x2', vl=7, n_segs=2), make_test_case('vloxseg2ei32_v_u8m1x2', vl=16, n_segs=2), make_test_case('vloxseg2ei32_v_u8m1x2', vl=15, n_segs=2), - # make_test_case('vloxseg2ei32_v_u8m2x2', vl=32, n_segs=2), - # make_test_case('vloxseg2ei32_v_u8m2x2', vl=31, n_segs=2), - # make_test_case('vloxseg2ei32_v_u8m4x2', vl=64, n_segs=2), - # make_test_case('vloxseg2ei32_v_u8m4x2', vl=63, n_segs=2), + make_test_case('vloxseg2ei32_v_u8m2x2', vl=32, n_segs=2), + make_test_case('vloxseg2ei32_v_u8m2x2', vl=31, n_segs=2), # Ordered, segment 3 make_test_case('vloxseg3ei32_v_u8mf4x3', vl=4, n_segs=3), make_test_case('vloxseg3ei32_v_u8mf4x3', vl=3, n_segs=3), make_test_case('vloxseg3ei32_v_u8mf2x3', vl=8, n_segs=3), make_test_case('vloxseg3ei32_v_u8mf2x3', vl=7, n_segs=3), - # make_test_case('vloxseg3ei32_v_u8m1x3', vl=16, n_segs=3), - # make_test_case('vloxseg3ei32_v_u8m1x3', vl=15, n_segs=3), - # make_test_case('vloxseg3ei32_v_u8m2x3', vl=32, n_segs=3), - # make_test_case('vloxseg3ei32_v_u8m2x3', vl=31, n_segs=3), + make_test_case('vloxseg3ei32_v_u8m1x3', vl=16, n_segs=3), + make_test_case('vloxseg3ei32_v_u8m1x3', vl=15, n_segs=3), + make_test_case('vloxseg3ei32_v_u8m2x3', vl=32, n_segs=3), + make_test_case('vloxseg3ei32_v_u8m2x3', vl=31, n_segs=3), # Ordered, segment 4 make_test_case('vloxseg4ei32_v_u8mf4x4', vl=4, n_segs=4), make_test_case('vloxseg4ei32_v_u8mf4x4', vl=3, n_segs=4), make_test_case('vloxseg4ei32_v_u8mf2x4', vl=8, n_segs=4), make_test_case('vloxseg4ei32_v_u8mf2x4', vl=7, n_segs=4), - # make_test_case('vloxseg4ei32_v_u8m1x4', vl=16, n_segs=4), - # make_test_case('vloxseg4ei32_v_u8m1x4', vl=15, n_segs=4), - # make_test_case('vloxseg4ei32_v_u8m2x4', vl=32, n_segs=4), - # make_test_case('vloxseg4ei32_v_u8m2x4', vl=31, n_segs=4), + make_test_case('vloxseg4ei32_v_u8m1x4', vl=16, n_segs=4), + make_test_case('vloxseg4ei32_v_u8m1x4', vl=15, n_segs=4), + make_test_case('vloxseg4ei32_v_u8m2x4', vl=32, n_segs=4), + make_test_case('vloxseg4ei32_v_u8m2x4', vl=31, n_segs=4), # Ordered, segment 5 make_test_case('vloxseg5ei32_v_u8mf4x5', vl=4, n_segs=5), make_test_case('vloxseg5ei32_v_u8mf4x5', vl=3, n_segs=5), - # make_test_case('vloxseg5ei32_v_u8mf2x5', vl=8, n_segs=5), - # make_test_case('vloxseg5ei32_v_u8mf2x5', vl=7, n_segs=5), - # make_test_case('vloxseg5ei32_v_u8m1x5', vl=16, n_segs=5), - # make_test_case('vloxseg5ei32_v_u8m1x5', vl=15, n_segs=5), + make_test_case('vloxseg5ei32_v_u8mf2x5', vl=8, n_segs=5), + make_test_case('vloxseg5ei32_v_u8mf2x5', vl=7, n_segs=5), + make_test_case('vloxseg5ei32_v_u8m1x5', vl=16, n_segs=5), + make_test_case('vloxseg5ei32_v_u8m1x5', vl=15, n_segs=5), # Ordered, segment 6 make_test_case('vloxseg6ei32_v_u8mf4x6', vl=4, n_segs=6), make_test_case('vloxseg6ei32_v_u8mf4x6', vl=3, n_segs=6), - # make_test_case('vloxseg6ei32_v_u8mf2x6', vl=8, n_segs=6), - # make_test_case('vloxseg6ei32_v_u8mf2x6', vl=7, n_segs=6), - # make_test_case('vloxseg6ei32_v_u8m1x6', vl=16, n_segs=6), - # make_test_case('vloxseg6ei32_v_u8m1x6', vl=15, n_segs=6), + make_test_case('vloxseg6ei32_v_u8mf2x6', vl=8, n_segs=6), + make_test_case('vloxseg6ei32_v_u8mf2x6', vl=7, n_segs=6), + make_test_case('vloxseg6ei32_v_u8m1x6', vl=16, n_segs=6), + make_test_case('vloxseg6ei32_v_u8m1x6', vl=15, n_segs=6), # Ordered, segment 7 make_test_case('vloxseg7ei32_v_u8mf4x7', vl=4, n_segs=7), make_test_case('vloxseg7ei32_v_u8mf4x7', vl=3, n_segs=7), - # make_test_case('vloxseg7ei32_v_u8mf2x7', vl=8, n_segs=7), - # make_test_case('vloxseg7ei32_v_u8mf2x7', vl=7, n_segs=7), - # make_test_case('vloxseg7ei32_v_u8m1x7', vl=16, n_segs=7), - # make_test_case('vloxseg7ei32_v_u8m1x7', vl=15, n_segs=7), + make_test_case('vloxseg7ei32_v_u8mf2x7', vl=8, n_segs=7), + make_test_case('vloxseg7ei32_v_u8mf2x7', vl=7, n_segs=7), + make_test_case('vloxseg7ei32_v_u8m1x7', vl=16, n_segs=7), + make_test_case('vloxseg7ei32_v_u8m1x7', vl=15, n_segs=7), # Ordered, segment 8 make_test_case('vloxseg8ei32_v_u8mf4x8', vl=4, n_segs=8), make_test_case('vloxseg8ei32_v_u8mf4x8', vl=3, n_segs=8), - # make_test_case('vloxseg8ei32_v_u8mf2x8', vl=8, n_segs=8), - # make_test_case('vloxseg8ei32_v_u8mf2x8', vl=7, n_segs=8), - # make_test_case('vloxseg8ei32_v_u8m1x8', vl=16, n_segs=8), - # make_test_case('vloxseg8ei32_v_u8m1x8', vl=15, n_segs=8), + make_test_case('vloxseg8ei32_v_u8mf2x8', vl=8, n_segs=8), + make_test_case('vloxseg8ei32_v_u8mf2x8', vl=7, n_segs=8), + make_test_case('vloxseg8ei32_v_u8m1x8', vl=16, n_segs=8), + make_test_case('vloxseg8ei32_v_u8m1x8', vl=15, n_segs=8), ], dtype = np.uint8, index_dtype = np.uint32, @@ -1548,42 +1544,42 @@ make_test_case('vluxseg2ei32_v_u16m1x2', vl=7, n_segs=2), make_test_case('vluxseg2ei32_v_u16m2x2', vl=16, n_segs=2), make_test_case('vluxseg2ei32_v_u16m2x2', vl=15, n_segs=2), - # make_test_case('vluxseg2ei32_v_u16m4x2', vl=32, n_segs=2), - # make_test_case('vluxseg2ei32_v_u16m4x2', vl=31, n_segs=2), + make_test_case('vluxseg2ei32_v_u16m4x2', vl=32, n_segs=2), + make_test_case('vluxseg2ei32_v_u16m4x2', vl=31, n_segs=2), # Unordered, segment 3 make_test_case('vluxseg3ei32_v_u16mf2x3', vl=4, n_segs=3), make_test_case('vluxseg3ei32_v_u16mf2x3', vl=3, n_segs=3), make_test_case('vluxseg3ei32_v_u16m1x3', vl=8, n_segs=3), make_test_case('vluxseg3ei32_v_u16m1x3', vl=7, n_segs=3), - # make_test_case('vluxseg3ei32_v_u16m2x3', vl=16, n_segs=3), - # make_test_case('vluxseg3ei32_v_u16m2x3', vl=15, n_segs=3), + make_test_case('vluxseg3ei32_v_u16m2x3', vl=16, n_segs=3), + make_test_case('vluxseg3ei32_v_u16m2x3', vl=15, n_segs=3), # Unordered, segment 4 make_test_case('vluxseg4ei32_v_u16mf2x4', vl=4, n_segs=4), make_test_case('vluxseg4ei32_v_u16mf2x4', vl=3, n_segs=4), make_test_case('vluxseg4ei32_v_u16m1x4', vl=8, n_segs=4), make_test_case('vluxseg4ei32_v_u16m1x4', vl=7, n_segs=4), - # make_test_case('vluxseg4ei32_v_u16m2x4', vl=16, n_segs=4), - # make_test_case('vloxseg4ei32_v_u16m2x4', vl=15, n_segs=4), + make_test_case('vluxseg4ei32_v_u16m2x4', vl=16, n_segs=4), + make_test_case('vloxseg4ei32_v_u16m2x4', vl=15, n_segs=4), # Unordered, segment 5 make_test_case('vluxseg5ei32_v_u16mf2x5', vl=4, n_segs=5), make_test_case('vluxseg5ei32_v_u16mf2x5', vl=3, n_segs=5), - #make_test_case('vluxseg5ei32_v_u16m1x5', vl=8, n_segs=5), - #make_test_case('vluxseg5ei32_v_u16m1x5', vl=7, n_segs=5), + make_test_case('vluxseg5ei32_v_u16m1x5', vl=8, n_segs=5), + make_test_case('vluxseg5ei32_v_u16m1x5', vl=7, n_segs=5), # Unordered, segment 6 make_test_case('vluxseg6ei32_v_u16mf2x6', vl=4, n_segs=6), make_test_case('vluxseg6ei32_v_u16mf2x6', vl=3, n_segs=6), - # make_test_case('vluxseg6ei32_v_u16m1x6', vl=8, n_segs=6), - # make_test_case('vluxseg6ei32_v_u16m1x6', vl=7, n_segs=6), + make_test_case('vluxseg6ei32_v_u16m1x6', vl=8, n_segs=6), + make_test_case('vluxseg6ei32_v_u16m1x6', vl=7, n_segs=6), # Unordered, segment 7 make_test_case('vluxseg7ei32_v_u16mf2x7', vl=4, n_segs=7), make_test_case('vluxseg7ei32_v_u16mf2x7', vl=3, n_segs=7), - # make_test_case('vluxseg7ei32_v_u16m1x7', vl=8, n_segs=7), - # make_test_case('vluxseg7ei32_v_u16m1x7', vl=7, n_segs=7), + make_test_case('vluxseg7ei32_v_u16m1x7', vl=8, n_segs=7), + make_test_case('vluxseg7ei32_v_u16m1x7', vl=7, n_segs=7), # Unordered, segment 8 make_test_case('vluxseg8ei32_v_u16mf2x8', vl=4, n_segs=8), make_test_case('vluxseg8ei32_v_u16mf2x8', vl=3, n_segs=8), - # make_test_case('vluxseg8ei32_v_u16m1x8', vl=8, n_segs=8), - # make_test_case('vluxseg8ei32_v_u16m1x8', vl=7, n_segs=8), + make_test_case('vluxseg8ei32_v_u16m1x8', vl=8, n_segs=8), + make_test_case('vluxseg8ei32_v_u16m1x8', vl=7, n_segs=8), # Ordered, segment 2 make_test_case('vloxseg2ei32_v_u16mf2x2', vl=4, n_segs=2), make_test_case('vloxseg2ei32_v_u16mf2x2', vl=3, n_segs=2), @@ -1591,42 +1587,42 @@ make_test_case('vloxseg2ei32_v_u16m1x2', vl=7, n_segs=2), make_test_case('vloxseg2ei32_v_u16m2x2', vl=16, n_segs=2), make_test_case('vloxseg2ei32_v_u16m2x2', vl=15, n_segs=2), - # make_test_case('vloxseg2ei32_v_u16m4x2', vl=32, n_segs=2), - # make_test_case('vloxseg2ei32_v_u16m4x2', vl=31, n_segs=2), + make_test_case('vloxseg2ei32_v_u16m4x2', vl=32, n_segs=2), + make_test_case('vloxseg2ei32_v_u16m4x2', vl=31, n_segs=2), # Ordered, segment 3 make_test_case('vloxseg3ei32_v_u16mf2x3', vl=4, n_segs=3), make_test_case('vloxseg3ei32_v_u16mf2x3', vl=3, n_segs=3), make_test_case('vloxseg3ei32_v_u16m1x3', vl=8, n_segs=3), make_test_case('vloxseg3ei32_v_u16m1x3', vl=7, n_segs=3), - # make_test_case('vloxseg3ei32_v_u16m2x3', vl=16, n_segs=3), - # make_test_case('vloxseg3ei32_v_u16m2x3', vl=15, n_segs=3), + make_test_case('vloxseg3ei32_v_u16m2x3', vl=16, n_segs=3), + make_test_case('vloxseg3ei32_v_u16m2x3', vl=15, n_segs=3), # Ordered, segment 4 make_test_case('vloxseg4ei32_v_u16mf2x4', vl=4, n_segs=4), make_test_case('vloxseg4ei32_v_u16mf2x4', vl=3, n_segs=4), make_test_case('vloxseg4ei32_v_u16m1x4', vl=8, n_segs=4), make_test_case('vloxseg4ei32_v_u16m1x4', vl=7, n_segs=4), - # make_test_case('vloxseg4ei32_v_u16m2x4', vl=16, n_segs=4), - # make_test_case('vloxseg4ei32_v_u16m2x4', vl=15, n_segs=4), + make_test_case('vloxseg4ei32_v_u16m2x4', vl=16, n_segs=4), + make_test_case('vloxseg4ei32_v_u16m2x4', vl=15, n_segs=4), # Ordered, segment 5 make_test_case('vloxseg5ei32_v_u16mf2x5', vl=4, n_segs=5), make_test_case('vloxseg5ei32_v_u16mf2x5', vl=3, n_segs=5), - #make_test_case('vloxseg5ei32_v_u16m1x5', vl=8, n_segs=5), - #make_test_case('vloxseg5ei32_v_u16m1x5', vl=7, n_segs=5), + make_test_case('vloxseg5ei32_v_u16m1x5', vl=8, n_segs=5), + make_test_case('vloxseg5ei32_v_u16m1x5', vl=7, n_segs=5), # Ordered, segment 6 make_test_case('vloxseg6ei32_v_u16mf2x6', vl=4, n_segs=6), make_test_case('vloxseg6ei32_v_u16mf2x6', vl=3, n_segs=6), - # make_test_case('vloxseg6ei32_v_u16m1x6', vl=8, n_segs=6), - # make_test_case('vloxseg6ei32_v_u16m1x6', vl=7, n_segs=6), + make_test_case('vloxseg6ei32_v_u16m1x6', vl=8, n_segs=6), + make_test_case('vloxseg6ei32_v_u16m1x6', vl=7, n_segs=6), # Ordered, segment 7 make_test_case('vloxseg7ei32_v_u16mf2x7', vl=4, n_segs=7), make_test_case('vloxseg7ei32_v_u16mf2x7', vl=3, n_segs=7), - # make_test_case('vloxseg7ei32_v_u16m1x7', vl=8, n_segs=7), - # make_test_case('vloxseg7ei32_v_u16m1x7', vl=7, n_segs=7), + make_test_case('vloxseg7ei32_v_u16m1x7', vl=8, n_segs=7), + make_test_case('vloxseg7ei32_v_u16m1x7', vl=7, n_segs=7), # Ordered, segment 8 make_test_case('vloxseg8ei32_v_u16mf2x8', vl=4, n_segs=8), make_test_case('vloxseg8ei32_v_u16mf2x8', vl=3, n_segs=8), - #make_test_case('vloxseg8ei32_v_u16m1x8', vl=8, n_segs=8), - #make_test_case('vloxseg8ei32_v_u16m1x8', vl=7, n_segs=8), + make_test_case('vloxseg8ei32_v_u16m1x8', vl=8, n_segs=8), + make_test_case('vloxseg8ei32_v_u16m1x8', vl=7, n_segs=8), ], dtype = np.uint16, index_dtype = np.uint32,