[X86] TableGen-erate SDNode descriptions (#168421)

This allows SDNodes to be validated against their expected type profiles
and reduces the number of changes required to add a new node.

The first commit contains the main change. There are few nodes that
don't have SDNode records in `*.td` files (see the enum in
`X86SelectionDAGInfo.h`) and several nodes fail verification (see
`X86SelectionDAGInfo::verifyTargetNode`).

The second commit fixes a few bugs in the generic SelectionDAG code that
were detected by the verification functionality.

The third comment moves comments from `X86ISelLowering.h` to `*.td`
files. This is done as separate commit to hopefully simplify the review.
I allowed myself to rearrange some node definitions because they had
block comments in `X86ISelLowering.h`.

Part of #119709.

Pull Request: https://github.com/llvm/llvm-project/pull/168421

GitOrigin-RevId: 443ce5569ee9854cfef1139cf6b9cf05165e0902
12 files changed