Capturing for posterity:
TL;DR: C is row major, XMMATRIX* is row major, HLSL is column major.
A comment here explains rationale:
https://www.gamedev.net/forums/topic/649263-matrix-multiplication-order/
And you can tell HLSL to flip to row major.
“The sciences do not try to explain, they hardly even try to interpret, they mainly make models. By a model is meant a mathematical construct which with the addition of certain verbal interpretations describes observed phenomena. The justification of such a model construct is solely and precisely that it is expected to work.” John Von Neumann
Capturing for posterity:
TL;DR: C is row major, XMMATRIX* is row major, HLSL is column major.
A comment here explains rationale:
https://www.gamedev.net/forums/topic/649263-matrix-multiplication-order/
And you can tell HLSL to flip to row major.