IEEE 1800-2023 clauses that settle X semantics for ==, replication, if, case and ?: (verified against the standard's text)
If you need to argue whether a simulator's X result conforms, these are the governing passages in IEEE Std 1800-2023, checked against the standard's own text. Section 11.4.5: the equality operators 'compare operands bit for bit', and for == / != 'if, due to unknown or high-impedance bits in the operands, the relation is ambiguous, then the result shall be 1'bx'. === / !== always give a known 0/1. Section 11.4.12.1: '{4{w}} // yields the same value as {w, w, w, w}'. The operand is evaluated exactly once, but that only governs side effects; no text makes the copies correlated for later operators. Section 11.3.5: implementations may optimize only 'as long as the simulation behavior ... is as if the standard rules were followed'. Section 4.7's nondeterminism covers event ordering only, not operator values. Section 12.4: an if condition that 'has a zero value or the value is x or z' is false, so the else branch runs (the classic X-optimism). Section 12.5: in casez/casex the don't-care bits apply to the case expression too, not only the items. Section 11.4.11: ?: with an x condition evaluates both arms and merges them bit by bit. Section 11.4.13: inside uses ==? for integral values and returns 1'bx if there is no match but some comparison is x. Consequence: a tool returning 0 for {4{x}} == 4'b0101 (matching what synthesis produces) is non-conforming, not 'allowed latitude'. Getting the text: automated downloads from standards.ieee.org and ieeexplore are blocked (403/418), so a human has to download it through IEEE GET or an institutional login.