Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

Handle SIMD8/LONG recasts for LCL_FLD #17418

Merged
merged 3 commits into from
Apr 6, 2018
Merged

Conversation

CarolEidt
Copy link

Lowering needs to insert a BITCAST in the case of a STORE_LCL_FLD with mismatched TYP_SIMD8/TYP_LONG operands, just as for STORE_LCL_VAR.

Lowering needs to insert a `BITCAST` in the case of a `STORE_LCL_FLD` with mismatched `TYP_SIMD8`/`TYP_LONG` operands, just as for `STORE_LCL_VAR`.
Copy link

@briansull briansull left a comment

Choose a reason for hiding this comment

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

LGTM

@CarolEidt
Copy link
Author

This test case exposed a different issue (also related to SIMD8) on linux/x64. In that case, we can have a promoted field that's TYP_SIMD8 (Vector2), to which we assign a TYP_DOUBLE because that's the type that a TYPE_SIMD8 is returned as.
The code in fgMorphLocalField() had an overly-aggressive assert that doesn't apply for targets that can return structs in fp regs and is not really very useful. Also, it was checking to see whether the type of the promoted field can be enregistered, but we know that it can - otherwise we don't promote it.
The fix for this is in the second commit.

Copy link

@briansull briansull left a comment

Choose a reason for hiding this comment

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

Looks Good

@CarolEidt
Copy link
Author

test Ubuntu arm Cross Checked Innerloop Build and Test

@CarolEidt CarolEidt merged commit 9595d7a into dotnet:master Apr 6, 2018
@CarolEidt CarolEidt deleted the Fix590358 branch April 6, 2018 21:23
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants