Advertisement
Guest User

asm

a guest
Sep 14th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.71 KB | None | 0 0
  1. ((:GENERATOR 7
  2. (SB-ASSEM:INST SB-VM::LEA SB-VM::NEW-UWP (SB-VM::UNWIND-BLOCK-EA SB-C:TN))
  3. (STORE-TL-SYMBOL-VALUE SB-VM::NEW-UWP *CURRENT-UNWIND-PROTECT-BLOCK*))
  4. (:GENERATOR 10 (STORE-TL-SYMBOL-VALUE CATCH *CURRENT-CATCH-BLOCK*))
  5. (:GENERATOR 0 (SB-ASSEM:EMIT-LABEL SB-ASSEM:LABEL)
  6. (NOTE-THIS-LOCATION SB-VM::VOP :NON-LOCAL-ENTRY))
  7. (:GENERATOR 1 (LOAD-BINDING-STACK-POINTER SB-VM::RES))
  8. (:GENERATOR 13 (LOAD-TL-SYMBOL-VALUE CATCH *CURRENT-CATCH-BLOCK*))
  9. (:GENERATOR 30 (SB-ASSEM:EMIT-LABEL SB-ASSEM:LABEL)
  10. (NOTE-THIS-LOCATION SB-VM::VOP :NON-LOCAL-ENTRY)
  11. (COND ((ZEROP SB-VM::NVALS))
  12. ((= SB-VM::NVALS 1)
  13. (LET ((SB-VM::NO-VALUES (SB-ASSEM:GEN-LABEL)))
  14. (SB-ASSEM:INST SB-VM::MOV (TN-REF-TN VALUES) NIL-VALUE)
  15. (SB-ASSEM:INST SB-VM::JRCXZ SB-VM::NO-VALUES)
  16. (LOADW (TN-REF-TN VALUES) SB-VM::START -1)
  17. (SB-ASSEM:EMIT-LABEL SB-VM::NO-VALUES)))
  18. (T
  19. (COLLECT ((SB-VM::DEFAULTS))
  20. (DO ((SB-VM::I 0 (1+ SB-VM::I))
  21. (SB-C:TN-REF VALUES (TN-REF-ACROSS SB-C:TN-REF)))
  22. ((NULL SB-C:TN-REF))
  23. (LET ((SB-VM::DEFAULT-LAB (SB-ASSEM:GEN-LABEL))
  24. (SB-C:TN (TN-REF-TN SB-C:TN-REF))
  25. (SB-VM::FIRST-STACK-ARG-P (= SB-VM::I REGISTER-ARG-COUNT)))
  26. (SB-VM::DEFAULTS
  27. (CONS SB-VM::DEFAULT-LAB
  28. (CONS SB-C:TN SB-VM::FIRST-STACK-ARG-P)))
  29. (SB-ASSEM:INST SB-VM::CMP COUNT (FIXNUMIZE SB-VM::I))
  30. (SB-ASSEM:INST SB-VM::JMP :LE SB-VM::DEFAULT-LAB)
  31. (WHEN SB-VM::FIRST-STACK-ARG-P (STOREW RDX-TN RBX-TN -1))
  32. (SC-CASE SB-C:TN
  33. ((SB-VM::DESCRIPTOR-REG SB-VM::ANY-REG)
  34. (LOADW SB-C:TN SB-VM::START
  35. (FRAME-WORD-OFFSET (+ SP->FP-OFFSET SB-VM::I))))
  36. ((SB-VM::CONTROL-STACK)
  37. (LOADW SB-VM::MOVE-TEMP SB-VM::START
  38. (FRAME-WORD-OFFSET (+ SP->FP-OFFSET SB-VM::I)))
  39. (SB-ASSEM:INST SB-VM::MOV SB-C:TN SB-VM::MOVE-TEMP)))))
  40. (LET ((SB-VM::DEFAULTING-DONE (SB-ASSEM:GEN-LABEL)))
  41. (SB-ASSEM:EMIT-LABEL SB-VM::DEFAULTING-DONE)
  42. (SB-ASSEM:ASSEMBLE (*ELSEWHERE*)
  43. (DOLIST (SB-VM::DEFAULT (SB-VM::DEFAULTS))
  44. (SB-ASSEM:EMIT-LABEL (CAR SB-VM::DEFAULT))
  45. (WHEN (CDDR SB-VM::DEFAULT) (SB-ASSEM:INST PUSH RDX-TN))
  46. (SB-ASSEM:INST SB-VM::MOV (SECOND SB-VM::DEFAULT) NIL-VALUE))
  47. (SB-ASSEM:INST SB-VM::JMP SB-VM::DEFAULTING-DONE))))))
  48. (SB-ASSEM:INST SB-VM::MOV RSP-TN SB-VM::SP))
  49. (:GENERATOR 22
  50. (SB-ASSEM:INST SB-VM::LEA BLOCK (SB-VM::UNWIND-BLOCK-EA SB-C:TN))
  51. (LOAD-TL-SYMBOL-VALUE SB-VM::TEMP *CURRENT-UNWIND-PROTECT-BLOCK*)
  52. (STOREW SB-VM::TEMP BLOCK SB-VM::UNWIND-BLOCK-UWP-SLOT)
  53. (STOREW RBP-TN BLOCK SB-VM::UNWIND-BLOCK-CFP-SLOT)
  54. (SB-ASSEM:INST SB-VM::LEA SB-VM::TEMP
  55. (MAKE-FIXUP NIL :CODE-OBJECT SB-VM::ENTRY-LABEL))
  56. (STOREW SB-VM::TEMP BLOCK UNWIND-BLOCK-ENTRY-PC-SLOT))
  57. (:GENERATOR 1 (MOVE SB-VM::RES RSP-TN))
  58. (:GENERATOR 44 (SB-ASSEM:INST SB-VM::LEA BLOCK (CATCH-BLOCK-EA SB-C:TN))
  59. (LOAD-TL-SYMBOL-VALUE SB-VM::TEMP *CURRENT-UNWIND-PROTECT-BLOCK*)
  60. (STOREW SB-VM::TEMP BLOCK SB-VM::CATCH-BLOCK-UWP-SLOT)
  61. (STOREW RBP-TN BLOCK SB-VM::CATCH-BLOCK-CFP-SLOT)
  62. (SB-ASSEM:INST SB-VM::LEA SB-VM::TEMP
  63. (MAKE-FIXUP NIL :CODE-OBJECT SB-VM::ENTRY-LABEL))
  64. (STOREW SB-VM::TEMP BLOCK CATCH-BLOCK-ENTRY-PC-SLOT)
  65. (STOREW SB-VM::TAG BLOCK CATCH-BLOCK-TAG-SLOT)
  66. (LOAD-TL-SYMBOL-VALUE SB-VM::TEMP *CURRENT-CATCH-BLOCK*)
  67. (STOREW SB-VM::TEMP BLOCK CATCH-BLOCK-PREVIOUS-CATCH-SLOT)
  68. (STORE-TL-SYMBOL-VALUE BLOCK *CURRENT-CATCH-BLOCK*))
  69. (:GENERATOR 30 (SB-ASSEM:EMIT-LABEL SB-ASSEM:LABEL)
  70. (NOTE-THIS-LOCATION SB-VM::VOP :NON-LOCAL-ENTRY)
  71. (SB-ASSEM:INST SB-VM::LEA SB-VM::RSI
  72. (SB-VM::MAKE-EA :QWORD :BASE SB-VM::SOURCE :DISP
  73. (- N-WORD-BYTES)))
  74. (MOVE SB-VM::RDI SB-VM::TOP) (MOVE SB-VM::RESULT SB-VM::RDI)
  75. (SB-ASSEM:INST SB-VM::SUB SB-VM::RDI N-WORD-BYTES) (MOVE SB-VM::RCX COUNT)
  76. (MOVE SB-VM::NUM SB-VM::RCX)
  77. (SB-ASSEM:INST SB-VM::SHR SB-VM::RCX N-FIXNUM-TAG-BITS)
  78. (SB-ASSEM:INST SB-VM::JRCXZ SB-VM::DONE) (SB-ASSEM:INST SB-VM::STD)
  79. (SB-ASSEM:INST SB-VM::REP) (SB-ASSEM:INST SB-VM::MOVS :QWORD)
  80. (SB-ASSEM:INST SB-VM::CLD) SB-VM::DONE
  81. (SB-ASSEM:INST SB-VM::LEA RSP-TN
  82. (SB-VM::MAKE-EA :QWORD :BASE SB-VM::RDI :DISP N-WORD-BYTES)))
  83. (:GENERATOR 5 (MOVE SB-VM::DST SB-VM::LO) (MOVE SB-VM::TMP SB-VM::HI)
  84. (SB-ASSEM:INST SB-VM::UNPCKLPD SB-VM::DST SB-VM::TMP))
  85. (:GENERATOR 5 (SB-ASSEM:INST SB-VM::MOVD SB-VM::DST SB-VM::LO)
  86. (SB-ASSEM:INST SB-VM::MOVD SB-VM::TMP SB-VM::HI)
  87. (SB-ASSEM:INST SB-VM::PUNPCKLQDQ SB-VM::DST SB-VM::TMP))
  88. (:GENERATOR 5 (MOVE SB-VM::DST SB-VM::X)
  89. (SB-ASSEM:INST SB-VM::UNPCKLPS SB-VM::DST SB-VM::Z)
  90. (MOVE SB-VM::TMP SB-VM::Y)
  91. (SB-ASSEM:INST SB-VM::UNPCKLPS SB-VM::TMP SB-VM::W)
  92. (SB-ASSEM:INST SB-VM::UNPCKLPS SB-VM::DST SB-VM::TMP))
  93. (:GENERATOR 5
  94. (SC-CASE FLOAT
  95. (SB-VM::DOUBLE-REG (SB-ASSEM:INST SB-VM::MOVSD SB-VM::TEMP FLOAT)
  96. (MOVE SB-VM::HI-BITS SB-VM::TEMP))
  97. (SB-VM::DOUBLE-STACK
  98. (LOADW SB-VM::HI-BITS EBP-TN (FRAME-WORD-OFFSET (TN-OFFSET FLOAT))))
  99. (SB-VM::DESCRIPTOR-REG
  100. (LOADW SB-VM::HI-BITS FLOAT DOUBLE-FLOAT-VALUE-SLOT
  101. OTHER-POINTER-LOWTAG)))
  102. (SB-ASSEM:INST SB-VM::SAR SB-VM::HI-BITS 32))
  103. (:GENERATOR 3 (SB-ASSEM:INST SB-VM::MOVD SB-VM::DST SB-VM::X))
  104. (:GENERATOR 5 (MOVE SB-VM::DST SB-VM::LO) (MOVE SB-VM::TMP SB-VM::HI)
  105. (SB-ASSEM:INST SB-VM::UNPCKLPD SB-VM::DST SB-VM::TMP))
  106. (:GENERATOR 4
  107. (SC-CASE SB-VM::RES
  108. (SB-VM::SINGLE-STACK
  109. (SC-CASE SB-VM::BITS
  110. (SB-VM::SIGNED-REG (SB-ASSEM:INST SB-VM::MOV SB-VM::RES SB-VM::BITS))
  111. (SB-VM::SIGNED-STACK (AVER (LOCATION= SB-VM::BITS SB-VM::RES)))))
  112. (SB-VM::SINGLE-REG
  113. (SC-CASE SB-VM::BITS
  114. (SB-VM::SIGNED-REG
  115. (SB-ASSEM:INST SB-VM::MOVD SB-VM::RES (REG-IN-SIZE SB-VM::BITS :DWORD)))
  116. (SB-VM::SIGNED-STACK
  117. (SB-ASSEM:INST SB-VM::MOVSS SB-VM::RES
  118. (SB-VM::MAKE-EA :DWORD :BASE RBP-TN :DISP
  119. (FRAME-BYTE-OFFSET
  120. (TN-OFFSET SB-VM::BITS)))))))))
  121. (:GENERATOR 3 (MOVE SB-VM::TMP SB-VM::X)
  122. (SB-ASSEM:INST SB-VM::PSRLDQ SB-VM::TMP 8)
  123. (SB-ASSEM:INST SB-VM::MOVD SB-VM::DST SB-VM::TMP))
  124. (:GENERATOR 5 (MOVE SB-VM::DST SB-VM::X)
  125. (SB-ASSEM:INST SB-VM::UNPCKLPS SB-VM::DST SB-VM::Z)
  126. (MOVE SB-VM::TMP SB-VM::Y)
  127. (SB-ASSEM:INST SB-VM::UNPCKLPS SB-VM::TMP SB-VM::W)
  128. (SB-ASSEM:INST SB-VM::UNPCKLPS SB-VM::DST SB-VM::TMP))
  129. (:GENERATOR 5
  130. (LET ((SB-VM::DWORD-LO-BITS (REG-IN-SIZE SB-VM::LO-BITS :DWORD)))
  131. (SC-CASE FLOAT
  132. (SB-VM::DOUBLE-REG (SB-ASSEM:INST SB-VM::MOVSD SB-VM::TEMP FLOAT)
  133. (SB-ASSEM:INST SB-VM::MOV SB-VM::DWORD-LO-BITS
  134. (SB-VM::MAKE-EA :DWORD :BASE RBP-TN :DISP
  135. (FRAME-BYTE-OFFSET
  136. (TN-OFFSET SB-VM::TEMP)))))
  137. (SB-VM::DOUBLE-STACK
  138. (SB-ASSEM:INST SB-VM::MOV SB-VM::DWORD-LO-BITS
  139. (SB-VM::MAKE-EA :DWORD :BASE RBP-TN :DISP
  140. (FRAME-BYTE-OFFSET (TN-OFFSET FLOAT)))))
  141. (SB-VM::DESCRIPTOR-REG
  142. (SB-ASSEM:INST SB-VM::MOV SB-VM::DWORD-LO-BITS
  143. (MAKE-EA-FOR-OBJECT-SLOT-HALF FLOAT
  144. DOUBLE-FLOAT-VALUE-SLOT
  145. OTHER-POINTER-LOWTAG))))))
  146. (:GENERATOR 2 (MOVE SB-VM::TEMP SB-VM::HI-BITS)
  147. (SB-ASSEM:INST SB-VM::SHL SB-VM::TEMP 32)
  148. (SB-ASSEM:INST OR SB-VM::TEMP SB-VM::LO-BITS)
  149. (SB-ASSEM:INST SB-VM::MOVD SB-VM::RES SB-VM::TEMP))
  150. (:GENERATOR 5 (SB-ASSEM:INST SB-VM::MOVD SB-VM::DST SB-VM::LO)
  151. (SB-ASSEM:INST SB-VM::MOVD SB-VM::TMP SB-VM::HI)
  152. (SB-ASSEM:INST SB-VM::PUNPCKLQDQ SB-VM::DST SB-VM::TMP))
  153. (:GENERATOR 13
  154. (SB-C:FIXED-ALLOC SB-VM::DST SIMD-PACK-WIDETAG SIMD-PACK-SIZE SB-VM::NODE)
  155. (STOREW SB-VM::TAG SB-VM::DST SIMD-PACK-TAG-SLOT OTHER-POINTER-LOWTAG)
  156. (STOREW SB-VM::LO SB-VM::DST SIMD-PACK-LO-VALUE-SLOT OTHER-POINTER-LOWTAG)
  157. (STOREW SB-VM::HI SB-VM::DST SIMD-PACK-HI-VALUE-SLOT OTHER-POINTER-LOWTAG))
  158. (:GENERATOR 4
  159. (SC-CASE FLOAT
  160. (SB-VM::SINGLE-REG
  161. (LET ((SB-VM::DWORD-BITS (REG-IN-SIZE SB-VM::BITS :DWORD)))
  162. (SB-ASSEM:INST SB-VM::MOVD SB-VM::DWORD-BITS FLOAT)
  163. (SB-ASSEM:INST SB-VM::MOVSXD SB-VM::BITS SB-VM::DWORD-BITS)))
  164. (SB-VM::SINGLE-STACK
  165. (SB-ASSEM:INST SB-VM::MOVSXD SB-VM::BITS
  166. (SB-VM::MAKE-EA :DWORD :BASE RBP-TN :DISP
  167. (FRAME-BYTE-OFFSET (TN-OFFSET FLOAT)))))
  168. (SB-VM::DESCRIPTOR-REG (MOVE SB-VM::BITS FLOAT)
  169. (SB-ASSEM:INST SB-VM::SAR SB-VM::BITS 32))))
  170. (:GENERATOR 0)
  171. (:GENERATOR 1
  172. (SC-CASE SB-VM::RES
  173. (SB-VM::SINGLE-STACK (SB-ASSEM:INST SB-VM::MOV SB-VM::RES SB-VM::BITS))
  174. (SB-VM::SINGLE-REG
  175. (SB-ASSEM:INST SB-VM::MOVSS SB-VM::RES
  176. (REGISTER-INLINE-CONSTANT :DWORD SB-VM::BITS)))
  177. (SB-VM::DESCRIPTOR-REG
  178. (SB-ASSEM:INST SB-VM::MOV SB-VM::RES
  179. (LOGIOR (ASH SB-VM::BITS 32) SINGLE-FLOAT-WIDETAG)))))
  180. (:GENERATOR 12
  181. (LET ((SB-VM::SECOND-VALUE SB-VM::DUP) (SB-VM::FIRST-VALUE SB-VM::R))
  182. (FLET ((SB-VM::DUPLICATE (SB-VM::X)
  183. (LET ((WORD
  184. (LDB (BYTE 64 0)
  185. (LOGIOR
  186. (ASH
  187. (SB-KERNEL:SINGLE-FLOAT-BITS (IMAGPART SB-VM::X))
  188. 32)
  189. (LDB (BYTE 32 0)
  190. (SB-KERNEL:SINGLE-FLOAT-BITS
  191. (REALPART SB-VM::X)))))))
  192. (REGISTER-INLINE-CONSTANT :OWORD (LOGIOR (ASH WORD 64) WORD)))))
  193. (SC-CASE SB-VM::Y
  194. (SB-VM::FP-SINGLE-IMMEDIATE
  195. (SETF SB-VM::DUP
  196. (SB-VM::DUPLICATE
  197. (COMPLEX (SETF SB-VM::SECOND-VALUE (TN-VALUE SB-VM::Y))
  198. (TN-VALUE SB-VM::Y)))))
  199. (SB-VM::FP-SINGLE-ZERO
  200. (SB-ASSEM:INST SB-VM::XORPS SB-VM::DUP SB-VM::DUP))
  201. (T (MOVE SB-VM::DUP SB-VM::Y) (SETF SB-VM::SECOND-VALUE SB-VM::Y)
  202. (SB-ASSEM:INST SB-VM::SHUFPS SB-VM::DUP SB-VM::DUP 0)))
  203. (SC-CASE SB-VM::X
  204. (SB-VM::FP-COMPLEX-SINGLE-IMMEDIATE
  205. (SB-ASSEM:INST SB-VM::MOVAPS SB-VM::R
  206. (SB-VM::DUPLICATE
  207. (SETF SB-VM::FIRST-VALUE (TN-VALUE SB-VM::X)))))
  208. (SB-VM::FP-COMPLEX-SINGLE-ZERO
  209. (SB-ASSEM:INST SB-VM::XORPS SB-VM::R SB-VM::R))
  210. (T (MOVE SB-VM::R SB-VM::X) (SETF SB-VM::FIRST-VALUE SB-VM::X)
  211. (SB-ASSEM:INST SB-VM::UNPCKLPD SB-VM::R SB-VM::R)))
  212. (SB-VM::NOTE-FLOAT-LOCATION '/ SB-VM::VOP SB-VM::FIRST-VALUE
  213. SB-VM::SECOND-VALUE)
  214. (SB-ASSEM:INST SB-VM::DIVPS SB-VM::R SB-VM::DUP)
  215. (SB-ASSEM:INST SB-VM::MOVQ SB-VM::R SB-VM::R))))
  216. (:GENERATOR 5
  217. (COND
  218. ((SC-IS REAL SB-VM::FP-DOUBLE-ZERO)
  219. (SB-ASSEM:INST SB-VM::XORPD SB-VM::R SB-VM::R)
  220. (UNLESS (SC-IS SB-VM::IMAG SB-VM::FP-DOUBLE-ZERO)
  221. (SB-ASSEM:INST SB-VM::UNPCKLPD SB-VM::R SB-VM::IMAG)))
  222. ((LOCATION= REAL SB-VM::IMAG) (MOVE SB-VM::R REAL)
  223. (SB-ASSEM:INST SB-VM::UNPCKLPD SB-VM::R SB-VM::R))
  224. (T (MOVE SB-VM::R REAL)
  225. (UNLESS (SC-IS SB-VM::IMAG SB-VM::FP-DOUBLE-ZERO)
  226. (SB-ASSEM:INST SB-VM::UNPCKLPD SB-VM::R SB-VM::IMAG)))))
  227. (:GENERATOR 13
  228. (SB-C:FIXED-ALLOC SB-VM::Y SIMD-PACK-WIDETAG SIMD-PACK-SIZE SB-VM::NODE)
  229. (STOREW
  230. (FIXNUMIZE
  231. (SC-CASE SB-VM::X
  232. (SB-VM::SINGLE-SSE-REG 1)
  233. (SB-VM::DOUBLE-SSE-REG 2)
  234. (SB-VM::INT-SSE-REG 0)
  235. (T 0)))
  236. SB-VM::Y SIMD-PACK-TAG-SLOT OTHER-POINTER-LOWTAG)
  237. (LET ((SB-VM::EA
  238. (MAKE-EA-FOR-OBJECT-SLOT SB-VM::Y SIMD-PACK-LO-VALUE-SLOT
  239. OTHER-POINTER-LOWTAG)))
  240. (IF (FLOAT-SSE-P SB-VM::X)
  241. (SB-ASSEM:INST SB-VM::MOVAPS SB-VM::EA SB-VM::X)
  242. (SB-ASSEM:INST SB-VM::MOVDQA SB-VM::EA SB-VM::X))))
  243. (:GENERATOR 2 (MOVE SB-VM::R SB-VM::X)
  244. (SB-ASSEM:INST SB-VM::SHUFPS SB-VM::R SB-VM::R 241))
  245. (:GENERATOR 4
  246. (SB-ASSEM:INST SB-VM::MOVD (REG-IN-SIZE SB-VM::Y :DWORD) SB-VM::X)
  247. (SB-ASSEM:INST SB-VM::SHL SB-VM::Y 32)
  248. (SB-ASSEM:INST OR SB-VM::Y SINGLE-FLOAT-WIDETAG))
  249. NIL (:GENERATOR 0)
  250. (:GENERATOR 22 (MOVE SB-VM::SAVED-FUNCTION FUNCTION)
  251. (SB-ASSEM:INST SB-VM::SUB RSP-TN (* UNWIND-BLOCK-SIZE N-WORD-BYTES))
  252. (MOVE BLOCK RSP-TN)
  253. (LOADW SB-VM::TEMP SB-VM::UWP SAP-POINTER-SLOT OTHER-POINTER-LOWTAG)
  254. (STOREW SB-VM::TEMP BLOCK SB-VM::UNWIND-BLOCK-UWP-SLOT)
  255. (LOADW SB-VM::TEMP SB-VM::OFP SAP-POINTER-SLOT OTHER-POINTER-LOWTAG)
  256. (STOREW SB-VM::TEMP BLOCK SB-VM::UNWIND-BLOCK-CFP-SLOT)
  257. (SB-ASSEM:INST SB-VM::LEA TEMP-REG-TN
  258. (MAKE-FIXUP NIL :CODE-OBJECT SB-VM::ENTRY-LABEL))
  259. (STOREW TEMP-REG-TN BLOCK UNWIND-BLOCK-ENTRY-PC-SLOT)
  260. (SB-VM::INVOKE-ASM-ROUTINE 'SB-VM::JMP 'SB-C:UNWIND SB-VM::VOP TEMP-REG-TN)
  261. SB-VM::ENTRY-LABEL (MOVE BLOCK SB-VM::SAVED-FUNCTION) (ZEROIZE RCX-TN)
  262. (SB-ASSEM:INST SB-VM::LEA RSP-TN
  263. (SB-VM::MAKE-EA :QWORD :BASE RBP-TN :DISP
  264. (* (- SP->FP-OFFSET 3) N-WORD-BYTES)))
  265. (PUSHW RBP-TN (FRAME-WORD-OFFSET RETURN-PC-SAVE-OFFSET))
  266. (SB-ASSEM:INST SB-VM::JMP
  267. (SB-VM::MAKE-EA :QWORD :BASE BLOCK :DISP
  268. (- (* CLOSURE-FUN-SLOT N-WORD-BYTES)
  269. FUN-POINTER-LOWTAG))))
  270. (:GENERATOR 13
  271. (SB-C:FIXED-ALLOC SB-VM::Y DOUBLE-FLOAT-WIDETAG DOUBLE-FLOAT-SIZE
  272. SB-VM::NODE)
  273. (SB-ASSEM:INST SB-VM::MOVSD (EA-FOR-DF-DESC SB-VM::Y) SB-VM::X))
  274. (:GENERATOR 3
  275. (COND
  276. ((AND (ZEROP INDEX) (NOT (LOCATION= SB-VM::X SB-VM::DST)))
  277. (SB-ASSEM:INST SB-VM::XORPS SB-VM::DST SB-VM::DST)
  278. (SB-ASSEM:INST SB-VM::MOVSS SB-VM::DST SB-VM::X))
  279. (T (MOVE SB-VM::TMP SB-VM::X)
  280. (WHEN (PLUSP INDEX) (SB-ASSEM:INST SB-VM::PSRLDQ SB-VM::TMP (* 4 INDEX)))
  281. (SB-ASSEM:INST SB-VM::XORPS SB-VM::DST SB-VM::DST)
  282. (SB-ASSEM:INST SB-VM::MOVSS SB-VM::DST SB-VM::TMP))))
  283. (:GENERATOR 17 (LOAD-TL-SYMBOL-VALUE BLOCK *CURRENT-UNWIND-PROTECT-BLOCK*)
  284. (LOADW BLOCK BLOCK SB-VM::UNWIND-BLOCK-UWP-SLOT)
  285. (STORE-TL-SYMBOL-VALUE BLOCK *CURRENT-UNWIND-PROTECT-BLOCK*))
  286. (:GENERATOR 2 (MOVE SB-VM::R SB-VM::X)
  287. (SB-ASSEM:INST SB-VM::SHUFPD SB-VM::R SB-VM::R 1))
  288. (:GENERATOR 2
  289. (SC-CASE SB-VM::X
  290. (SB-VM::DESCRIPTOR-REG (MOVE SB-VM::TMP SB-VM::X)
  291. (SB-ASSEM:INST SB-VM::SHR SB-VM::TMP 32)
  292. (SB-ASSEM:INST SB-VM::MOVD SB-VM::Y (REG-IN-SIZE SB-VM::TMP :DWORD)))
  293. (SB-VM::CONTROL-STACK (SB-ASSEM:INST SB-VM::MOVQ SB-VM::Y SB-VM::X)
  294. (SB-ASSEM:INST SB-VM::SHUFPS SB-VM::Y SB-VM::Y 253))))
  295. (:GENERATOR 2 (MOVE SB-VM::TMP SB-VM::X)
  296. (SB-ASSEM:INST SB-VM::SHR SB-VM::TMP 32)
  297. (LET ((SLOT
  298. (SB-VM::MAKE-EA :DWORD :BASE RBP-TN :DISP
  299. (FRAME-BYTE-OFFSET (TN-OFFSET SB-VM::Y)))))
  300. (SB-ASSEM:INST SB-VM::MOV SLOT (REG-IN-SIZE SB-VM::TMP :DWORD))))
  301. NIL NIL
  302. (:GENERATOR 1
  303. (SB-ASSEM:INST SB-VM::MOVSD SB-VM::RES
  304. (REGISTER-INLINE-CONSTANT :QWORD
  305. (LOGIOR (ASH SB-VM::HI 32)
  306. SB-VM::LO))))
  307. (:GENERATOR 3
  308. (SB-ASSEM:INST SB-VM::CMP SB-VM::X
  309. (CONSTANTIZE
  310. (DPB (SB-KERNEL:SINGLE-FLOAT-BITS SB-VM::Y) (BYTE 32 32)
  311. SINGLE-FLOAT-WIDETAG))))
  312. (:GENERATOR 0 (MOVE SB-VM::Y SB-VM::X))
  313. (:GENERATOR 3
  314. (WHEN
  315. (OR (LOCATION= SB-VM::Y SB-VM::XMM)
  316. (AND (NOT (SB-VM::XMM-REGISTER-P SB-VM::X))
  317. (SB-VM::XMM-REGISTER-P SB-VM::Y)))
  318. (ROTATEF SB-VM::X SB-VM::Y))
  319. (SC-CASE SB-VM::X
  320. (SB-VM::SINGLE-REG (SETF SB-VM::XMM SB-VM::X))
  321. (SB-VM::SINGLE-STACK
  322. (SB-ASSEM:INST SB-VM::MOVSS SB-VM::XMM (EA-FOR-SF-STACK SB-VM::X)))
  323. (SB-VM::FP-SINGLE-IMMEDIATE
  324. (SB-ASSEM:INST SB-VM::MOVSS SB-VM::XMM
  325. (REGISTER-INLINE-CONSTANT (TN-VALUE SB-VM::X)))))
  326. (SB-VM::NOTE-FLOAT-LOCATION '= SB-VM::VOP SB-VM::XMM SB-VM::Y)
  327. (SC-CASE SB-VM::Y
  328. (SB-VM::SINGLE-STACK (SETF SB-VM::Y (EA-FOR-SF-STACK SB-VM::Y)))
  329. (SB-VM::FP-SINGLE-IMMEDIATE
  330. (SETF SB-VM::Y (REGISTER-INLINE-CONSTANT (TN-VALUE SB-VM::Y))))
  331. (T))
  332. (SB-ASSEM:INST SB-VM::COMISS SB-VM::XMM SB-VM::Y))
  333. (:GENERATOR 2 (SB-ASSEM:INST SB-VM::MOVSD SB-VM::Y (EA-FOR-DF-DESC SB-VM::X)))
  334. (:GENERATOR 1
  335. (UNLESS (LOCATION= SB-VM::X SB-VM::Y)
  336. (SB-ASSEM:INST SB-VM::XORPD SB-VM::Y SB-VM::Y))
  337. (SB-VM::NOTE-FLOAT-LOCATION 'SQRT SB-VM::VOP SB-VM::X)
  338. (SB-ASSEM:INST SB-VM::SQRTSD SB-VM::Y SB-VM::X))
  339. (:GENERATOR 4
  340. (SC-CASE SB-VM::Y
  341. ((SB-VM::INT-SSE-REG SB-VM::DOUBLE-SSE-REG SB-VM::SINGLE-SSE-REG)
  342. (UNLESS (LOCATION= SB-VM::X SB-VM::Y)
  343. (IF (OR (FLOAT-SSE-P SB-VM::X) (FLOAT-SSE-P SB-VM::Y))
  344. (SB-ASSEM:INST SB-VM::MOVAPS SB-VM::Y SB-VM::X)
  345. (SB-ASSEM:INST SB-VM::MOVDQA SB-VM::Y SB-VM::X))))
  346. ((SB-VM::INT-SSE-STACK SB-VM::DOUBLE-SSE-STACK SB-VM::SINGLE-SSE-STACK)
  347. (IF (FLOAT-SSE-P SB-VM::X)
  348. (SB-ASSEM:INST SB-VM::MOVUPS (EA-FOR-SSE-STACK SB-VM::Y SB-VM::FP)
  349. SB-VM::X)
  350. (SB-ASSEM:INST SB-VM::MOVDQU (EA-FOR-SSE-STACK SB-VM::Y SB-VM::FP)
  351. SB-VM::X)))))
  352. (:GENERATOR 3
  353. (WHEN
  354. (OR (LOCATION= SB-VM::Y SB-VM::XMM)
  355. (AND (NOT (SB-VM::XMM-REGISTER-P SB-VM::X))
  356. (SB-VM::XMM-REGISTER-P SB-VM::Y)))
  357. (ROTATEF SB-VM::X SB-VM::Y))
  358. (SC-CASE SB-VM::X
  359. (SB-VM::DOUBLE-REG (SETF SB-VM::XMM SB-VM::X))
  360. (SB-VM::DOUBLE-STACK
  361. (SB-ASSEM:INST SB-VM::MOVSD SB-VM::XMM (EA-FOR-DF-STACK SB-VM::X)))
  362. (SB-VM::FP-DOUBLE-IMMEDIATE
  363. (SB-ASSEM:INST SB-VM::MOVSD SB-VM::XMM
  364. (REGISTER-INLINE-CONSTANT (TN-VALUE SB-VM::X))))
  365. (SB-VM::DESCRIPTOR-REG
  366. (SB-ASSEM:INST SB-VM::MOVSD SB-VM::XMM (EA-FOR-DF-DESC SB-VM::X))))
  367. (SB-VM::NOTE-FLOAT-LOCATION '= SB-VM::VOP SB-VM::XMM SB-VM::Y)
  368. (SC-CASE SB-VM::Y
  369. (SB-VM::DOUBLE-STACK (SETF SB-VM::Y (EA-FOR-DF-STACK SB-VM::Y)))
  370. (SB-VM::FP-DOUBLE-IMMEDIATE
  371. (SETF SB-VM::Y (REGISTER-INLINE-CONSTANT (TN-VALUE SB-VM::Y))))
  372. (SB-VM::DESCRIPTOR-REG (SETF SB-VM::Y (EA-FOR-DF-DESC SB-VM::Y)))
  373. (T))
  374. (SB-ASSEM:INST SB-VM::COMISD SB-VM::XMM SB-VM::Y))
  375. (:GENERATOR 3
  376. (COND
  377. ((SC-IS SB-VM::X SB-VM::COMPLEX-DOUBLE-REG) (MOVE SB-VM::R SB-VM::X)
  378. (SB-ASSEM:INST SB-VM::XORPD SB-VM::ZERO SB-VM::ZERO)
  379. (ECASE SB-VM::OFFSET
  380. (0 (SB-ASSEM:INST SB-VM::UNPCKLPD SB-VM::R SB-VM::ZERO))
  381. (1 (SB-ASSEM:INST SB-VM::UNPCKHPD SB-VM::R SB-VM::ZERO))))
  382. ((SC-IS SB-VM::X SB-VM::COMPLEX-SINGLE-REG) (MOVE SB-VM::R SB-VM::X)
  383. (ECASE SB-VM::OFFSET
  384. (0 (SB-ASSEM:INST SB-VM::SHUFPS SB-VM::R SB-VM::R 252))
  385. (1 (SB-ASSEM:INST SB-VM::SHUFPS SB-VM::R SB-VM::R 253))))
  386. ((SC-IS SB-VM::R SB-VM::SINGLE-REG)
  387. (LET ((SB-VM::EA
  388. (SC-CASE SB-VM::X
  389. (SB-VM::COMPLEX-SINGLE-STACK
  390. (ECASE SB-VM::OFFSET
  391. (0 (EA-FOR-CSF-REAL-STACK SB-VM::X))
  392. (1 (EA-FOR-CSF-IMAG-STACK SB-VM::X))))
  393. (SB-VM::DESCRIPTOR-REG
  394. (ECASE SB-VM::OFFSET
  395. (0 (EA-FOR-CSF-REAL-DESC SB-VM::X))
  396. (1 (EA-FOR-CSF-IMAG-DESC SB-VM::X)))))))
  397. (SB-ASSEM:INST SB-VM::MOVSS SB-VM::R SB-VM::EA)))
  398. ((SC-IS SB-VM::R SB-VM::DOUBLE-REG)
  399. (LET ((SB-VM::EA
  400. (SC-CASE SB-VM::X
  401. (SB-VM::COMPLEX-DOUBLE-STACK
  402. (ECASE SB-VM::OFFSET
  403. (0 (EA-FOR-CDF-REAL-STACK SB-VM::X))
  404. (1 (EA-FOR-CDF-IMAG-STACK SB-VM::X))))
  405. (SB-VM::DESCRIPTOR-REG
  406. (ECASE SB-VM::OFFSET
  407. (0 (EA-FOR-CDF-REAL-DESC SB-VM::X))
  408. (1 (EA-FOR-CDF-IMAG-DESC SB-VM::X)))))))
  409. (SB-ASSEM:INST SB-VM::MOVSD SB-VM::R SB-VM::EA)))
  410. (T (ERROR "COMPLEX-FLOAT-VALUE VOP failure"))))
  411. NIL
  412. (:GENERATOR 17 (LOAD-TL-SYMBOL-VALUE BLOCK *CURRENT-CATCH-BLOCK*)
  413. (LOADW BLOCK BLOCK CATCH-BLOCK-PREVIOUS-CATCH-SLOT)
  414. (STORE-TL-SYMBOL-VALUE BLOCK *CURRENT-CATCH-BLOCK*))
  415. NIL
  416. (:GENERATOR 13
  417. (SB-C:FIXED-ALLOC SB-VM::Y COMPLEX-DOUBLE-FLOAT-WIDETAG
  418. COMPLEX-DOUBLE-FLOAT-SIZE SB-VM::NODE)
  419. (SB-ASSEM:INST SB-VM::MOVAPD (EA-FOR-CDF-DATA-DESC SB-VM::Y) SB-VM::X))
  420. (:GENERATOR 3
  421. (COND
  422. ((AND (ZEROP INDEX) (NOT (LOCATION= SB-VM::X SB-VM::DST)))
  423. (SB-ASSEM:INST SB-VM::XORPD SB-VM::DST SB-VM::DST)
  424. (SB-ASSEM:INST SB-VM::MOVSD SB-VM::DST SB-VM::X))
  425. (T (MOVE SB-VM::TMP SB-VM::X)
  426. (WHEN (PLUSP INDEX) (SB-ASSEM:INST SB-VM::PSRLDQ SB-VM::TMP (* 8 INDEX)))
  427. (SB-ASSEM:INST SB-VM::XORPD SB-VM::DST SB-VM::DST)
  428. (SB-ASSEM:INST SB-VM::MOVSD SB-VM::DST SB-VM::TMP))))
  429. (:GENERATOR 13
  430. (SB-C:FIXED-ALLOC SB-VM::Y COMPLEX-SINGLE-FLOAT-WIDETAG
  431. COMPLEX-SINGLE-FLOAT-SIZE SB-VM::NODE)
  432. (SB-ASSEM:INST SB-VM::MOVQ (EA-FOR-CSF-DATA-DESC SB-VM::Y) SB-VM::X))
  433. NIL NIL NIL
  434. (:GENERATOR 5
  435. (COND
  436. ((SC-IS REAL SB-VM::FP-SINGLE-ZERO)
  437. (SB-ASSEM:INST SB-VM::XORPS SB-VM::R SB-VM::R)
  438. (UNLESS (SC-IS SB-VM::IMAG SB-VM::FP-SINGLE-ZERO)
  439. (SB-ASSEM:INST SB-VM::UNPCKLPS SB-VM::R SB-VM::IMAG)))
  440. ((LOCATION= REAL SB-VM::IMAG) (MOVE SB-VM::R REAL)
  441. (SB-ASSEM:INST SB-VM::UNPCKLPS SB-VM::R SB-VM::R))
  442. (T (MOVE SB-VM::R REAL)
  443. (UNLESS (SC-IS SB-VM::IMAG SB-VM::FP-SINGLE-ZERO)
  444. (SB-ASSEM:INST SB-VM::UNPCKLPS SB-VM::R SB-VM::IMAG)))))
  445. (:GENERATOR 2
  446. (LET ((SB-VM::EA
  447. (MAKE-EA-FOR-OBJECT-SLOT SB-VM::X SIMD-PACK-LO-VALUE-SLOT
  448. OTHER-POINTER-LOWTAG)))
  449. (IF (FLOAT-SSE-P SB-VM::Y)
  450. (SB-ASSEM:INST SB-VM::MOVAPS SB-VM::Y SB-VM::EA)
  451. (SB-ASSEM:INST SB-VM::MOVDQA SB-VM::Y SB-VM::EA)))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement