diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:16 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:16 -0500 |
commit | b93ceef5381b7c84b6887b5299ae81ff48ef45c9 (patch) | |
tree | 8fa68dffcdb842ab892b272f5c9f24fbf7f75ab9 /src/arch/arm/isa/formats | |
parent | c1e1de8d69624b1cf18a13a46e624ad5827954b7 (diff) | |
download | gem5-b93ceef5381b7c84b6887b5299ae81ff48ef45c9.tar.xz |
ARM: Get rid of some of the old FP implementation.
Diffstat (limited to 'src/arch/arm/isa/formats')
-rw-r--r-- | src/arch/arm/isa/formats/fp.isa | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/src/arch/arm/isa/formats/fp.isa b/src/arch/arm/isa/formats/fp.isa index 03e574648..55668e5f6 100644 --- a/src/arch/arm/isa/formats/fp.isa +++ b/src/arch/arm/isa/formats/fp.isa @@ -45,109 +45,6 @@ // Floating Point operate instructions // -def template FPAExecute {{ - Fault %(class_name)s::execute(%(CPU_exec_context)s *xc, Trace::InstRecord *traceData) const - { - Fault fault = NoFault; - - %(fp_enable_check)s; - - %(op_decl)s; - %(op_rd)s; - - if (%(predicate_test)s) { - %(code)s; - if (fault == NoFault) { - %(op_wb)s; - } - } - - return fault; - } -}}; - -def template FloatDoubleDecode {{ - { - ArmStaticInst *i = NULL; - switch (OPCODE_19 << 1 | OPCODE_7) - { - case 0: - i = (ArmStaticInst *)new %(class_name)sS(machInst); - break; - case 1: - i = (ArmStaticInst *)new %(class_name)sD(machInst); - break; - case 2: - case 3: - default: - panic("Cannot decode float/double nature of the instruction"); - } - return i; - } -}}; - -// Primary format for float point operate instructions: -def format FloatOp(code, *flags) {{ - orig_code = code - - cblk = code - iop = InstObjParams(name, Name, 'PredOp', - {"code": cblk, - "predicate_test": predicateTest}, - flags) - header_output = BasicDeclare.subst(iop) - decoder_output = BasicConstructor.subst(iop) - exec_output = FPAExecute.subst(iop) - - sng_cblk = code - sng_iop = InstObjParams(name, Name+'S', 'PredOp', - {"code": sng_cblk, - "predicate_test": predicateTest}, - flags) - header_output += BasicDeclare.subst(sng_iop) - decoder_output += BasicConstructor.subst(sng_iop) - exec_output += FPAExecute.subst(sng_iop) - - dbl_code = re.sub(r'\.sf', '.df', orig_code) - - dbl_cblk = dbl_code - dbl_iop = InstObjParams(name, Name+'D', 'PredOp', - {"code": dbl_cblk, - "predicate_test": predicateTest}, - flags) - header_output += BasicDeclare.subst(dbl_iop) - decoder_output += BasicConstructor.subst(dbl_iop) - exec_output += FPAExecute.subst(dbl_iop) - - decode_block = FloatDoubleDecode.subst(iop) -}}; - -let {{ - calcFPCcCode = ''' - uint16_t _in, _iz, _ic, _iv; - - _in = %(fReg1)s < %(fReg2)s; - _iz = %(fReg1)s == %(fReg2)s; - _ic = %(fReg1)s >= %(fReg2)s; - _iv = (isnan(%(fReg1)s) || isnan(%(fReg2)s)) & 1; - - CondCodes = _in << 31 | _iz << 30 | _ic << 29 | _iv << 28 | - (CondCodes & 0x0FFFFFFF); - ''' -}}; - -def format FloatCmp(fReg1, fReg2, *flags) {{ - code = calcFPCcCode % vars() - iop = InstObjParams(name, Name, 'PredOp', - {"code": code, - "predicate_test": predicateTest}, - flags) - header_output = BasicDeclare.subst(iop) - decoder_output = BasicConstructor.subst(iop) - decode_block = BasicDecode.subst(iop) - exec_output = FPAExecute.subst(iop) -}}; - let {{ header_output = ''' StaticInstPtr |