summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/formats/fp.isa
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/arm/isa/formats/fp.isa')
-rw-r--r--src/arch/arm/isa/formats/fp.isa103
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