Last active
January 7, 2019 18:20
-
-
Save tannergooding/d566792973f9e8aaae1741089b4eee87 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Beginning test case CreateScalar.UInt16 at 1/5/2019 8:30:02 AM | |
Random seed: 20010415; set environment variable CORECLR_SEED to this value to repro | |
Beginning scenario: RunBasicScenario | |
****** START compiling System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct (MethodHash=16b94f02) | |
Generating code for Windows x86 | |
OPTIONS: compCodeOpt = BLENDED_CODE | |
OPTIONS: compDbgCode = false | |
OPTIONS: compDbgInfo = true | |
OPTIONS: compDbgEnC = false | |
OPTIONS: compProcedureSplitting = false | |
OPTIONS: compProcedureSplittingEH = false | |
OPTIONS: Stack probing is DISABLED | |
IL to import: | |
IL_0000 12 00 ldloca.s 0x0 | |
IL_0002 02 ldarg.0 | |
IL_0003 7d 10 14 00 04 stfld 0x4001410 | |
IL_0008 28 d3 40 00 06 call 0x60040D3 | |
IL_000d 2c 14 brfalse.s 20 (IL_0023) | |
IL_000f 06 ldloc.0 | |
IL_0010 7b 10 14 00 04 ldfld 0x4001410 | |
IL_0015 28 33 41 00 06 call 0x6004133 | |
IL_001a 0b stloc.1 | |
IL_001b 12 01 ldloca.s 0x1 | |
IL_001d 28 c1 08 00 0a call 0xA0008C1 | |
IL_0022 2a ret | |
IL_0023 06 ldloc.0 | |
IL_0024 7b 10 14 00 04 ldfld 0x4001410 | |
IL_0029 12 00 ldloca.s 0x0 | |
IL_002b 28 56 3c 00 06 call 0x6003C56 | |
IL_0030 2a ret | |
HW Intrinsic SIMD Candidate Type Vector128`1 with Base Type UInt16 | |
Found type Hardware Intrinsic SIMD Vector128<ushort> | |
Known type Vector128<ushort> | |
'__retBuf' passed in register ecx | |
Arg #1 passed in register(s) edx | |
HW Intrinsic SIMD Candidate Type Vector128`1 with Base Type UInt32 | |
Found type Hardware Intrinsic SIMD Vector128<uint> | |
; Initial local variable assignments | |
; | |
; V00 RetBuf byref | |
; V01 arg0 ushort | |
; V02 loc0 struct ( 4) | |
; V03 loc1 simd16 | |
*************** In compInitDebuggingInfo() for System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct | |
getVars() returned cVars = 0, extendOthers = true | |
info.compVarScopesCount = 4 | |
VarNum LVNum Name Beg End | |
0: 00h 00h V00 RetBuf 000h 031h | |
1: 01h 01h V01 arg0 000h 031h | |
2: 02h 02h V02 loc0 000h 031h | |
3: 03h 03h V03 loc1 000h 031h | |
info.compStmtOffsetsCount = 0 | |
info.compStmtOffsetsImplicit = 0005h ( STACK_EMPTY CALL_SITE ) | |
*************** In fgFindBasicBlocks() for System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct | |
Jump targets: | |
IL_0023 | |
New Basic Block BB01 [0000] created. | |
BB01 [000..00F) | |
New Basic Block BB02 [0001] created. | |
BB02 [00F..023) | |
New Basic Block BB03 [0002] created. | |
BB03 [023..031) | |
CLFLG_MINOPT set for method System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct | |
IL Code Size,Instr 49, 17, Basic Block count 3, Local Variable Num,Ref count 4, 7 for method System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct | |
IL Code Size,Instr 49, 17, Basic Block count 3, Local Variable Num,Ref count 4, 7 for method System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct | |
OPTIONS: opts.MinOpts() == true | |
Basic block list for 'System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct' | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) | |
BB02 [0001] 1 1 [00F..023) (return) | |
BB03 [0002] 1 1 [023..031) (return) | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
*************** In impImport() for System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct | |
impImportBlockPending for BB01 | |
Importing BB01 (PC=000) of 'System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct' | |
[ 0] 0 (0x000) ldloca.s 0 | |
[ 1] 2 (0x002) ldarg.0 | |
[ 2] 3 (0x003) stfld 04001410 | |
[000006] ------------ * STMT void (IL 0x000... ???) | |
[000003] ------------ | /--* LCL_VAR ushort V01 arg0 | |
[000005] -A---------- \--* ASG ushort | |
[000004] -------N---- \--* FIELD ushort value | |
[000002] L----------- \--* ADDR byref | |
[000001] ------------ \--* LCL_VAR struct V02 loc0 | |
[ 0] 8 (0x008) call 060040D3 | |
In Compiler::impImportCall: opcode is call, kind=0, callRetType is bool, structSize is 0 | |
[ 1] 13 (0x00d) brfalse.s | |
[000011] ------------ * STMT void (IL 0x008... ???) | |
[000010] ------------ \--* JTRUE void | |
[000008] ------------ | /--* CNS_INT int 0 | |
[000009] ------------ \--* EQ int | |
[000007] ------------ \--* CNS_INT int 1 | |
impImportBlockPending for BB02 | |
impImportBlockPending for BB03 | |
Importing BB03 (PC=035) of 'System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct' | |
[ 0] 35 (0x023) ldloc.0 | |
[ 1] 36 (0x024) ldfld 04001410 | |
[ 1] 41 (0x029) ldloca.s 0 | |
[ 2] 43 (0x02b) call 06003C56 | |
In Compiler::impImportCall: opcode is call, kind=0, callRetType is struct, structSize is 16 | |
Known type Vector128<ushort> | |
[ 1] 48 (0x030) ret | |
[000023] ------------ * STMT void (IL 0x023... ???) | |
[000018] S-C-G------- \--* CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
[000021] ------------ arg0 +--* LCL_VAR byref V00 RetBuf | |
[000015] ------------ arg1 +--* FIELD ushort value | |
[000014] L----------- | \--* ADDR byref | |
[000013] ------------ | \--* LCL_VAR struct V02 loc0 | |
[000017] L----------- arg2 \--* ADDR byref | |
[000016] ------------ \--* LCL_VAR struct V02 loc0 | |
[000025] ------------ * STMT void (IL ???... ???) | |
[000024] ------------ \--* RETURN void | |
Importing BB02 (PC=015) of 'System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct' | |
[ 0] 15 (0x00f) ldloc.0 | |
[ 1] 16 (0x010) ldfld 04001410 | |
[ 1] 21 (0x015) call 06004133 | |
In Compiler::impImportCall: opcode is call, kind=0, callRetType is struct, structSize is 16 | |
Known type Vector128<uint> | |
[ 1] 26 (0x01a) stloc.1 | |
[000034] ------------ * STMT void (IL 0x00F... ???) | |
[000030] ------------ | /--* HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
[000029] ------------ | | \--* FIELD ushort value | |
[000028] L----------- | | \--* ADDR byref | |
[000027] ------------ | | \--* LCL_VAR struct V02 loc0 | |
[000033] -A---------- \--* ASG simd16 (copy) | |
[000031] D----------- \--* LCL_VAR simd16 V03 loc1 | |
[ 0] 27 (0x01b) ldloca.s 1 | |
[ 1] 29 (0x01d) call 0A0008C1 | |
In Compiler::impImportCall: opcode is call, kind=0, callRetType is struct, structSize is 16 | |
Known type Vector128<uint> | |
Known type Vector128<ushort> | |
Known type Vector128<ushort> | |
[ 1] 34 (0x022) ret | |
[000040] ------------ * STMT void (IL 0x01B... ???) | |
[000035] ------------ | /--* LCL_VAR simd16 V03 loc1 | |
[000039] -A---------- \--* ASG simd16 (copy) | |
[000038] ------------ \--* BLK(16) simd16 | |
[000037] ------------ \--* LCL_VAR byref V00 RetBuf | |
[000042] ------------ * STMT void (IL ???... ???) | |
[000041] ------------ \--* RETURN void | |
*************** in fgTransformIndirectCalls(root) | |
-- no candidates to transform | |
New BlockSet epoch 1, # of blocks (including unused BB00): 4, bitset array size: 1 (short) | |
*************** In fgMorph() | |
*************** In fgDebugCheckBBlist | |
*************** In Allocate Objects | |
Trees before Allocate Objects | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i | |
BB02 [0001] 1 1 [00F..023) (return) i | |
BB03 [0002] 1 1 [023..031) (return) i | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
------------ BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
***** BB01, stmt 1 | |
[000006] ------------ * STMT void (IL 0x000...0x003) | |
[000003] ------------ | /--* LCL_VAR ushort V01 arg0 | |
[000005] -A---------- \--* ASG ushort | |
[000004] -------N---- \--* FIELD ushort value | |
[000002] L----------- \--* ADDR byref | |
[000001] ------------ \--* LCL_VAR struct V02 loc0 | |
***** BB01, stmt 2 | |
[000011] ------------ * STMT void (IL 0x008...0x00D) | |
[000010] ------------ \--* JTRUE void | |
[000008] ------------ | /--* CNS_INT int 0 | |
[000009] ------------ \--* EQ int | |
[000007] ------------ \--* CNS_INT int 1 | |
------------ BB02 [00F..023) (return), preds={} succs={} | |
***** BB02, stmt 3 | |
[000034] ------------ * STMT void (IL 0x00F...0x01A) | |
[000030] ------------ | /--* HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
[000029] ------------ | | \--* FIELD ushort value | |
[000028] L----------- | | \--* ADDR byref | |
[000027] ------------ | | \--* LCL_VAR struct V02 loc0 | |
[000033] -A---------- \--* ASG simd16 (copy) | |
[000031] D----------- \--* LCL_VAR simd16 V03 loc1 | |
***** BB02, stmt 4 | |
[000040] ------------ * STMT void (IL 0x01B...0x022) | |
[000035] ------------ | /--* LCL_VAR simd16 V03 loc1 | |
[000039] -A---------- \--* ASG simd16 (copy) | |
[000038] ------------ \--* BLK(16) simd16 | |
[000037] ------------ \--* LCL_VAR byref V00 RetBuf | |
***** BB02, stmt 5 | |
[000042] ------------ * STMT void (IL ???... ???) | |
[000041] ------------ \--* RETURN void | |
------------ BB03 [023..031) (return), preds={} succs={} | |
***** BB03, stmt 6 | |
[000023] ------------ * STMT void (IL 0x023...0x030) | |
[000018] S-C-G------- \--* CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
[000021] ------------ arg0 +--* LCL_VAR byref V00 RetBuf | |
[000015] ------------ arg1 +--* FIELD ushort value | |
[000014] L----------- | \--* ADDR byref | |
[000013] ------------ | \--* LCL_VAR struct V02 loc0 | |
[000017] L----------- arg2 \--* ADDR byref | |
[000016] ------------ \--* LCL_VAR struct V02 loc0 | |
***** BB03, stmt 7 | |
[000025] ------------ * STMT void (IL ???... ???) | |
[000024] ------------ \--* RETURN void | |
------------------------------------------------------------------------------------------------------------------- | |
*** ObjectAllocationPhase: no newobjs in this method; punting | |
*************** Exiting Allocate Objects | |
Trees after Allocate Objects | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i | |
BB02 [0001] 1 1 [00F..023) (return) i | |
BB03 [0002] 1 1 [023..031) (return) i | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
------------ BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
***** BB01, stmt 1 | |
[000006] ------------ * STMT void (IL 0x000...0x003) | |
[000003] ------------ | /--* LCL_VAR ushort V01 arg0 | |
[000005] -A---------- \--* ASG ushort | |
[000004] -------N---- \--* FIELD ushort value | |
[000002] L----------- \--* ADDR byref | |
[000001] ------------ \--* LCL_VAR struct V02 loc0 | |
***** BB01, stmt 2 | |
[000011] ------------ * STMT void (IL 0x008...0x00D) | |
[000010] ------------ \--* JTRUE void | |
[000008] ------------ | /--* CNS_INT int 0 | |
[000009] ------------ \--* EQ int | |
[000007] ------------ \--* CNS_INT int 1 | |
------------ BB02 [00F..023) (return), preds={} succs={} | |
***** BB02, stmt 3 | |
[000034] ------------ * STMT void (IL 0x00F...0x01A) | |
[000030] ------------ | /--* HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
[000029] ------------ | | \--* FIELD ushort value | |
[000028] L----------- | | \--* ADDR byref | |
[000027] ------------ | | \--* LCL_VAR struct V02 loc0 | |
[000033] -A---------- \--* ASG simd16 (copy) | |
[000031] D----------- \--* LCL_VAR simd16 V03 loc1 | |
***** BB02, stmt 4 | |
[000040] ------------ * STMT void (IL 0x01B...0x022) | |
[000035] ------------ | /--* LCL_VAR simd16 V03 loc1 | |
[000039] -A---------- \--* ASG simd16 (copy) | |
[000038] ------------ \--* BLK(16) simd16 | |
[000037] ------------ \--* LCL_VAR byref V00 RetBuf | |
***** BB02, stmt 5 | |
[000042] ------------ * STMT void (IL ???... ???) | |
[000041] ------------ \--* RETURN void | |
------------ BB03 [023..031) (return), preds={} succs={} | |
***** BB03, stmt 6 | |
[000023] ------------ * STMT void (IL 0x023...0x030) | |
[000018] S-C-G------- \--* CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
[000021] ------------ arg0 +--* LCL_VAR byref V00 RetBuf | |
[000015] ------------ arg1 +--* FIELD ushort value | |
[000014] L----------- | \--* ADDR byref | |
[000013] ------------ | \--* LCL_VAR struct V02 loc0 | |
[000017] L----------- arg2 \--* ADDR byref | |
[000016] ------------ \--* LCL_VAR struct V02 loc0 | |
***** BB03, stmt 7 | |
[000025] ------------ * STMT void (IL ???... ???) | |
[000024] ------------ \--* RETURN void | |
------------------------------------------------------------------------------------------------------------------- | |
*************** After fgAddInternal() | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i | |
BB02 [0001] 1 1 [00F..023) (return) i | |
BB03 [0002] 1 1 [023..031) (return) i | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
*************** Exception Handling table is empty | |
*************** In fgDebugCheckBBlist | |
*************** In fgRemoveEmptyTry() | |
No EH in this method, nothing to remove. | |
*************** In fgRemoveEmptyFinally() | |
No EH in this method, nothing to remove. | |
*************** In fgMergeFinallyChains() | |
No EH in this method, nothing to merge. | |
*************** In fgCloneFinally() | |
No EH in this method, no cloning. | |
*************** In fgPromoteStructs() | |
promotion opt flag not enabled | |
*************** In fgMarkAddressExposedLocals() | |
LocalAddressVisitor visiting statement: | |
[000006] ------------ * STMT void (IL 0x000...0x003) | |
[000003] ------------ | /--* LCL_VAR ushort V01 arg0 | |
[000005] -A---------- \--* ASG ushort | |
[000004] -------N---- \--* FIELD ushort value | |
[000002] L----------- \--* ADDR byref | |
[000001] ------------ \--* LCL_VAR struct V02 loc0 | |
LocalAddressVisitor visiting statement: | |
[000011] ------------ * STMT void (IL 0x008...0x00D) | |
[000010] ------------ \--* JTRUE void | |
[000008] ------------ | /--* CNS_INT int 0 | |
[000009] ------------ \--* EQ int | |
[000007] ------------ \--* CNS_INT int 1 | |
LocalAddressVisitor visiting statement: | |
[000034] ------------ * STMT void (IL 0x00F...0x01A) | |
[000030] ------------ | /--* HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
[000029] ------------ | | \--* FIELD ushort value | |
[000028] L----------- | | \--* ADDR byref | |
[000027] ------------ | | \--* LCL_VAR struct V02 loc0 | |
[000033] -A---------- \--* ASG simd16 (copy) | |
[000031] D----------- \--* LCL_VAR simd16 V03 loc1 | |
LocalAddressVisitor visiting statement: | |
[000040] ------------ * STMT void (IL 0x01B...0x022) | |
[000035] ------------ | /--* LCL_VAR simd16 V03 loc1 | |
[000039] -A---------- \--* ASG simd16 (copy) | |
[000038] ------------ \--* BLK(16) simd16 | |
[000037] ------------ \--* LCL_VAR byref V00 RetBuf | |
LocalAddressVisitor visiting statement: | |
[000042] ------------ * STMT void (IL ???... ???) | |
[000041] ------------ \--* RETURN void | |
LocalAddressVisitor visiting statement: | |
[000023] ------------ * STMT void (IL 0x023...0x030) | |
[000018] S-C-G------- \--* CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
[000021] ------------ arg0 +--* LCL_VAR byref V00 RetBuf | |
[000015] ------------ arg1 +--* FIELD ushort value | |
[000014] L----------- | \--* ADDR byref | |
[000013] ------------ | \--* LCL_VAR struct V02 loc0 | |
[000017] L----------- arg2 \--* ADDR byref | |
[000016] ------------ \--* LCL_VAR struct V02 loc0 | |
Local V02 should not be enregistered because: it is address exposed | |
LocalAddressVisitor visiting statement: | |
[000025] ------------ * STMT void (IL ???... ???) | |
[000024] ------------ \--* RETURN void | |
*************** In fgMorphBlocks() | |
Morphing BB01 of 'System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct' | |
fgMorphTree BB01, stmt 1 (before) | |
[000003] ------------ /--* LCL_VAR ushort V01 arg0 | |
[000005] -A---------- * ASG ushort | |
[000004] -------N---- \--* FIELD ushort value | |
[000002] L----------- \--* ADDR byref | |
[000001] ------------ \--* LCL_VAR struct(AX) V02 loc0 | |
Local V02 should not be enregistered because: was accessed as a local field | |
fgMorphTree BB01, stmt 1 (after) | |
[000043] -----+------ /--* CAST int <- ushort <- int | |
[000003] -----+------ | \--* LCL_VAR int V01 arg0 | |
[000005] -A--G+------ * ASG ushort | |
[000001] D---G+-N---- \--* LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
fgMorphTree BB01, stmt 2 (before) | |
[000010] ------------ * JTRUE void | |
[000008] ------------ | /--* CNS_INT int 0 | |
[000009] ------------ \--* EQ int | |
[000007] ------------ \--* CNS_INT int 1 | |
Morphing BB02 of 'System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct' | |
fgMorphTree BB02, stmt 3 (before) | |
[000030] ------------ /--* HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
[000029] ------------ | \--* FIELD ushort value | |
[000028] L----------- | \--* ADDR byref | |
[000027] ------------ | \--* LCL_VAR struct(AX) V02 loc0 | |
[000033] -A---------- * ASG simd16 (copy) | |
[000031] D----------- \--* LCL_VAR simd16 V03 loc1 | |
Local V02 should not be enregistered because: was accessed as a local field | |
fgMorphCopyBlock:block assignment to morph: | |
[000030] ----G+------ /--* HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
[000027] ----G+------ | \--* LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
[000033] -A--G------- * ASG simd16 (copy) | |
[000031] D----+-N---- \--* LCL_VAR simd16 V03 loc1 | |
with no promoted structs this requires a CopyBlock. | |
Local V03 should not be enregistered because: written in a block op | |
fgMorphTree BB02, stmt 3 (after) | |
[000030] ----G+------ /--* HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
[000027] ----G+------ | \--* LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
[000033] -A--G+------ * ASG simd16 (copy) | |
[000031] D----+-N---- \--* LCL_VAR simd16 V03 loc1 | |
fgMorphTree BB02, stmt 4 (before) | |
[000035] ------------ /--* LCL_VAR simd16 V03 loc1 | |
[000039] -A---------- * ASG simd16 (copy) | |
[000038] ------------ \--* BLK(16) simd16 | |
[000037] ------------ \--* LCL_VAR byref V00 RetBuf | |
fgMorphCopyBlock:fgMorphOneAsgBlock (after): | |
[000035] -----+------ /--* LCL_VAR simd16 V03 loc1 | |
[000039] -A-XG------- * ASG simd16 (copy) | |
[000038] *--XG+-N---- \--* IND simd16 | |
[000037] -----+------ \--* LCL_VAR byref V00 RetBuf | |
using oneAsgTree. | |
fgMorphCopyBlock (after): | |
[000035] -----+------ /--* LCL_VAR simd16 V03 loc1 | |
[000039] -A-XG------- * ASG simd16 (copy) | |
[000038] *--XG+-N---- \--* IND simd16 | |
[000037] -----+------ \--* LCL_VAR byref V00 RetBuf | |
fgMorphTree BB02, stmt 4 (after) | |
[000035] -----+------ /--* LCL_VAR simd16 V03 loc1 | |
[000039] -A-XG+------ * ASG simd16 (copy) | |
[000038] *--XG+-N---- \--* IND simd16 | |
[000037] -----+------ \--* LCL_VAR byref V00 RetBuf | |
fgMorphTree BB02, stmt 5 (before) | |
[000041] ------------ * RETURN void | |
Morphing BB03 of 'System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct' | |
fgMorphTree BB03, stmt 6 (before) | |
[000018] S-C-G------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
[000021] ------------ arg0 +--* LCL_VAR byref V00 RetBuf | |
[000015] ------------ arg1 +--* FIELD ushort value | |
[000014] L----------- | \--* ADDR byref | |
[000013] ------------ | \--* LCL_VAR struct(AX) V02 loc0 | |
[000017] L----------- arg2 \--* ADDR byref | |
[000016] ------------ \--* LCL_VAR struct(AX) V02 loc0 | |
Initializing arg info for 18.CALL: | |
fgArgTabEntry[arg 0 21.LCL_VAR, 1 reg: ecx, align=1] | |
fgArgTabEntry[arg 1 15.FIELD, 1 reg: edx, align=1] | |
fgArgTabEntry[arg 2 17.ADDR, numSlots=1, slotNum=0, align=1] | |
Morphing args for 18.CALL: | |
Local V02 should not be enregistered because: was accessed as a local field | |
Sorting the arguments: | |
Deferred argument ('ecx'): | |
[000021] -----+------ * LCL_VAR byref V00 RetBuf | |
Replaced with placeholder node: | |
[000044] ----------L- * ARGPLACE byref | |
Deferred argument ('edx'): | |
[000013] ----G+------ * LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
Replaced with placeholder node: | |
[000046] ----------L- * ARGPLACE ushort | |
Shuffled argument table: ecx edx | |
fgArgTabEntry[arg 2 17.ADDR, numSlots=1, slotNum=0, align=1, processed] | |
fgArgTabEntry[arg 0 21.LCL_VAR, 1 reg: ecx, align=1, lateArgInx=0, processed] | |
fgArgTabEntry[arg 1 13.LCL_FLD, 1 reg: edx, align=1, lateArgInx=1, processed] | |
fgMorphTree BB03, stmt 6 (after) | |
[000018] S-CXG+------ * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
[000017] L----+------ arg2 on STK +--* ADDR int | |
[000016] ----G+-N---- | \--* LCL_VAR struct(AX) V02 loc0 | |
[000021] -----+------ arg0 in ecx +--* LCL_VAR byref V00 RetBuf | |
[000013] ----G+------ arg1 in edx \--* LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
fgMorphTree BB03, stmt 7 (before) | |
[000024] ------------ * RETURN void | |
Renumbering the basic blocks for fgComputePred | |
*************** Before renumbering the basic blocks | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i | |
BB02 [0001] 1 1 [00F..023) (return) i | |
BB03 [0002] 1 1 [023..031) (return) i gcsafe | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
*************** Exception Handling table is empty | |
*************** After renumbering the basic blocks | |
=============== No blocks renumbered! | |
*************** In fgComputePreds() | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i | |
BB02 [0001] 1 1 [00F..023) (return) i | |
BB03 [0002] 1 1 [023..031) (return) i gcsafe | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
*************** After fgComputePreds() | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
*************** In fgComputeBlockAndEdgeWeights() | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
-- no profile data, so using default called count | |
-- not optimizing, so not computing edge weights | |
*************** In lvaMarkLocalVars() | |
*** lvaComputeRefCounts *** | |
*************** In fgFindOperOrder() | |
*************** In fgSetBlockOrder() | |
The biggest BB has 12 tree nodes | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
------------ BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
***** BB01, stmt 1 | |
( 9, 10) [000006] ------------ * STMT void (IL 0x000...0x003) | |
N002 ( 4, 4) [000043] ------------ | /--* CAST int <- ushort <- int | |
N001 ( 3, 2) [000003] ------------ | | \--* LCL_VAR int V01 arg0 | |
N004 ( 9, 10) [000005] -A--G---R--- \--* ASG ushort | |
N003 ( 4, 5) [000001] D---G--N---- \--* LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
***** BB01, stmt 2 | |
( 5, 5) [000011] ------------ * STMT void (IL 0x008...0x00D) | |
N004 ( 5, 5) [000010] ------------ \--* JTRUE void | |
N002 ( 1, 1) [000007] ------------ | /--* CNS_INT int 1 | |
N003 ( 3, 3) [000009] J------N---- \--* EQ int | |
N001 ( 1, 1) [000008] ------------ \--* CNS_INT int 0 | |
------------ BB02 [00F..023) (return), preds={BB01} succs={} | |
***** BB02, stmt 3 | |
( 9, 9) [000034] ------------ * STMT void (IL 0x00F...0x01A) | |
N002 ( 5, 6) [000030] ----G------- | /--* HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
N001 ( 4, 5) [000027] ----G------- | | \--* LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
N004 ( 9, 9) [000033] -A--G---R--- \--* ASG simd16 (copy) | |
N003 ( 3, 2) [000031] D------N---- \--* LCL_VAR simd16 V03 loc1 | |
***** BB02, stmt 4 | |
( 10, 7) [000040] ------------ * STMT void (IL 0x01B...0x022) | |
N003 ( 3, 2) [000035] ------------ | /--* LCL_VAR simd16 V03 loc1 | |
N004 ( 10, 7) [000039] -A-XG------- \--* ASG simd16 (copy) | |
N002 ( 6, 4) [000038] *--XG--N---- \--* IND simd16 | |
N001 ( 3, 2) [000037] ------------ \--* LCL_VAR byref V00 RetBuf | |
***** BB02, stmt 5 | |
( 0, 0) [000042] ------------ * STMT void (IL ???... ???) | |
N001 ( 0, 0) [000041] ------------ \--* RETURN void | |
------------ BB03 [023..031) (return), preds={BB01} succs={} | |
***** BB03, stmt 6 | |
( 27, 17) [000023] ------------ * STMT void (IL 0x023...0x030) | |
N012 ( 27, 17) [000018] S-CXG------- \--* CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
N004 ( 3, 3) [000017] L----------- arg2 on STK +--* ADDR int | |
N003 ( 3, 2) [000016] ----G--N---- | \--* LCL_VAR struct(AX) V02 loc0 | |
N008 ( 3, 2) [000021] ------------ arg0 in ecx +--* LCL_VAR byref V00 RetBuf | |
N009 ( 4, 5) [000013] ----G------- arg1 in edx \--* LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
***** BB03, stmt 7 | |
( 0, 0) [000025] ------------ * STMT void (IL ???... ???) | |
N001 ( 0, 0) [000024] ------------ \--* RETURN void | |
------------------------------------------------------------------------------------------------------------------- | |
*************** In fgDetermineFirstColdBlock() | |
No procedure splitting will be done for this method | |
*************** In IR Rationalize | |
Trees before IR Rationalize | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
------------ BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
***** BB01, stmt 1 | |
( 9, 10) [000006] ------------ * STMT void (IL 0x000...0x003) | |
N002 ( 4, 4) [000043] ------------ | /--* CAST int <- ushort <- int | |
N001 ( 3, 2) [000003] ------------ | | \--* LCL_VAR int V01 arg0 | |
N004 ( 9, 10) [000005] -A--G---R--- \--* ASG ushort | |
N003 ( 4, 5) [000001] D---G--N---- \--* LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
***** BB01, stmt 2 | |
( 5, 5) [000011] ------------ * STMT void (IL 0x008...0x00D) | |
N004 ( 5, 5) [000010] ------------ \--* JTRUE void | |
N002 ( 1, 1) [000007] ------------ | /--* CNS_INT int 1 | |
N003 ( 3, 3) [000009] J------N---- \--* EQ int | |
N001 ( 1, 1) [000008] ------------ \--* CNS_INT int 0 | |
------------ BB02 [00F..023) (return), preds={BB01} succs={} | |
***** BB02, stmt 3 | |
( 9, 9) [000034] ------------ * STMT void (IL 0x00F...0x01A) | |
N002 ( 5, 6) [000030] ----G------- | /--* HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
N001 ( 4, 5) [000027] ----G------- | | \--* LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
N004 ( 9, 9) [000033] -A--G---R--- \--* ASG simd16 (copy) | |
N003 ( 3, 2) [000031] D------N---- \--* LCL_VAR simd16 V03 loc1 | |
***** BB02, stmt 4 | |
( 10, 7) [000040] ------------ * STMT void (IL 0x01B...0x022) | |
N003 ( 3, 2) [000035] ------------ | /--* LCL_VAR simd16 V03 loc1 | |
N004 ( 10, 7) [000039] -A-XG------- \--* ASG simd16 (copy) | |
N002 ( 6, 4) [000038] *--XG--N---- \--* IND simd16 | |
N001 ( 3, 2) [000037] ------------ \--* LCL_VAR byref V00 RetBuf | |
***** BB02, stmt 5 | |
( 0, 0) [000042] ------------ * STMT void (IL ???... ???) | |
N001 ( 0, 0) [000041] ------------ \--* RETURN void | |
------------ BB03 [023..031) (return), preds={BB01} succs={} | |
***** BB03, stmt 6 | |
( 27, 17) [000023] ------------ * STMT void (IL 0x023...0x030) | |
N012 ( 27, 17) [000018] S-CXG------- \--* CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
N004 ( 3, 3) [000017] L----------- arg2 on STK +--* ADDR int | |
N003 ( 3, 2) [000016] ----G--N---- | \--* LCL_VAR struct(AX) V02 loc0 | |
N008 ( 3, 2) [000021] ------------ arg0 in ecx +--* LCL_VAR byref V00 RetBuf | |
N009 ( 4, 5) [000013] ----G------- arg1 in edx \--* LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
***** BB03, stmt 7 | |
( 0, 0) [000025] ------------ * STMT void (IL ???... ???) | |
N001 ( 0, 0) [000024] ------------ \--* RETURN void | |
------------------------------------------------------------------------------------------------------------------- | |
rewriting asg(LCL_FLD, X) to STORE_LCL_FLD(X) | |
N004 ( 9, 10) [000005] DA--G------- * STORE_LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
rewriting asg(LCL_VAR, X) to STORE_LCL_VAR(X) | |
N004 ( 9, 9) [000033] DA--G------- * STORE_LCL_VAR simd16 V03 loc1 | |
Rewriting GT_ADDR(GT_LCL_VAR) to GT_LCL_VAR_ADDR: | |
N003 ( 3, 2) [000016] -------N---- t16 = LCL_VAR_ADDR byref V02 loc0 | |
*************** Exiting IR Rationalize | |
Trees after IR Rationalize | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target LIR | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i LIR | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe LIR | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
------------ BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
( 9, 10) [000006] ------------ IL_OFFSET void IL offset: 0x0 | |
N001 ( 3, 2) [000003] ------------ t3 = LCL_VAR int V01 arg0 | |
/--* t3 int | |
N002 ( 4, 4) [000043] ------------ t43 = * CAST int <- ushort <- int | |
/--* t43 int | |
N004 ( 9, 10) [000005] DA--G------- * STORE_LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
( 5, 5) [000011] ------------ IL_OFFSET void IL offset: 0x8 | |
N001 ( 1, 1) [000008] ------------ t8 = CNS_INT int 0 | |
N002 ( 1, 1) [000007] ------------ t7 = CNS_INT int 1 | |
/--* t8 int | |
+--* t7 int | |
N003 ( 3, 3) [000009] J------N---- t9 = * EQ int | |
/--* t9 int | |
N004 ( 5, 5) [000010] ------------ * JTRUE void | |
------------ BB02 [00F..023) (return), preds={BB01} succs={} | |
( 9, 9) [000034] ------------ IL_OFFSET void IL offset: 0xf | |
N001 ( 4, 5) [000027] ------------ t27 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t27 ushort | |
N002 ( 5, 6) [000030] ----G------- t30 = * HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
/--* t30 simd16 | |
N004 ( 9, 9) [000033] DA--G------- * STORE_LCL_VAR simd16 V03 loc1 | |
( 10, 7) [000040] ------------ IL_OFFSET void IL offset: 0x1b | |
N001 ( 3, 2) [000037] ------------ t37 = LCL_VAR byref V00 RetBuf | |
N003 ( 3, 2) [000035] ------------ t35 = LCL_VAR simd16 V03 loc1 | |
/--* t37 byref | |
+--* t35 simd16 | |
[000048] -A-XG------- * STOREIND simd16 | |
N001 ( 0, 0) [000041] ------------ RETURN void | |
------------ BB03 [023..031) (return), preds={BB01} succs={} | |
( 27, 17) [000023] ------------ IL_OFFSET void IL offset: 0x23 | |
N003 ( 3, 2) [000016] -------N---- t16 = LCL_VAR_ADDR byref V02 loc0 | |
N008 ( 3, 2) [000021] ------------ t21 = LCL_VAR byref V00 RetBuf | |
N009 ( 4, 5) [000013] ------------ t13 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t16 byref arg2 on STK | |
+--* t21 byref arg0 in ecx | |
+--* t13 ushort arg1 in edx | |
N012 ( 27, 17) [000018] S-CXG------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
N001 ( 0, 0) [000024] ------------ RETURN void | |
------------------------------------------------------------------------------------------------------------------- | |
*************** In fgDebugCheckBBlist | |
*************** In fgDebugCheckBBlist | |
*************** In Lowering | |
Trees before Lowering | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target LIR | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i LIR | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe LIR | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
------------ BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
( 9, 10) [000006] ------------ IL_OFFSET void IL offset: 0x0 | |
N001 ( 3, 2) [000003] ------------ t3 = LCL_VAR int V01 arg0 | |
/--* t3 int | |
N002 ( 4, 4) [000043] ------------ t43 = * CAST int <- ushort <- int | |
/--* t43 int | |
N004 ( 9, 10) [000005] DA--G------- * STORE_LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
( 5, 5) [000011] ------------ IL_OFFSET void IL offset: 0x8 | |
N001 ( 1, 1) [000008] ------------ t8 = CNS_INT int 0 | |
N002 ( 1, 1) [000007] ------------ t7 = CNS_INT int 1 | |
/--* t8 int | |
+--* t7 int | |
N003 ( 3, 3) [000009] J------N---- t9 = * EQ int | |
/--* t9 int | |
N004 ( 5, 5) [000010] ------------ * JTRUE void | |
------------ BB02 [00F..023) (return), preds={BB01} succs={} | |
( 9, 9) [000034] ------------ IL_OFFSET void IL offset: 0xf | |
N001 ( 4, 5) [000027] ------------ t27 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t27 ushort | |
N002 ( 5, 6) [000030] ----G------- t30 = * HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
/--* t30 simd16 | |
N004 ( 9, 9) [000033] DA--G------- * STORE_LCL_VAR simd16 V03 loc1 | |
( 10, 7) [000040] ------------ IL_OFFSET void IL offset: 0x1b | |
N001 ( 3, 2) [000037] ------------ t37 = LCL_VAR byref V00 RetBuf | |
N003 ( 3, 2) [000035] ------------ t35 = LCL_VAR simd16 V03 loc1 | |
/--* t37 byref | |
+--* t35 simd16 | |
[000048] -A-XG------- * STOREIND simd16 | |
N001 ( 0, 0) [000041] ------------ RETURN void | |
------------ BB03 [023..031) (return), preds={BB01} succs={} | |
( 27, 17) [000023] ------------ IL_OFFSET void IL offset: 0x23 | |
N003 ( 3, 2) [000016] -------N---- t16 = LCL_VAR_ADDR byref V02 loc0 | |
N008 ( 3, 2) [000021] ------------ t21 = LCL_VAR byref V00 RetBuf | |
N009 ( 4, 5) [000013] ------------ t13 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t16 byref arg2 on STK | |
+--* t21 byref arg0 in ecx | |
+--* t13 ushort arg1 in edx | |
N012 ( 27, 17) [000018] S-CXG------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
N001 ( 0, 0) [000024] ------------ RETURN void | |
------------------------------------------------------------------------------------------------------------------- | |
No addressing mode: | |
N001 ( 3, 2) [000037] ------------ * LCL_VAR byref V00 RetBuf | |
Lower of StoreInd didn't mark the node as self contained for reason: 4 | |
N001 ( 3, 2) [000037] ------------ t37 = LCL_VAR byref V00 RetBuf | |
N003 ( 3, 2) [000035] ------------ t35 = LCL_VAR simd16 V03 loc1 | |
/--* t37 byref | |
+--* t35 simd16 | |
[000048] -A-XG------- * STOREIND simd16 | |
lowering GT_RETURN | |
N001 ( 0, 0) [000041] ------------ * RETURN void | |
============lowering call (before): | |
N003 ( 3, 2) [000016] -------N---- t16 = LCL_VAR_ADDR byref V02 loc0 | |
N008 ( 3, 2) [000021] ------------ t21 = LCL_VAR byref V00 RetBuf | |
N009 ( 4, 5) [000013] ------------ t13 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t16 byref arg2 on STK | |
+--* t21 byref arg0 in ecx | |
+--* t13 ushort arg1 in edx | |
N012 ( 27, 17) [000018] S-CXG------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
objp: | |
====== | |
args: | |
====== | |
lowering arg : N001 ( 0, 0) [000044] ----------L- * ARGPLACE byref | |
lowering arg : N002 ( 0, 0) [000046] ----------L- * ARGPLACE ushort | |
lowering arg : N003 ( 3, 2) [000016] -------N---- * LCL_VAR_ADDR byref V02 loc0 | |
new node is : [000049] ------------ * PUTARG_STK [+0x00] void (1 slots) | |
late: | |
====== | |
lowering arg : N008 ( 3, 2) [000021] ------------ * LCL_VAR byref V00 RetBuf | |
new node is : [000050] ------------ * PUTARG_REG byref REG ecx | |
lowering arg : N009 ( 4, 5) [000013] ------------ * LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
new node is : [000051] ------------ * PUTARG_REG int REG edx | |
lowering call (after): | |
N003 ( 3, 2) [000016] -------N---- t16 = LCL_VAR_ADDR byref V02 loc0 | |
/--* t16 byref | |
[000049] ------------ * PUTARG_STK [+0x00] void (1 slots) | |
N008 ( 3, 2) [000021] ------------ t21 = LCL_VAR byref V00 RetBuf | |
/--* t21 byref | |
[000050] ------------ t50 = * PUTARG_REG byref REG ecx | |
N009 ( 4, 5) [000013] ------------ t13 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t13 ushort | |
[000051] ------------ t51 = * PUTARG_REG int REG edx | |
/--* t50 byref arg0 in ecx | |
+--* t51 int arg1 in edx | |
N012 ( 27, 17) [000018] S-CXG------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
lowering GT_RETURN | |
N001 ( 0, 0) [000024] ------------ * RETURN void | |
============Lower has completed modifying nodes. | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target LIR | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i LIR | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe LIR | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
------------ BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
( 9, 10) [000006] ------------ IL_OFFSET void IL offset: 0x0 | |
N001 ( 3, 2) [000003] ------------ t3 = LCL_VAR int V01 arg0 | |
/--* t3 int | |
N002 ( 4, 4) [000043] ------------ t43 = * CAST int <- ushort <- int | |
/--* t43 int | |
N004 ( 9, 10) [000005] DA--G------- * STORE_LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
( 5, 5) [000011] ------------ IL_OFFSET void IL offset: 0x8 | |
N001 ( 1, 1) [000008] ------------ t8 = CNS_INT int 0 | |
N002 ( 1, 1) [000007] -c---------- t7 = CNS_INT int 1 | |
/--* t8 int | |
+--* t7 int | |
N003 ( 3, 3) [000009] J------N---- * EQ void | |
N004 ( 5, 5) [000010] ------------ * JTRUE void | |
------------ BB02 [00F..023) (return), preds={BB01} succs={} | |
( 9, 9) [000034] ------------ IL_OFFSET void IL offset: 0xf | |
N001 ( 4, 5) [000027] -c---------- t27 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t27 ushort | |
N002 ( 5, 6) [000030] ----G------- t30 = * HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
/--* t30 simd16 | |
N004 ( 9, 9) [000033] DA--G------- * STORE_LCL_VAR simd16 V03 loc1 | |
( 10, 7) [000040] ------------ IL_OFFSET void IL offset: 0x1b | |
N001 ( 3, 2) [000037] ------------ t37 = LCL_VAR byref V00 RetBuf | |
N003 ( 3, 2) [000035] ------------ t35 = LCL_VAR simd16 V03 loc1 | |
/--* t37 byref | |
+--* t35 simd16 | |
[000048] -A-XG------- * STOREIND simd16 | |
N001 ( 0, 0) [000041] ------------ RETURN void | |
------------ BB03 [023..031) (return), preds={BB01} succs={} | |
( 27, 17) [000023] ------------ IL_OFFSET void IL offset: 0x23 | |
N003 ( 3, 2) [000016] -------N---- t16 = LCL_VAR_ADDR byref V02 loc0 | |
/--* t16 byref | |
[000049] ------------ * PUTARG_STK [+0x00] void (1 slots) | |
N008 ( 3, 2) [000021] ------------ t21 = LCL_VAR byref V00 RetBuf | |
/--* t21 byref | |
[000050] ------------ t50 = * PUTARG_REG byref REG ecx | |
N009 ( 4, 5) [000013] ------------ t13 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t13 ushort | |
[000051] ------------ t51 = * PUTARG_REG int REG edx | |
/--* t50 byref arg0 in ecx | |
+--* t51 int arg1 in edx | |
N012 ( 27, 17) [000018] S-CXG------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
N001 ( 0, 0) [000024] ------------ RETURN void | |
------------------------------------------------------------------------------------------------------------------- | |
*** lvaComputeRefCounts *** | |
*************** In fgLocalVarLiveness() | |
; Initial local variable assignments | |
; | |
; V00 RetBuf byref | |
; V01 arg0 ushort | |
; V02 loc0 struct ( 4) do-not-enreg[XSF] addr-exposed ld-addr-op | |
; V03 loc1 simd16 do-not-enreg[SB] ld-addr-op | |
In fgLocalVarLivenessInit | |
*************** In fgPerBlockLocalVarLiveness() | |
*************** In fgInterBlockLocalVarLiveness() | |
*** lvaComputeRefCounts *** | |
Liveness pass finished after lowering, IR: | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target LIR | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i LIR | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe LIR | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
------------ BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
( 9, 10) [000006] ------------ IL_OFFSET void IL offset: 0x0 | |
N001 ( 3, 2) [000003] ------------ t3 = LCL_VAR int V01 arg0 | |
/--* t3 int | |
N002 ( 4, 4) [000043] ------------ t43 = * CAST int <- ushort <- int | |
/--* t43 int | |
N004 ( 9, 10) [000005] DA--G------- * STORE_LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
( 5, 5) [000011] ------------ IL_OFFSET void IL offset: 0x8 | |
N001 ( 1, 1) [000008] ------------ t8 = CNS_INT int 0 | |
N002 ( 1, 1) [000007] -c---------- t7 = CNS_INT int 1 | |
/--* t8 int | |
+--* t7 int | |
N003 ( 3, 3) [000009] J------N---- * EQ void | |
N004 ( 5, 5) [000010] ------------ * JTRUE void | |
------------ BB02 [00F..023) (return), preds={BB01} succs={} | |
( 9, 9) [000034] ------------ IL_OFFSET void IL offset: 0xf | |
N001 ( 4, 5) [000027] -c---------- t27 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t27 ushort | |
N002 ( 5, 6) [000030] ----G------- t30 = * HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
/--* t30 simd16 | |
N004 ( 9, 9) [000033] DA--G------- * STORE_LCL_VAR simd16 V03 loc1 | |
( 10, 7) [000040] ------------ IL_OFFSET void IL offset: 0x1b | |
N001 ( 3, 2) [000037] ------------ t37 = LCL_VAR byref V00 RetBuf | |
N003 ( 3, 2) [000035] ------------ t35 = LCL_VAR simd16 V03 loc1 | |
/--* t37 byref | |
+--* t35 simd16 | |
[000048] -A-XG------- * STOREIND simd16 | |
N001 ( 0, 0) [000041] ------------ RETURN void | |
------------ BB03 [023..031) (return), preds={BB01} succs={} | |
( 27, 17) [000023] ------------ IL_OFFSET void IL offset: 0x23 | |
N003 ( 3, 2) [000016] -------N---- t16 = LCL_VAR_ADDR byref V02 loc0 | |
/--* t16 byref | |
[000049] ------------ * PUTARG_STK [+0x00] void (1 slots) | |
N008 ( 3, 2) [000021] ------------ t21 = LCL_VAR byref V00 RetBuf | |
/--* t21 byref | |
[000050] ------------ t50 = * PUTARG_REG byref REG ecx | |
N009 ( 4, 5) [000013] ------------ t13 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t13 ushort | |
[000051] ------------ t51 = * PUTARG_REG int REG edx | |
/--* t50 byref arg0 in ecx | |
+--* t51 int arg1 in edx | |
N012 ( 27, 17) [000018] S-CXG------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
N001 ( 0, 0) [000024] ------------ RETURN void | |
------------------------------------------------------------------------------------------------------------------- | |
*************** Exiting Lowering | |
Trees after Lowering | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target LIR | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i LIR | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe LIR | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
------------ BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
( 9, 10) [000006] ------------ IL_OFFSET void IL offset: 0x0 | |
N001 ( 3, 2) [000003] ------------ t3 = LCL_VAR int V01 arg0 | |
/--* t3 int | |
N002 ( 4, 4) [000043] ------------ t43 = * CAST int <- ushort <- int | |
/--* t43 int | |
N004 ( 9, 10) [000005] DA--G------- * STORE_LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
( 5, 5) [000011] ------------ IL_OFFSET void IL offset: 0x8 | |
N001 ( 1, 1) [000008] ------------ t8 = CNS_INT int 0 | |
N002 ( 1, 1) [000007] -c---------- t7 = CNS_INT int 1 | |
/--* t8 int | |
+--* t7 int | |
N003 ( 3, 3) [000009] J------N---- * EQ void | |
N004 ( 5, 5) [000010] ------------ * JTRUE void | |
------------ BB02 [00F..023) (return), preds={BB01} succs={} | |
( 9, 9) [000034] ------------ IL_OFFSET void IL offset: 0xf | |
N001 ( 4, 5) [000027] -c---------- t27 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t27 ushort | |
N002 ( 5, 6) [000030] ----G------- t30 = * HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
/--* t30 simd16 | |
N004 ( 9, 9) [000033] DA--G------- * STORE_LCL_VAR simd16 V03 loc1 | |
( 10, 7) [000040] ------------ IL_OFFSET void IL offset: 0x1b | |
N001 ( 3, 2) [000037] ------------ t37 = LCL_VAR byref V00 RetBuf | |
N003 ( 3, 2) [000035] ------------ t35 = LCL_VAR simd16 V03 loc1 | |
/--* t37 byref | |
+--* t35 simd16 | |
[000048] -A-XG------- * STOREIND simd16 | |
N001 ( 0, 0) [000041] ------------ RETURN void | |
------------ BB03 [023..031) (return), preds={BB01} succs={} | |
( 27, 17) [000023] ------------ IL_OFFSET void IL offset: 0x23 | |
N003 ( 3, 2) [000016] -------N---- t16 = LCL_VAR_ADDR byref V02 loc0 | |
/--* t16 byref | |
[000049] ------------ * PUTARG_STK [+0x00] void (1 slots) | |
N008 ( 3, 2) [000021] ------------ t21 = LCL_VAR byref V00 RetBuf | |
/--* t21 byref | |
[000050] ------------ t50 = * PUTARG_REG byref REG ecx | |
N009 ( 4, 5) [000013] ------------ t13 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t13 ushort | |
[000051] ------------ t51 = * PUTARG_REG int REG edx | |
/--* t50 byref arg0 in ecx | |
+--* t51 int arg1 in edx | |
N012 ( 27, 17) [000018] S-CXG------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
N001 ( 0, 0) [000024] ------------ RETURN void | |
------------------------------------------------------------------------------------------------------------------- | |
*************** In fgDebugCheckBBlist | |
*************** In StackLevelSetter | |
Trees before StackLevelSetter | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target LIR | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i LIR | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe LIR | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
------------ BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
( 9, 10) [000006] ------------ IL_OFFSET void IL offset: 0x0 | |
N001 ( 3, 2) [000003] ------------ t3 = LCL_VAR int V01 arg0 | |
/--* t3 int | |
N002 ( 4, 4) [000043] ------------ t43 = * CAST int <- ushort <- int | |
/--* t43 int | |
N004 ( 9, 10) [000005] DA--G------- * STORE_LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
( 5, 5) [000011] ------------ IL_OFFSET void IL offset: 0x8 | |
N001 ( 1, 1) [000008] ------------ t8 = CNS_INT int 0 | |
N002 ( 1, 1) [000007] -c---------- t7 = CNS_INT int 1 | |
/--* t8 int | |
+--* t7 int | |
N003 ( 3, 3) [000009] J------N---- * EQ void | |
N004 ( 5, 5) [000010] ------------ * JTRUE void | |
------------ BB02 [00F..023) (return), preds={BB01} succs={} | |
( 9, 9) [000034] ------------ IL_OFFSET void IL offset: 0xf | |
N001 ( 4, 5) [000027] -c---------- t27 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t27 ushort | |
N002 ( 5, 6) [000030] ----G------- t30 = * HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
/--* t30 simd16 | |
N004 ( 9, 9) [000033] DA--G------- * STORE_LCL_VAR simd16 V03 loc1 | |
( 10, 7) [000040] ------------ IL_OFFSET void IL offset: 0x1b | |
N001 ( 3, 2) [000037] ------------ t37 = LCL_VAR byref V00 RetBuf | |
N003 ( 3, 2) [000035] ------------ t35 = LCL_VAR simd16 V03 loc1 | |
/--* t37 byref | |
+--* t35 simd16 | |
[000048] -A-XG------- * STOREIND simd16 | |
N001 ( 0, 0) [000041] ------------ RETURN void | |
------------ BB03 [023..031) (return), preds={BB01} succs={} | |
( 27, 17) [000023] ------------ IL_OFFSET void IL offset: 0x23 | |
N003 ( 3, 2) [000016] -------N---- t16 = LCL_VAR_ADDR byref V02 loc0 | |
/--* t16 byref | |
[000049] ------------ * PUTARG_STK [+0x00] void (1 slots) | |
N008 ( 3, 2) [000021] ------------ t21 = LCL_VAR byref V00 RetBuf | |
/--* t21 byref | |
[000050] ------------ t50 = * PUTARG_REG byref REG ecx | |
N009 ( 4, 5) [000013] ------------ t13 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t13 ushort | |
[000051] ------------ t51 = * PUTARG_REG int REG edx | |
/--* t50 byref arg0 in ecx | |
+--* t51 int arg1 in edx | |
N012 ( 27, 17) [000018] S-CXG------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
N001 ( 0, 0) [000024] ------------ RETURN void | |
------------------------------------------------------------------------------------------------------------------- | |
*************** Exiting StackLevelSetter | |
Trees after StackLevelSetter | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target LIR | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i LIR | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe LIR | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
------------ BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
( 9, 10) [000006] ------------ IL_OFFSET void IL offset: 0x0 | |
N001 ( 3, 2) [000003] ------------ t3 = LCL_VAR int V01 arg0 | |
/--* t3 int | |
N002 ( 4, 4) [000043] ------------ t43 = * CAST int <- ushort <- int | |
/--* t43 int | |
N004 ( 9, 10) [000005] DA--G------- * STORE_LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
( 5, 5) [000011] ------------ IL_OFFSET void IL offset: 0x8 | |
N001 ( 1, 1) [000008] ------------ t8 = CNS_INT int 0 | |
N002 ( 1, 1) [000007] -c---------- t7 = CNS_INT int 1 | |
/--* t8 int | |
+--* t7 int | |
N003 ( 3, 3) [000009] J------N---- * EQ void | |
N004 ( 5, 5) [000010] ------------ * JTRUE void | |
------------ BB02 [00F..023) (return), preds={BB01} succs={} | |
( 9, 9) [000034] ------------ IL_OFFSET void IL offset: 0xf | |
N001 ( 4, 5) [000027] -c---------- t27 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t27 ushort | |
N002 ( 5, 6) [000030] ----G------- t30 = * HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 | |
/--* t30 simd16 | |
N004 ( 9, 9) [000033] DA--G------- * STORE_LCL_VAR simd16 V03 loc1 | |
( 10, 7) [000040] ------------ IL_OFFSET void IL offset: 0x1b | |
N001 ( 3, 2) [000037] ------------ t37 = LCL_VAR byref V00 RetBuf | |
N003 ( 3, 2) [000035] ------------ t35 = LCL_VAR simd16 V03 loc1 | |
/--* t37 byref | |
+--* t35 simd16 | |
[000048] -A-XG------- * STOREIND simd16 | |
N001 ( 0, 0) [000041] ------------ RETURN void | |
------------ BB03 [023..031) (return), preds={BB01} succs={} | |
( 27, 17) [000023] ------------ IL_OFFSET void IL offset: 0x23 | |
N003 ( 3, 2) [000016] -------N---- t16 = LCL_VAR_ADDR byref V02 loc0 | |
/--* t16 byref | |
[000049] ------------ * PUTARG_STK [+0x00] void (1 slots) | |
N008 ( 3, 2) [000021] ------------ t21 = LCL_VAR byref V00 RetBuf | |
/--* t21 byref | |
[000050] ------------ t50 = * PUTARG_REG byref REG ecx | |
N009 ( 4, 5) [000013] ------------ t13 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] | |
/--* t13 ushort | |
[000051] ------------ t51 = * PUTARG_REG int REG edx | |
/--* t50 byref arg0 in ecx | |
+--* t51 int arg1 in edx | |
N012 ( 27, 17) [000018] S-CXG------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
N001 ( 0, 0) [000024] ------------ RETURN void | |
------------------------------------------------------------------------------------------------------------------- | |
*************** In fgDebugCheckBBlist | |
Clearing modified regs. | |
buildIntervals ======== | |
----------------- | |
LIVENESS: | |
----------------- | |
BB01 use def in out | |
{} | |
{} | |
{} | |
{} | |
BB02 use def in out | |
{} | |
{} | |
{} | |
{} | |
BB03 use def in out | |
{} | |
{} | |
{} | |
{} | |
FP callee save candidate vars: None | |
floatVarCount = 0; hasLoops = 0, singleExit = 1 | |
; Decided to create an EBP based frame for ETW stackwalking (Debug Code) | |
TUPLE STYLE DUMP BEFORE LSRA | |
LSRA Block Sequence: BB01( 1 ) BB02( 1 ) BB03( 1 ) | |
BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
===== | |
N000. IL_OFFSET IL offset: 0x0 | |
N001. t3 = V01 MEM | |
N002. t43 = CAST ; t3 | |
N004. V02 MEM; t43 | |
N000. IL_OFFSET IL offset: 0x8 | |
N001. t8 = CNS_INT 0 | |
N002. CNS_INT 1 | |
N003. EQ ; t8 | |
N004. JTRUE | |
BB02 [00F..023) (return), preds={BB01} succs={} | |
===== | |
N000. IL_OFFSET IL offset: 0xf | |
N001. V02 MEM | |
N002. t30 = HWIntrinsic | |
N004. V03 MEM; t30 | |
N000. IL_OFFSET IL offset: 0x1b | |
N001. t37 = V00 MEM | |
N003. t35 = V03 MEM | |
N000. STOREIND ; t37,t35 | |
N001. RETURN | |
BB03 [023..031) (return), preds={BB01} succs={} | |
===== | |
N000. IL_OFFSET IL offset: 0x23 | |
N003. t16 = LCL_VAR_ADDR V02 loc0 | |
N000. PUTARG_STK [+0x00]; t16 | |
N008. t21 = V00 MEM | |
N000. t50 = PUTARG_REG; t21 | |
N009. t13 = V02 MEM | |
N000. t51 = PUTARG_REG; t13 | |
N012. CALL ; t50,t51 | |
N001. RETURN | |
buildIntervals second part ======== | |
Int arg V00 in reg ecx | |
Int arg V01 in reg edx | |
NEW BLOCK BB01 | |
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1> | |
DefList: { } | |
N002 ( 9, 10) [000006] ------------ * IL_OFFSET void IL offset: 0x0 REG NA | |
+<TreeNodeInfo 0=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=0 | |
DefList: { } | |
N004 ( 3, 2) [000003] ------------ * LCL_VAR int V01 arg0 NA REG NA | |
Interval 0: RefPositions {} physReg:NA Preferences=[allInt] | |
<RefPosition #1 @5 RefTypeDef <Ivl:0> LCL_VAR BB01 regmask=[allInt] minReg=1> | |
+<TreeNodeInfo 1=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=1 | |
DefList: { N004.t3. LCL_VAR } | |
N006 ( 4, 4) [000043] ------------ * CAST int <- ushort <- int REG NA | |
<RefPosition #2 @6 RefTypeUse <Ivl:0> BB01 regmask=[allInt] minReg=1 last> | |
Interval 1: RefPositions {} physReg:NA Preferences=[allInt] | |
<RefPosition #3 @7 RefTypeDef <Ivl:1> CAST BB01 regmask=[allInt] minReg=1> | |
+<TreeNodeInfo 1=1 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 1 produce=1 | |
DefList: { N006.t43. CAST } | |
N008 ( 9, 10) [000005] DA--G------- * STORE_LCL_FLD ushort V02 loc0 [+0] Fseq[value] NA REG NA | |
<RefPosition #4 @8 RefTypeUse <Ivl:1> BB01 regmask=[allInt] minReg=1 last> | |
+<TreeNodeInfo 0=1 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 1 produce=0 | |
DefList: { } | |
N010 ( 5, 5) [000011] ------------ * IL_OFFSET void IL offset: 0x8 REG NA | |
+<TreeNodeInfo 0=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=0 | |
DefList: { } | |
N012 ( 1, 1) [000008] ------------ * CNS_INT int 0 REG NA | |
Interval 2: RefPositions {} physReg:NA Preferences=[allInt] | |
<RefPosition #5 @13 RefTypeDef <Ivl:2> CNS_INT BB01 regmask=[allInt] minReg=1> | |
+<TreeNodeInfo 1=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[-O] | |
consume= 0 produce=1 | |
DefList: { N012.t8. CNS_INT } | |
N014 ( 1, 1) [000007] -c---------- * CNS_INT int 1 REG NA | |
Contained | |
DefList: { N012.t8. CNS_INT } | |
N016 ( 3, 3) [000009] J------N---- * EQ void REG NA | |
<RefPosition #6 @16 RefTypeUse <Ivl:2> BB01 regmask=[allInt] minReg=1 last> | |
+<TreeNodeInfo 0=1 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 1 produce=0 | |
DefList: { } | |
N018 ( 5, 5) [000010] ------------ * JTRUE void REG NA | |
+<TreeNodeInfo 0=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=0 | |
NEW BLOCK BB02 | |
Setting BB02 as the predecessor for determining incoming variable registers of BB01 | |
<RefPosition #7 @20 RefTypeBB BB02 regmask=[] minReg=1> | |
DefList: { } | |
N022 ( 9, 9) [000034] ------------ * IL_OFFSET void IL offset: 0xf REG NA | |
+<TreeNodeInfo 0=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=0 | |
DefList: { } | |
N024 ( 4, 5) [000027] -c---------- * LCL_FLD ushort V02 loc0 [+0] Fseq[value] NA REG NA | |
Contained | |
DefList: { } | |
N026 ( 5, 6) [000030] ----G------- * HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 REG NA | |
Interval 3: RefPositions {} physReg:NA Preferences=[allFloat] | |
<RefPosition #8 @27 RefTypeDef <Ivl:3> HWIntrinsic BB02 regmask=[allFloat] minReg=1> | |
+<TreeNodeInfo 1=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=1 | |
DefList: { N026.t30. HWIntrinsic } | |
N028 ( 9, 9) [000033] DA--G------- * STORE_LCL_VAR simd16 V03 loc1 NA REG NA | |
<RefPosition #9 @28 RefTypeUse <Ivl:3> BB02 regmask=[allFloat] minReg=1 last> | |
+<TreeNodeInfo 0=1 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 1 produce=0 | |
DefList: { } | |
N030 ( 10, 7) [000040] ------------ * IL_OFFSET void IL offset: 0x1b REG NA | |
+<TreeNodeInfo 0=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=0 | |
DefList: { } | |
N032 ( 3, 2) [000037] ------------ * LCL_VAR byref V00 RetBuf NA REG NA | |
Interval 4: RefPositions {} physReg:NA Preferences=[allInt] | |
<RefPosition #10 @33 RefTypeDef <Ivl:4> LCL_VAR BB02 regmask=[allInt] minReg=1> | |
+<TreeNodeInfo 1=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=1 | |
DefList: { N032.t37. LCL_VAR } | |
N034 ( 3, 2) [000035] ------------ * LCL_VAR simd16 V03 loc1 NA REG NA | |
Interval 5: RefPositions {} physReg:NA Preferences=[allFloat] | |
<RefPosition #11 @35 RefTypeDef <Ivl:5> LCL_VAR BB02 regmask=[allFloat] minReg=1> | |
+<TreeNodeInfo 1=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=1 | |
DefList: { N032.t37. LCL_VAR; N034.t35. LCL_VAR } | |
N036 (???,???) [000048] -A-XG------- * STOREIND simd16 REG NA | |
<RefPosition #12 @36 RefTypeUse <Ivl:4> BB02 regmask=[allInt] minReg=1 last> | |
<RefPosition #13 @36 RefTypeUse <Ivl:5> BB02 regmask=[allFloat] minReg=1 last> | |
+<TreeNodeInfo 0=2 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 2 produce=0 | |
DefList: { } | |
N038 ( 0, 0) [000041] ------------ * RETURN void REG NA | |
+<TreeNodeInfo 0=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=0 | |
NEW BLOCK BB03 | |
Setting BB03 as the predecessor for determining incoming variable registers of BB01 | |
<RefPosition #14 @40 RefTypeBB BB03 regmask=[] minReg=1> | |
DefList: { } | |
N042 ( 27, 17) [000023] ------------ * IL_OFFSET void IL offset: 0x23 REG NA | |
+<TreeNodeInfo 0=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=0 | |
DefList: { } | |
N044 ( 3, 2) [000016] -------N---- * LCL_VAR_ADDR byref V02 loc0 NA REG NA | |
Interval 6: RefPositions {} physReg:NA Preferences=[allInt] | |
<RefPosition #15 @45 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB03 regmask=[allInt] minReg=1> | |
+<TreeNodeInfo 1=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=1 | |
DefList: { N044.t16. LCL_VAR_ADDR } | |
N046 (???,???) [000049] ------------ * PUTARG_STK [+0x00] void (1 slots) REG NA | |
<RefPosition #16 @46 RefTypeUse <Ivl:6> BB03 regmask=[allInt] minReg=1 last> | |
+<TreeNodeInfo 0=1 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 1 produce=0 | |
DefList: { } | |
N048 ( 3, 2) [000021] ------------ * LCL_VAR byref V00 RetBuf NA REG NA | |
Interval 7: RefPositions {} physReg:NA Preferences=[allInt] | |
<RefPosition #17 @49 RefTypeDef <Ivl:7> LCL_VAR BB03 regmask=[allInt] minReg=1> | |
+<TreeNodeInfo 1=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=1 | |
DefList: { N048.t21. LCL_VAR } | |
N050 (???,???) [000050] ------------ * PUTARG_REG byref REG ecx | |
<RefPosition #18 @50 RefTypeFixedReg <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #19 @50 RefTypeUse <Ivl:7> BB03 regmask=[ecx] minReg=1 last fixed> | |
Interval 8: RefPositions {} physReg:NA Preferences=[allInt] | |
<RefPosition #20 @51 RefTypeFixedReg <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #21 @51 RefTypeDef <Ivl:8> PUTARG_REG BB03 regmask=[ecx] minReg=1 fixed> | |
+<TreeNodeInfo 1=1 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 1 produce=1 | |
DefList: { N050.t50. PUTARG_REG } | |
N052 ( 4, 5) [000013] ------------ * LCL_FLD ushort V02 loc0 [+0] Fseq[value] NA REG NA | |
Interval 9: RefPositions {} physReg:NA Preferences=[allInt] | |
<RefPosition #22 @53 RefTypeDef <Ivl:9> LCL_FLD BB03 regmask=[allInt] minReg=1> | |
+<TreeNodeInfo 1=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=1 | |
DefList: { N050.t50. PUTARG_REG; N052.t13. LCL_FLD } | |
N054 (???,???) [000051] ------------ * PUTARG_REG int REG edx | |
<RefPosition #23 @54 RefTypeFixedReg <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #24 @54 RefTypeUse <Ivl:9> BB03 regmask=[edx] minReg=1 last fixed> | |
Interval 10: RefPositions {} physReg:NA Preferences=[allInt] | |
<RefPosition #25 @55 RefTypeFixedReg <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #26 @55 RefTypeDef <Ivl:10> PUTARG_REG BB03 regmask=[edx] minReg=1 fixed> | |
+<TreeNodeInfo 1=1 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 1 produce=1 | |
DefList: { N050.t50. PUTARG_REG; N054.t51. PUTARG_REG } | |
N056 ( 27, 17) [000018] S-CXG------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
<RefPosition #27 @56 RefTypeFixedReg <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #28 @56 RefTypeUse <Ivl:8> BB03 regmask=[ecx] minReg=1 last fixed> | |
<RefPosition #29 @56 RefTypeFixedReg <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #30 @56 RefTypeUse <Ivl:10> BB03 regmask=[edx] minReg=1 last fixed> | |
<RefPosition #31 @57 RefTypeKill <Reg:eax> BB03 regmask=[eax] minReg=1> | |
<RefPosition #32 @57 RefTypeKill <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #33 @57 RefTypeKill <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #34 @57 RefTypeKill <Reg:mm0> BB03 regmask=[mm0] minReg=1> | |
<RefPosition #35 @57 RefTypeKill <Reg:mm1> BB03 regmask=[mm1] minReg=1> | |
<RefPosition #36 @57 RefTypeKill <Reg:mm2> BB03 regmask=[mm2] minReg=1> | |
<RefPosition #37 @57 RefTypeKill <Reg:mm3> BB03 regmask=[mm3] minReg=1> | |
<RefPosition #38 @57 RefTypeKill <Reg:mm4> BB03 regmask=[mm4] minReg=1> | |
<RefPosition #39 @57 RefTypeKill <Reg:mm5> BB03 regmask=[mm5] minReg=1> | |
<RefPosition #40 @57 RefTypeKill <Reg:mm6> BB03 regmask=[mm6] minReg=1> | |
<RefPosition #41 @57 RefTypeKill <Reg:mm7> BB03 regmask=[mm7] minReg=1> | |
+<TreeNodeInfo 0=2 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 2 produce=0 | |
DefList: { } | |
N058 ( 0, 0) [000024] ------------ * RETURN void REG NA | |
+<TreeNodeInfo 0=0 0i 0f src=[allInt] int=[allInt] dst=[allInt] I>[--] | |
consume= 0 produce=0 | |
Linear scan intervals BEFORE VALIDATING INTERVALS: | |
Interval 0: RefPositions {#1@5 #2@6} physReg:NA Preferences=[allInt] | |
Interval 1: RefPositions {#3@7 #4@8} physReg:NA Preferences=[allInt] | |
Interval 2: (constant) RefPositions {#5@13 #6@16} physReg:NA Preferences=[allInt] | |
Interval 3: RefPositions {#8@27 #9@28} physReg:NA Preferences=[allFloat] | |
Interval 4: RefPositions {#10@33 #12@36} physReg:NA Preferences=[allInt] | |
Interval 5: RefPositions {#11@35 #13@36} physReg:NA Preferences=[allFloat] | |
Interval 6: RefPositions {#15@45 #16@46} physReg:NA Preferences=[allInt] | |
Interval 7: RefPositions {#17@49 #19@50} physReg:NA Preferences=[ecx] | |
Interval 8: RefPositions {#21@51 #28@56} physReg:NA Preferences=[ecx] | |
Interval 9: RefPositions {#22@53 #24@54} physReg:NA Preferences=[edx] | |
Interval 10: RefPositions {#26@55 #30@56} physReg:NA Preferences=[edx] | |
------------ | |
REFPOSITIONS BEFORE VALIDATING INTERVALS: | |
------------ | |
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1> | |
<RefPosition #1 @5 RefTypeDef <Ivl:0> LCL_VAR BB01 regmask=[allInt] minReg=1> | |
<RefPosition #2 @6 RefTypeUse <Ivl:0> BB01 regmask=[allInt] minReg=1 last> | |
<RefPosition #3 @7 RefTypeDef <Ivl:1> CAST BB01 regmask=[allInt] minReg=1> | |
<RefPosition #4 @8 RefTypeUse <Ivl:1> BB01 regmask=[allInt] minReg=1 last> | |
<RefPosition #5 @13 RefTypeDef <Ivl:2> CNS_INT BB01 regmask=[allInt] minReg=1> | |
<RefPosition #6 @16 RefTypeUse <Ivl:2> BB01 regmask=[allInt] minReg=1 last regOptional> | |
<RefPosition #7 @20 RefTypeBB BB02 regmask=[] minReg=1> | |
<RefPosition #8 @27 RefTypeDef <Ivl:3> HWIntrinsic BB02 regmask=[allFloat] minReg=1> | |
<RefPosition #9 @28 RefTypeUse <Ivl:3> BB02 regmask=[allFloat] minReg=1 last> | |
<RefPosition #10 @33 RefTypeDef <Ivl:4> LCL_VAR BB02 regmask=[allInt] minReg=1> | |
<RefPosition #11 @35 RefTypeDef <Ivl:5> LCL_VAR BB02 regmask=[allFloat] minReg=1> | |
<RefPosition #12 @36 RefTypeUse <Ivl:4> BB02 regmask=[allInt] minReg=1 last> | |
<RefPosition #13 @36 RefTypeUse <Ivl:5> BB02 regmask=[allFloat] minReg=1 last> | |
<RefPosition #14 @40 RefTypeBB BB03 regmask=[] minReg=1> | |
<RefPosition #15 @45 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB03 regmask=[allInt] minReg=1> | |
<RefPosition #16 @46 RefTypeUse <Ivl:6> BB03 regmask=[allInt] minReg=1 last> | |
<RefPosition #17 @49 RefTypeDef <Ivl:7> LCL_VAR BB03 regmask=[ecx] minReg=1> | |
<RefPosition #18 @50 RefTypeFixedReg <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #19 @50 RefTypeUse <Ivl:7> BB03 regmask=[ecx] minReg=1 last fixed> | |
<RefPosition #20 @51 RefTypeFixedReg <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #21 @51 RefTypeDef <Ivl:8> PUTARG_REG BB03 regmask=[ecx] minReg=1 fixed> | |
<RefPosition #22 @53 RefTypeDef <Ivl:9> LCL_FLD BB03 regmask=[edx] minReg=1> | |
<RefPosition #23 @54 RefTypeFixedReg <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #24 @54 RefTypeUse <Ivl:9> BB03 regmask=[edx] minReg=1 last fixed> | |
<RefPosition #25 @55 RefTypeFixedReg <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #26 @55 RefTypeDef <Ivl:10> PUTARG_REG BB03 regmask=[edx] minReg=1 fixed> | |
<RefPosition #27 @56 RefTypeFixedReg <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #28 @56 RefTypeUse <Ivl:8> BB03 regmask=[ecx] minReg=1 last fixed> | |
<RefPosition #29 @56 RefTypeFixedReg <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #30 @56 RefTypeUse <Ivl:10> BB03 regmask=[edx] minReg=1 last fixed> | |
<RefPosition #31 @57 RefTypeKill <Reg:eax> BB03 regmask=[eax] minReg=1 last> | |
<RefPosition #32 @57 RefTypeKill <Reg:ecx> BB03 regmask=[ecx] minReg=1 last> | |
<RefPosition #33 @57 RefTypeKill <Reg:edx> BB03 regmask=[edx] minReg=1 last> | |
<RefPosition #34 @57 RefTypeKill <Reg:mm0> BB03 regmask=[mm0] minReg=1 last> | |
<RefPosition #35 @57 RefTypeKill <Reg:mm1> BB03 regmask=[mm1] minReg=1 last> | |
<RefPosition #36 @57 RefTypeKill <Reg:mm2> BB03 regmask=[mm2] minReg=1 last> | |
<RefPosition #37 @57 RefTypeKill <Reg:mm3> BB03 regmask=[mm3] minReg=1 last> | |
<RefPosition #38 @57 RefTypeKill <Reg:mm4> BB03 regmask=[mm4] minReg=1 last> | |
<RefPosition #39 @57 RefTypeKill <Reg:mm5> BB03 regmask=[mm5] minReg=1 last> | |
<RefPosition #40 @57 RefTypeKill <Reg:mm6> BB03 regmask=[mm6] minReg=1 last> | |
<RefPosition #41 @57 RefTypeKill <Reg:mm7> BB03 regmask=[mm7] minReg=1 last> | |
TUPLE STYLE DUMP WITH REF POSITIONS | |
Incoming Parameters: | |
BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
===== | |
N002. IL_OFFSET IL offset: 0x0 REG NA | |
N004. V01 MEM | |
Def:<I0>(#1) | |
N006. CAST | |
Use:<I0>(#2) * | |
Def:<I1>(#3) | |
N008. V02 MEM | |
Use:<I1>(#4) * | |
N010. IL_OFFSET IL offset: 0x8 REG NA | |
N012. CNS_INT 0 REG NA | |
Def:<I2>(#5) | |
N014. CNS_INT 1 REG NA | |
N016. EQ | |
Use:<I2>(#6) * | |
N018. JTRUE | |
BB02 [00F..023) (return), preds={BB01} succs={} | |
===== | |
N022. IL_OFFSET IL offset: 0xf REG NA | |
N024. V02 MEM | |
N026. HWIntrinsic | |
Def:<I3>(#8) | |
N028. V03 MEM | |
Use:<I3>(#9) * | |
N030. IL_OFFSET IL offset: 0x1b REG NA | |
N032. V00 MEM | |
Def:<I4>(#10) | |
N034. V03 MEM | |
Def:<I5>(#11) | |
N036. STOREIND | |
Use:<I4>(#12) * | |
Use:<I5>(#13) * | |
N038. RETURN | |
BB03 [023..031) (return), preds={BB01} succs={} | |
===== | |
N042. IL_OFFSET IL offset: 0x23 REG NA | |
N044. LCL_VAR_ADDR V02 loc0 NA REG NA | |
Def:<I6>(#15) | |
N046. PUTARG_STK [+0x00] | |
Use:<I6>(#16) * | |
N048. V00 MEM | |
Def:<I7>(#17) | |
N050. PUTARG_REG | |
Use:<I7>(#19) Fixed:ecx(#18) * | |
Def:<I8>(#21) ecx | |
N052. V02 MEM | |
Def:<I9>(#22) | |
N054. PUTARG_REG | |
Use:<I9>(#24) Fixed:edx(#23) * | |
Def:<I10>(#26) edx | |
N056. CALL | |
Use:<I8>(#28) Fixed:ecx(#27) * | |
Use:<I10>(#30) Fixed:edx(#29) * | |
Kill: eax ecx edx mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 | |
N058. RETURN | |
Linear scan intervals after buildIntervals: | |
Interval 0: RefPositions {#1@5 #2@6} physReg:NA Preferences=[allInt] | |
Interval 1: RefPositions {#3@7 #4@8} physReg:NA Preferences=[allInt] | |
Interval 2: (constant) RefPositions {#5@13 #6@16} physReg:NA Preferences=[allInt] | |
Interval 3: RefPositions {#8@27 #9@28} physReg:NA Preferences=[allFloat] | |
Interval 4: RefPositions {#10@33 #12@36} physReg:NA Preferences=[allInt] | |
Interval 5: RefPositions {#11@35 #13@36} physReg:NA Preferences=[allFloat] | |
Interval 6: RefPositions {#15@45 #16@46} physReg:NA Preferences=[allInt] | |
Interval 7: RefPositions {#17@49 #19@50} physReg:NA Preferences=[ecx] | |
Interval 8: RefPositions {#21@51 #28@56} physReg:NA Preferences=[ecx] | |
Interval 9: RefPositions {#22@53 #24@54} physReg:NA Preferences=[edx] | |
Interval 10: RefPositions {#26@55 #30@56} physReg:NA Preferences=[edx] | |
*************** In LinearScan::allocateRegisters() | |
Linear scan intervals before allocateRegisters: | |
Interval 0: RefPositions {#1@5 #2@6} physReg:NA Preferences=[allInt] | |
Interval 1: RefPositions {#3@7 #4@8} physReg:NA Preferences=[allInt] | |
Interval 2: (constant) RefPositions {#5@13 #6@16} physReg:NA Preferences=[allInt] | |
Interval 3: RefPositions {#8@27 #9@28} physReg:NA Preferences=[allFloat] | |
Interval 4: RefPositions {#10@33 #12@36} physReg:NA Preferences=[allInt] | |
Interval 5: RefPositions {#11@35 #13@36} physReg:NA Preferences=[allFloat] | |
Interval 6: RefPositions {#15@45 #16@46} physReg:NA Preferences=[allInt] | |
Interval 7: RefPositions {#17@49 #19@50} physReg:NA Preferences=[ecx] | |
Interval 8: RefPositions {#21@51 #28@56} physReg:NA Preferences=[ecx] | |
Interval 9: RefPositions {#22@53 #24@54} physReg:NA Preferences=[edx] | |
Interval 10: RefPositions {#26@55 #30@56} physReg:NA Preferences=[edx] | |
------------ | |
REFPOSITIONS BEFORE ALLOCATION: | |
------------ | |
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1> | |
<RefPosition #1 @5 RefTypeDef <Ivl:0> LCL_VAR BB01 regmask=[allInt] minReg=1> | |
<RefPosition #2 @6 RefTypeUse <Ivl:0> BB01 regmask=[allInt] minReg=1 last> | |
<RefPosition #3 @7 RefTypeDef <Ivl:1> CAST BB01 regmask=[allInt] minReg=1> | |
<RefPosition #4 @8 RefTypeUse <Ivl:1> BB01 regmask=[allInt] minReg=1 last> | |
<RefPosition #5 @13 RefTypeDef <Ivl:2> CNS_INT BB01 regmask=[allInt] minReg=1> | |
<RefPosition #6 @16 RefTypeUse <Ivl:2> BB01 regmask=[allInt] minReg=1 last regOptional> | |
<RefPosition #7 @20 RefTypeBB BB02 regmask=[] minReg=1> | |
<RefPosition #8 @27 RefTypeDef <Ivl:3> HWIntrinsic BB02 regmask=[allFloat] minReg=1> | |
<RefPosition #9 @28 RefTypeUse <Ivl:3> BB02 regmask=[allFloat] minReg=1 last> | |
<RefPosition #10 @33 RefTypeDef <Ivl:4> LCL_VAR BB02 regmask=[allInt] minReg=1> | |
<RefPosition #11 @35 RefTypeDef <Ivl:5> LCL_VAR BB02 regmask=[allFloat] minReg=1> | |
<RefPosition #12 @36 RefTypeUse <Ivl:4> BB02 regmask=[allInt] minReg=1 last> | |
<RefPosition #13 @36 RefTypeUse <Ivl:5> BB02 regmask=[allFloat] minReg=1 last> | |
<RefPosition #14 @40 RefTypeBB BB03 regmask=[] minReg=1> | |
<RefPosition #15 @45 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB03 regmask=[allInt] minReg=1> | |
<RefPosition #16 @46 RefTypeUse <Ivl:6> BB03 regmask=[allInt] minReg=1 last> | |
<RefPosition #17 @49 RefTypeDef <Ivl:7> LCL_VAR BB03 regmask=[ecx] minReg=1> | |
<RefPosition #18 @50 RefTypeFixedReg <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #19 @50 RefTypeUse <Ivl:7> BB03 regmask=[ecx] minReg=1 last fixed> | |
<RefPosition #20 @51 RefTypeFixedReg <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #21 @51 RefTypeDef <Ivl:8> PUTARG_REG BB03 regmask=[ecx] minReg=1 fixed> | |
<RefPosition #22 @53 RefTypeDef <Ivl:9> LCL_FLD BB03 regmask=[edx] minReg=1> | |
<RefPosition #23 @54 RefTypeFixedReg <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #24 @54 RefTypeUse <Ivl:9> BB03 regmask=[edx] minReg=1 last fixed> | |
<RefPosition #25 @55 RefTypeFixedReg <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #26 @55 RefTypeDef <Ivl:10> PUTARG_REG BB03 regmask=[edx] minReg=1 fixed> | |
<RefPosition #27 @56 RefTypeFixedReg <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #28 @56 RefTypeUse <Ivl:8> BB03 regmask=[ecx] minReg=1 last fixed> | |
<RefPosition #29 @56 RefTypeFixedReg <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #30 @56 RefTypeUse <Ivl:10> BB03 regmask=[edx] minReg=1 last fixed> | |
<RefPosition #31 @57 RefTypeKill <Reg:eax> BB03 regmask=[eax] minReg=1 last> | |
<RefPosition #32 @57 RefTypeKill <Reg:ecx> BB03 regmask=[ecx] minReg=1 last> | |
<RefPosition #33 @57 RefTypeKill <Reg:edx> BB03 regmask=[edx] minReg=1 last> | |
<RefPosition #34 @57 RefTypeKill <Reg:mm0> BB03 regmask=[mm0] minReg=1 last> | |
<RefPosition #35 @57 RefTypeKill <Reg:mm1> BB03 regmask=[mm1] minReg=1 last> | |
<RefPosition #36 @57 RefTypeKill <Reg:mm2> BB03 regmask=[mm2] minReg=1 last> | |
<RefPosition #37 @57 RefTypeKill <Reg:mm3> BB03 regmask=[mm3] minReg=1 last> | |
<RefPosition #38 @57 RefTypeKill <Reg:mm4> BB03 regmask=[mm4] minReg=1 last> | |
<RefPosition #39 @57 RefTypeKill <Reg:mm5> BB03 regmask=[mm5] minReg=1 last> | |
<RefPosition #40 @57 RefTypeKill <Reg:mm6> BB03 regmask=[mm6] minReg=1 last> | |
<RefPosition #41 @57 RefTypeKill <Reg:mm7> BB03 regmask=[mm7] minReg=1 last> | |
Allocating Registers | |
-------------------- | |
The following table has one or more rows for each RefPosition that is handled during allocation. | |
The first column provides the basic information about the RefPosition, with its type (e.g. Def, | |
Use, Fixd) followed by a '*' if it is a last use, and a 'D' if it is delayRegFree, and then the | |
action taken during allocation (e.g. Alloc a new register, or Keep an existing one). | |
The subsequent columns show the Interval occupying each register, if any, followed by 'a' if it is | |
active, and 'i'if it is inactive. Columns are only printed up to the last modifed register, which | |
may increase during allocation, in which case additional columns will appear. Registers which are | |
not marked modified have ---- in their column. | |
------------------------------+----+----+----+----+----+----+----+----+ | |
LocRP# Name Type Action Reg |eax |ecx |edi |mm0 |mm1 |mm2 |mm6 |mm7 | | |
------------------------------+----+----+----+----+----+----+----+----+ | |
| | | | | | | | | | |
0.#0 BB1 PredBB0 | | | | | | | | | | |
5.#1 I0 Def Alloc ecx | |I0 a| | | | | | | | |
6.#2 I0 Use * Keep ecx | |I0 a| | | | | | | | |
7.#3 I1 Def Alloc ecx | |I1 a| | | | | | | | |
8.#4 I1 Use * Keep ecx | |I1 a| | | | | | | | |
13.#5 C2 Def Alloc ecx | |C2 a| | | | | | | | |
16.#6 C2 Use * Keep ecx | |C2 a| | | | | | | | |
------------------------------+----+----+----+----+----+----+----+----+ | |
LocRP# Name Type Action Reg |eax |ecx |edi |mm0 |mm1 |mm2 |mm6 |mm7 | | |
------------------------------+----+----+----+----+----+----+----+----+ | |
20.#7 BB2 PredBB1 | | | | | | | | | | |
27.#8 I3 Def Alloc mm0 | | | |I3 a| | | | | | |
28.#9 I3 Use * Keep mm0 | | | |I3 a| | | | | | |
33.#10 I4 Def Alloc ecx | |I4 a| | | | | | | | |
35.#11 I5 Def Alloc mm0 | |I4 a| |I5 a| | | | | | |
36.#12 I4 Use * Keep ecx | |I4 a| |I5 a| | | | | | |
36.#13 I5 Use * Keep mm0 | |I4 a| |I5 a| | | | | | |
------------------------------+----+----+----+----+----+----+----+----+ | |
LocRP# Name Type Action Reg |eax |ecx |edi |mm0 |mm1 |mm2 |mm6 |mm7 | | |
------------------------------+----+----+----+----+----+----+----+----+ | |
40.#14 BB3 PredBB1 | | | | | | | | | | |
45.#15 I6 Def Alloc ecx | |I6 a| | | | | | | | |
46.#16 I6 Use * Keep ecx | |I6 a| | | | | | | | |
49.#17 I7 Def Alloc ecx | |I7 a| | | | | | | | |
50.#18 ecx Fixd Keep ecx | |I7 a| | | | | | | | |
50.#19 I7 Use * Keep ecx | |I7 a| | | | | | | | |
51.#20 ecx Fixd Keep ecx | | | | | | | | | | |
51.#21 I8 Def Alloc ecx | |I8 a| | | | | | | | |
------------------------------+----+----+----+----+----+----+----+----+----+ | |
LocRP# Name Type Action Reg |eax |ecx |edx |edi |mm0 |mm1 |mm2 |mm6 |mm7 | | |
------------------------------+----+----+----+----+----+----+----+----+----+ | |
53.#22 I9 Def Alloc edx | |I8 a|I9 a| | | | | | | | |
54.#23 edx Fixd Keep edx | |I8 a|I9 a| | | | | | | | |
54.#24 I9 Use * Keep edx | |I8 a|I9 a| | | | | | | | |
55.#25 edx Fixd Keep edx | |I8 a| | | | | | | | | |
55.#26 I10 Def Alloc edx | |I8 a|I10a| | | | | | | | |
56.#27 ecx Fixd Keep ecx | |I8 a|I10a| | | | | | | | |
56.#28 I8 Use * Keep ecx | |I8 a|I10a| | | | | | | | |
56.#29 edx Fixd Keep edx | |I8 a|I10a| | | | | | | | |
56.#30 I10 Use * Keep edx | |I8 a|I10a| | | | | | | | |
57.#31 eax Kill Keep eax | | | | | | | | | | | |
57.#32 ecx Kill Keep ecx | | | | | | | | | | | |
57.#33 edx Kill Keep edx | | | | | | | | | | | |
57.#34 mm0 Kill Keep mm0 | | | | | | | | | | | |
57.#35 mm1 Kill Keep mm1 | | | | | | | | | | | |
57.#36 mm2 Kill Keep mm2 | | | | | | | | | | | |
57.#37 mm3 Kill Keep mm3 | | | | | | | | | | | |
57.#38 mm4 Kill Keep mm4 | | | | | | | | | | | |
57.#39 mm5 Kill Keep mm5 | | | | | | | | | | | |
57.#40 mm6 Kill Keep mm6 | | | | | | | | | | | |
57.#41 mm7 Kill Keep mm7 | | | | | | | | | | | |
------------ | |
REFPOSITIONS AFTER ALLOCATION: | |
------------ | |
<RefPosition #0 @0 RefTypeBB BB01 regmask=[] minReg=1> | |
<RefPosition #1 @5 RefTypeDef <Ivl:0> LCL_VAR BB01 regmask=[ecx] minReg=1> | |
<RefPosition #2 @6 RefTypeUse <Ivl:0> BB01 regmask=[ecx] minReg=1 last> | |
<RefPosition #3 @7 RefTypeDef <Ivl:1> CAST BB01 regmask=[ecx] minReg=1> | |
<RefPosition #4 @8 RefTypeUse <Ivl:1> BB01 regmask=[ecx] minReg=1 last> | |
<RefPosition #5 @13 RefTypeDef <Ivl:2> CNS_INT BB01 regmask=[ecx] minReg=1> | |
<RefPosition #6 @16 RefTypeUse <Ivl:2> BB01 regmask=[ecx] minReg=1 last regOptional> | |
<RefPosition #7 @20 RefTypeBB BB02 regmask=[] minReg=1> | |
<RefPosition #8 @27 RefTypeDef <Ivl:3> HWIntrinsic BB02 regmask=[mm0] minReg=1> | |
<RefPosition #9 @28 RefTypeUse <Ivl:3> BB02 regmask=[mm0] minReg=1 last> | |
<RefPosition #10 @33 RefTypeDef <Ivl:4> LCL_VAR BB02 regmask=[ecx] minReg=1> | |
<RefPosition #11 @35 RefTypeDef <Ivl:5> LCL_VAR BB02 regmask=[mm0] minReg=1> | |
<RefPosition #12 @36 RefTypeUse <Ivl:4> BB02 regmask=[ecx] minReg=1 last> | |
<RefPosition #13 @36 RefTypeUse <Ivl:5> BB02 regmask=[mm0] minReg=1 last> | |
<RefPosition #14 @40 RefTypeBB BB03 regmask=[] minReg=1> | |
<RefPosition #15 @45 RefTypeDef <Ivl:6> LCL_VAR_ADDR BB03 regmask=[ecx] minReg=1> | |
<RefPosition #16 @46 RefTypeUse <Ivl:6> BB03 regmask=[ecx] minReg=1 last> | |
<RefPosition #17 @49 RefTypeDef <Ivl:7> LCL_VAR BB03 regmask=[ecx] minReg=1> | |
<RefPosition #18 @50 RefTypeFixedReg <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #19 @50 RefTypeUse <Ivl:7> BB03 regmask=[ecx] minReg=1 last fixed> | |
<RefPosition #20 @51 RefTypeFixedReg <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #21 @51 RefTypeDef <Ivl:8> PUTARG_REG BB03 regmask=[ecx] minReg=1 fixed> | |
<RefPosition #22 @53 RefTypeDef <Ivl:9> LCL_FLD BB03 regmask=[edx] minReg=1> | |
<RefPosition #23 @54 RefTypeFixedReg <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #24 @54 RefTypeUse <Ivl:9> BB03 regmask=[edx] minReg=1 last fixed> | |
<RefPosition #25 @55 RefTypeFixedReg <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #26 @55 RefTypeDef <Ivl:10> PUTARG_REG BB03 regmask=[edx] minReg=1 fixed> | |
<RefPosition #27 @56 RefTypeFixedReg <Reg:ecx> BB03 regmask=[ecx] minReg=1> | |
<RefPosition #28 @56 RefTypeUse <Ivl:8> BB03 regmask=[ecx] minReg=1 last fixed> | |
<RefPosition #29 @56 RefTypeFixedReg <Reg:edx> BB03 regmask=[edx] minReg=1> | |
<RefPosition #30 @56 RefTypeUse <Ivl:10> BB03 regmask=[edx] minReg=1 last fixed> | |
<RefPosition #31 @57 RefTypeKill <Reg:eax> BB03 regmask=[eax] minReg=1 last> | |
<RefPosition #32 @57 RefTypeKill <Reg:ecx> BB03 regmask=[ecx] minReg=1 last> | |
<RefPosition #33 @57 RefTypeKill <Reg:edx> BB03 regmask=[edx] minReg=1 last> | |
<RefPosition #34 @57 RefTypeKill <Reg:mm0> BB03 regmask=[mm0] minReg=1 last> | |
<RefPosition #35 @57 RefTypeKill <Reg:mm1> BB03 regmask=[mm1] minReg=1 last> | |
<RefPosition #36 @57 RefTypeKill <Reg:mm2> BB03 regmask=[mm2] minReg=1 last> | |
<RefPosition #37 @57 RefTypeKill <Reg:mm3> BB03 regmask=[mm3] minReg=1 last> | |
<RefPosition #38 @57 RefTypeKill <Reg:mm4> BB03 regmask=[mm4] minReg=1 last> | |
<RefPosition #39 @57 RefTypeKill <Reg:mm5> BB03 regmask=[mm5] minReg=1 last> | |
<RefPosition #40 @57 RefTypeKill <Reg:mm6> BB03 regmask=[mm6] minReg=1 last> | |
<RefPosition #41 @57 RefTypeKill <Reg:mm7> BB03 regmask=[mm7] minReg=1 last> | |
Active intervals at end of allocation: | |
Trees after linear scan register allocator (LSRA) | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target LIR | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i LIR | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe LIR | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
------------ BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
N002 ( 9, 10) [000006] ------------ IL_OFFSET void IL offset: 0x0 REG NA | |
N004 ( 3, 2) [000003] ------------ t3 = LCL_VAR int V01 arg0 ecx REG ecx | |
/--* t3 int | |
N006 ( 4, 4) [000043] ------------ t43 = * CAST int <- ushort <- int REG ecx | |
/--* t43 int | |
N008 ( 9, 10) [000005] DA--G------- * STORE_LCL_FLD ushort V02 loc0 [+0] Fseq[value] NA REG NA | |
N010 ( 5, 5) [000011] ------------ IL_OFFSET void IL offset: 0x8 REG NA | |
N012 ( 1, 1) [000008] ------------ t8 = CNS_INT int 0 REG ecx | |
N014 ( 1, 1) [000007] -c---------- t7 = CNS_INT int 1 REG NA | |
/--* t8 int | |
+--* t7 int | |
N016 ( 3, 3) [000009] J------N---- * EQ void REG NA | |
N018 ( 5, 5) [000010] ------------ * JTRUE void REG NA | |
------------ BB02 [00F..023) (return), preds={BB01} succs={} | |
N022 ( 9, 9) [000034] ------------ IL_OFFSET void IL offset: 0xf REG NA | |
N024 ( 4, 5) [000027] -c---------- t27 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] NA REG NA | |
/--* t27 ushort | |
N026 ( 5, 6) [000030] ----G------- t30 = * HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 REG mm0 | |
/--* t30 simd16 | |
N028 ( 9, 9) [000033] DA--G------- * STORE_LCL_VAR simd16 V03 loc1 NA REG NA | |
N030 ( 10, 7) [000040] ------------ IL_OFFSET void IL offset: 0x1b REG NA | |
N032 ( 3, 2) [000037] ------------ t37 = LCL_VAR byref V00 RetBuf ecx REG ecx | |
N034 ( 3, 2) [000035] ------------ t35 = LCL_VAR simd16 V03 loc1 mm0 REG mm0 | |
/--* t37 byref | |
+--* t35 simd16 | |
N036 (???,???) [000048] -A-XG------- * STOREIND simd16 REG NA | |
N038 ( 0, 0) [000041] ------------ RETURN void REG NA | |
------------ BB03 [023..031) (return), preds={BB01} succs={} | |
N042 ( 27, 17) [000023] ------------ IL_OFFSET void IL offset: 0x23 REG NA | |
N044 ( 3, 2) [000016] -------N---- t16 = LCL_VAR_ADDR byref V02 loc0 ecx REG ecx | |
/--* t16 byref | |
N046 (???,???) [000049] ------------ * PUTARG_STK [+0x00] void (1 slots) REG NA | |
N048 ( 3, 2) [000021] ------------ t21 = LCL_VAR byref V00 RetBuf ecx REG ecx | |
/--* t21 byref | |
N050 (???,???) [000050] ------------ t50 = * PUTARG_REG byref REG ecx | |
N052 ( 4, 5) [000013] ------------ t13 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] edx REG edx | |
/--* t13 ushort | |
N054 (???,???) [000051] ------------ t51 = * PUTARG_REG int REG edx | |
/--* t50 byref arg0 in ecx | |
+--* t51 int arg1 in edx | |
N056 ( 27, 17) [000018] S-CXG------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
N058 ( 0, 0) [000024] ------------ RETURN void REG NA | |
------------------------------------------------------------------------------------------------------------------- | |
Final allocation | |
------------------------------+----+----+----+----+----+----+----+----+----+ | |
LocRP# Name Type Action Reg |eax |ecx |edx |edi |mm0 |mm1 |mm2 |mm6 |mm7 | | |
------------------------------+----+----+----+----+----+----+----+----+----+ | |
0.#0 BB1 PredBB0 | | | | | | | | | | | |
5.#1 I0 Def Alloc ecx | |I0 a| | | | | | | | | |
6.#2 I0 Use * Keep ecx | |I0 i| | | | | | | | | |
7.#3 I1 Def Alloc ecx | |I1 a| | | | | | | | | |
8.#4 I1 Use * Keep ecx | |I1 i| | | | | | | | | |
13.#5 C2 Def Alloc ecx | |C2 a| | | | | | | | | |
16.#6 C2 Use * Keep ecx | |C2 i| | | | | | | | | |
------------------------------+----+----+----+----+----+----+----+----+----+ | |
LocRP# Name Type Action Reg |eax |ecx |edx |edi |mm0 |mm1 |mm2 |mm6 |mm7 | | |
------------------------------+----+----+----+----+----+----+----+----+----+ | |
20.#7 BB2 PredBB1 | | | | | | | | | | | |
27.#8 I3 Def Alloc mm0 | | | | |I3 a| | | | | | |
28.#9 I3 Use * Keep mm0 | | | | |I3 i| | | | | | |
33.#10 I4 Def Alloc ecx | |I4 a| | | | | | | | | |
35.#11 I5 Def Alloc mm0 | |I4 a| | |I5 a| | | | | | |
36.#12 I4 Use * Keep ecx | |I4 i| | |I5 a| | | | | | |
36.#13 I5 Use * Keep mm0 | | | | |I5 i| | | | | | |
------------------------------+----+----+----+----+----+----+----+----+----+ | |
LocRP# Name Type Action Reg |eax |ecx |edx |edi |mm0 |mm1 |mm2 |mm6 |mm7 | | |
------------------------------+----+----+----+----+----+----+----+----+----+ | |
40.#14 BB3 PredBB1 | | | | | | | | | | | |
45.#15 I6 Def Alloc ecx | |I6 a| | | | | | | | | |
46.#16 I6 Use * Keep ecx | |I6 i| | | | | | | | | |
49.#17 I7 Def Alloc ecx | |I7 a| | | | | | | | | |
50.#18 ecx Fixd Keep ecx | |I7 a| | | | | | | | | |
50.#19 I7 Use * Keep ecx | |I7 i| | | | | | | | | |
51.#20 ecx Fixd Keep ecx | | | | | | | | | | | |
51.#21 I8 Def Alloc ecx | |I8 a| | | | | | | | | |
53.#22 I9 Def Alloc edx | |I8 a|I9 a| | | | | | | | |
54.#23 edx Fixd Keep edx | |I8 a|I9 a| | | | | | | | |
54.#24 I9 Use * Keep edx | |I8 a|I9 i| | | | | | | | |
55.#25 edx Fixd Keep edx | |I8 a| | | | | | | | | |
55.#26 I10 Def Alloc edx | |I8 a|I10a| | | | | | | | |
56.#27 ecx Fixd Keep ecx | |I8 a|I10a| | | | | | | | |
56.#28 I8 Use * Keep ecx | |I8 i|I10a| | | | | | | | |
56.#29 edx Fixd Keep edx | | |I10a| | | | | | | | |
56.#30 I10 Use * Keep edx | | |I10i| | | | | | | | |
57.#31 eax Kill Keep eax | | | | | | | | | | | |
57.#32 ecx Kill Keep ecx | | | | | | | | | | | |
57.#33 edx Kill Keep edx | | | | | | | | | | | |
57.#34 mm0 Kill Keep mm0 | | | | | | | | | | | |
57.#35 mm1 Kill Keep mm1 | | | | | | | | | | | |
57.#36 mm2 Kill Keep mm2 | | | | | | | | | | | |
57.#37 mm3 Kill Keep mm3 | | | | | | | | | | | |
57.#38 mm4 Kill Keep mm4 | | | | | | | | | | | |
57.#39 mm5 Kill Keep mm5 | | | | | | | | | | | |
57.#40 mm6 Kill Keep mm6 | | | | | | | | | | | |
57.#41 mm7 Kill Keep mm7 | | | | | | | | | | | |
Recording the maximum number of concurrent spills: | |
---------- | |
LSRA Stats | |
---------- | |
Total Tracked Vars: 0 | |
Total Reg Cand Vars: 0 | |
Total number of Intervals: 10 | |
Total number of RefPositions: 41 | |
Total Spill Count: 0 Weighted: 0 | |
Total CopyReg Count: 0 Weighted: 0 | |
Total ResolutionMov Count: 0 Weighted: 0 | |
Total number of split edges: 0 | |
Total Number of spill temps created: 0 | |
TUPLE STYLE DUMP WITH REGISTER ASSIGNMENTS | |
Incoming Parameters: | |
BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} | |
===== | |
N002. IL_OFFSET IL offset: 0x0 REG NA | |
N004. ecx = V01 MEM | |
N006. ecx = CAST ; ecx | |
N008. V02 MEM; ecx | |
N010. IL_OFFSET IL offset: 0x8 REG NA | |
N012. ecx = CNS_INT 0 REG ecx | |
N014. CNS_INT 1 REG NA | |
N016. EQ ; ecx | |
N018. JTRUE | |
BB02 [00F..023) (return), preds={BB01} succs={} | |
===== | |
N022. IL_OFFSET IL offset: 0xf REG NA | |
N024. V02 MEM | |
N026. mm0 = HWIntrinsic | |
N028. V03 MEM; mm0 | |
N030. IL_OFFSET IL offset: 0x1b REG NA | |
N032. ecx = V00 MEM | |
N034. mm0 = V03 MEM | |
N036. STOREIND ; ecx,mm0 | |
N038. RETURN | |
BB03 [023..031) (return), preds={BB01} succs={} | |
===== | |
N042. IL_OFFSET IL offset: 0x23 REG NA | |
N044. ecx = LCL_VAR_ADDR V02 loc0 ecx REG ecx | |
N046. PUTARG_STK [+0x00]; ecx | |
N048. ecx = V00 MEM | |
N050. ecx = PUTARG_REG; ecx | |
N052. edx = V02 MEM | |
N054. edx = PUTARG_REG; edx | |
N056. CALL ; ecx,edx | |
N058. RETURN | |
*************** In genGenerateCode() | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BBnum BBid ref try hnd preds weight [IL range] [jump] [EH region] [flags] | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
BB01 [0000] 1 1 [000..00F)-> BB03 ( cond ) i label target LIR | |
BB02 [0001] 1 BB01 1 [00F..023) (return) i LIR | |
BB03 [0002] 1 BB01 1 [023..031) (return) i label target gcsafe LIR | |
-------------------------------------------------------------------------------------------------------------------------------------- | |
*************** In fgDebugCheckBBlist | |
Finalizing stack frame | |
Modified regs: [eax ecx edx mm0-mm7] | |
Callee-saved registers pushed: 0 [] | |
*************** In lvaAssignFrameOffsets(FINAL_FRAME_LAYOUT) | |
Assign V00 RetBuf, size=4, stkOffs=-0xc | |
Assign V01 arg0, size=4, stkOffs=-0x10 | |
Assign V02 loc0, size=4, stkOffs=-0x14 | |
Assign V03 loc1, size=16, stkOffs=-0x24 | |
; Final local variable assignments | |
; | |
; V00 RetBuf [V00 ] ( 1, 1 ) byref -> [ebp-0x04] | |
; V01 arg0 [V01 ] ( 1, 1 ) ushort -> [ebp-0x08] | |
; V02 loc0 [V02 ] ( 1, 1 ) struct ( 4) [ebp-0x0C] do-not-enreg[XSF] addr-exposed ld-addr-op | |
; V03 loc1 [V03 ] ( 1, 1 ) simd16 -> [ebp-0x1C] do-not-enreg[SB] ld-addr-op | |
; | |
; Lcl frame size = 28 | |
=============== Generating BB01 [000..00F) -> BB03 (cond), preds={} succs={BB02,BB03} flags=0x00000000.40030020: i label target LIR | |
BB01 IN (0)={} + ByrefExposed + GcHeap | |
OUT(0)={} + ByrefExposed + GcHeap | |
Liveness not changing: 00000000 {} | |
Live regs: (unchanged) 00000000 {} | |
GC regs: (unchanged) 00000000 {} | |
Byref regs: (unchanged) 00000000 {} | |
L_M45309_BB01: | |
Label: IG02, GCvars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} | |
Setting stack level from -572662307 to 0 | |
Scope info: begin block BB01, IL range [000..00F) | |
Scope info: opening scope, LVnum=1 [000..031) | |
Scope info: >> new scope, VarNum=1, tracked? no, VarIndex=0, bbLiveIn=00000000 {} | |
Scope info: opening scope, LVnum=2 [000..031) | |
Scope info: >> new scope, VarNum=2, tracked? no, VarIndex=0, bbLiveIn=00000000 {} | |
Scope info: opening scope, LVnum=3 [000..031) | |
Scope info: >> new scope, VarNum=3, tracked? no, VarIndex=0, bbLiveIn=00000000 {} | |
Scope info: opening scope, LVnum=0 [000..031) | |
Scope info: >> new scope, VarNum=0, tracked? no, VarIndex=0, bbLiveIn=00000000 {} | |
Scope info: open scopes = | |
1 (V01 arg0) [000..031) | |
2 (V02 loc0) [000..031) | |
3 (V03 loc1) [000..031) | |
0 (V00 RetBuf) [000..031) | |
Added IP mapping: 0x0000 STACK_EMPTY (G_M45309_IG02,ins#0,ofs#0) label | |
Generating: N002 ( 9, 10) [000006] ------------ IL_OFFSET void IL offset: 0x0 REG NA | |
Generating: N004 ( 3, 2) [000003] ------------ t3 = LCL_VAR int V01 arg0 ecx REG ecx | |
IN0001: mov ecx, dword ptr [V01 ebp-08H] | |
/--* t3 int | |
Generating: N006 ( 4, 4) [000043] ------------ t43 = * CAST int <- ushort <- int REG ecx | |
IN0002: movzx ecx, cx | |
/--* t43 int | |
Generating: N008 ( 9, 10) [000005] DA--G------- * STORE_LCL_FLD ushort V02 loc0 [+0] Fseq[value] NA REG NA | |
IN0003: mov word ptr [V02 ebp-0CH], cx | |
Added IP mapping: 0x0008 STACK_EMPTY (G_M45309_IG02,ins#3,ofs#10) | |
Generating: N010 ( 5, 5) [000011] ------------ IL_OFFSET void IL offset: 0x8 REG NA | |
Generating: N012 ( 1, 1) [000008] ------------ t8 = CNS_INT int 0 REG ecx | |
IN0004: xor ecx, ecx | |
Generating: N014 ( 1, 1) [000007] -c---------- t7 = CNS_INT int 1 REG NA | |
/--* t8 int | |
+--* t7 int | |
Generating: N016 ( 3, 3) [000009] J------N---- * EQ void REG NA | |
IN0005: cmp ecx, 1 | |
Generating: N018 ( 5, 5) [000010] ------------ * JTRUE void REG NA | |
IN0006: je L_M45309_BB03 | |
Scope info: end block BB01, IL range [000..00F) | |
Scope info: open scopes = | |
1 (V01 arg0) [000..031) | |
2 (V02 loc0) [000..031) | |
3 (V03 loc1) [000..031) | |
0 (V00 RetBuf) [000..031) | |
=============== Generating BB02 [00F..023) (return), preds={BB01} succs={} flags=0x00000000.40000020: i LIR | |
BB02 IN (0)={} + ByrefExposed + GcHeap | |
OUT(0)={} + ByrefExposed + GcHeap | |
Liveness not changing: 00000000 {} | |
Live regs: (unchanged) 00000000 {} | |
GC regs: (unchanged) 00000000 {} | |
Byref regs: (unchanged) 00000000 {} | |
L_M45309_BB02: | |
Scope info: begin block BB02, IL range [00F..023) | |
Scope info: open scopes = | |
1 (V01 arg0) [000..031) | |
2 (V02 loc0) [000..031) | |
3 (V03 loc1) [000..031) | |
0 (V00 RetBuf) [000..031) | |
Added IP mapping: 0x000F STACK_EMPTY (G_M45309_IG02,ins#6,ofs#21) label | |
Generating: N022 ( 9, 9) [000034] ------------ IL_OFFSET void IL offset: 0xf REG NA | |
Generating: N024 ( 4, 5) [000027] -c---------- t27 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] NA REG NA | |
/--* t27 ushort | |
Generating: N026 ( 5, 6) [000030] ----G------- t30 = * HWIntrinsic simd16 uint ConvertScalarToVector128UInt32 REG mm0 | |
IN0007: vmovd xmm0, xmmword ptr [V02 ebp-0CH] | |
/--* t30 simd16 | |
Generating: N028 ( 9, 9) [000033] DA--G------- * STORE_LCL_VAR simd16 V03 loc1 NA REG NA | |
IN0008: vmovupd xmmword ptr [V03 ebp-1CH], xmm0 | |
Added IP mapping: 0x001B STACK_EMPTY (G_M45309_IG02,ins#8,ofs#33) | |
Generating: N030 ( 10, 7) [000040] ------------ IL_OFFSET void IL offset: 0x1b REG NA | |
Generating: N032 ( 3, 2) [000037] ------------ t37 = LCL_VAR byref V00 RetBuf ecx REG ecx | |
IN0009: mov ecx, bword ptr [V00 ebp-04H] | |
Byref regs: 00000000 {} => 00000002 {ecx} | |
Generating: N034 ( 3, 2) [000035] ------------ t35 = LCL_VAR simd16 V03 loc1 mm0 REG mm0 | |
IN000a: vmovupd xmm0, xmmword ptr [V03 ebp-1CH] | |
/--* t37 byref | |
+--* t35 simd16 | |
Generating: N036 (???,???) [000048] -A-XG------- * STOREIND simd16 REG NA | |
Byref regs: 00000002 {ecx} => 00000000 {} | |
IN000b: vmovupd xmmword ptr [ecx], xmm0 | |
Generating: N038 ( 0, 0) [000041] ------------ RETURN void REG NA | |
Scope info: end block BB02, IL range [00F..023) | |
Scope info: open scopes = | |
1 (V01 arg0) [000..031) | |
2 (V02 loc0) [000..031) | |
3 (V03 loc1) [000..031) | |
0 (V00 RetBuf) [000..031) | |
Added IP mapping: EPILOG STACK_EMPTY (G_M45309_IG02,ins#11,ofs#47) label | |
Reserving epilog IG for block BB02 | |
G_M45309_IG02: ; offs=000000H, funclet=00 | |
*************** After placeholder IG creation | |
G_M45309_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG | |
G_M45309_IG02: ; offs=000000H, size=002FH, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref | |
G_M45309_IG03: ; epilog placeholder, next placeholder=<END>, BB02 [0001], epilog, emitadd <-- First placeholder <-- Last placeholder | |
; PrevGCVars=00000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} | |
; InitGCVars=00000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} | |
G_M45309_IG04: ; offs=00012FH, size=0000H, gcrefRegs=00000000 {} <-- Current IG | |
=============== Generating BB03 [023..031) (return), preds={BB01} succs={} flags=0x00000000.400b0020: i label target gcsafe LIR | |
BB03 IN (0)={} + ByrefExposed + GcHeap | |
OUT(0)={} + ByrefExposed + GcHeap | |
Liveness not changing: 00000000 {} | |
Live regs: (unchanged) 00000000 {} | |
GC regs: (unchanged) 00000000 {} | |
Byref regs: (unchanged) 00000000 {} | |
L_M45309_BB03: | |
Label: IG04, GCvars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} | |
Scope info: begin block BB03, IL range [023..031) | |
Scope info: open scopes = | |
1 (V01 arg0) [000..031) | |
2 (V02 loc0) [000..031) | |
3 (V03 loc1) [000..031) | |
0 (V00 RetBuf) [000..031) | |
Added IP mapping: 0x0023 STACK_EMPTY (G_M45309_IG04,ins#0,ofs#0) label | |
Generating: N042 ( 27, 17) [000023] ------------ IL_OFFSET void IL offset: 0x23 REG NA | |
Generating: N044 ( 3, 2) [000016] -------N---- t16 = LCL_VAR_ADDR byref V02 loc0 ecx REG ecx | |
IN000c: lea ecx, bword ptr [V02 ebp-0CH] | |
Byref regs: 00000000 {} => 00000002 {ecx} | |
/--* t16 byref | |
Generating: N046 (???,???) [000049] ------------ * PUTARG_STK [+0x00] void (1 slots) REG NA | |
Byref regs: 00000002 {ecx} => 00000000 {} | |
IN000d: push ecx | |
Upping emitMaxStackDepth from 0 to 4 | |
Adjusting stack level from 0 to 4 | |
Generating: N048 ( 3, 2) [000021] ------------ t21 = LCL_VAR byref V00 RetBuf ecx REG ecx | |
IN000e: mov ecx, bword ptr [V00 ebp-04H] | |
Byref regs: 00000000 {} => 00000002 {ecx} | |
/--* t21 byref | |
Generating: N050 (???,???) [000050] ------------ t50 = * PUTARG_REG byref REG ecx | |
Byref regs: 00000002 {ecx} => 00000000 {} | |
Byref regs: 00000000 {} => 00000002 {ecx} | |
Generating: N052 ( 4, 5) [000013] ------------ t13 = LCL_FLD ushort V02 loc0 [+0] Fseq[value] edx REG edx | |
IN000f: movzx edx, word ptr [V02 ebp-0CH] | |
/--* t13 ushort | |
Generating: N054 (???,???) [000051] ------------ t51 = * PUTARG_REG int REG edx | |
/--* t50 byref arg0 in ecx | |
+--* t51 int arg1 in edx | |
Generating: N056 ( 27, 17) [000018] S-CXG------- * CALL void System.Runtime.Intrinsics.Vector128.<CreateScalar>g__SoftwareFallback|38_0 | |
Byref regs: 00000002 {ecx} => 00000000 {} | |
Call: GCvars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {} | |
IN0010: call System.Runtime.Intrinsics.Vector128:<CreateScalar>g__SoftwareFallback|38_0(ushort,byref):struct | |
Adjusting stack level from 4 to 0 | |
Generating: N058 ( 0, 0) [000024] ------------ RETURN void REG NA | |
Scope info: end block BB03, IL range [023..031) | |
Scope info: ending scope, LVnum=1 [000..031) | |
Scope info: ending scope, LVnum=2 [000..031) | |
Scope info: ending scope, LVnum=3 [000..031) | |
Scope info: ending scope, LVnum=0 [000..031) | |
Scope info: open scopes = | |
<none> | |
Added IP mapping: EPILOG STACK_EMPTY (G_M45309_IG04,ins#5,ofs#16) label | |
Reserving epilog IG for block BB03 | |
G_M45309_IG04: ; offs=00012FH, funclet=00 | |
*************** After placeholder IG creation | |
G_M45309_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG | |
G_M45309_IG02: ; offs=000000H, size=002FH, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref | |
G_M45309_IG03: ; epilog placeholder, next placeholder=IG05 , BB02 [0001], epilog, emitadd <-- First placeholder | |
; PrevGCVars=00000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} | |
; InitGCVars=00000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} | |
G_M45309_IG04: ; offs=00012FH, size=0010H, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref | |
G_M45309_IG05: ; epilog placeholder, next placeholder=<END>, BB03 [0002], epilog, emitadd <-- Last placeholder | |
; PrevGCVars=00000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} | |
; InitGCVars=00000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} | |
Liveness not changing: 00000000 {} | |
# compCycleEstimate = 60, compSizeEstimate = 48 System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct | |
; Final local variable assignments | |
; | |
; V00 RetBuf [V00 ] ( 1, 1 ) byref -> [ebp-0x04] | |
; V01 arg0 [V01 ] ( 1, 1 ) ushort -> [ebp-0x08] | |
; V02 loc0 [V02 ] ( 1, 1 ) struct ( 4) [ebp-0x0C] do-not-enreg[XSF] addr-exposed ld-addr-op | |
; V03 loc1 [V03 ] ( 1, 1 ) simd16 -> [ebp-0x1C] do-not-enreg[SB] ld-addr-op | |
; | |
; Lcl frame size = 28 | |
*************** Before prolog / epilog generation | |
G_M45309_IG01: ; func=00, offs=000000H, size=0000H, gcrefRegs=00000000 {} <-- Prolog IG | |
G_M45309_IG02: ; offs=000000H, size=002FH, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref | |
G_M45309_IG03: ; epilog placeholder, next placeholder=IG05 , BB02 [0001], epilog, emitadd <-- First placeholder | |
; PrevGCVars=00000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} | |
; InitGCVars=00000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} | |
G_M45309_IG04: ; offs=00012FH, size=0010H, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref | |
G_M45309_IG05: ; epilog placeholder, next placeholder=<END>, BB03 [0002], epilog, emitadd <-- Last placeholder | |
; PrevGCVars=00000000 {}, PrevGCrefRegs=00000000 {}, PrevByrefRegs=00000000 {} | |
; InitGCVars=00000000 {}, InitGCrefRegs=00000000 {}, InitByrefRegs=00000000 {} | |
*************** In genFnProlog() | |
Added IP mapping to front: PROLOG STACK_EMPTY (G_M45309_IG01,ins#0,ofs#0) label | |
__prolog: | |
IN0011: push ebp | |
IN0012: mov ebp, esp | |
IN0013: sub esp, 28 | |
IN0014: vzeroupper | |
*************** In genFnPrologCalleeRegArgs() for int regs | |
IN0015: mov bword ptr [V00 ebp-04H], ecx | |
IN0016: mov dword ptr [V01 ebp-08H], edx | |
*************** In genEnregisterIncomingStackArgs() | |
G_M45309_IG01: ; offs=000000H, funclet=00 | |
*************** In genFnEpilog() | |
__epilog: | |
gcVarPtrSetCur=00000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {} | |
IN0017: mov esp, ebp | |
IN0018: pop ebp | |
IN0019: ret | |
G_M45309_IG03: ; offs=00002FH, funclet=00 | |
*************** In genFnEpilog() | |
__epilog: | |
gcVarPtrSetCur=00000000 {}, gcRegGCrefSetCur=00000000 {}, gcRegByrefSetCur=00000000 {} | |
IN001a: mov esp, ebp | |
IN001b: pop ebp | |
IN001c: ret | |
G_M45309_IG05: ; offs=00013FH, funclet=00 | |
0 prologs, 2 epilogs | |
*************** After prolog / epilog generation | |
G_M45309_IG01: ; func=00, offs=000000H, size=000FH, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG | |
G_M45309_IG02: ; offs=00000FH, size=002FH, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref | |
G_M45309_IG03: ; offs=00003EH, size=0004H, epilog, nogc, emitadd | |
G_M45309_IG04: ; offs=000042H, size=0010H, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref | |
G_M45309_IG05: ; offs=000052H, size=0004H, epilog, nogc, emitadd | |
*************** In emitJumpDistBind() | |
Binding: IN0006: 000000 je L_M45309_BB03 | |
Binding L_M45309_BB03to G_M45309_IG04 | |
Estimate of fwd jump [079B5C08/006]: 001E -> 0042 = 0022 | |
Shrinking jump [079B5C08/006] | |
Adjusted offset of BB03 from 003E to 003A | |
Adjusted offset of BB04 from 0042 to 003E | |
Adjusted offset of BB05 from 0052 to 004E | |
Total shrinkage = 4, min extra jump size = 4294967295 | |
Hot code size = 0x52 bytes | |
Cold code size = 0x0 bytes | |
*************** In emitEndCodeGen() | |
Converting emitMaxStackDepth from bytes (4) to elements (1) | |
*************************************************************************** | |
Instructions as they come out of the scheduler | |
G_M45309_IG01: ; func=00, offs=000000H, size=000FH, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG | |
IN0011: 000000 55 push ebp | |
IN0012: 000001 8BEC mov ebp, esp | |
IN0013: 000003 83EC1C sub esp, 28 | |
IN0014: 000006 C5F877 vzeroupper | |
IN0015: 000009 894DFC mov bword ptr [ebp-04H], ecx | |
IN0016: 00000C 8955F8 mov dword ptr [ebp-08H], edx | |
G_M45309_IG02: ; func=00, offs=00000FH, size=002BH, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz | |
IN0001: 00000F 8B4DF8 mov ecx, dword ptr [ebp-08H] | |
IN0002: 000012 0FB7C9 movzx ecx, cx | |
IN0003: 000015 66894DF4 mov word ptr [ebp-0CH], cx | |
IN0004: 000019 33C9 xor ecx, ecx | |
IN0005: 00001B 83F901 cmp ecx, 1 | |
IN0006: 00001E 741E je SHORT G_M45309_IG04 | |
IN0007: 000020 C5F96E45F4 vmovd xmm0, xmmword ptr [ebp-0CH] (ECS:6, ACS:5) | |
Instruction predicted size = 6, actual = 5 | |
IN0008: 000025 C5F91145E4 vmovupd xmmword ptr [ebp-1CH], xmm0 (ECS:6, ACS:5) | |
Instruction predicted size = 6, actual = 5 | |
byrReg +[ecx] | |
IN0009: 00002A 8B4DFC mov ecx, bword ptr [ebp-04H] | |
IN000a: 00002D C5F91045E4 vmovupd xmm0, xmmword ptr [ebp-1CH] (ECS:6, ACS:5) | |
Instruction predicted size = 6, actual = 5 | |
IN000b: 000032 C5F91101 vmovupd xmmword ptr [ecx], xmm0 (ECS:5, ACS:4) | |
Instruction predicted size = 5, actual = 4 | |
G_M45309_IG03: ; func=00, offs=00003AH, size=0004H, epilog, nogc, emitadd | |
Block predicted offs = 0000003A, actual = 00000036 -> size adj = 4 | |
IN0017: 000036 8BE5 mov esp, ebp | |
IN0018: 000038 5D pop ebp | |
IN0019: 000039 C3 ret | |
G_M45309_IG04: ; func=00, offs=00003EH, size=0010H, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref | |
Block predicted offs = 0000003E, actual = 0000003A -> size adj = 4 | |
New byrReg live regs=00000000 {} | |
byrReg +[ecx] | |
IN000c: 00003A 8D4DF4 lea ecx, bword ptr [ebp-0CH] | |
IN000d: 00003D 51 push ecx | |
IN000e: 00003E 8B4DFC mov ecx, bword ptr [ebp-04H] | |
IN000f: 000041 0FB755F4 movzx edx, word ptr [ebp-0CH] | |
New byrReg live regs=00000000 {} | |
IN0010: 000045 E89665D768 call System.Runtime.Intrinsics.Vector128:<CreateScalar>g__SoftwareFallback|38_0(ushort,byref):struct | |
G_M45309_IG05: ; func=00, offs=00004EH, size=0004H, epilog, nogc, emitadd | |
Block predicted offs = 0000004E, actual = 0000004A -> size adj = 4 | |
IN001a: 00004A 8BE5 mov esp, ebp | |
IN001b: 00004C 5D pop ebp | |
IN001c: 00004D C3 ret | |
Allocated method code size = 82 , actual size = 78 | |
*************** After end code gen, before unwindEmit() | |
G_M45309_IG01: ; func=00, offs=000000H, size=000FH, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG | |
IN0011: 000000 push ebp | |
IN0012: 000001 mov ebp, esp | |
IN0013: 000003 sub esp, 28 | |
IN0014: 000006 vzeroupper | |
IN0015: 000009 mov bword ptr [V00 ebp-04H], ecx | |
IN0016: 00000C mov dword ptr [V01 ebp-08H], edx | |
G_M45309_IG02: ; offs=00000FH, size=0027H, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz | |
IN0001: 00000F mov ecx, dword ptr [V01 ebp-08H] | |
IN0002: 000012 movzx ecx, cx | |
IN0003: 000015 mov word ptr [V02 ebp-0CH], cx | |
IN0004: 000019 xor ecx, ecx | |
IN0005: 00001B cmp ecx, 1 | |
IN0006: 00001E je SHORT G_M45309_IG04 | |
IN0007: 000020 vmovd xmm0, xmmword ptr [V02 ebp-0CH] | |
IN0008: 000025 vmovupd xmmword ptr [V03 ebp-1CH], xmm0 | |
IN0009: 00002A mov ecx, bword ptr [V00 ebp-04H] | |
IN000a: 00002D vmovupd xmm0, xmmword ptr [V03 ebp-1CH] | |
IN000b: 000032 vmovupd xmmword ptr [ecx], xmm0 | |
G_M45309_IG03: ; offs=000036H, size=0004H, epilog, nogc, emitadd | |
IN0017: 000036 mov esp, ebp | |
IN0018: 000038 pop ebp | |
IN0019: 000039 ret | |
G_M45309_IG04: ; offs=00003AH, size=0010H, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref | |
IN000c: 00003A lea ecx, bword ptr [V02 ebp-0CH] | |
IN000d: 00003D push ecx | |
IN000e: 00003E mov ecx, bword ptr [V00 ebp-04H] | |
IN000f: 000041 movzx edx, word ptr [V02 ebp-0CH] | |
IN0010: 000045 call System.Runtime.Intrinsics.Vector128:<CreateScalar>g__SoftwareFallback|38_0(ushort,byref):struct | |
G_M45309_IG05: ; offs=00004AH, size=0004H, epilog, nogc, emitadd | |
IN001a: 00004A mov esp, ebp | |
IN001b: 00004C pop ebp | |
IN001c: 00004D ret | |
*************** In genIPmappingGen() | |
IP mapping count : 8 | |
IL offs PROLOG : 0x00000000 ( STACK_EMPTY ) | |
IL offs 0x0000 : 0x0000000F ( STACK_EMPTY ) | |
IL offs 0x0008 : 0x00000019 ( STACK_EMPTY ) | |
IL offs 0x000F : 0x00000020 ( STACK_EMPTY ) | |
IL offs 0x001B : 0x0000002A ( STACK_EMPTY ) | |
IL offs EPILOG : 0x00000036 ( STACK_EMPTY ) | |
IL offs 0x0023 : 0x0000003A ( STACK_EMPTY ) | |
IL offs EPILOG : 0x0000004A ( STACK_EMPTY ) | |
*************** In genSetScopeInfo() | |
VarLocInfo count is 6 | |
*************** Variable debug info | |
6 vars | |
0( UNKNOWN) : From 00000000h to 0000000Fh, in edx | |
-2( retBuff) : From 00000000h to 0000000Fh, in ecx | |
0( UNKNOWN) : From 0000000Fh to 0000004Ah, in ebp[-8] (1 slot) | |
1( UNKNOWN) : From 0000000Fh to 0000004Ah, in ebp[-12] (1 slot) | |
2( UNKNOWN) : From 0000000Fh to 0000004Ah, in ebp[-28] (1 slot) | |
-2( retBuff) : From 0000000Fh to 0000004Ah, in ebp[-4] (1 slot) | |
*************** In gcInfoBlockHdrSave() | |
GCINFO: untrckd byr lcl at [ebp-04H] | |
GCINFO: untrckVars = 1 | |
GCINFO: trackdLcls = 0 | |
*************** In gcInfoBlockHdrSave() | |
GCINFO: methodSize = 004E | |
GCINFO: prologSize = 0009 | |
GCINFO: epilogSize = 0004 | |
GC Info for method System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct | |
GC info size = 11 | |
Method info block: | |
method size = 004E | |
prolog size = 9 | |
epilog size = 4 | |
epilog count = 2 | |
epilog end = no | |
callee-saved regs = EBP | |
ebp frame = yes | |
fully interruptible= no | |
double align = no | |
arguments size = 0 DWORDs | |
stack frame size = 7 DWORDs | |
untracked count = 1 | |
var ptr tab count = 0 | |
epilog # 0 at 0036 | |
epilog # 1 at 004A | |
4E D1 87 B1 C6 | | |
B8 1A 36 14 | | |
Pointer table: | |
03 | [EBP-04H] an untracked byref local | |
FF | | |
Method code size: 78 | |
Allocations for System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct (MethodHash=16b94f02) | |
count: 370, size: 22197, max = 1344 | |
allocateMemory: 65536, nraUsed: 23784 | |
Alloc'd bytes by kind: | |
kind | size | pct | |
---------------------+------------+-------- | |
AssertionProp | 0 | 0.00% | |
ASTNode | 5096 | 22.96% | |
InstDesc | 2352 | 10.60% | |
ImpStack | 192 | 0.86% | |
BasicBlock | 564 | 2.54% | |
fgArgInfo | 132 | 0.59% | |
fgArgInfoPtrArr | 60 | 0.27% | |
FlowList | 40 | 0.18% | |
TreeStatementList | 0 | 0.00% | |
SiScope | 248 | 1.12% | |
DominatorMemory | 0 | 0.00% | |
LSRA | 1412 | 6.36% | |
LSRA_Interval | 572 | 2.58% | |
LSRA_RefPosition | 1848 | 8.33% | |
Reachability | 0 | 0.00% | |
SSA | 0 | 0.00% | |
ValueNumber | 0 | 0.00% | |
LvaTable | 1349 | 6.08% | |
UnwindInfo | 0 | 0.00% | |
hashBv | 60 | 0.27% | |
bitset | 100 | 0.45% | |
FixedBitVect | 12 | 0.05% | |
Generic | 622 | 2.80% | |
LocalAddressVisitor | 0 | 0.00% | |
FieldSeqStore | 96 | 0.43% | |
ZeroOffsetFieldMap | 100 | 0.45% | |
ArrayInfoMap | 0 | 0.00% | |
MemoryPhiArg | 0 | 0.00% | |
CSE | 0 | 0.00% | |
GC | 24 | 0.11% | |
CorSig | 52 | 0.23% | |
Inlining | 100 | 0.45% | |
ArrayStack | 0 | 0.00% | |
DebugInfo | 272 | 1.23% | |
DebugOnly | 6238 | 28.10% | |
Codegen | 572 | 2.58% | |
LoopOpt | 0 | 0.00% | |
LoopHoist | 0 | 0.00% | |
Unknown | 84 | 0.38% | |
RangeCheck | 0 | 0.00% | |
CopyProp | 0 | 0.00% | |
SideEffects | 0 | 0.00% | |
ObjectAllocator | 0 | 0.00% | |
****** DONE compiling System.Runtime.Intrinsics.Vector128:CreateScalar(ushort):struct | |
Vector128.CreateScalar(UInt16): RunBasicScenario failed: | |
value: 3387 | |
result: (3387, 823, 0, 0, 0, 0, 0, 0) | |
Beginning scenario: RunReflectionScenario | |
Vector128.CreateScalar(UInt16): RunReflectionScenario failed: | |
value: 11422 | |
result: (11422, 823, 0, 0, 0, 0, 0, 0) | |
ERROR!!!-System.Exception: One or more scenarios did not complete as expected. | |
Ending test case at 1/5/2019 8:30:03 AM |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment