|
|
|
@ -2001,7 +2001,7 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co |
|
|
|
|
// execute instruction
|
|
|
|
|
try { |
|
|
|
|
{ |
|
|
|
|
uint32_t rs1_idx = rs1 + 8; |
|
|
|
|
uint8_t rs1_idx = rs1 + 8; |
|
|
|
|
*(X+rs1_idx) = *(X+rs1_idx) >> shamt; |
|
|
|
|
} |
|
|
|
|
} catch(...){} |
|
|
|
@ -2024,11 +2024,11 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co |
|
|
|
|
// execute instruction
|
|
|
|
|
try { |
|
|
|
|
if(shamt) { |
|
|
|
|
uint32_t rs1_idx = rs1 + 8; |
|
|
|
|
uint8_t rs1_idx = rs1 + 8; |
|
|
|
|
*(X+rs1_idx) = ((int32_t)*(X+rs1_idx)) >> shamt; |
|
|
|
|
} |
|
|
|
|
else if(traits::XLEN == 128) { |
|
|
|
|
uint32_t rs1_idx = rs1 + 8; |
|
|
|
|
uint8_t rs1_idx = rs1 + 8; |
|
|
|
|
*(X+rs1_idx) = ((int32_t)*(X+rs1_idx)) >> 64; |
|
|
|
|
} |
|
|
|
|
} catch(...){} |
|
|
|
@ -2051,7 +2051,7 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co |
|
|
|
|
// execute instruction
|
|
|
|
|
try { |
|
|
|
|
{ |
|
|
|
|
uint32_t rs1_idx = rs1 + 8; |
|
|
|
|
uint8_t rs1_idx = rs1 + 8; |
|
|
|
|
*(X+rs1_idx) = *(X+rs1_idx) & (int8_t)sext<6>(imm); |
|
|
|
|
} |
|
|
|
|
} catch(...){} |
|
|
|
@ -2074,7 +2074,7 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co |
|
|
|
|
// execute instruction
|
|
|
|
|
try { |
|
|
|
|
{ |
|
|
|
|
uint32_t rd_idx = rd + 8; |
|
|
|
|
uint8_t rd_idx = rd + 8; |
|
|
|
|
*(X+rd_idx) = *(X+rd_idx) - *(X+rs2 + 8); |
|
|
|
|
} |
|
|
|
|
} catch(...){} |
|
|
|
@ -2097,7 +2097,7 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co |
|
|
|
|
// execute instruction
|
|
|
|
|
try { |
|
|
|
|
{ |
|
|
|
|
uint32_t rd_idx = rd + 8; |
|
|
|
|
uint8_t rd_idx = rd + 8; |
|
|
|
|
*(X+rd_idx) = *(X+rd_idx) ^ *(X+rs2 + 8); |
|
|
|
|
} |
|
|
|
|
} catch(...){} |
|
|
|
@ -2120,7 +2120,7 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co |
|
|
|
|
// execute instruction
|
|
|
|
|
try { |
|
|
|
|
{ |
|
|
|
|
uint32_t rd_idx = rd + 8; |
|
|
|
|
uint8_t rd_idx = rd + 8; |
|
|
|
|
*(X+rd_idx) = *(X+rd_idx) | *(X+rs2 + 8); |
|
|
|
|
} |
|
|
|
|
} catch(...){} |
|
|
|
@ -2143,7 +2143,7 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co |
|
|
|
|
// execute instruction
|
|
|
|
|
try { |
|
|
|
|
{ |
|
|
|
|
uint32_t rd_idx = rd + 8; |
|
|
|
|
uint8_t rd_idx = rd + 8; |
|
|
|
|
*(X+rd_idx) = *(X+rd_idx) & *(X+rs2 + 8); |
|
|
|
|
} |
|
|
|
|
} catch(...){} |
|
|
|
|