ARM: Add floating point load/store microops.

This commit is contained in:
Gabe Black 2010-06-02 12:58:04 -05:00
parent 3a11412c99
commit cb631d87c3

View file

@ -58,6 +58,13 @@ let {{
'predicate_test': predicateTest}, 'predicate_test': predicateTest},
['IsMicroop']) ['IsMicroop'])
microLdrFpUopIop = InstObjParams('ldrfp_uop', 'MicroLdrFpUop',
'MicroMemOp',
{'memacc_code': 'Fa = Mem;',
'ea_code': 'EA = Rb + (up ? imm : -imm);',
'predicate_test': predicateTest},
['IsMicroop'])
microLdrRetUopCode = ''' microLdrRetUopCode = '''
Ra = Mem; Ra = Mem;
uint32_t newCpsr = uint32_t newCpsr =
@ -80,21 +87,28 @@ let {{
'predicate_test': predicateTest}, 'predicate_test': predicateTest},
['IsMicroop']) ['IsMicroop'])
header_output = MicroMemDeclare.subst(microLdrUopIop) + \ microStrFpUopIop = InstObjParams('strfp_uop', 'MicroStrFpUop',
MicroMemDeclare.subst(microLdrRetUopIop) + \ 'MicroMemOp',
MicroMemDeclare.subst(microStrUopIop) {'memacc_code': 'Mem = Fa;',
decoder_output = MicroMemConstructor.subst(microLdrUopIop) + \ 'ea_code': 'EA = Rb + (up ? imm : -imm);',
MicroMemConstructor.subst(microLdrRetUopIop) + \ 'predicate_test': predicateTest},
MicroMemConstructor.subst(microStrUopIop) ['IsMicroop'])
exec_output = LoadExecute.subst(microLdrUopIop) + \
LoadExecute.subst(microLdrRetUopIop) + \ header_output = decoder_output = exec_output = ''
StoreExecute.subst(microStrUopIop) + \
LoadInitiateAcc.subst(microLdrUopIop) + \ loadIops = (microLdrUopIop, microLdrFpUopIop, microLdrRetUopIop)
LoadInitiateAcc.subst(microLdrRetUopIop) + \ storeIops = (microStrUopIop, microStrFpUopIop)
StoreInitiateAcc.subst(microStrUopIop) + \ for iop in loadIops + storeIops:
LoadCompleteAcc.subst(microLdrUopIop) + \ header_output += MicroMemDeclare.subst(iop)
LoadCompleteAcc.subst(microLdrRetUopIop) + \ decoder_output += MicroMemConstructor.subst(iop)
StoreCompleteAcc.subst(microStrUopIop) for iop in loadIops:
exec_output += LoadExecute.subst(iop) + \
LoadInitiateAcc.subst(iop) + \
LoadCompleteAcc.subst(iop)
for iop in storeIops:
exec_output += StoreExecute.subst(iop) + \
StoreInitiateAcc.subst(iop) + \
StoreCompleteAcc.subst(iop)
}}; }};
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////