gem5  v22.1.0.0
data64.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2013 ARM Limited
3  * All rights reserved
4  *
5  * The license below extends only to copyright in the software and shall
6  * not be construed as granting a license to any other intellectual
7  * property including but not limited to intellectual property relating
8  * to a hardware implementation of the functionality of the software
9  * licensed hereunder. You may use the software subject to the license
10  * terms below provided that you ensure that this notice is replicated
11  * unmodified and in its entirety in all distributions of the software,
12  * modified or unmodified, in source code or in binary form.
13  *
14  * Redistribution and use in source and binary forms, with or without
15  * modification, are permitted provided that the following conditions are
16  * met: redistributions of source code must retain the above copyright
17  * notice, this list of conditions and the following disclaimer;
18  * redistributions in binary form must reproduce the above copyright
19  * notice, this list of conditions and the following disclaimer in the
20  * documentation and/or other materials provided with the distribution;
21  * neither the name of the copyright holders nor the names of its
22  * contributors may be used to endorse or promote products derived from
23  * this software without specific prior written permission.
24  *
25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36  */
37 
38 #include "arch/arm/insts/data64.hh"
39 
40 namespace gem5
41 {
42 
43 namespace ArmISA
44 {
45 
46 std::string
48  Addr pc, const loader::SymbolTable *symtab) const
49 {
50  std::stringstream ss;
51  printDataInst(ss, true, false, /*XXX not really s*/ false, dest, op1,
52  int_reg::Zero, int_reg::Zero, 0, LSL, imm);
53  return ss.str();
54 }
55 
56 std::string
58  Addr pc, const loader::SymbolTable *symtab) const
59 {
60  std::stringstream ss;
61  printMnemonic(ss, "", false);
63  ccprintf(ss, ", #%d", imm);
64  return ss.str();
65 }
66 
67 std::string
69  Addr pc, const loader::SymbolTable *symtab) const
70 {
71  std::stringstream ss;
72  printDataInst(ss, false, true, /*XXX not really s*/ false, dest, op1,
74  return ss.str();
75 }
76 
77 std::string
79  Addr pc, const loader::SymbolTable *symtab) const
80 {
81  std::stringstream ss;
82  printDataInst(ss, false, true, /*XXX not really s*/ false, dest, op1,
83  op2, int_reg::Zero, shiftAmt, LSL, 0);
84  return ss.str();
85 }
86 
87 std::string
89  Addr pc, const loader::SymbolTable *symtab) const
90 {
91  std::stringstream ss;
92  printMnemonic(ss, "", false);
94  ccprintf(ss, ", ");
95  printIntReg(ss, op1);
96  return ss.str();
97 }
98 
99 std::string
101  Addr pc, const loader::SymbolTable *symtab) const
102 {
103  std::stringstream ss;
104  printMnemonic(ss, "", false);
105  printIntReg(ss, dest);
106  ccprintf(ss, ", ");
107  printIntReg(ss, op1);
108  ccprintf(ss, ", #%d", imm);
109  return ss.str();
110 }
111 
112 std::string
114  Addr pc, const loader::SymbolTable *symtab) const
115 {
116  std::stringstream ss;
117  printMnemonic(ss, "", false);
118  printIntReg(ss, dest);
119  ccprintf(ss, ", ");
120  printIntReg(ss, op1);
121  ccprintf(ss, ", #%d, #%d", imm1, imm2);
122  return ss.str();
123 }
124 
125 std::string
127  Addr pc, const loader::SymbolTable *symtab) const
128 {
129  std::stringstream ss;
130  printMnemonic(ss, "", false);
131  printIntReg(ss, dest);
132  ccprintf(ss, ", ");
133  printIntReg(ss, op1);
134  ccprintf(ss, ", ");
135  printIntReg(ss, op2);
136  return ss.str();
137 }
138 
139 std::string
141  Addr pc, const loader::SymbolTable *symtab) const
142 {
143  std::stringstream ss;
144  printMnemonic(ss, "", false);
145  printIntReg(ss, dest);
146  ccprintf(ss, ", ");
147  printIntReg(ss, op1);
148  ccprintf(ss, ", ");
149  printIntReg(ss, op2);
150  ccprintf(ss, ", #%d", imm);
151  return ss.str();
152 }
153 
154 std::string
156  Addr pc, const loader::SymbolTable *symtab) const
157 {
158  std::stringstream ss;
159  printMnemonic(ss, "", false);
160  printIntReg(ss, dest);
161  ccprintf(ss, ", ");
162  printIntReg(ss, op1);
163  ccprintf(ss, ", ");
164  printIntReg(ss, op2);
165  ccprintf(ss, ", ");
166  printIntReg(ss, op3);
167  return ss.str();
168 }
169 
170 std::string
172  Addr pc, const loader::SymbolTable *symtab) const
173 {
174  std::stringstream ss;
175  printMnemonic(ss, "", false);
176  printIntReg(ss, op1);
177  ccprintf(ss, ", #%d, #%d", imm, defCc);
178  ccprintf(ss, ", ");
179  printCondition(ss, condCode, true);
180  return ss.str();
181 }
182 
183 std::string
185  Addr pc, const loader::SymbolTable *symtab) const
186 {
187  std::stringstream ss;
188  printMnemonic(ss, "", false);
189  printIntReg(ss, op1);
190  ccprintf(ss, ", ");
191  printIntReg(ss, op2);
192  ccprintf(ss, ", #%d", defCc);
193  ccprintf(ss, ", ");
194  printCondition(ss, condCode, true);
195  return ss.str();
196 }
197 
198 std::string
200  Addr pc, const loader::SymbolTable *symtab) const
201 {
202  std::stringstream ss;
203  printMnemonic(ss, "", false);
204  printIntReg(ss, dest);
205  ccprintf(ss, ", ");
206  printIntReg(ss, op1);
207  ccprintf(ss, ", ");
208  printIntReg(ss, op2);
209  ccprintf(ss, ", ");
210  printCondition(ss, condCode, true);
211  return ss.str();
212 }
213 
214 } // namespace ArmISA
215 } // namespace gem5
void printCondition(std::ostream &os, unsigned code, bool noImplicit=false) const
Definition: static_inst.cc:417
void printMnemonic(std::ostream &os, const std::string &suffix="", bool withPred=true, bool withCond64=false, ConditionCode cond64=COND_UC) const
Definition: static_inst.cc:377
void printDataInst(std::ostream &os, bool withImm) const
void printIntReg(std::ostream &os, RegIndex reg_idx, uint8_t opWidth=0) const
Print a register name for disassembly given the unique dependence tag number (FP or int).
Definition: static_inst.cc:299
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:113
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:100
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:88
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:140
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:126
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:155
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:171
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:184
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:199
ConditionCode condCode
Definition: data64.hh:256
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:78
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:57
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:47
std::string generateDisassembly(Addr pc, const loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: data64.cc:68
ArmShiftType shiftType
Definition: data64.hh:87
constexpr RegId Zero
Definition: int.hh:228
Bitfield< 21 > ss
Definition: misc_types.hh:60
Bitfield< 4 > pc
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
void ccprintf(cp::Print &print)
Definition: cprintf.hh:130

Generated on Wed Dec 21 2022 10:22:25 for gem5 by doxygen 1.9.1