mirror of
https://github.com/andreas-abel/nanoBench.git
synced 2026-01-06 20:30:13 +01:00
Zen3 fix
This commit is contained in:
@@ -876,11 +876,11 @@ def getPreInstr(instrNode):
|
|||||||
|
|
||||||
if iform in ['CALL_NEAR_GPRv', 'JMP_GPRv']:
|
if iform in ['CALL_NEAR_GPRv', 'JMP_GPRv']:
|
||||||
preInstrCode = 'lea RAX, [RIP+2]'
|
preInstrCode = 'lea RAX, [RIP+2]'
|
||||||
preInstrNodes = [instrNodeDict['LEA_R_D8 (R64)']]
|
preInstrNodes = [instrNodeDict['LEA_R_D32 (R64)']]
|
||||||
|
|
||||||
if iform in ['CALL_NEAR_MEMv', 'JMP_MEMv']:
|
if iform in ['CALL_NEAR_MEMv', 'JMP_MEMv']:
|
||||||
preInstrCode = 'lea RAX, [RIP+6]; mov [R14], RAX'
|
preInstrCode = 'lea RAX, [RIP+6]; mov [R14], RAX'
|
||||||
preInstrNodes = [instrNodeDict['LEA_R_D8 (R64)'], instrNodeDict['MOV (M64, R64)']]
|
preInstrNodes = [instrNodeDict['LEA_R_D32 (R64)'], instrNodeDict['MOV (M64, R64)']]
|
||||||
|
|
||||||
if iform == 'LEAVE':
|
if iform == 'LEAVE':
|
||||||
preInstrCode = 'lea RBP, [R14]'
|
preInstrCode = 'lea RBP, [R14]'
|
||||||
@@ -896,11 +896,11 @@ def getPreInstr(instrNode):
|
|||||||
|
|
||||||
if iform == 'RET_NEAR':
|
if iform == 'RET_NEAR':
|
||||||
preInstrCode = 'lea RAX, [RIP+5]; mov [RSP], RAX'
|
preInstrCode = 'lea RAX, [RIP+5]; mov [RSP], RAX'
|
||||||
preInstrNodes = [instrNodeDict['LEA_R_D8 (R64)'], instrNodeDict['MOV (M64, R64)']]
|
preInstrNodes = [instrNodeDict['LEA_R_D32 (R64)'], instrNodeDict['MOV (M64, R64)']]
|
||||||
|
|
||||||
if iform == 'RET_NEAR_IMMw':
|
if iform == 'RET_NEAR_IMMw':
|
||||||
preInstrCode = 'lea RAX, [RIP+7]; mov [RSP], RAX'
|
preInstrCode = 'lea RAX, [RIP+7]; mov [RSP], RAX'
|
||||||
preInstrNodes = [instrNodeDict['LEA_R_D8 (R64)'], instrNodeDict['MOV (M64, R64)']]
|
preInstrNodes = [instrNodeDict['LEA_R_D32 (R64)'], instrNodeDict['MOV (M64, R64)']]
|
||||||
|
|
||||||
return (preInstrCode, preInstrNodes)
|
return (preInstrCode, preInstrNodes)
|
||||||
|
|
||||||
@@ -3236,6 +3236,7 @@ def main():
|
|||||||
# we need one instruction with 1*FP45;
|
# we need one instruction with 1*FP45;
|
||||||
# their throughput is limited to 1 per cycle; thus, they are disallowed by the TP_noDepBreaking_noLoop check above
|
# their throughput is limited to 1 per cycle; thus, they are disallowed by the TP_noDepBreaking_noLoop check above
|
||||||
disallowedBlockingInstrs.remove(instrNodeDict['MOVD (R32, XMM)'])
|
disallowedBlockingInstrs.remove(instrNodeDict['MOVD (R32, XMM)'])
|
||||||
|
disallowedBlockingInstrs.remove(instrNodeDict['VMOVD (R32, XMM)'])
|
||||||
|
|
||||||
print('disallowedBlockingInstrs')
|
print('disallowedBlockingInstrs')
|
||||||
for instrNode in disallowedBlockingInstrs:
|
for instrNode in disallowedBlockingInstrs:
|
||||||
|
|||||||
Reference in New Issue
Block a user