  The verification of concurrent programs remains an open challenge due to the
non-determinism in inter-process communication. One algorithmic problem in this
challenge is the consistency verification of concurrent executions. Consistency
verification under a reads-from map allows to compute the reads-from (RF)
equivalence between concurrent traces, with direct applications to areas such
as Stateless Model Checking (SMC). The RF equivalence was recently shown to be
coarser than the standard Mazurkiewicz equivalence, leading to impressive
scalability improvements for SMC under SC (sequential consistency). However,
for the relaxed memory models of TSO and PSO (total/partial store order), the
algorithmic problem of deciding the RF equivalence, as well as its impact on
SMC, has been elusive. In this work we solve the problem of consistency
verification for the TSO and PSO memory models given a reads-from map, denoted
VTSO-rf and VPSO-rf, respectively. For an execution of $n$ events over $k$
threads and $d$ variables, we establish novel bounds that scale as $n^{k+1}$
for TSO and as $n^{k+1}\cdot \min(n^{k^2}, 2^{k\cdot d})$ for PSO. Based on our
solution to these problems, we develop an SMC algorithm under TSO and PSO that
uses the RF equivalence. The algorithm is exploration-optimal, in the sense
that it is guaranteed to explore each class of the RF partitioning exactly
once, and spends polynomial time per class when $k$ is bounded. We implement
all our algorithms in the SMC tool Nidhugg, and perform a large number of
experiments over benchmarks from existing literature. Our experimental results
show that our algorithms for VTSO-rf and VPSO-rf provide significant
scalability improvements over standard alternatives. When used for SMC, the RF
partitioning is often much coarser than the standard Shasha-Snir partitioning
for TSO/PSO, which yields a significant speedup in the model checking task.
