Improve codegen for AVX-512 comparisons and general handling of `TYP_MASK` (#87089)
authorTanner Gooding <tagoo@outlook.com>
Wed, 7 Jun 2023 23:01:59 +0000 (16:01 -0700)
committerGitHub <noreply@github.com>
Wed, 7 Jun 2023 23:01:59 +0000 (16:01 -0700)
commit8685cacd46a484e2e861b44916e4fde09c781204
tree75bc615784a0d047c09ae4f9c40eb92ffbef4a0f
parentb8e0ce05a84ba6591514d496604bbebf2e652e7a
Improve codegen for AVX-512 comparisons and general handling of `TYP_MASK` (#87089)

* Add the various base kmask instructions

* Updating lowering to better handle the AVX512 comparisons that produce a mask

* Remove INS_Flags_IsMskSrcSrcEvexInstruction as its the same as INS_Flags_IsDstDstSrcAVXInstruction

* Save 1-byte on the encoding for CompareEqualMask and signed CompareGreaterThanMask

* Apply formatting patch

* Ensure kmovd is encoded correctly and kmov is disassembled correctly

* Ensure vpcmpgtq is actually handled

* Fix the definition of a couple kmask instructions

* Ensure gtNewSimdCmpOpAll node creates correct IR for simdSize == 64

* Add , that were dropped when resolving merge

* Ensure that the new hwintrinsiclistxarch entries don't assert ValueNum
src/coreclr/jit/emitxarch.cpp
src/coreclr/jit/gentree.cpp
src/coreclr/jit/gentree.h
src/coreclr/jit/hwintrinsic.h
src/coreclr/jit/hwintrinsiccodegenxarch.cpp
src/coreclr/jit/hwintrinsiclistxarch.h
src/coreclr/jit/hwintrinsicxarch.cpp
src/coreclr/jit/instr.h
src/coreclr/jit/instrsxarch.h
src/coreclr/jit/lower.h
src/coreclr/jit/lowerxarch.cpp