anchor.diff:  
       // deqLd guard (see comments at the method declaration)
       function Bool deqLdGuard;
  -        LdQTag deqP = ld_deqP_deq;
  -        Bool valid_not_killed = ld_valid_deq[deqP] && !ld_killed_deq[deqP];
  +        LdQTag deqP = ld_deqP_deqLd;
  +        Bool valid_not_killed = ld_valid_deqLd[deqP] && !ld_killed_deqLd[deqP];
           // Now figure out access type specific requirement
  -        Bool no_older_st = !isValid(ld_olderSt_deq[deqP];
  -        if(ld_memFunc[deqP] == Ld && !ld_isMMIO_deq[deqP]) begin
  +        Bool no_older_st = !isValid(ld_olderSt_deqLd[deqP];
  +        if(ld_memFunc[deqP] == Ld && !ld_isMMIO_deqLd[deqP]) begin
               // normal non-MMIO Ld (cannot have .rl)
  -            return valid_not_killed && ld_done_deq[deqP] &&
  -                   (no_older_st || ld_olderStVerfied_deq[deqP]);
  +            return valid_not_killed && ld_done_deqLd[deqP] &&
  +                   (no_older_st || ld_olderStVerified_deqLd[deqP]);
           end
           else begin
               // Lr or MMIO
  -            return valid_not_killed && ld_computed_deq[deqP] && no_older_st;
  +            return valid_not_killed && ld_computed_deqLd[deqP] && no_older_st;
           end
       endfunction
   
       // deqSt guard (see comments at the method declaration)
       function Bool deqStGuard;
  -        StQTag deqP = st_deqP_deq;
  -        Bool valid = st_valid_deq[deqP];
  -        Bool computed = st_computed_deq[deqP];
  -        LdQTag ldDeqP = ld_deqP_deq;
  -        Bool no_older_ld = !ld_valid_deq[ldDeqP] ||
  -                           isValid(ld_olderSt_deq[ldDeqP]);
  +        StQTag deqP = st_deqP_deqSt;
  +        Bool valid = st_valid_deqSt[deqP];
  +        Bool computed = st_computed_deqSt[deqP];
  +        LdQTag ldDeqP = ld_deqP_deqSt;
  +        Bool no_older_ld = !ld_valid_deqSt[ldDeqP] ||
  +                           isValid(ld_olderSt_deqSt[ldDeqP]);
           return valid && computed && no_older_ld;
       endfunction
   
  
positive.code:                                       : (st_enqP - 1);
          if(st_valid_enq[olderSt]) begin
              ld_olderSt_enq[ld_enqP] <= Valid (olderSt);
              ld_olderVerified_enq[ld_enqP] <= st_verified_enq[olderSt];
          end
          else begin
              ld_olderSt_enq[ld_enqP] <= Invalid;
              ld_olderVerified_enq[ld_enqP] <= False
          end
          // make conflict with incorrect spec
          wrongSpec_enq_conflict.wset(?);
  
negative.code:     // (5) when deq Ld or MMIO, clear spectag globally
      method LdQDeqEntry firstLd;
      method Action deqLd;
      // Deq SQ entry, and wakeup stalled loads. Also change the readFrom and
      // olderSt fields of loads. The guard only checks the following:
      // (1) valid
  