ELSE
alu_Action_v := A_CMP;
END IF;
+ alu_Op1_v := ALU_IN_NOT_REGA;
+ alu_Cin_v := CIN_ONE;
END IF;
WHEN "100" | "101" => -- IT(U) / ITT(U) / ITE(U)
condition_raw_v := rD_v(2 downto 0);
-- IT instruction isn't writing to anything
wrb_Action_v := NO_WRB;
+ alu_Op1_v := ALU_IN_NOT_REGA;
+ alu_Cin_v := CIN_ONE;
END IF;
WHEN OTHERS =>
WHEN A_CMPU =>
IF (signBit_in1_v = signBit_in2_v) THEN
- signBit_r_v := NOT signBit_in1_v;
+ result_v(31) := NOT signBit_in1_v;
END IF;
+ signBit_r_v := result_v(31);
IF (COMPATIBILITY_MODE_g = FALSE) AND (ID2EX_i.it_Action /= NO_IT) THEN
-- have to update zero flag with current result
IF (result_v = C_32_ZEROS) THEN
WHEN A_CMP =>
IF (signBit_in1_v = signBit_in2_v) THEN
- signBit_r_v := signBit_in1_v;
+ result_v(31) := signBit_in1_v;
END IF;
+ signBit_r_v := result_v(31);
IF (COMPATIBILITY_MODE_g = FALSE) AND (ID2EX_i.it_Action /= NO_IT) THEN
-- have to update zero flag with current result
IF (result_v = C_32_ZEROS) THEN