Description
Could it be possible that sse2::Group::match_tag
is misimplemented?
I have observed discrepancies between rustdoc-types-produced JSON files on MacOS and Linux. I have been trying to determine the root cause.
I noticed that the elements of this hashtable can have different orders on the two platforms, even when elements are inserted in the same order:
pub(crate) external_paths: FxHashMap<DefId, (Vec<Symbol>, ItemType)>,
Digging further, I noticed that values returned by this call to match_tag
can differ on the two platforms:
Line 1885 in b5b0655
From what I can tell, my MacOS platform uses the neon
implementation, and my Linux platform uses the sse2
implementation.
Here is a side-by-side comparison withneon
on the left and sse2
on the right (please ignore the line numbers):

If I disable the sse2
implementation so that my Linux platform uses the generic one, the returned values still differ, but generated JSON files match.
Disabling the neon
implementation on my MacOS platform does not have the same effect (the JSON files still differ).
Am I crazy to point the finger at sse2::Group::match_tag
?