1// -*- mode:c++ -*- 2 |
3// Copyright (c) 2010 ARM Limited 4// All rights reserved 5// 6// The license below extends only to copyright in the software and shall 7// not be construed as granting a license to any other intellectual 8// property including but not limited to intellectual property relating 9// to a hardware implementation of the functionality of the software 10// licensed hereunder. You may use the software subject to the license 11// terms below provided that you ensure that this notice is replicated 12// unmodified and in its entirety in all distributions of the software, 13// modified or unmodified, in source code or in binary form. 14// |
15// Copyright (c) 2007-2008 The Florida State University 16// All rights reserved. 17// 18// Redistribution and use in source and binary forms, with or without 19// modification, are permitted provided that the following conditions are 20// met: redistributions of source code must retain the above copyright 21// notice, this list of conditions and the following disclaimer; 22// redistributions in binary form must reproduce the above copyright --- 149 unchanged lines hidden (view full) --- 172 icValue = 'findCarry(32, resTemp, Rn, rotated_imm)' 173 ivValue = 'findOverflow(32, resTemp, Rn, rotated_imm)' 174 elif flagtype == "sub": 175 icValue = 'findCarry(32, resTemp, Rn, ~rotated_imm)' 176 ivValue = 'findOverflow(32, resTemp, Rn, ~rotated_imm)' 177 elif flagtype == "rsb": 178 icValue = 'findCarry(32, resTemp, rotated_imm, ~Rn)' 179 ivValue = 'findOverflow(32, resTemp, rotated_imm, ~Rn)' |
180 elif flagtype == "modImm": 181 icValue = 'rotated_carry' 182 ivValue = 'CondCodes<28:>' |
183 else: 184 icValue = '(rotate ? rotated_carry:CondCodes<29:>)' 185 ivValue = 'CondCodes<28:>' 186 return calcCcCode % vars() 187}}; 188 189def format DataOp(code, flagtype = logic) {{ 190 (regCcCode, immCcCode) = getCcCode(flagtype) --- 42 unchanged lines hidden (view full) --- 233 BasicDeclare.subst(ccIop) 234 decoder_output = BasicConstructor.subst(iop) + \ 235 BasicConstructor.subst(ccIop) 236 exec_output = PredOpExecute.subst(iop) + \ 237 PredOpExecute.subst(ccIop) 238 decode_block = DataImmDecode.subst(iop) 239}}; 240 |
241def format DataModImmOp(code, flagtype = modImm) {{ 242 code += "resTemp = resTemp;" 243 iop = InstObjParams(name, Name + "ModImm", 'PredModImmOp', 244 {"code": code, 245 "predicate_test": predicateTest}) 246 ccIop = InstObjParams(name, Name + "ModImmCc", 'PredModImmOp', 247 {"code": code + getImmCcCode(flagtype), 248 "predicate_test": predicateTest}) 249 header_output = BasicDeclare.subst(iop) + \ 250 BasicDeclare.subst(ccIop) 251 decoder_output = BasicConstructor.subst(iop) + \ 252 BasicConstructor.subst(ccIop) 253 exec_output = PredOpExecute.subst(iop) + \ 254 PredOpExecute.subst(ccIop) 255 decode_block = DataImmDecode.subst(iop) 256}}; 257 |
258def format PredOp(code, *opt_flags) {{ 259 iop = InstObjParams(name, Name, 'PredOp', 260 {"code": code, 261 "predicate_test": predicateTest}, 262 opt_flags) 263 header_output = BasicDeclare.subst(iop) 264 decoder_output = BasicConstructor.subst(iop) 265 decode_block = BasicDecode.subst(iop) --- 55 unchanged lines hidden --- |