adds gather instructions
This commit is contained in:
		| @@ -622,6 +622,48 @@ if(vector != null) {%> | ||||
|                 throw new std::runtime_error("Unsupported sew bit value"); | ||||
|         } | ||||
|     } | ||||
|     void vector_vector_gather(uint8_t* V, uint64_t vl, uint64_t vstart, softvector::vtype_t vtype, bool vm, uint8_t vd, uint8_t vs2, uint8_t vs1, uint8_t sew_val){ | ||||
|         switch(sew_val){ | ||||
|             case 0b000: | ||||
|                 return softvector::vector_vector_gather<${vlen}, uint8_t>(V, vl, vstart, vtype, vm, vd, vs2, vs1); | ||||
|             case 0b001: | ||||
|                 return softvector::vector_vector_gather<${vlen}, uint16_t>(V, vl, vstart, vtype, vm, vd, vs2, vs1); | ||||
|             case 0b010: | ||||
|                 return softvector::vector_vector_gather<${vlen}, uint32_t>(V, vl, vstart, vtype, vm, vd, vs2, vs1); | ||||
|             case 0b011: | ||||
|                 return softvector::vector_vector_gather<${vlen}, uint64_t>(V, vl, vstart, vtype, vm, vd, vs2, vs1); | ||||
|             default: | ||||
|                 throw new std::runtime_error("Unsupported sew bit value"); | ||||
|         } | ||||
|     } | ||||
|     void vector_vector_gatherei16(uint8_t* V, uint64_t vl, uint64_t vstart, softvector::vtype_t vtype, bool vm, uint8_t vd, uint8_t vs2, uint8_t vs1, uint8_t sew_val){ | ||||
|         switch(sew_val){ | ||||
|             case 0b000: | ||||
|                 return softvector::vector_vector_gather<${vlen}, uint8_t, uint16_t>(V, vl, vstart, vtype, vm, vd, vs2, vs1); | ||||
|             case 0b001: | ||||
|                 return softvector::vector_vector_gather<${vlen}, uint16_t, uint16_t>(V, vl, vstart, vtype, vm, vd, vs2, vs1); | ||||
|             case 0b010: | ||||
|                 return softvector::vector_vector_gather<${vlen}, uint32_t, uint16_t>(V, vl, vstart, vtype, vm, vd, vs2, vs1); | ||||
|             case 0b011: | ||||
|                 return softvector::vector_vector_gather<${vlen}, uint64_t, uint16_t>(V, vl, vstart, vtype, vm, vd, vs2, vs1); | ||||
|             default: | ||||
|                 throw new std::runtime_error("Unsupported sew bit value"); | ||||
|         } | ||||
|     } | ||||
|     void vector_imm_gather(uint8_t* V, uint64_t vl, uint64_t vstart, softvector::vtype_t vtype, bool vm, uint8_t vd, uint8_t vs2, uint64_t imm, uint8_t sew_val){ | ||||
|         switch(sew_val){ | ||||
|             case 0b000: | ||||
|                 return softvector::vector_imm_gather<${vlen}, uint8_t>(V, vl, vstart, vtype, vm, vd, vs2, imm); | ||||
|             case 0b001: | ||||
|                 return softvector::vector_imm_gather<${vlen}, uint16_t>(V, vl, vstart, vtype, vm, vd, vs2, imm); | ||||
|             case 0b010: | ||||
|                 return softvector::vector_imm_gather<${vlen}, uint32_t>(V, vl, vstart, vtype, vm, vd, vs2, imm); | ||||
|             case 0b011: | ||||
|                 return softvector::vector_imm_gather<${vlen}, uint64_t>(V, vl, vstart, vtype, vm, vd, vs2, imm); | ||||
|             default: | ||||
|                 throw new std::runtime_error("Unsupported sew bit value"); | ||||
|         } | ||||
|     } | ||||
| <%}%> | ||||
|     uint64_t fetch_count{0}; | ||||
|     uint64_t tval{0}; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user