-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Assertion failed 'putArgRegNode->gtOper == GT_PUTARG_REG' #76879
Comments
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue Detailsosx-arm64 random JitStress Test: JIT/HardwareIntrinsics/General/Vector128_1/Vector128_1_ro/Vector128_1_ro.sh
@dotnet/jit-contrib
|
Related to #76671? @jakobbotsch ? |
Unlikely since that PR shouldn't affect the IR (well, I suppose it could via resolutions/spills/reloads). I can take a look though. |
...and that's exactly what happens, looks like LSRA is inserting a reload between a N585 ( 1, 1) [000182] ----------- t182 = LCL_VAR ref V23 tmp17 u:2 x25 REG x25 $245
┌──▌ t182 ref
N587 ( 3, 4) [000189] -c--------- t189 = ▌ LEA(b+8) byref REG NA
┌──▌ t189 byref
N589 ( 4, 3) [000403] n---GO----- t403 = ▌ IND simd16 REG d0 <l:$547, c:$546>
┌──▌ t403 simd16
N591 (???,???) [000612] ----GO----Z t612 = ▌ PUTARG_REG simd16 REG d0
┌──▌ t612 simd16
[000627] ----GO----- t627 = ▌ RELOAD simd16 REG d0
N593 ( 1, 1) [000405] ----------- t405 = LCL_VAR ref V23 tmp17 u:2 x25 (last use) REG x25 $245
┌──▌ t405 ref
N595 ( 3, 4) [000404] -c--------- t404 = ▌ LEA(b+24) byref REG NA
┌──▌ t404 byref
N597 ( 4, 3) [000409] ---XG------ t409 = ▌ IND simd16 REG d1 <l:$549, c:$548>
┌──▌ t409 simd16
N599 (???,???) [000613] ---XG-----Z t613 = ▌ PUTARG_REG simd16 REG d1
┌──▌ t613 simd16
[000628] ---XG------ t628 = ▌ RELOAD simd16 REG d1 <- illegal reload position?
┌──▌ t627 simd16
├──▌ t628 simd16
N601 ( 8, 6) [000402] -c-XGO----- t402 = ▌ FIELD_LIST struct REG NA <l:$683, c:$682>
N603 ( 1, 1) [000176] ----------- t176 = LCL_VAR ref V00 this u:1 x19 (last use) REG x19 $80
N605 (???,???) [000620] ----------- PROF_HOOK void REG NA
┌──▌ t176 ref
N607 (???,???) [000614] ----------- t614 = ▌ PUTARG_REG ref REG x0
N609 ( 1, 1) [000191] ----------- t191 = LCL_VAR ref V01 loc0 u:2 x22 (last use) REG x22 $240
┌──▌ t191 ref
N611 (???,???) [000615] ----------- t615 = ▌ PUTARG_REG ref REG x1
N613 ( 1, 2) [000260] ----------- t260 = CNS_INT int 1 REG x2 $45
┌──▌ t260 int
N615 (???,???) [000616] ----------- t616 = ▌ PUTARG_REG int REG x2
N617 ( 1, 1) [000504] ----------- t504 = LCL_VAR ref V29 cse3 u:1 x20 (last use) REG x20 $201
┌──▌ t504 ref
N619 (???,???) [000617] ----------- t617 = ▌ PUTARG_REG ref REG x3
N621 ( 3, 12) [000618] H---------- t618 = CNS_INT(h) long 0x7ff7b9317f60 ftn REG x4
┌──▌ t618 long
N623 ( 6, 14) [000619] ----------- t619 = ▌ IND long REG x4
┌──▌ t402 struct arg1 d0,d1
├──▌ t614 ref this in x0
├──▌ t615 ref arg2 in x1
├──▌ t616 int arg3 in x2
├──▌ t617 ref arg4 in x3
├──▌ t619 long control expr
N625 ( 26, 18) [000194] --CXGO----- ▌ CALL void JIT.HardwareIntrinsics.General.VectorExtend__ToVector256UInt64.ValidateResult REG NA $VN.Void |
Actually, lowering does allow reloads between the call and |
The existing handling in lowering seems wrong to me. It does not make much sense to me that we can have them on top of the |
This repros with #76671 reverted as well, so it doesn't seem related after all. |
I think the actual problem is in the insertion of |
This logic was not handling FIELD_LIST and was also not handling linear order appropriately. The logic is still a bit odd, it would probably be better to use the same kind of logic as CFG (moving PUTARG nodes ahead of the profiler hook instead), but in practice this seems to be ok. Fix dotnet#76879
This logic was not handling FIELD_LIST and was also not handling linear order appropriately. The logic is still a bit odd, it would probably be better to use the same kind of logic as CFG (moving PUTARG nodes ahead of the profiler hook instead), but in practice this seems to be ok. Fix #76879
osx-arm64 random JitStress
Test: JIT/HardwareIntrinsics/General/Vector128_1/Vector128_1_ro/Vector128_1_ro.sh
https://dev.azure.com/dnceng-public/public/_build/results?buildId=47392&view=ms.vss-test-web.build-test-results-tab&runId=953920&resultId=103768&paneView=debug
@dotnet/jit-contrib
The text was updated successfully, but these errors were encountered: