pred.isa (7110:7d27bd3e7ffb) | pred.isa (7133:4a1af4580b7d) |
---|---|
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 --- 26 unchanged lines hidden (view full) --- 35// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 36// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 37// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 38// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 39// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 40// 41// Authors: Stephen Hines 42 | 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 --- 26 unchanged lines hidden (view full) --- 35// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 36// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 37// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 38// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 39// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 40// 41// Authors: Stephen Hines 42 |
43//////////////////////////////////////////////////////////////////// 44// 45// Predicated Instruction Execution 46// 47 | |
48let {{ | 43let {{ |
49 predicateTest = 'testPredicate(CondCodes, condCode)' 50}}; 51 52def template PredOpExecute {{ 53 Fault %(class_name)s::execute(%(CPU_exec_context)s *xc, Trace::InstRecord *traceData) const 54 { 55 Fault fault = NoFault; 56 uint64_t resTemp = 0; 57 resTemp = resTemp; 58 %(op_decl)s; 59 %(op_rd)s; 60 61 if (%(predicate_test)s) 62 { 63 %(code)s; 64 if (fault == NoFault) 65 { 66 %(op_wb)s; 67 } 68 } 69 70 return fault; 71 } 72}}; 73 74def template DataDecode {{ 75 if (machInst.opcode4 == 0) { 76 if (machInst.sField == 0) 77 return new %(class_name)sImm(machInst); 78 else 79 return new %(class_name)sImmCc(machInst); 80 } else { 81 if (machInst.sField == 0) 82 return new %(class_name)s(machInst); 83 else 84 return new %(class_name)sCc(machInst); 85 } 86}}; 87 88def template DataImmDecode {{ 89 if (machInst.sField == 0) 90 return new %(class_name)s(machInst); 91 else 92 return new %(class_name)sCc(machInst); 93}}; 94 95let {{ | |
96 97 calcCcCode = ''' 98 if (%(canOverflow)s){ 99 cprintf("canOverflow: %%d\\n", Rd < resTemp); 100 replaceBits(CondCodes, 27, Rd < resTemp); 101 } else { 102 uint16_t _ic, _iv, _iz, _in; 103 _in = (resTemp >> %(negBit)d) & 1; --- 217 unchanged lines hidden --- | 44 45 calcCcCode = ''' 46 if (%(canOverflow)s){ 47 cprintf("canOverflow: %%d\\n", Rd < resTemp); 48 replaceBits(CondCodes, 27, Rd < resTemp); 49 } else { 50 uint16_t _ic, _iv, _iz, _in; 51 _in = (resTemp >> %(negBit)d) & 1; --- 217 unchanged lines hidden --- |