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 ---