Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensure vextractf64x4 and vextracti64x4 aren't marked DstDstSrc #85030

Merged
merged 1 commit into from
Apr 19, 2023

Conversation

tannergooding
Copy link
Member

This resolves #84967

@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Apr 19, 2023
@ghost ghost assigned tannergooding Apr 19, 2023
@ghost
Copy link

ghost commented Apr 19, 2023

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch, @kunalspathak
See info in area-owners.md if you want to be subscribed.

Issue Details

This resolves #84967

Author: tannergooding
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@@ -611,8 +611,8 @@ INST3(FIRST_AVX512_INSTRUCTION, "FIRST_AVX512_INSTRUCTION", IUM_WR, BAD_CODE, BA
INST3(kmovw_gpr, "kmovw", IUM_WR, BAD_CODE, BAD_CODE, PCKFLT(0x92), INS_TT_NONE, REX_W0 | Encoding_VEX | KInstruction)
INST3(kmovw_msk, "kmovw", IUM_WR, PCKFLT(0x91), BAD_CODE, PCKFLT(0x90), INS_TT_NONE, REX_W0 | Encoding_VEX | KInstruction)
INST3(kortestw, "kortestw", IUM_WR, BAD_CODE, BAD_CODE, PCKFLT(0x98), INS_TT_NONE, REX_W0 | Encoding_VEX | Resets_OF | Resets_SF | Writes_ZF | Resets_AF | Resets_PF | Writes_CF | KInstruction)
INST3(vextractf64x4, "extractf64x4", IUM_WR, SSE3A(0x1B), BAD_CODE, BAD_CODE, INS_TT_TUPLE4, Input_64Bit | REX_W1_EVEX | Encoding_EVEX | INS_Flags_IsDstDstSrcAVXInstruction) // Extract 256-bit packed double-precision floating point values
Copy link
Member Author

@tannergooding tannergooding Apr 19, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DstDstSrc, DstSrcSrc, and others are somewhat "poor" names.

They originally existed because we didn't have proper VEX support and everything was considered RMW. So, when we went from encoding things in ModRM:reg and ModRM:r/m into also having a new VEX.vvvv "field", we needed a way to track how that field should be encoded without also doing the more significant work around "properly" supporting VEX and treating things as non-RMW

Since the vast majority of instructions were of the form ins reg, r/m these flags were basically used to indicate whether we duplicated the Dst (ModRM:reg) or Src (ModRM:r/m) register into the VEX.vvvv field. -- This "worked" because we also didn't really support containment for stores of hwintrinsics at all, so we never really had to care about ModRM:r/m being the Dst.

Today, we do support VEX properly, don't require everything to be viewed as RMW, and do also support generating stores for HWIntrinsics. So, it might be good to rethink the flag names a bit in the near future. Namely, we really just care about which operands go into which of the three ModRM:reg, VEX.vvvv, and ModRM:r/m (with that particular order for Dst, Op1, Op2 being the most common) and so there's probably something there in how we track things that will end up working and being clearer as to what it means

@tannergooding tannergooding marked this pull request as ready for review April 19, 2023 04:35
@tannergooding
Copy link
Member Author

CC. @BruceForstall, @dotnet/avx512-contrib, @dotnet/jit-contrib

@tannergooding
Copy link
Member Author

Failure is a timeout caused by a missing line in the crossgen VM code. I have that fixed as part of #85026

@tannergooding tannergooding merged commit a21b59b into dotnet:main Apr 19, 2023
@tannergooding tannergooding deleted the fix-84967 branch April 19, 2023 20:38
@ghost ghost locked as resolved and limited conversation to collaborators May 20, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Coredistools failure to disassemble vextracti64x4
2 participants