med2-sample.sexp 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. ((operands
  2. ((rD . 'GPR)
  3. (setcc . 'Cc_out)
  4. (predBits . 'Pred)
  5. (rM . 'GPR)
  6. (rN . 'GPR)))
  7. (in (setcc rN rM 'CPSR 'PC))
  8. (defs
  9. (('PC
  10. (ite
  11. ((_ call "arm.is_r15") rD)
  12. (ite
  13. (bveq
  14. #b0
  15. ((_ extract 0 0)
  16. ((_ extract 31 0)
  17. (bvadd
  18. (bvadd ((_ zero_extend 1) rN) ((_ zero_extend 1) (bvnot rM)))
  19. ((_ zero_extend 1) #x00000001)))))
  20. (bvand
  21. #xfffffffe
  22. ((_ extract 31 0)
  23. (bvadd
  24. (bvadd ((_ zero_extend 1) rN) ((_ zero_extend 1) (bvnot rM)))
  25. ((_ zero_extend 1) #x00000001))))
  26. (ite
  27. (bveq
  28. #b0
  29. ((_ extract 1 1)
  30. ((_ extract 31 0)
  31. (bvadd
  32. (bvadd
  33. ((_ zero_extend 1) rN)
  34. ((_ zero_extend 1) (bvnot rM)))
  35. ((_ zero_extend 1) #x00000001)))))
  36. (bvand
  37. #xfffffffd
  38. ((_ extract 31 0)
  39. (bvadd
  40. (bvadd
  41. ((_ zero_extend 1) rN)
  42. ((_ zero_extend 1) (bvnot rM)))
  43. ((_ zero_extend 1) #x00000001))))
  44. ((_ extract 31 0)
  45. (bvadd
  46. (bvadd ((_ zero_extend 1) rN) ((_ zero_extend 1) (bvnot rM)))
  47. ((_ zero_extend 1) #x00000001)))))
  48. (bvadd 'PC #x00000004)))
  49. ('CPSR
  50. (ite
  51. (ite
  52. (andp (bveq #b1 ((_ extract 0 0) predBits)) (bvne predBits #xf))
  53. (notp
  54. (ite
  55. (bveq ((_ extract 3 1) predBits) #b000)
  56. (bveq #b1 ((_ extract 30 30) 'CPSR))
  57. (ite
  58. (bveq ((_ extract 3 1) predBits) #b001)
  59. (bveq #b1 ((_ extract 29 29) 'CPSR))
  60. (ite
  61. (bveq ((_ extract 3 1) predBits) #b010)
  62. (bveq #b1 ((_ extract 31 31) 'CPSR))
  63. (ite
  64. (bveq ((_ extract 3 1) predBits) #b011)
  65. (bveq #b1 ((_ extract 28 28) 'CPSR))
  66. (ite
  67. (bveq ((_ extract 3 1) predBits) #b100)
  68. (andp
  69. (bveq #b1 ((_ extract 29 29) 'CPSR))
  70. (notp (bveq #b1 ((_ extract 30 30) 'CPSR))))
  71. (ite
  72. (bveq ((_ extract 3 1) predBits) #b101)
  73. (bveq
  74. ((_ extract 31 31) 'CPSR)
  75. ((_ extract 28 28) 'CPSR))
  76. (ite
  77. (bveq ((_ extract 3 1) predBits) #b110)
  78. (andp
  79. (bveq
  80. ((_ extract 31 31) 'CPSR)
  81. ((_ extract 28 28) 'CPSR))
  82. (notp (bveq #b1 ((_ extract 30 30) 'CPSR))))
  83. (bveq #b0 #b0)))))))))
  84. (ite
  85. (bveq ((_ extract 3 1) predBits) #b000)
  86. (bveq #b1 ((_ extract 30 30) 'CPSR))
  87. (ite
  88. (bveq ((_ extract 3 1) predBits) #b001)
  89. (bveq #b1 ((_ extract 29 29) 'CPSR))
  90. (ite
  91. (bveq ((_ extract 3 1) predBits) #b010)
  92. (bveq #b1 ((_ extract 31 31) 'CPSR))
  93. (ite
  94. (bveq ((_ extract 3 1) predBits) #b011)
  95. (bveq #b1 ((_ extract 28 28) 'CPSR))
  96. (ite
  97. (bveq ((_ extract 3 1) predBits) #b100)
  98. (andp
  99. (bveq #b1 ((_ extract 29 29) 'CPSR))
  100. (notp (bveq #b1 ((_ extract 30 30) 'CPSR))))
  101. (ite
  102. (bveq ((_ extract 3 1) predBits) #b101)
  103. (bveq
  104. ((_ extract 31 31) 'CPSR)
  105. ((_ extract 28 28) 'CPSR))
  106. (ite
  107. (bveq ((_ extract 3 1) predBits) #b110)
  108. (andp
  109. (bveq
  110. ((_ extract 31 31) 'CPSR)
  111. ((_ extract 28 28) 'CPSR))
  112. (notp (bveq #b1 ((_ extract 30 30) 'CPSR))))
  113. (bveq #b0 #b0)))))))))
  114. (ite
  115. (andp (bveq setcc #b1) (notp ((_ call "arm.is_r15") rD)))
  116. (concat
  117. (concat
  118. ((_ extract 31 31)
  119. ((_ extract 31 0)
  120. (bvadd
  121. (bvadd
  122. ((_ zero_extend 1) rN)
  123. ((_ zero_extend 1) (bvnot rM)))
  124. ((_ zero_extend 1) #x00000001))))
  125. (concat
  126. (ite
  127. (bveq
  128. ((_ extract 31 0)
  129. (bvadd
  130. (bvadd
  131. ((_ zero_extend 1) rN)
  132. ((_ zero_extend 1) (bvnot rM)))
  133. ((_ zero_extend 1) #x00000001)))
  134. #x00000000)
  135. #b1
  136. #b0)
  137. (concat
  138. ((_ extract 32 32)
  139. (bvadd
  140. (bvadd
  141. ((_ zero_extend 1) rN)
  142. ((_ zero_extend 1) (bvnot rM)))
  143. ((_ zero_extend 1) #x00000001)))
  144. (bvand
  145. ((_ extract 31 31)
  146. ((_ extract 31 0)
  147. (bvadd
  148. (bvadd
  149. ((_ zero_extend 1) rN)
  150. ((_ zero_extend 1) (bvnot rM)))
  151. ((_ zero_extend 1) #x00000001))))
  152. ((_ extract 32 32)
  153. (bvadd
  154. (bvadd
  155. ((_ zero_extend 1) rN)
  156. ((_ zero_extend 1) (bvnot rM)))
  157. ((_ zero_extend 1) #x00000001)))))))
  158. ((_ extract 27 0)
  159. (ite
  160. ((_ call "arm.is_r15") rD)
  161. (ite
  162. (bveq
  163. #b0
  164. ((_ extract 0 0)
  165. ((_ extract 31 0)
  166. (bvadd
  167. (bvadd
  168. ((_ zero_extend 1) rN)
  169. ((_ zero_extend 1) (bvnot rM)))
  170. ((_ zero_extend 1) #x00000001)))))
  171. (bvand #xfeffffff (bvor #x00000020 'CPSR))
  172. 'CPSR)
  173. 'CPSR)))
  174. (ite
  175. ((_ call "arm.is_r15") rD)
  176. (ite
  177. (bveq
  178. #b0
  179. ((_ extract 0 0)
  180. ((_ extract 31 0)
  181. (bvadd
  182. (bvadd
  183. ((_ zero_extend 1) rN)
  184. ((_ zero_extend 1) (bvnot rM)))
  185. ((_ zero_extend 1) #x00000001)))))
  186. (bvand #xfeffffff (bvor #x00000020 'CPSR))
  187. 'CPSR)
  188. 'CPSR))
  189. 'CPSR))
  190. (rD
  191. (ite
  192. (ite
  193. (andp (bveq #b1 ((_ extract 0 0) predBits)) (bvne predBits #xf))
  194. (notp
  195. (ite
  196. (bveq ((_ extract 3 1) predBits) #b000)
  197. (bveq #b1 ((_ extract 30 30) 'CPSR))
  198. (ite
  199. (bveq ((_ extract 3 1) predBits) #b001)
  200. (bveq #b1 ((_ extract 29 29) 'CPSR))
  201. (ite
  202. (bveq ((_ extract 3 1) predBits) #b010)
  203. (bveq #b1 ((_ extract 31 31) 'CPSR))
  204. (ite
  205. (bveq ((_ extract 3 1) predBits) #b011)
  206. (bveq #b1 ((_ extract 28 28) 'CPSR))
  207. (ite
  208. (bveq ((_ extract 3 1) predBits) #b100)
  209. (andp
  210. (bveq #b1 ((_ extract 29 29) 'CPSR))
  211. (notp (bveq #b1 ((_ extract 30 30) 'CPSR))))
  212. (ite
  213. (bveq ((_ extract 3 1) predBits) #b101)
  214. (bveq
  215. ((_ extract 31 31) 'CPSR)
  216. ((_ extract 28 28) 'CPSR))
  217. (ite
  218. (bveq ((_ extract 3 1) predBits) #b110)
  219. (andp
  220. (bveq
  221. ((_ extract 31 31) 'CPSR)
  222. ((_ extract 28 28) 'CPSR))
  223. (notp (bveq #b1 ((_ extract 30 30) 'CPSR))))
  224. (bveq #b0 #b0)))))))))
  225. (ite
  226. (bveq ((_ extract 3 1) predBits) #b000)
  227. (bveq #b1 ((_ extract 30 30) 'CPSR))
  228. (ite
  229. (bveq ((_ extract 3 1) predBits) #b001)
  230. (bveq #b1 ((_ extract 29 29) 'CPSR))
  231. (ite
  232. (bveq ((_ extract 3 1) predBits) #b010)
  233. (bveq #b1 ((_ extract 31 31) 'CPSR))
  234. (ite
  235. (bveq ((_ extract 3 1) predBits) #b011)
  236. (bveq #b1 ((_ extract 28 28) 'CPSR))
  237. (ite
  238. (bveq ((_ extract 3 1) predBits) #b100)
  239. (andp
  240. (bveq #b1 ((_ extract 29 29) 'CPSR))
  241. (notp (bveq #b1 ((_ extract 30 30) 'CPSR))))
  242. (ite
  243. (bveq ((_ extract 3 1) predBits) #b101)
  244. (bveq
  245. ((_ extract 31 31) 'CPSR)
  246. ((_ extract 28 28) 'CPSR))
  247. (ite
  248. (bveq ((_ extract 3 1) predBits) #b110)
  249. (andp
  250. (bveq
  251. ((_ extract 31 31) 'CPSR)
  252. ((_ extract 28 28) 'CPSR))
  253. (notp (bveq #b1 ((_ extract 30 30) 'CPSR))))
  254. (bveq #b0 #b0)))))))))
  255. (ite
  256. ((_ call "arm.is_r15") rD)
  257. rD
  258. ((_ extract 31 0)
  259. (bvadd
  260. (bvadd ((_ zero_extend 1) rN) ((_ zero_extend 1) (bvnot rM)))
  261. ((_ zero_extend 1) #x00000001))))
  262. rD)))))