-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Closed
Labels
area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Milestone
Description
In getInsExecutionCharacteristics there are three different ways used to calculate memory access latencies, used seemingly at random (except for special instructions like mov)
result.insLatency += ins_latency;- this seems the most logical option, e.g.INS_addsdresult.insLatency = max(ins_latency, result.insLatency);- looks incorrect to me, e.g.INS_addresult.insLatencynot set ifmemAccessKind != PERFSCORE_MEMORY_NONE- incorrect, e.g.INS_aesdec
And a related question for insEvaluateExecutionCost - if memAccessKind == PERFSCORE_MEMORY_WRITE it reduces the apparent latency by 3 for writes, but shouldn't it do the same for PERFSCORE_MEMORY_READ_WRITE? Or is the assumption here that for RW instructions it's likely that another R/RW instruction follows for the same memory location?
Asking because I fixed some latency values (#49620) but then noticed the inconsistent logic.
Metadata
Metadata
Assignees
Labels
area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI