Various codegen fixes
Here we fix a number of backend bugs to do with sub-word arithmetic, many of which involving signedness:
- a bug in code generation for shifts on x86 (#20626 (closed))
- some bugs in Cmm constant folding (#20634)
- warn in Cmm lint on large shifts which are undefined behavior (#20637)
- incorrect sign extension during loads in the AArch64 NCG (#20638)
- incorrect signedness in arithmetic in the AArch64 NCG (#20644 (closed))
- incorrect handling of
pext
andpdep
by the LLVM backend (#20645) - a pair of bugs in the C backend (#20745)
This should allow bgamari/test-primops> to pass on all platforms.
TODO:
-
add tests