Signal(s) form a combinatorial loop VHDL
You are both setting and reading the signals f and done in the same process; this creates the feedback ("combinatorial loop") that the tools are complaining about.

In order to eliminate that kind of feedback, you need to explicitly list every combination of req:

architecture Behavioral2 of prEnc is
begin
  process (req) begin
    if req(7) = '1' then
      first &lt;= "1000";
      if    req(6) = '1' then second &lt;= "0111";
      elsif req(5) = '1' then second &lt;= "0110";
      elsif req(4) = '1' then second &lt;= "0101";
      elsif req(3) = '1' then second &lt;= "0100";
      elsif req(2) = '1' then second &lt;= "0011";
      elsif req(1) = '1' then second &lt;= "0010";
      elsif req(0) = '1' then second &lt;= "0001";
      else second &lt;= "0000";
      end if;
    elsif req(6) = '1' then
      first &lt;= "0111";
      if    req(5) = '1' then second &lt;= "0110";
      elsif req(4) = '1' then second &lt;= "0101";
      elsif req(3) = '1' then second &lt;= "0100";
      elsif req(2) = '1' then second &lt;= "0011";
      elsif req(1) = '1' then second &lt;= "0010";
      elsif req(0) = '1' then second &lt;= "0001";
      else second &lt;= "0000";
      end if;
    elsif req(5) = '1' then
      first &lt;= "0110";
      if    req(4) = '1' then second &lt;= "0101";
      elsif req(3) = '1' then second &lt;= "0100";
      elsif req(2) = '1' then second &lt;= "0011";
      elsif req(1) = '1' then second &lt;= "0010";
      elsif req(0) = '1' then second &lt;= "0001";
      else second &lt;= "0000";
      end if;
    elsif req(4) = '1' then
      first &lt;= "0101";
      if    req(3) = '1' then second &lt;= "0100";
      elsif req(2) = '1' then second &lt;= "0011";
      elsif req(1) = '1' then second &lt;= "0010";
      elsif req(0) = '1' then second &lt;= "0001";
      else second &lt;= "0000";
      end if;
    elsif req(3) = '1' then
      first &lt;= "0100";
      if    req(2) = '1' then second &lt;= "0011";
      elsif req(1) = '1' then second &lt;= "0010";
      elsif req(0) = '1' then second &lt;= "0001";
      else second &lt;= "0000";
      end if;
    elsif req(2) = '1' then
      first &lt;= "0011";
      if    req(1) = '1' then second &lt;= "0010";
      elsif req(0) = '1' then second &lt;= "0001";
      else second &lt;= "0000";
      end if;
    elsif req(1) = '1' then
      first &lt;= "0010";
      if   req(0) = '1' then second &lt;= "0001";
      else second &lt;= "0000";
      end if;
    elsif req(0) = '1' then
      first &lt;= "0001";
      second &lt;= "0000";
    else
      first &lt;= "0000";
      second &lt;= "0000";
    end if;
  end process;
end Behavioral2;


EDIT

It might be easier to use two single-level priority encoders, using the the first to select the set of inputs that's presented to the second:

architecture Behavioral3 of prEnc is
  signal mask, req_b : stl_logic_vector (7 downto 0);
begin

  process (req) begin
    if    req(7) = '1' then first &lt;= "1000"; mask &lt;= "01111111";
    elsif req(6) = '1' then first &lt;= "0111"; mask &lt;= "00111111";
    elsif req(5) = '1' then first &lt;= "0110"; mask &lt;= "00011111";
    elsif req(4) = '1' then first &lt;= "0101"; mask &lt;= "00001111";
    elsif req(3) = '1' then first &lt;= "0100"; mask &lt;= "00000111";
    elsif req(2) = '1' then first &lt;= "0011"; mask &lt;= "00000011";
    elsif req(1) = '1' then first &lt;= "0010"; mask &lt;= "00000001";
    elsif req(0) = '1' then first &lt;= "0001"; mask &lt;= "00000000";
    else                    first &lt;= "0000"; mask &lt;= "00000000";
    end if;
  end process;

  req_b &lt;= req and mask;

  process (req_b) begin
    if    req_b(7) = '1' then second &lt;= "1000";
    elsif req_b(6) = '1' then second &lt;= "0111";
    elsif req_b(5) = '1' then second &lt;= "0110";
    elsif req_b(4) = '1' then second &lt;= "0101";
    elsif req_b(3) = '1' then second &lt;= "0100";
    elsif req_b(2) = '1' then second &lt;= "0011";
    elsif req_b(1) = '1' then second &lt;= "0010";
    elsif req_b(0) = '1' then second &lt;= "0001";
    else                      second &lt;= "0000";
    end if;
  end process;

end Behavioral3;