Lines Matching refs:instr

54 static bool isADRP(uint32_t instr) {  in isADRP()  argument
55 return (instr & 0x9f000000) == 0x90000000; in isADRP()
64 static bool isLoadStoreClass(uint32_t instr) { in isLoadStoreClass() argument
65 return (instr & 0x0a000000) == 0x08000000; in isLoadStoreClass()
80 static bool isST1MultipleOpcode(uint32_t instr) { in isST1MultipleOpcode() argument
81 return (instr & 0x0000f000) == 0x00002000 || in isST1MultipleOpcode()
82 (instr & 0x0000f000) == 0x00006000 || in isST1MultipleOpcode()
83 (instr & 0x0000f000) == 0x00007000 || in isST1MultipleOpcode()
84 (instr & 0x0000f000) == 0x0000a000; in isST1MultipleOpcode()
87 static bool isST1Multiple(uint32_t instr) { in isST1Multiple() argument
88 return (instr & 0xbfff0000) == 0x0c000000 && isST1MultipleOpcode(instr); in isST1Multiple()
92 static bool isST1MultiplePost(uint32_t instr) { in isST1MultiplePost() argument
93 return (instr & 0xbfe00000) == 0x0c800000 && isST1MultipleOpcode(instr); in isST1MultiplePost()
108 static bool isST1SingleOpcode(uint32_t instr) { in isST1SingleOpcode() argument
109 return (instr & 0x0040e000) == 0x00000000 || in isST1SingleOpcode()
110 (instr & 0x0040e000) == 0x00004000 || in isST1SingleOpcode()
111 (instr & 0x0040e000) == 0x00008000; in isST1SingleOpcode()
114 static bool isST1Single(uint32_t instr) { in isST1Single() argument
115 return (instr & 0xbfff0000) == 0x0d000000 && isST1SingleOpcode(instr); in isST1Single()
119 static bool isST1SinglePost(uint32_t instr) { in isST1SinglePost() argument
120 return (instr & 0xbfe00000) == 0x0d800000 && isST1SingleOpcode(instr); in isST1SinglePost()
123 static bool isST1(uint32_t instr) { in isST1() argument
124 return isST1Multiple(instr) || isST1MultiplePost(instr) || in isST1()
125 isST1Single(instr) || isST1SinglePost(instr); in isST1()
131 static bool isLoadStoreExclusive(uint32_t instr) { in isLoadStoreExclusive() argument
132 return (instr & 0x3f000000) == 0x08000000; in isLoadStoreExclusive()
135 static bool isLoadExclusive(uint32_t instr) { in isLoadExclusive() argument
136 return (instr & 0x3f400000) == 0x08400000; in isLoadExclusive()
141 static bool isLoadLiteral(uint32_t instr) { in isLoadLiteral() argument
142 return (instr & 0x3b000000) == 0x18000000; in isLoadLiteral()
150 static bool isSTNP(uint32_t instr) { in isSTNP() argument
151 return (instr & 0x3bc00000) == 0x28000000; in isSTNP()
159 static bool isSTPPost(uint32_t instr) { in isSTPPost() argument
160 return (instr & 0x3bc00000) == 0x28800000; in isSTPPost()
165 static bool isSTPOffset(uint32_t instr) { in isSTPOffset() argument
166 return (instr & 0x3bc00000) == 0x29000000; in isSTPOffset()
172 static bool isSTPPre(uint32_t instr) { in isSTPPre() argument
173 return (instr & 0x3bc00000) == 0x29800000; in isSTPPre()
176 static bool isSTP(uint32_t instr) { in isSTP() argument
177 return isSTPPost(instr) || isSTPOffset(instr) || isSTPPre(instr); in isSTP()
183 static bool isLoadStoreUnscaled(uint32_t instr) { in isLoadStoreUnscaled() argument
184 return (instr & 0x3b000c00) == 0x38000000; in isLoadStoreUnscaled()
189 static bool isLoadStoreImmediatePost(uint32_t instr) { in isLoadStoreImmediatePost() argument
190 return (instr & 0x3b200c00) == 0x38000400; in isLoadStoreImmediatePost()
195 static bool isLoadStoreUnpriv(uint32_t instr) { in isLoadStoreUnpriv() argument
196 return (instr & 0x3b200c00) == 0x38000800; in isLoadStoreUnpriv()
201 static bool isLoadStoreImmediatePre(uint32_t instr) { in isLoadStoreImmediatePre() argument
202 return (instr & 0x3b200c00) == 0x38000c00; in isLoadStoreImmediatePre()
207 static bool isLoadStoreRegisterOff(uint32_t instr) { in isLoadStoreRegisterOff() argument
208 return (instr & 0x3b200c00) == 0x38200800; in isLoadStoreRegisterOff()
213 static bool isLoadStoreRegisterUnsigned(uint32_t instr) { in isLoadStoreRegisterUnsigned() argument
214 return (instr & 0x3b000000) == 0x39000000; in isLoadStoreRegisterUnsigned()
218 static uint32_t getRt(uint32_t instr) { return (instr & 0x1f); } in getRt() argument
221 static uint32_t getRn(uint32_t instr) { return (instr >> 5) & 0x1f; } in getRn() argument
230 static bool isBranch(uint32_t instr) { in isBranch() argument
231 return ((instr & 0xfe000000) == 0xd6000000) || // Cond branch. in isBranch()
232 ((instr & 0xfe000000) == 0x54000000) || // Uncond branch reg. in isBranch()
233 ((instr & 0x7c000000) == 0x14000000) || // Uncond branch imm. in isBranch()
234 ((instr & 0x7c000000) == 0x34000000); // Compare and test branch. in isBranch()
237 static bool isV8SingleRegisterNonStructureLoadStore(uint32_t instr) { in isV8SingleRegisterNonStructureLoadStore() argument
238 return isLoadStoreUnscaled(instr) || isLoadStoreImmediatePost(instr) || in isV8SingleRegisterNonStructureLoadStore()
239 isLoadStoreUnpriv(instr) || isLoadStoreImmediatePre(instr) || in isV8SingleRegisterNonStructureLoadStore()
240 isLoadStoreRegisterOff(instr) || isLoadStoreRegisterUnsigned(instr); in isV8SingleRegisterNonStructureLoadStore()
247 static bool isV8NonStructureLoad(uint32_t instr) { in isV8NonStructureLoad() argument
248 if (isLoadExclusive(instr)) in isV8NonStructureLoad()
250 if (isLoadLiteral(instr)) in isV8NonStructureLoad()
252 else if (isV8SingleRegisterNonStructureLoadStore(instr)) { in isV8NonStructureLoad()
255 uint32_t size = (instr >> 30) & 0xff; in isV8NonStructureLoad()
256 uint32_t v = (instr >> 26) & 0x1; in isV8NonStructureLoad()
257 uint32_t opc = (instr >> 22) & 0x3; in isV8NonStructureLoad()
273 static bool hasWriteback(uint32_t instr) { in hasWriteback() argument
274 return isLoadStoreImmediatePre(instr) || isLoadStoreImmediatePost(instr) || in hasWriteback()
275 isSTPPre(instr) || isSTPPost(instr) || isST1SinglePost(instr) || in hasWriteback()
276 isST1MultiplePost(instr); in hasWriteback()
282 static bool doesLoadStoreWriteToReg(uint32_t instr, uint32_t reg) { in doesLoadStoreWriteToReg() argument
283 return (isV8NonStructureLoad(instr) && getRt(instr) == reg) || in doesLoadStoreWriteToReg()
284 (hasWriteback(instr) && getRn(instr) == reg); in doesLoadStoreWriteToReg()