📄 memorytestimpl.cpp
字号:
case PT_PREFETCHT2:
{
switch (TestData.LogStrideSize[0])
{
case 4:
ReadMem = &ReadMMX_PFT2_16;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_PFT2_16_NT :
&CopyMMX_PFT2_16;
break;
case 5:
ReadMem = &ReadMMX_PFT2_32;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_PFT2_32_NT :
&CopyMMX_PFT2_32;
break;
case 6:
default:
ReadMem = &ReadMMX_PFT2_64;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_PFT2_64_NT :
&CopyMMX_PFT2_64;
break;
case 7:
ReadMem = &ReadMMX_PFT2_128;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_PFT2_128_NT :
&CopyMMX_PFT2_128;
break;
case 8:
ReadMem = &ReadMMX_PFT2_256;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_PFT2_256_NT :
&CopyMMX_PFT2_256;
break;
case 9:
ReadMem = &ReadMMX_PFT2_512;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_PFT2_512_NT :
&CopyMMX_PFT2_512;
break;
}
break;
}
case PT_BLOCK_PREFETCH_1:
{
switch (TestData.LogStrideSize[0])
{
case 4:
ReadMem = &ReadMMX_BPF1_16;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_BPF1_16_NT :
&CopyMMX_BPF1_16;
break;
case 5:
ReadMem = &ReadMMX_BPF1_32;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_BPF1_32_NT :
&CopyMMX_BPF1_32;
break;
case 6:
default:
ReadMem = &ReadMMX_BPF1_64;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_BPF1_64_NT :
&CopyMMX_BPF1_64;
break;
case 7:
ReadMem = &ReadMMX_BPF1_128;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_BPF1_128_NT :
&CopyMMX_BPF1_128;
break;
case 8:
ReadMem = &ReadMMX_BPF1_256;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_BPF1_256_NT :
&CopyMMX_BPF1_256;
break;
case 9:
ReadMem = &ReadMMX_BPF1_512;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_BPF1_512_NT :
&CopyMMX_BPF1_512;
break;
}
break;
}
case PT_BLOCK_PREFETCH_2:
{
switch (TestData.LogStrideSize[0])
{
case 4:
ReadMem = &ReadMMX_BPF2_16;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_BPF2_16_NT :
&CopyMMX_BPF2_16;
break;
case 5:
ReadMem = &ReadMMX_BPF2_32;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_BPF2_32_NT :
&CopyMMX_BPF2_32;
break;
case 6:
default:
ReadMem = &ReadMMX_BPF2_64;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_BPF2_64_NT :
&CopyMMX_BPF2_64;
break;
case 7:
ReadMem = &ReadMMX_BPF2_128;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_BPF2_128_NT :
&CopyMMX_BPF2_128;
break;
case 8:
ReadMem = &ReadMMX_BPF2_256;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_BPF2_256_NT :
&CopyMMX_BPF2_256;
break;
case 9:
ReadMem = &ReadMMX_BPF2_512;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_BPF2_512_NT :
&CopyMMX_BPF2_512;
break;
}
break;
}
}
}
else
{
// Read/Write prefetch off
ReadMem = &ReadMMX;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopyMMX_NT :
&CopyMMX;
}
break;
}
case RT_128_BIT_SSE:
{
WriteMem = (TestData.UseNonTemporalStore) ?
&WriteSSE_NT :
&WriteSSE;
if ((PrefetchDistance > 0) ||
(TestData.PrefetchType == PT_BLOCK_PREFETCH_1) ||
(TestData.PrefetchType == PT_BLOCK_PREFETCH_2))
{
switch (TestData.PrefetchType)
{
case PT_PREFETCHNTA:
{
switch (TestData.LogStrideSize[0])
{
case 4:
ReadMem = &ReadSSE_PFNTA_16;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFNTA_16_NT :
&CopySSE_PFNTA_16;
break;
case 5:
ReadMem = &ReadSSE_PFNTA_32;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFNTA_32_NT :
&CopySSE_PFNTA_32;
break;
case 6:
default:
ReadMem = &ReadSSE_PFNTA_64;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFNTA_64_NT :
&CopySSE_PFNTA_64;
break;
case 7:
ReadMem = &ReadSSE_PFNTA_128;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFNTA_128_NT :
&CopySSE_PFNTA_128;
break;
case 8:
ReadMem = &ReadSSE_PFNTA_256;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFNTA_256_NT :
&CopySSE_PFNTA_256;
break;
case 9:
ReadMem = &ReadSSE_PFNTA_512;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFNTA_512_NT :
&CopySSE_PFNTA_512;
break;
}
break;
}
case PT_PREFETCHT0:
{
switch (TestData.LogStrideSize[0])
{
case 4:
ReadMem = &ReadSSE_PFT0_16;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT0_16_NT :
&CopySSE_PFT0_16;
break;
case 5:
ReadMem = &ReadSSE_PFT0_32;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT0_32_NT :
&CopySSE_PFT0_32;
break;
case 6:
default:
ReadMem = &ReadSSE_PFT0_64;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT0_64_NT :
&CopySSE_PFT0_64;
break;
case 7:
ReadMem = &ReadSSE_PFT0_128;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT0_128_NT :
&CopySSE_PFT0_128;
break;
case 8:
ReadMem = &ReadSSE_PFT0_256;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT0_256_NT :
&CopySSE_PFT0_256;
break;
case 9:
ReadMem = &ReadSSE_PFT0_512;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT0_512_NT :
&CopySSE_PFT0_512;
break;
}
break;
}
case PT_PREFETCHT1:
{
switch (TestData.LogStrideSize[0])
{
case 4:
ReadMem = &ReadSSE_PFT1_16;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT1_16_NT :
&CopySSE_PFT1_16;
break;
case 5:
ReadMem = &ReadSSE_PFT1_32;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT1_32_NT :
&CopySSE_PFT1_32;
break;
case 6:
default:
ReadMem = &ReadSSE_PFT1_64;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT1_64_NT :
&CopySSE_PFT1_64;
break;
case 7:
ReadMem = &ReadSSE_PFT1_128;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT1_128_NT :
&CopySSE_PFT1_128;
break;
case 8:
ReadMem = &ReadSSE_PFT1_256;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT1_256_NT :
&CopySSE_PFT1_256;
break;
case 9:
ReadMem = &ReadSSE_PFT1_512;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT1_512_NT :
&CopySSE_PFT1_512;
break;
}
break;
}
case PT_PREFETCHT2:
{
switch (TestData.LogStrideSize[0])
{
case 4:
ReadMem = &ReadSSE_PFT2_16;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT2_16_NT :
&CopySSE_PFT2_16;
break;
case 5:
ReadMem = &ReadSSE_PFT2_32;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT2_32_NT :
&CopySSE_PFT2_32;
break;
case 6:
default:
ReadMem = &ReadSSE_PFT2_64;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT2_64_NT :
&CopySSE_PFT2_64;
break;
case 7:
ReadMem = &ReadSSE_PFT2_128;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT2_128_NT :
&CopySSE_PFT2_128;
break;
case 8:
ReadMem = &ReadSSE_PFT2_256;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT2_256_NT :
&CopySSE_PFT2_256;
break;
case 9:
ReadMem = &ReadSSE_PFT2_512;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_PFT2_512_NT :
&CopySSE_PFT2_512;
break;
}
break;
}
case PT_BLOCK_PREFETCH_1:
{
switch (TestData.LogStrideSize[0])
{
case 4:
ReadMem = &ReadSSE_BPF1_16;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_BPF1_16_NT :
&CopySSE_BPF1_16;
break;
case 5:
ReadMem = &ReadSSE_BPF1_32;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_BPF1_32_NT :
&CopySSE_BPF1_32;
break;
case 6:
default:
ReadMem = &ReadSSE_BPF1_64;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_BPF1_64_NT :
&CopySSE_BPF1_64;
break;
case 7:
ReadMem = &ReadSSE_BPF1_128;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_BPF1_128_NT :
&CopySSE_BPF1_128;
break;
case 8:
ReadMem = &ReadSSE_BPF1_256;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_BPF1_256_NT :
&CopySSE_BPF1_256;
break;
case 9:
ReadMem = &ReadSSE_BPF1_512;
CopyMem = (TestData.UseNonTemporalStore) ?
&CopySSE_BPF1_512_NT :
&CopySSE_BPF1_512;
break;
}
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -