Process column by column within a row, then row by row. At each cell, decide: place tile here or not. If cell is already filled (bit = in mask), flip bit to (it's handled) and move to next column.
If empty: place horizontal domino (fill and ), place vertical domino (fill in next row's mask), or leave empty (invalid in full tiling). Valid transitions form a graph over masks. DP computes: for each row and mask, how many ways to reach this configuration.