1
0

choose_t.S 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565
  1. # qhasm: int64 tp
  2. # qhasm: int64 pos
  3. # qhasm: int64 b
  4. # qhasm: int64 basep
  5. # qhasm: input tp
  6. # qhasm: input pos
  7. # qhasm: input b
  8. # qhasm: input basep
  9. # qhasm: int64 mask
  10. # qhasm: int64 u
  11. # qhasm: int64 tysubx0
  12. # qhasm: int64 tysubx1
  13. # qhasm: int64 tysubx2
  14. # qhasm: int64 tysubx3
  15. # qhasm: int64 txaddy0
  16. # qhasm: int64 txaddy1
  17. # qhasm: int64 txaddy2
  18. # qhasm: int64 txaddy3
  19. # qhasm: int64 tt2d0
  20. # qhasm: int64 tt2d1
  21. # qhasm: int64 tt2d2
  22. # qhasm: int64 tt2d3
  23. # qhasm: int64 tt0
  24. # qhasm: int64 tt1
  25. # qhasm: int64 tt2
  26. # qhasm: int64 tt3
  27. # qhasm: int64 subt0
  28. # qhasm: int64 subt1
  29. # qhasm: int64 t
  30. # qhasm: stack64 tp_stack
  31. # qhasm: int64 caller1
  32. # qhasm: int64 caller2
  33. # qhasm: int64 caller3
  34. # qhasm: int64 caller4
  35. # qhasm: int64 caller5
  36. # qhasm: int64 caller6
  37. # qhasm: int64 caller7
  38. # qhasm: caller caller1
  39. # qhasm: caller caller2
  40. # qhasm: caller caller3
  41. # qhasm: caller caller4
  42. # qhasm: caller caller5
  43. # qhasm: caller caller6
  44. # qhasm: caller caller7
  45. # qhasm: stack64 caller1_stack
  46. # qhasm: stack64 caller2_stack
  47. # qhasm: stack64 caller3_stack
  48. # qhasm: stack64 caller4_stack
  49. # qhasm: stack64 caller5_stack
  50. # qhasm: stack64 caller6_stack
  51. # qhasm: stack64 caller7_stack
  52. # qhasm: enter CRYPTO_NAMESPACE(choose_t)
  53. .text
  54. .p2align 5
  55. .globl _CRYPTO_NAMESPACE(choose_t)
  56. .globl CRYPTO_NAMESPACE(choose_t)
  57. _CRYPTO_NAMESPACE(choose_t):
  58. CRYPTO_NAMESPACE(choose_t):
  59. mov %rsp,%r11
  60. and $31,%r11
  61. add $64,%r11
  62. sub %r11,%rsp
  63. # qhasm: caller1_stack = caller1
  64. # asm 1: movq <caller1=int64#9,>caller1_stack=stack64#1
  65. # asm 2: movq <caller1=%r11,>caller1_stack=0(%rsp)
  66. movq %r11,0(%rsp)
  67. # qhasm: caller2_stack = caller2
  68. # asm 1: movq <caller2=int64#10,>caller2_stack=stack64#2
  69. # asm 2: movq <caller2=%r12,>caller2_stack=8(%rsp)
  70. movq %r12,8(%rsp)
  71. # qhasm: caller3_stack = caller3
  72. # asm 1: movq <caller3=int64#11,>caller3_stack=stack64#3
  73. # asm 2: movq <caller3=%r13,>caller3_stack=16(%rsp)
  74. movq %r13,16(%rsp)
  75. # qhasm: caller4_stack = caller4
  76. # asm 1: movq <caller4=int64#12,>caller4_stack=stack64#4
  77. # asm 2: movq <caller4=%r14,>caller4_stack=24(%rsp)
  78. movq %r14,24(%rsp)
  79. # qhasm: caller5_stack = caller5
  80. # asm 1: movq <caller5=int64#13,>caller5_stack=stack64#5
  81. # asm 2: movq <caller5=%r15,>caller5_stack=32(%rsp)
  82. movq %r15,32(%rsp)
  83. # qhasm: caller6_stack = caller6
  84. # asm 1: movq <caller6=int64#14,>caller6_stack=stack64#6
  85. # asm 2: movq <caller6=%rbx,>caller6_stack=40(%rsp)
  86. movq %rbx,40(%rsp)
  87. # qhasm: caller7_stack = caller7
  88. # asm 1: movq <caller7=int64#15,>caller7_stack=stack64#7
  89. # asm 2: movq <caller7=%rbp,>caller7_stack=48(%rsp)
  90. movq %rbp,48(%rsp)
  91. # qhasm: tp_stack = tp
  92. # asm 1: movq <tp=int64#1,>tp_stack=stack64#8
  93. # asm 2: movq <tp=%rdi,>tp_stack=56(%rsp)
  94. movq %rdi,56(%rsp)
  95. # qhasm: pos *= 768
  96. # asm 1: imulq $768,<pos=int64#2,>pos=int64#1
  97. # asm 2: imulq $768,<pos=%rsi,>pos=%rdi
  98. imulq $768,%rsi,%rdi
  99. # qhasm: mask = b
  100. # asm 1: mov <b=int64#3,>mask=int64#2
  101. # asm 2: mov <b=%rdx,>mask=%rsi
  102. mov %rdx,%rsi
  103. # qhasm: (int64) mask >>= 7
  104. # asm 1: sar $7,<mask=int64#2
  105. # asm 2: sar $7,<mask=%rsi
  106. sar $7,%rsi
  107. # qhasm: u = b
  108. # asm 1: mov <b=int64#3,>u=int64#5
  109. # asm 2: mov <b=%rdx,>u=%r8
  110. mov %rdx,%r8
  111. # qhasm: u += mask
  112. # asm 1: add <mask=int64#2,<u=int64#5
  113. # asm 2: add <mask=%rsi,<u=%r8
  114. add %rsi,%r8
  115. # qhasm: u ^= mask
  116. # asm 1: xor <mask=int64#2,<u=int64#5
  117. # asm 2: xor <mask=%rsi,<u=%r8
  118. xor %rsi,%r8
  119. # qhasm: tysubx0 = 1
  120. # asm 1: mov $1,>tysubx0=int64#2
  121. # asm 2: mov $1,>tysubx0=%rsi
  122. mov $1,%rsi
  123. # qhasm: tysubx1 = 0
  124. # asm 1: mov $0,>tysubx1=int64#6
  125. # asm 2: mov $0,>tysubx1=%r9
  126. mov $0,%r9
  127. # qhasm: tysubx2 = 0
  128. # asm 1: mov $0,>tysubx2=int64#7
  129. # asm 2: mov $0,>tysubx2=%rax
  130. mov $0,%rax
  131. # qhasm: tysubx3 = 0
  132. # asm 1: mov $0,>tysubx3=int64#8
  133. # asm 2: mov $0,>tysubx3=%r10
  134. mov $0,%r10
  135. # qhasm: txaddy0 = 1
  136. # asm 1: mov $1,>txaddy0=int64#9
  137. # asm 2: mov $1,>txaddy0=%r11
  138. mov $1,%r11
  139. # qhasm: txaddy1 = 0
  140. # asm 1: mov $0,>txaddy1=int64#10
  141. # asm 2: mov $0,>txaddy1=%r12
  142. mov $0,%r12
  143. # qhasm: txaddy2 = 0
  144. # asm 1: mov $0,>txaddy2=int64#11
  145. # asm 2: mov $0,>txaddy2=%r13
  146. mov $0,%r13
  147. # qhasm: txaddy3 = 0
  148. # asm 1: mov $0,>txaddy3=int64#12
  149. # asm 2: mov $0,>txaddy3=%r14
  150. mov $0,%r14
  151. # qhasm: =? u - 1
  152. # asm 1: cmp $1,<u=int64#5
  153. # asm 2: cmp $1,<u=%r8
  154. cmp $1,%r8
  155. # qhasm: t = *(uint64 *)(basep + 0 + pos)
  156. # asm 1: movq 0(<basep=int64#4,<pos=int64#1),>t=int64#13
  157. # asm 2: movq 0(<basep=%rcx,<pos=%rdi),>t=%r15
  158. movq 0(%rcx,%rdi),%r15
  159. # qhasm: tysubx0 = t if =
  160. # asm 1: cmove <t=int64#13,<tysubx0=int64#2
  161. # asm 2: cmove <t=%r15,<tysubx0=%rsi
  162. cmove %r15,%rsi
  163. # qhasm: t = *(uint64 *)(basep + 8 + pos)
  164. # asm 1: movq 8(<basep=int64#4,<pos=int64#1),>t=int64#13
  165. # asm 2: movq 8(<basep=%rcx,<pos=%rdi),>t=%r15
  166. movq 8(%rcx,%rdi),%r15
  167. # qhasm: tysubx1 = t if =
  168. # asm 1: cmove <t=int64#13,<tysubx1=int64#6
  169. # asm 2: cmove <t=%r15,<tysubx1=%r9
  170. cmove %r15,%r9
  171. # qhasm: t = *(uint64 *)(basep + 16 + pos)
  172. # asm 1: movq 16(<basep=int64#4,<pos=int64#1),>t=int64#13
  173. # asm 2: movq 16(<basep=%rcx,<pos=%rdi),>t=%r15
  174. movq 16(%rcx,%rdi),%r15
  175. # qhasm: tysubx2 = t if =
  176. # asm 1: cmove <t=int64#13,<tysubx2=int64#7
  177. # asm 2: cmove <t=%r15,<tysubx2=%rax
  178. cmove %r15,%rax
  179. # qhasm: t = *(uint64 *)(basep + 24 + pos)
  180. # asm 1: movq 24(<basep=int64#4,<pos=int64#1),>t=int64#13
  181. # asm 2: movq 24(<basep=%rcx,<pos=%rdi),>t=%r15
  182. movq 24(%rcx,%rdi),%r15
  183. # qhasm: tysubx3 = t if =
  184. # asm 1: cmove <t=int64#13,<tysubx3=int64#8
  185. # asm 2: cmove <t=%r15,<tysubx3=%r10
  186. cmove %r15,%r10
  187. # qhasm: t = *(uint64 *)(basep + 32 + pos)
  188. # asm 1: movq 32(<basep=int64#4,<pos=int64#1),>t=int64#13
  189. # asm 2: movq 32(<basep=%rcx,<pos=%rdi),>t=%r15
  190. movq 32(%rcx,%rdi),%r15
  191. # qhasm: txaddy0 = t if =
  192. # asm 1: cmove <t=int64#13,<txaddy0=int64#9
  193. # asm 2: cmove <t=%r15,<txaddy0=%r11
  194. cmove %r15,%r11
  195. # qhasm: t = *(uint64 *)(basep + 40 + pos)
  196. # asm 1: movq 40(<basep=int64#4,<pos=int64#1),>t=int64#13
  197. # asm 2: movq 40(<basep=%rcx,<pos=%rdi),>t=%r15
  198. movq 40(%rcx,%rdi),%r15
  199. # qhasm: txaddy1 = t if =
  200. # asm 1: cmove <t=int64#13,<txaddy1=int64#10
  201. # asm 2: cmove <t=%r15,<txaddy1=%r12
  202. cmove %r15,%r12
  203. # qhasm: t = *(uint64 *)(basep + 48 + pos)
  204. # asm 1: movq 48(<basep=int64#4,<pos=int64#1),>t=int64#13
  205. # asm 2: movq 48(<basep=%rcx,<pos=%rdi),>t=%r15
  206. movq 48(%rcx,%rdi),%r15
  207. # qhasm: txaddy2 = t if =
  208. # asm 1: cmove <t=int64#13,<txaddy2=int64#11
  209. # asm 2: cmove <t=%r15,<txaddy2=%r13
  210. cmove %r15,%r13
  211. # qhasm: t = *(uint64 *)(basep + 56 + pos)
  212. # asm 1: movq 56(<basep=int64#4,<pos=int64#1),>t=int64#13
  213. # asm 2: movq 56(<basep=%rcx,<pos=%rdi),>t=%r15
  214. movq 56(%rcx,%rdi),%r15
  215. # qhasm: txaddy3 = t if =
  216. # asm 1: cmove <t=int64#13,<txaddy3=int64#12
  217. # asm 2: cmove <t=%r15,<txaddy3=%r14
  218. cmove %r15,%r14
  219. # qhasm: =? u - 2
  220. # asm 1: cmp $2,<u=int64#5
  221. # asm 2: cmp $2,<u=%r8
  222. cmp $2,%r8
  223. # qhasm: t = *(uint64 *)(basep + 96 + pos)
  224. # asm 1: movq 96(<basep=int64#4,<pos=int64#1),>t=int64#13
  225. # asm 2: movq 96(<basep=%rcx,<pos=%rdi),>t=%r15
  226. movq 96(%rcx,%rdi),%r15
  227. # qhasm: tysubx0 = t if =
  228. # asm 1: cmove <t=int64#13,<tysubx0=int64#2
  229. # asm 2: cmove <t=%r15,<tysubx0=%rsi
  230. cmove %r15,%rsi
  231. # qhasm: t = *(uint64 *)(basep + 104 + pos)
  232. # asm 1: movq 104(<basep=int64#4,<pos=int64#1),>t=int64#13
  233. # asm 2: movq 104(<basep=%rcx,<pos=%rdi),>t=%r15
  234. movq 104(%rcx,%rdi),%r15
  235. # qhasm: tysubx1 = t if =
  236. # asm 1: cmove <t=int64#13,<tysubx1=int64#6
  237. # asm 2: cmove <t=%r15,<tysubx1=%r9
  238. cmove %r15,%r9
  239. # qhasm: t = *(uint64 *)(basep + 112 + pos)
  240. # asm 1: movq 112(<basep=int64#4,<pos=int64#1),>t=int64#13
  241. # asm 2: movq 112(<basep=%rcx,<pos=%rdi),>t=%r15
  242. movq 112(%rcx,%rdi),%r15
  243. # qhasm: tysubx2 = t if =
  244. # asm 1: cmove <t=int64#13,<tysubx2=int64#7
  245. # asm 2: cmove <t=%r15,<tysubx2=%rax
  246. cmove %r15,%rax
  247. # qhasm: t = *(uint64 *)(basep + 120 + pos)
  248. # asm 1: movq 120(<basep=int64#4,<pos=int64#1),>t=int64#13
  249. # asm 2: movq 120(<basep=%rcx,<pos=%rdi),>t=%r15
  250. movq 120(%rcx,%rdi),%r15
  251. # qhasm: tysubx3 = t if =
  252. # asm 1: cmove <t=int64#13,<tysubx3=int64#8
  253. # asm 2: cmove <t=%r15,<tysubx3=%r10
  254. cmove %r15,%r10
  255. # qhasm: t = *(uint64 *)(basep + 128 + pos)
  256. # asm 1: movq 128(<basep=int64#4,<pos=int64#1),>t=int64#13
  257. # asm 2: movq 128(<basep=%rcx,<pos=%rdi),>t=%r15
  258. movq 128(%rcx,%rdi),%r15
  259. # qhasm: txaddy0 = t if =
  260. # asm 1: cmove <t=int64#13,<txaddy0=int64#9
  261. # asm 2: cmove <t=%r15,<txaddy0=%r11
  262. cmove %r15,%r11
  263. # qhasm: t = *(uint64 *)(basep + 136 + pos)
  264. # asm 1: movq 136(<basep=int64#4,<pos=int64#1),>t=int64#13
  265. # asm 2: movq 136(<basep=%rcx,<pos=%rdi),>t=%r15
  266. movq 136(%rcx,%rdi),%r15
  267. # qhasm: txaddy1 = t if =
  268. # asm 1: cmove <t=int64#13,<txaddy1=int64#10
  269. # asm 2: cmove <t=%r15,<txaddy1=%r12
  270. cmove %r15,%r12
  271. # qhasm: t = *(uint64 *)(basep + 144 + pos)
  272. # asm 1: movq 144(<basep=int64#4,<pos=int64#1),>t=int64#13
  273. # asm 2: movq 144(<basep=%rcx,<pos=%rdi),>t=%r15
  274. movq 144(%rcx,%rdi),%r15
  275. # qhasm: txaddy2 = t if =
  276. # asm 1: cmove <t=int64#13,<txaddy2=int64#11
  277. # asm 2: cmove <t=%r15,<txaddy2=%r13
  278. cmove %r15,%r13
  279. # qhasm: t = *(uint64 *)(basep + 152 + pos)
  280. # asm 1: movq 152(<basep=int64#4,<pos=int64#1),>t=int64#13
  281. # asm 2: movq 152(<basep=%rcx,<pos=%rdi),>t=%r15
  282. movq 152(%rcx,%rdi),%r15
  283. # qhasm: txaddy3 = t if =
  284. # asm 1: cmove <t=int64#13,<txaddy3=int64#12
  285. # asm 2: cmove <t=%r15,<txaddy3=%r14
  286. cmove %r15,%r14
  287. # qhasm: =? u - 3
  288. # asm 1: cmp $3,<u=int64#5
  289. # asm 2: cmp $3,<u=%r8
  290. cmp $3,%r8
  291. # qhasm: t = *(uint64 *)(basep + 192 + pos)
  292. # asm 1: movq 192(<basep=int64#4,<pos=int64#1),>t=int64#13
  293. # asm 2: movq 192(<basep=%rcx,<pos=%rdi),>t=%r15
  294. movq 192(%rcx,%rdi),%r15
  295. # qhasm: tysubx0 = t if =
  296. # asm 1: cmove <t=int64#13,<tysubx0=int64#2
  297. # asm 2: cmove <t=%r15,<tysubx0=%rsi
  298. cmove %r15,%rsi
  299. # qhasm: t = *(uint64 *)(basep + 200 + pos)
  300. # asm 1: movq 200(<basep=int64#4,<pos=int64#1),>t=int64#13
  301. # asm 2: movq 200(<basep=%rcx,<pos=%rdi),>t=%r15
  302. movq 200(%rcx,%rdi),%r15
  303. # qhasm: tysubx1 = t if =
  304. # asm 1: cmove <t=int64#13,<tysubx1=int64#6
  305. # asm 2: cmove <t=%r15,<tysubx1=%r9
  306. cmove %r15,%r9
  307. # qhasm: t = *(uint64 *)(basep + 208 + pos)
  308. # asm 1: movq 208(<basep=int64#4,<pos=int64#1),>t=int64#13
  309. # asm 2: movq 208(<basep=%rcx,<pos=%rdi),>t=%r15
  310. movq 208(%rcx,%rdi),%r15
  311. # qhasm: tysubx2 = t if =
  312. # asm 1: cmove <t=int64#13,<tysubx2=int64#7
  313. # asm 2: cmove <t=%r15,<tysubx2=%rax
  314. cmove %r15,%rax
  315. # qhasm: t = *(uint64 *)(basep + 216 + pos)
  316. # asm 1: movq 216(<basep=int64#4,<pos=int64#1),>t=int64#13
  317. # asm 2: movq 216(<basep=%rcx,<pos=%rdi),>t=%r15
  318. movq 216(%rcx,%rdi),%r15
  319. # qhasm: tysubx3 = t if =
  320. # asm 1: cmove <t=int64#13,<tysubx3=int64#8
  321. # asm 2: cmove <t=%r15,<tysubx3=%r10
  322. cmove %r15,%r10
  323. # qhasm: t = *(uint64 *)(basep + 224 + pos)
  324. # asm 1: movq 224(<basep=int64#4,<pos=int64#1),>t=int64#13
  325. # asm 2: movq 224(<basep=%rcx,<pos=%rdi),>t=%r15
  326. movq 224(%rcx,%rdi),%r15
  327. # qhasm: txaddy0 = t if =
  328. # asm 1: cmove <t=int64#13,<txaddy0=int64#9
  329. # asm 2: cmove <t=%r15,<txaddy0=%r11
  330. cmove %r15,%r11
  331. # qhasm: t = *(uint64 *)(basep + 232 + pos)
  332. # asm 1: movq 232(<basep=int64#4,<pos=int64#1),>t=int64#13
  333. # asm 2: movq 232(<basep=%rcx,<pos=%rdi),>t=%r15
  334. movq 232(%rcx,%rdi),%r15
  335. # qhasm: txaddy1 = t if =
  336. # asm 1: cmove <t=int64#13,<txaddy1=int64#10
  337. # asm 2: cmove <t=%r15,<txaddy1=%r12
  338. cmove %r15,%r12
  339. # qhasm: t = *(uint64 *)(basep + 240 + pos)
  340. # asm 1: movq 240(<basep=int64#4,<pos=int64#1),>t=int64#13
  341. # asm 2: movq 240(<basep=%rcx,<pos=%rdi),>t=%r15
  342. movq 240(%rcx,%rdi),%r15
  343. # qhasm: txaddy2 = t if =
  344. # asm 1: cmove <t=int64#13,<txaddy2=int64#11
  345. # asm 2: cmove <t=%r15,<txaddy2=%r13
  346. cmove %r15,%r13
  347. # qhasm: t = *(uint64 *)(basep + 248 + pos)
  348. # asm 1: movq 248(<basep=int64#4,<pos=int64#1),>t=int64#13
  349. # asm 2: movq 248(<basep=%rcx,<pos=%rdi),>t=%r15
  350. movq 248(%rcx,%rdi),%r15
  351. # qhasm: txaddy3 = t if =
  352. # asm 1: cmove <t=int64#13,<txaddy3=int64#12
  353. # asm 2: cmove <t=%r15,<txaddy3=%r14
  354. cmove %r15,%r14
  355. # qhasm: =? u - 4
  356. # asm 1: cmp $4,<u=int64#5
  357. # asm 2: cmp $4,<u=%r8
  358. cmp $4,%r8
  359. # qhasm: t = *(uint64 *)(basep + 288 + pos)
  360. # asm 1: movq 288(<basep=int64#4,<pos=int64#1),>t=int64#13
  361. # asm 2: movq 288(<basep=%rcx,<pos=%rdi),>t=%r15
  362. movq 288(%rcx,%rdi),%r15
  363. # qhasm: tysubx0 = t if =
  364. # asm 1: cmove <t=int64#13,<tysubx0=int64#2
  365. # asm 2: cmove <t=%r15,<tysubx0=%rsi
  366. cmove %r15,%rsi
  367. # qhasm: t = *(uint64 *)(basep + 296 + pos)
  368. # asm 1: movq 296(<basep=int64#4,<pos=int64#1),>t=int64#13
  369. # asm 2: movq 296(<basep=%rcx,<pos=%rdi),>t=%r15
  370. movq 296(%rcx,%rdi),%r15
  371. # qhasm: tysubx1 = t if =
  372. # asm 1: cmove <t=int64#13,<tysubx1=int64#6
  373. # asm 2: cmove <t=%r15,<tysubx1=%r9
  374. cmove %r15,%r9
  375. # qhasm: t = *(uint64 *)(basep + 304 + pos)
  376. # asm 1: movq 304(<basep=int64#4,<pos=int64#1),>t=int64#13
  377. # asm 2: movq 304(<basep=%rcx,<pos=%rdi),>t=%r15
  378. movq 304(%rcx,%rdi),%r15
  379. # qhasm: tysubx2 = t if =
  380. # asm 1: cmove <t=int64#13,<tysubx2=int64#7
  381. # asm 2: cmove <t=%r15,<tysubx2=%rax
  382. cmove %r15,%rax
  383. # qhasm: t = *(uint64 *)(basep + 312 + pos)
  384. # asm 1: movq 312(<basep=int64#4,<pos=int64#1),>t=int64#13
  385. # asm 2: movq 312(<basep=%rcx,<pos=%rdi),>t=%r15
  386. movq 312(%rcx,%rdi),%r15
  387. # qhasm: tysubx3 = t if =
  388. # asm 1: cmove <t=int64#13,<tysubx3=int64#8
  389. # asm 2: cmove <t=%r15,<tysubx3=%r10
  390. cmove %r15,%r10
  391. # qhasm: t = *(uint64 *)(basep + 320 + pos)
  392. # asm 1: movq 320(<basep=int64#4,<pos=int64#1),>t=int64#13
  393. # asm 2: movq 320(<basep=%rcx,<pos=%rdi),>t=%r15
  394. movq 320(%rcx,%rdi),%r15
  395. # qhasm: txaddy0 = t if =
  396. # asm 1: cmove <t=int64#13,<txaddy0=int64#9
  397. # asm 2: cmove <t=%r15,<txaddy0=%r11
  398. cmove %r15,%r11
  399. # qhasm: t = *(uint64 *)(basep + 328 + pos)
  400. # asm 1: movq 328(<basep=int64#4,<pos=int64#1),>t=int64#13
  401. # asm 2: movq 328(<basep=%rcx,<pos=%rdi),>t=%r15
  402. movq 328(%rcx,%rdi),%r15
  403. # qhasm: txaddy1 = t if =
  404. # asm 1: cmove <t=int64#13,<txaddy1=int64#10
  405. # asm 2: cmove <t=%r15,<txaddy1=%r12
  406. cmove %r15,%r12
  407. # qhasm: t = *(uint64 *)(basep + 336 + pos)
  408. # asm 1: movq 336(<basep=int64#4,<pos=int64#1),>t=int64#13
  409. # asm 2: movq 336(<basep=%rcx,<pos=%rdi),>t=%r15
  410. movq 336(%rcx,%rdi),%r15
  411. # qhasm: txaddy2 = t if =
  412. # asm 1: cmove <t=int64#13,<txaddy2=int64#11
  413. # asm 2: cmove <t=%r15,<txaddy2=%r13
  414. cmove %r15,%r13
  415. # qhasm: t = *(uint64 *)(basep + 344 + pos)
  416. # asm 1: movq 344(<basep=int64#4,<pos=int64#1),>t=int64#13
  417. # asm 2: movq 344(<basep=%rcx,<pos=%rdi),>t=%r15
  418. movq 344(%rcx,%rdi),%r15
  419. # qhasm: txaddy3 = t if =
  420. # asm 1: cmove <t=int64#13,<txaddy3=int64#12
  421. # asm 2: cmove <t=%r15,<txaddy3=%r14
  422. cmove %r15,%r14
  423. # qhasm: =? u - 5
  424. # asm 1: cmp $5,<u=int64#5
  425. # asm 2: cmp $5,<u=%r8
  426. cmp $5,%r8
  427. # qhasm: t = *(uint64 *)(basep + 384 + pos)
  428. # asm 1: movq 384(<basep=int64#4,<pos=int64#1),>t=int64#13
  429. # asm 2: movq 384(<basep=%rcx,<pos=%rdi),>t=%r15
  430. movq 384(%rcx,%rdi),%r15
  431. # qhasm: tysubx0 = t if =
  432. # asm 1: cmove <t=int64#13,<tysubx0=int64#2
  433. # asm 2: cmove <t=%r15,<tysubx0=%rsi
  434. cmove %r15,%rsi
  435. # qhasm: t = *(uint64 *)(basep + 392 + pos)
  436. # asm 1: movq 392(<basep=int64#4,<pos=int64#1),>t=int64#13
  437. # asm 2: movq 392(<basep=%rcx,<pos=%rdi),>t=%r15
  438. movq 392(%rcx,%rdi),%r15
  439. # qhasm: tysubx1 = t if =
  440. # asm 1: cmove <t=int64#13,<tysubx1=int64#6
  441. # asm 2: cmove <t=%r15,<tysubx1=%r9
  442. cmove %r15,%r9
  443. # qhasm: t = *(uint64 *)(basep + 400 + pos)
  444. # asm 1: movq 400(<basep=int64#4,<pos=int64#1),>t=int64#13
  445. # asm 2: movq 400(<basep=%rcx,<pos=%rdi),>t=%r15
  446. movq 400(%rcx,%rdi),%r15
  447. # qhasm: tysubx2 = t if =
  448. # asm 1: cmove <t=int64#13,<tysubx2=int64#7
  449. # asm 2: cmove <t=%r15,<tysubx2=%rax
  450. cmove %r15,%rax
  451. # qhasm: t = *(uint64 *)(basep + 408 + pos)
  452. # asm 1: movq 408(<basep=int64#4,<pos=int64#1),>t=int64#13
  453. # asm 2: movq 408(<basep=%rcx,<pos=%rdi),>t=%r15
  454. movq 408(%rcx,%rdi),%r15
  455. # qhasm: tysubx3 = t if =
  456. # asm 1: cmove <t=int64#13,<tysubx3=int64#8
  457. # asm 2: cmove <t=%r15,<tysubx3=%r10
  458. cmove %r15,%r10
  459. # qhasm: t = *(uint64 *)(basep + 416 + pos)
  460. # asm 1: movq 416(<basep=int64#4,<pos=int64#1),>t=int64#13
  461. # asm 2: movq 416(<basep=%rcx,<pos=%rdi),>t=%r15
  462. movq 416(%rcx,%rdi),%r15
  463. # qhasm: txaddy0 = t if =
  464. # asm 1: cmove <t=int64#13,<txaddy0=int64#9
  465. # asm 2: cmove <t=%r15,<txaddy0=%r11
  466. cmove %r15,%r11
  467. # qhasm: t = *(uint64 *)(basep + 424 + pos)
  468. # asm 1: movq 424(<basep=int64#4,<pos=int64#1),>t=int64#13
  469. # asm 2: movq 424(<basep=%rcx,<pos=%rdi),>t=%r15
  470. movq 424(%rcx,%rdi),%r15
  471. # qhasm: txaddy1 = t if =
  472. # asm 1: cmove <t=int64#13,<txaddy1=int64#10
  473. # asm 2: cmove <t=%r15,<txaddy1=%r12
  474. cmove %r15,%r12
  475. # qhasm: t = *(uint64 *)(basep + 432 + pos)
  476. # asm 1: movq 432(<basep=int64#4,<pos=int64#1),>t=int64#13
  477. # asm 2: movq 432(<basep=%rcx,<pos=%rdi),>t=%r15
  478. movq 432(%rcx,%rdi),%r15
  479. # qhasm: txaddy2 = t if =
  480. # asm 1: cmove <t=int64#13,<txaddy2=int64#11
  481. # asm 2: cmove <t=%r15,<txaddy2=%r13
  482. cmove %r15,%r13
  483. # qhasm: t = *(uint64 *)(basep + 440 + pos)
  484. # asm 1: movq 440(<basep=int64#4,<pos=int64#1),>t=int64#13
  485. # asm 2: movq 440(<basep=%rcx,<pos=%rdi),>t=%r15
  486. movq 440(%rcx,%rdi),%r15
  487. # qhasm: txaddy3 = t if =
  488. # asm 1: cmove <t=int64#13,<txaddy3=int64#12
  489. # asm 2: cmove <t=%r15,<txaddy3=%r14
  490. cmove %r15,%r14
  491. # qhasm: =? u - 6
  492. # asm 1: cmp $6,<u=int64#5
  493. # asm 2: cmp $6,<u=%r8
  494. cmp $6,%r8
  495. # qhasm: t = *(uint64 *)(basep + 480 + pos)
  496. # asm 1: movq 480(<basep=int64#4,<pos=int64#1),>t=int64#13
  497. # asm 2: movq 480(<basep=%rcx,<pos=%rdi),>t=%r15
  498. movq 480(%rcx,%rdi),%r15
  499. # qhasm: tysubx0 = t if =
  500. # asm 1: cmove <t=int64#13,<tysubx0=int64#2
  501. # asm 2: cmove <t=%r15,<tysubx0=%rsi
  502. cmove %r15,%rsi
  503. # qhasm: t = *(uint64 *)(basep + 488 + pos)
  504. # asm 1: movq 488(<basep=int64#4,<pos=int64#1),>t=int64#13
  505. # asm 2: movq 488(<basep=%rcx,<pos=%rdi),>t=%r15
  506. movq 488(%rcx,%rdi),%r15
  507. # qhasm: tysubx1 = t if =
  508. # asm 1: cmove <t=int64#13,<tysubx1=int64#6
  509. # asm 2: cmove <t=%r15,<tysubx1=%r9
  510. cmove %r15,%r9
  511. # qhasm: t = *(uint64 *)(basep + 496 + pos)
  512. # asm 1: movq 496(<basep=int64#4,<pos=int64#1),>t=int64#13
  513. # asm 2: movq 496(<basep=%rcx,<pos=%rdi),>t=%r15
  514. movq 496(%rcx,%rdi),%r15
  515. # qhasm: tysubx2 = t if =
  516. # asm 1: cmove <t=int64#13,<tysubx2=int64#7
  517. # asm 2: cmove <t=%r15,<tysubx2=%rax
  518. cmove %r15,%rax
  519. # qhasm: t = *(uint64 *)(basep + 504 + pos)
  520. # asm 1: movq 504(<basep=int64#4,<pos=int64#1),>t=int64#13
  521. # asm 2: movq 504(<basep=%rcx,<pos=%rdi),>t=%r15
  522. movq 504(%rcx,%rdi),%r15
  523. # qhasm: tysubx3 = t if =
  524. # asm 1: cmove <t=int64#13,<tysubx3=int64#8
  525. # asm 2: cmove <t=%r15,<tysubx3=%r10
  526. cmove %r15,%r10
  527. # qhasm: t = *(uint64 *)(basep + 512 + pos)
  528. # asm 1: movq 512(<basep=int64#4,<pos=int64#1),>t=int64#13
  529. # asm 2: movq 512(<basep=%rcx,<pos=%rdi),>t=%r15
  530. movq 512(%rcx,%rdi),%r15
  531. # qhasm: txaddy0 = t if =
  532. # asm 1: cmove <t=int64#13,<txaddy0=int64#9
  533. # asm 2: cmove <t=%r15,<txaddy0=%r11
  534. cmove %r15,%r11
  535. # qhasm: t = *(uint64 *)(basep + 520 + pos)
  536. # asm 1: movq 520(<basep=int64#4,<pos=int64#1),>t=int64#13
  537. # asm 2: movq 520(<basep=%rcx,<pos=%rdi),>t=%r15
  538. movq 520(%rcx,%rdi),%r15
  539. # qhasm: txaddy1 = t if =
  540. # asm 1: cmove <t=int64#13,<txaddy1=int64#10
  541. # asm 2: cmove <t=%r15,<txaddy1=%r12
  542. cmove %r15,%r12
  543. # qhasm: t = *(uint64 *)(basep + 528 + pos)
  544. # asm 1: movq 528(<basep=int64#4,<pos=int64#1),>t=int64#13
  545. # asm 2: movq 528(<basep=%rcx,<pos=%rdi),>t=%r15
  546. movq 528(%rcx,%rdi),%r15
  547. # qhasm: txaddy2 = t if =
  548. # asm 1: cmove <t=int64#13,<txaddy2=int64#11
  549. # asm 2: cmove <t=%r15,<txaddy2=%r13
  550. cmove %r15,%r13
  551. # qhasm: t = *(uint64 *)(basep + 536 + pos)
  552. # asm 1: movq 536(<basep=int64#4,<pos=int64#1),>t=int64#13
  553. # asm 2: movq 536(<basep=%rcx,<pos=%rdi),>t=%r15
  554. movq 536(%rcx,%rdi),%r15
  555. # qhasm: txaddy3 = t if =
  556. # asm 1: cmove <t=int64#13,<txaddy3=int64#12
  557. # asm 2: cmove <t=%r15,<txaddy3=%r14
  558. cmove %r15,%r14
  559. # qhasm: =? u - 7
  560. # asm 1: cmp $7,<u=int64#5
  561. # asm 2: cmp $7,<u=%r8
  562. cmp $7,%r8
  563. # qhasm: t = *(uint64 *)(basep + 576 + pos)
  564. # asm 1: movq 576(<basep=int64#4,<pos=int64#1),>t=int64#13
  565. # asm 2: movq 576(<basep=%rcx,<pos=%rdi),>t=%r15
  566. movq 576(%rcx,%rdi),%r15
  567. # qhasm: tysubx0 = t if =
  568. # asm 1: cmove <t=int64#13,<tysubx0=int64#2
  569. # asm 2: cmove <t=%r15,<tysubx0=%rsi
  570. cmove %r15,%rsi
  571. # qhasm: t = *(uint64 *)(basep + 584 + pos)
  572. # asm 1: movq 584(<basep=int64#4,<pos=int64#1),>t=int64#13
  573. # asm 2: movq 584(<basep=%rcx,<pos=%rdi),>t=%r15
  574. movq 584(%rcx,%rdi),%r15
  575. # qhasm: tysubx1 = t if =
  576. # asm 1: cmove <t=int64#13,<tysubx1=int64#6
  577. # asm 2: cmove <t=%r15,<tysubx1=%r9
  578. cmove %r15,%r9
  579. # qhasm: t = *(uint64 *)(basep + 592 + pos)
  580. # asm 1: movq 592(<basep=int64#4,<pos=int64#1),>t=int64#13
  581. # asm 2: movq 592(<basep=%rcx,<pos=%rdi),>t=%r15
  582. movq 592(%rcx,%rdi),%r15
  583. # qhasm: tysubx2 = t if =
  584. # asm 1: cmove <t=int64#13,<tysubx2=int64#7
  585. # asm 2: cmove <t=%r15,<tysubx2=%rax
  586. cmove %r15,%rax
  587. # qhasm: t = *(uint64 *)(basep + 600 + pos)
  588. # asm 1: movq 600(<basep=int64#4,<pos=int64#1),>t=int64#13
  589. # asm 2: movq 600(<basep=%rcx,<pos=%rdi),>t=%r15
  590. movq 600(%rcx,%rdi),%r15
  591. # qhasm: tysubx3 = t if =
  592. # asm 1: cmove <t=int64#13,<tysubx3=int64#8
  593. # asm 2: cmove <t=%r15,<tysubx3=%r10
  594. cmove %r15,%r10
  595. # qhasm: t = *(uint64 *)(basep + 608 + pos)
  596. # asm 1: movq 608(<basep=int64#4,<pos=int64#1),>t=int64#13
  597. # asm 2: movq 608(<basep=%rcx,<pos=%rdi),>t=%r15
  598. movq 608(%rcx,%rdi),%r15
  599. # qhasm: txaddy0 = t if =
  600. # asm 1: cmove <t=int64#13,<txaddy0=int64#9
  601. # asm 2: cmove <t=%r15,<txaddy0=%r11
  602. cmove %r15,%r11
  603. # qhasm: t = *(uint64 *)(basep + 616 + pos)
  604. # asm 1: movq 616(<basep=int64#4,<pos=int64#1),>t=int64#13
  605. # asm 2: movq 616(<basep=%rcx,<pos=%rdi),>t=%r15
  606. movq 616(%rcx,%rdi),%r15
  607. # qhasm: txaddy1 = t if =
  608. # asm 1: cmove <t=int64#13,<txaddy1=int64#10
  609. # asm 2: cmove <t=%r15,<txaddy1=%r12
  610. cmove %r15,%r12
  611. # qhasm: t = *(uint64 *)(basep + 624 + pos)
  612. # asm 1: movq 624(<basep=int64#4,<pos=int64#1),>t=int64#13
  613. # asm 2: movq 624(<basep=%rcx,<pos=%rdi),>t=%r15
  614. movq 624(%rcx,%rdi),%r15
  615. # qhasm: txaddy2 = t if =
  616. # asm 1: cmove <t=int64#13,<txaddy2=int64#11
  617. # asm 2: cmove <t=%r15,<txaddy2=%r13
  618. cmove %r15,%r13
  619. # qhasm: t = *(uint64 *)(basep + 632 + pos)
  620. # asm 1: movq 632(<basep=int64#4,<pos=int64#1),>t=int64#13
  621. # asm 2: movq 632(<basep=%rcx,<pos=%rdi),>t=%r15
  622. movq 632(%rcx,%rdi),%r15
  623. # qhasm: txaddy3 = t if =
  624. # asm 1: cmove <t=int64#13,<txaddy3=int64#12
  625. # asm 2: cmove <t=%r15,<txaddy3=%r14
  626. cmove %r15,%r14
  627. # qhasm: =? u - 8
  628. # asm 1: cmp $8,<u=int64#5
  629. # asm 2: cmp $8,<u=%r8
  630. cmp $8,%r8
  631. # qhasm: t = *(uint64 *)(basep + 672 + pos)
  632. # asm 1: movq 672(<basep=int64#4,<pos=int64#1),>t=int64#13
  633. # asm 2: movq 672(<basep=%rcx,<pos=%rdi),>t=%r15
  634. movq 672(%rcx,%rdi),%r15
  635. # qhasm: tysubx0 = t if =
  636. # asm 1: cmove <t=int64#13,<tysubx0=int64#2
  637. # asm 2: cmove <t=%r15,<tysubx0=%rsi
  638. cmove %r15,%rsi
  639. # qhasm: t = *(uint64 *)(basep + 680 + pos)
  640. # asm 1: movq 680(<basep=int64#4,<pos=int64#1),>t=int64#13
  641. # asm 2: movq 680(<basep=%rcx,<pos=%rdi),>t=%r15
  642. movq 680(%rcx,%rdi),%r15
  643. # qhasm: tysubx1 = t if =
  644. # asm 1: cmove <t=int64#13,<tysubx1=int64#6
  645. # asm 2: cmove <t=%r15,<tysubx1=%r9
  646. cmove %r15,%r9
  647. # qhasm: t = *(uint64 *)(basep + 688 + pos)
  648. # asm 1: movq 688(<basep=int64#4,<pos=int64#1),>t=int64#13
  649. # asm 2: movq 688(<basep=%rcx,<pos=%rdi),>t=%r15
  650. movq 688(%rcx,%rdi),%r15
  651. # qhasm: tysubx2 = t if =
  652. # asm 1: cmove <t=int64#13,<tysubx2=int64#7
  653. # asm 2: cmove <t=%r15,<tysubx2=%rax
  654. cmove %r15,%rax
  655. # qhasm: t = *(uint64 *)(basep + 696 + pos)
  656. # asm 1: movq 696(<basep=int64#4,<pos=int64#1),>t=int64#13
  657. # asm 2: movq 696(<basep=%rcx,<pos=%rdi),>t=%r15
  658. movq 696(%rcx,%rdi),%r15
  659. # qhasm: tysubx3 = t if =
  660. # asm 1: cmove <t=int64#13,<tysubx3=int64#8
  661. # asm 2: cmove <t=%r15,<tysubx3=%r10
  662. cmove %r15,%r10
  663. # qhasm: t = *(uint64 *)(basep + 704 + pos)
  664. # asm 1: movq 704(<basep=int64#4,<pos=int64#1),>t=int64#13
  665. # asm 2: movq 704(<basep=%rcx,<pos=%rdi),>t=%r15
  666. movq 704(%rcx,%rdi),%r15
  667. # qhasm: txaddy0 = t if =
  668. # asm 1: cmove <t=int64#13,<txaddy0=int64#9
  669. # asm 2: cmove <t=%r15,<txaddy0=%r11
  670. cmove %r15,%r11
  671. # qhasm: t = *(uint64 *)(basep + 712 + pos)
  672. # asm 1: movq 712(<basep=int64#4,<pos=int64#1),>t=int64#13
  673. # asm 2: movq 712(<basep=%rcx,<pos=%rdi),>t=%r15
  674. movq 712(%rcx,%rdi),%r15
  675. # qhasm: txaddy1 = t if =
  676. # asm 1: cmove <t=int64#13,<txaddy1=int64#10
  677. # asm 2: cmove <t=%r15,<txaddy1=%r12
  678. cmove %r15,%r12
  679. # qhasm: t = *(uint64 *)(basep + 720 + pos)
  680. # asm 1: movq 720(<basep=int64#4,<pos=int64#1),>t=int64#13
  681. # asm 2: movq 720(<basep=%rcx,<pos=%rdi),>t=%r15
  682. movq 720(%rcx,%rdi),%r15
  683. # qhasm: txaddy2 = t if =
  684. # asm 1: cmove <t=int64#13,<txaddy2=int64#11
  685. # asm 2: cmove <t=%r15,<txaddy2=%r13
  686. cmove %r15,%r13
  687. # qhasm: t = *(uint64 *)(basep + 728 + pos)
  688. # asm 1: movq 728(<basep=int64#4,<pos=int64#1),>t=int64#13
  689. # asm 2: movq 728(<basep=%rcx,<pos=%rdi),>t=%r15
  690. movq 728(%rcx,%rdi),%r15
  691. # qhasm: txaddy3 = t if =
  692. # asm 1: cmove <t=int64#13,<txaddy3=int64#12
  693. # asm 2: cmove <t=%r15,<txaddy3=%r14
  694. cmove %r15,%r14
  695. # qhasm: signed<? b - 0
  696. # asm 1: cmp $0,<b=int64#3
  697. # asm 2: cmp $0,<b=%rdx
  698. cmp $0,%rdx
  699. # qhasm: t = tysubx0
  700. # asm 1: mov <tysubx0=int64#2,>t=int64#13
  701. # asm 2: mov <tysubx0=%rsi,>t=%r15
  702. mov %rsi,%r15
  703. # qhasm: tysubx0 = txaddy0 if signed<
  704. # asm 1: cmovl <txaddy0=int64#9,<tysubx0=int64#2
  705. # asm 2: cmovl <txaddy0=%r11,<tysubx0=%rsi
  706. cmovl %r11,%rsi
  707. # qhasm: txaddy0 = t if signed<
  708. # asm 1: cmovl <t=int64#13,<txaddy0=int64#9
  709. # asm 2: cmovl <t=%r15,<txaddy0=%r11
  710. cmovl %r15,%r11
  711. # qhasm: t = tysubx1
  712. # asm 1: mov <tysubx1=int64#6,>t=int64#13
  713. # asm 2: mov <tysubx1=%r9,>t=%r15
  714. mov %r9,%r15
  715. # qhasm: tysubx1 = txaddy1 if signed<
  716. # asm 1: cmovl <txaddy1=int64#10,<tysubx1=int64#6
  717. # asm 2: cmovl <txaddy1=%r12,<tysubx1=%r9
  718. cmovl %r12,%r9
  719. # qhasm: txaddy1 = t if signed<
  720. # asm 1: cmovl <t=int64#13,<txaddy1=int64#10
  721. # asm 2: cmovl <t=%r15,<txaddy1=%r12
  722. cmovl %r15,%r12
  723. # qhasm: t = tysubx2
  724. # asm 1: mov <tysubx2=int64#7,>t=int64#13
  725. # asm 2: mov <tysubx2=%rax,>t=%r15
  726. mov %rax,%r15
  727. # qhasm: tysubx2 = txaddy2 if signed<
  728. # asm 1: cmovl <txaddy2=int64#11,<tysubx2=int64#7
  729. # asm 2: cmovl <txaddy2=%r13,<tysubx2=%rax
  730. cmovl %r13,%rax
  731. # qhasm: txaddy2 = t if signed<
  732. # asm 1: cmovl <t=int64#13,<txaddy2=int64#11
  733. # asm 2: cmovl <t=%r15,<txaddy2=%r13
  734. cmovl %r15,%r13
  735. # qhasm: t = tysubx3
  736. # asm 1: mov <tysubx3=int64#8,>t=int64#13
  737. # asm 2: mov <tysubx3=%r10,>t=%r15
  738. mov %r10,%r15
  739. # qhasm: tysubx3 = txaddy3 if signed<
  740. # asm 1: cmovl <txaddy3=int64#12,<tysubx3=int64#8
  741. # asm 2: cmovl <txaddy3=%r14,<tysubx3=%r10
  742. cmovl %r14,%r10
  743. # qhasm: txaddy3 = t if signed<
  744. # asm 1: cmovl <t=int64#13,<txaddy3=int64#12
  745. # asm 2: cmovl <t=%r15,<txaddy3=%r14
  746. cmovl %r15,%r14
  747. # qhasm: tp = tp_stack
  748. # asm 1: movq <tp_stack=stack64#8,>tp=int64#13
  749. # asm 2: movq <tp_stack=56(%rsp),>tp=%r15
  750. movq 56(%rsp),%r15
  751. # qhasm: *(uint64 *)(tp + 0) = tysubx0
  752. # asm 1: movq <tysubx0=int64#2,0(<tp=int64#13)
  753. # asm 2: movq <tysubx0=%rsi,0(<tp=%r15)
  754. movq %rsi,0(%r15)
  755. # qhasm: *(uint64 *)(tp + 8) = tysubx1
  756. # asm 1: movq <tysubx1=int64#6,8(<tp=int64#13)
  757. # asm 2: movq <tysubx1=%r9,8(<tp=%r15)
  758. movq %r9,8(%r15)
  759. # qhasm: *(uint64 *)(tp + 16) = tysubx2
  760. # asm 1: movq <tysubx2=int64#7,16(<tp=int64#13)
  761. # asm 2: movq <tysubx2=%rax,16(<tp=%r15)
  762. movq %rax,16(%r15)
  763. # qhasm: *(uint64 *)(tp + 24) = tysubx3
  764. # asm 1: movq <tysubx3=int64#8,24(<tp=int64#13)
  765. # asm 2: movq <tysubx3=%r10,24(<tp=%r15)
  766. movq %r10,24(%r15)
  767. # qhasm: *(uint64 *)(tp + 32) = txaddy0
  768. # asm 1: movq <txaddy0=int64#9,32(<tp=int64#13)
  769. # asm 2: movq <txaddy0=%r11,32(<tp=%r15)
  770. movq %r11,32(%r15)
  771. # qhasm: *(uint64 *)(tp + 40) = txaddy1
  772. # asm 1: movq <txaddy1=int64#10,40(<tp=int64#13)
  773. # asm 2: movq <txaddy1=%r12,40(<tp=%r15)
  774. movq %r12,40(%r15)
  775. # qhasm: *(uint64 *)(tp + 48) = txaddy2
  776. # asm 1: movq <txaddy2=int64#11,48(<tp=int64#13)
  777. # asm 2: movq <txaddy2=%r13,48(<tp=%r15)
  778. movq %r13,48(%r15)
  779. # qhasm: *(uint64 *)(tp + 56) = txaddy3
  780. # asm 1: movq <txaddy3=int64#12,56(<tp=int64#13)
  781. # asm 2: movq <txaddy3=%r14,56(<tp=%r15)
  782. movq %r14,56(%r15)
  783. # qhasm: tt2d0 = 0
  784. # asm 1: mov $0,>tt2d0=int64#2
  785. # asm 2: mov $0,>tt2d0=%rsi
  786. mov $0,%rsi
  787. # qhasm: tt2d1 = 0
  788. # asm 1: mov $0,>tt2d1=int64#6
  789. # asm 2: mov $0,>tt2d1=%r9
  790. mov $0,%r9
  791. # qhasm: tt2d2 = 0
  792. # asm 1: mov $0,>tt2d2=int64#7
  793. # asm 2: mov $0,>tt2d2=%rax
  794. mov $0,%rax
  795. # qhasm: tt2d3 = 0
  796. # asm 1: mov $0,>tt2d3=int64#8
  797. # asm 2: mov $0,>tt2d3=%r10
  798. mov $0,%r10
  799. # qhasm: =? u - 1
  800. # asm 1: cmp $1,<u=int64#5
  801. # asm 2: cmp $1,<u=%r8
  802. cmp $1,%r8
  803. # qhasm: t = *(uint64 *)(basep + 64 + pos)
  804. # asm 1: movq 64(<basep=int64#4,<pos=int64#1),>t=int64#9
  805. # asm 2: movq 64(<basep=%rcx,<pos=%rdi),>t=%r11
  806. movq 64(%rcx,%rdi),%r11
  807. # qhasm: tt2d0 = t if =
  808. # asm 1: cmove <t=int64#9,<tt2d0=int64#2
  809. # asm 2: cmove <t=%r11,<tt2d0=%rsi
  810. cmove %r11,%rsi
  811. # qhasm: t = *(uint64 *)(basep + 72 + pos)
  812. # asm 1: movq 72(<basep=int64#4,<pos=int64#1),>t=int64#9
  813. # asm 2: movq 72(<basep=%rcx,<pos=%rdi),>t=%r11
  814. movq 72(%rcx,%rdi),%r11
  815. # qhasm: tt2d1 = t if =
  816. # asm 1: cmove <t=int64#9,<tt2d1=int64#6
  817. # asm 2: cmove <t=%r11,<tt2d1=%r9
  818. cmove %r11,%r9
  819. # qhasm: t = *(uint64 *)(basep + 80 + pos)
  820. # asm 1: movq 80(<basep=int64#4,<pos=int64#1),>t=int64#9
  821. # asm 2: movq 80(<basep=%rcx,<pos=%rdi),>t=%r11
  822. movq 80(%rcx,%rdi),%r11
  823. # qhasm: tt2d2 = t if =
  824. # asm 1: cmove <t=int64#9,<tt2d2=int64#7
  825. # asm 2: cmove <t=%r11,<tt2d2=%rax
  826. cmove %r11,%rax
  827. # qhasm: t = *(uint64 *)(basep + 88 + pos)
  828. # asm 1: movq 88(<basep=int64#4,<pos=int64#1),>t=int64#9
  829. # asm 2: movq 88(<basep=%rcx,<pos=%rdi),>t=%r11
  830. movq 88(%rcx,%rdi),%r11
  831. # qhasm: tt2d3 = t if =
  832. # asm 1: cmove <t=int64#9,<tt2d3=int64#8
  833. # asm 2: cmove <t=%r11,<tt2d3=%r10
  834. cmove %r11,%r10
  835. # qhasm: =? u - 2
  836. # asm 1: cmp $2,<u=int64#5
  837. # asm 2: cmp $2,<u=%r8
  838. cmp $2,%r8
  839. # qhasm: t = *(uint64 *)(basep + 160 + pos)
  840. # asm 1: movq 160(<basep=int64#4,<pos=int64#1),>t=int64#9
  841. # asm 2: movq 160(<basep=%rcx,<pos=%rdi),>t=%r11
  842. movq 160(%rcx,%rdi),%r11
  843. # qhasm: tt2d0 = t if =
  844. # asm 1: cmove <t=int64#9,<tt2d0=int64#2
  845. # asm 2: cmove <t=%r11,<tt2d0=%rsi
  846. cmove %r11,%rsi
  847. # qhasm: t = *(uint64 *)(basep + 168 + pos)
  848. # asm 1: movq 168(<basep=int64#4,<pos=int64#1),>t=int64#9
  849. # asm 2: movq 168(<basep=%rcx,<pos=%rdi),>t=%r11
  850. movq 168(%rcx,%rdi),%r11
  851. # qhasm: tt2d1 = t if =
  852. # asm 1: cmove <t=int64#9,<tt2d1=int64#6
  853. # asm 2: cmove <t=%r11,<tt2d1=%r9
  854. cmove %r11,%r9
  855. # qhasm: t = *(uint64 *)(basep + 176 + pos)
  856. # asm 1: movq 176(<basep=int64#4,<pos=int64#1),>t=int64#9
  857. # asm 2: movq 176(<basep=%rcx,<pos=%rdi),>t=%r11
  858. movq 176(%rcx,%rdi),%r11
  859. # qhasm: tt2d2 = t if =
  860. # asm 1: cmove <t=int64#9,<tt2d2=int64#7
  861. # asm 2: cmove <t=%r11,<tt2d2=%rax
  862. cmove %r11,%rax
  863. # qhasm: t = *(uint64 *)(basep + 184 + pos)
  864. # asm 1: movq 184(<basep=int64#4,<pos=int64#1),>t=int64#9
  865. # asm 2: movq 184(<basep=%rcx,<pos=%rdi),>t=%r11
  866. movq 184(%rcx,%rdi),%r11
  867. # qhasm: tt2d3 = t if =
  868. # asm 1: cmove <t=int64#9,<tt2d3=int64#8
  869. # asm 2: cmove <t=%r11,<tt2d3=%r10
  870. cmove %r11,%r10
  871. # qhasm: =? u - 3
  872. # asm 1: cmp $3,<u=int64#5
  873. # asm 2: cmp $3,<u=%r8
  874. cmp $3,%r8
  875. # qhasm: t = *(uint64 *)(basep + 256 + pos)
  876. # asm 1: movq 256(<basep=int64#4,<pos=int64#1),>t=int64#9
  877. # asm 2: movq 256(<basep=%rcx,<pos=%rdi),>t=%r11
  878. movq 256(%rcx,%rdi),%r11
  879. # qhasm: tt2d0 = t if =
  880. # asm 1: cmove <t=int64#9,<tt2d0=int64#2
  881. # asm 2: cmove <t=%r11,<tt2d0=%rsi
  882. cmove %r11,%rsi
  883. # qhasm: t = *(uint64 *)(basep + 264 + pos)
  884. # asm 1: movq 264(<basep=int64#4,<pos=int64#1),>t=int64#9
  885. # asm 2: movq 264(<basep=%rcx,<pos=%rdi),>t=%r11
  886. movq 264(%rcx,%rdi),%r11
  887. # qhasm: tt2d1 = t if =
  888. # asm 1: cmove <t=int64#9,<tt2d1=int64#6
  889. # asm 2: cmove <t=%r11,<tt2d1=%r9
  890. cmove %r11,%r9
  891. # qhasm: t = *(uint64 *)(basep + 272 + pos)
  892. # asm 1: movq 272(<basep=int64#4,<pos=int64#1),>t=int64#9
  893. # asm 2: movq 272(<basep=%rcx,<pos=%rdi),>t=%r11
  894. movq 272(%rcx,%rdi),%r11
  895. # qhasm: tt2d2 = t if =
  896. # asm 1: cmove <t=int64#9,<tt2d2=int64#7
  897. # asm 2: cmove <t=%r11,<tt2d2=%rax
  898. cmove %r11,%rax
  899. # qhasm: t = *(uint64 *)(basep + 280 + pos)
  900. # asm 1: movq 280(<basep=int64#4,<pos=int64#1),>t=int64#9
  901. # asm 2: movq 280(<basep=%rcx,<pos=%rdi),>t=%r11
  902. movq 280(%rcx,%rdi),%r11
  903. # qhasm: tt2d3 = t if =
  904. # asm 1: cmove <t=int64#9,<tt2d3=int64#8
  905. # asm 2: cmove <t=%r11,<tt2d3=%r10
  906. cmove %r11,%r10
  907. # qhasm: =? u - 4
  908. # asm 1: cmp $4,<u=int64#5
  909. # asm 2: cmp $4,<u=%r8
  910. cmp $4,%r8
  911. # qhasm: t = *(uint64 *)(basep + 352 + pos)
  912. # asm 1: movq 352(<basep=int64#4,<pos=int64#1),>t=int64#9
  913. # asm 2: movq 352(<basep=%rcx,<pos=%rdi),>t=%r11
  914. movq 352(%rcx,%rdi),%r11
  915. # qhasm: tt2d0 = t if =
  916. # asm 1: cmove <t=int64#9,<tt2d0=int64#2
  917. # asm 2: cmove <t=%r11,<tt2d0=%rsi
  918. cmove %r11,%rsi
  919. # qhasm: t = *(uint64 *)(basep + 360 + pos)
  920. # asm 1: movq 360(<basep=int64#4,<pos=int64#1),>t=int64#9
  921. # asm 2: movq 360(<basep=%rcx,<pos=%rdi),>t=%r11
  922. movq 360(%rcx,%rdi),%r11
  923. # qhasm: tt2d1 = t if =
  924. # asm 1: cmove <t=int64#9,<tt2d1=int64#6
  925. # asm 2: cmove <t=%r11,<tt2d1=%r9
  926. cmove %r11,%r9
  927. # qhasm: t = *(uint64 *)(basep + 368 + pos)
  928. # asm 1: movq 368(<basep=int64#4,<pos=int64#1),>t=int64#9
  929. # asm 2: movq 368(<basep=%rcx,<pos=%rdi),>t=%r11
  930. movq 368(%rcx,%rdi),%r11
  931. # qhasm: tt2d2 = t if =
  932. # asm 1: cmove <t=int64#9,<tt2d2=int64#7
  933. # asm 2: cmove <t=%r11,<tt2d2=%rax
  934. cmove %r11,%rax
  935. # qhasm: t = *(uint64 *)(basep + 376 + pos)
  936. # asm 1: movq 376(<basep=int64#4,<pos=int64#1),>t=int64#9
  937. # asm 2: movq 376(<basep=%rcx,<pos=%rdi),>t=%r11
  938. movq 376(%rcx,%rdi),%r11
  939. # qhasm: tt2d3 = t if =
  940. # asm 1: cmove <t=int64#9,<tt2d3=int64#8
  941. # asm 2: cmove <t=%r11,<tt2d3=%r10
  942. cmove %r11,%r10
  943. # qhasm: =? u - 5
  944. # asm 1: cmp $5,<u=int64#5
  945. # asm 2: cmp $5,<u=%r8
  946. cmp $5,%r8
  947. # qhasm: t = *(uint64 *)(basep + 448 + pos)
  948. # asm 1: movq 448(<basep=int64#4,<pos=int64#1),>t=int64#9
  949. # asm 2: movq 448(<basep=%rcx,<pos=%rdi),>t=%r11
  950. movq 448(%rcx,%rdi),%r11
  951. # qhasm: tt2d0 = t if =
  952. # asm 1: cmove <t=int64#9,<tt2d0=int64#2
  953. # asm 2: cmove <t=%r11,<tt2d0=%rsi
  954. cmove %r11,%rsi
  955. # qhasm: t = *(uint64 *)(basep + 456 + pos)
  956. # asm 1: movq 456(<basep=int64#4,<pos=int64#1),>t=int64#9
  957. # asm 2: movq 456(<basep=%rcx,<pos=%rdi),>t=%r11
  958. movq 456(%rcx,%rdi),%r11
  959. # qhasm: tt2d1 = t if =
  960. # asm 1: cmove <t=int64#9,<tt2d1=int64#6
  961. # asm 2: cmove <t=%r11,<tt2d1=%r9
  962. cmove %r11,%r9
  963. # qhasm: t = *(uint64 *)(basep + 464 + pos)
  964. # asm 1: movq 464(<basep=int64#4,<pos=int64#1),>t=int64#9
  965. # asm 2: movq 464(<basep=%rcx,<pos=%rdi),>t=%r11
  966. movq 464(%rcx,%rdi),%r11
  967. # qhasm: tt2d2 = t if =
  968. # asm 1: cmove <t=int64#9,<tt2d2=int64#7
  969. # asm 2: cmove <t=%r11,<tt2d2=%rax
  970. cmove %r11,%rax
  971. # qhasm: t = *(uint64 *)(basep + 472 + pos)
  972. # asm 1: movq 472(<basep=int64#4,<pos=int64#1),>t=int64#9
  973. # asm 2: movq 472(<basep=%rcx,<pos=%rdi),>t=%r11
  974. movq 472(%rcx,%rdi),%r11
  975. # qhasm: tt2d3 = t if =
  976. # asm 1: cmove <t=int64#9,<tt2d3=int64#8
  977. # asm 2: cmove <t=%r11,<tt2d3=%r10
  978. cmove %r11,%r10
  979. # qhasm: =? u - 6
  980. # asm 1: cmp $6,<u=int64#5
  981. # asm 2: cmp $6,<u=%r8
  982. cmp $6,%r8
  983. # qhasm: t = *(uint64 *)(basep + 544 + pos)
  984. # asm 1: movq 544(<basep=int64#4,<pos=int64#1),>t=int64#9
  985. # asm 2: movq 544(<basep=%rcx,<pos=%rdi),>t=%r11
  986. movq 544(%rcx,%rdi),%r11
  987. # qhasm: tt2d0 = t if =
  988. # asm 1: cmove <t=int64#9,<tt2d0=int64#2
  989. # asm 2: cmove <t=%r11,<tt2d0=%rsi
  990. cmove %r11,%rsi
  991. # qhasm: t = *(uint64 *)(basep + 552 + pos)
  992. # asm 1: movq 552(<basep=int64#4,<pos=int64#1),>t=int64#9
  993. # asm 2: movq 552(<basep=%rcx,<pos=%rdi),>t=%r11
  994. movq 552(%rcx,%rdi),%r11
  995. # qhasm: tt2d1 = t if =
  996. # asm 1: cmove <t=int64#9,<tt2d1=int64#6
  997. # asm 2: cmove <t=%r11,<tt2d1=%r9
  998. cmove %r11,%r9
  999. # qhasm: t = *(uint64 *)(basep + 560 + pos)
  1000. # asm 1: movq 560(<basep=int64#4,<pos=int64#1),>t=int64#9
  1001. # asm 2: movq 560(<basep=%rcx,<pos=%rdi),>t=%r11
  1002. movq 560(%rcx,%rdi),%r11
  1003. # qhasm: tt2d2 = t if =
  1004. # asm 1: cmove <t=int64#9,<tt2d2=int64#7
  1005. # asm 2: cmove <t=%r11,<tt2d2=%rax
  1006. cmove %r11,%rax
  1007. # qhasm: t = *(uint64 *)(basep + 568 + pos)
  1008. # asm 1: movq 568(<basep=int64#4,<pos=int64#1),>t=int64#9
  1009. # asm 2: movq 568(<basep=%rcx,<pos=%rdi),>t=%r11
  1010. movq 568(%rcx,%rdi),%r11
  1011. # qhasm: tt2d3 = t if =
  1012. # asm 1: cmove <t=int64#9,<tt2d3=int64#8
  1013. # asm 2: cmove <t=%r11,<tt2d3=%r10
  1014. cmove %r11,%r10
  1015. # qhasm: =? u - 7
  1016. # asm 1: cmp $7,<u=int64#5
  1017. # asm 2: cmp $7,<u=%r8
  1018. cmp $7,%r8
  1019. # qhasm: t = *(uint64 *)(basep + 640 + pos)
  1020. # asm 1: movq 640(<basep=int64#4,<pos=int64#1),>t=int64#9
  1021. # asm 2: movq 640(<basep=%rcx,<pos=%rdi),>t=%r11
  1022. movq 640(%rcx,%rdi),%r11
  1023. # qhasm: tt2d0 = t if =
  1024. # asm 1: cmove <t=int64#9,<tt2d0=int64#2
  1025. # asm 2: cmove <t=%r11,<tt2d0=%rsi
  1026. cmove %r11,%rsi
  1027. # qhasm: t = *(uint64 *)(basep + 648 + pos)
  1028. # asm 1: movq 648(<basep=int64#4,<pos=int64#1),>t=int64#9
  1029. # asm 2: movq 648(<basep=%rcx,<pos=%rdi),>t=%r11
  1030. movq 648(%rcx,%rdi),%r11
  1031. # qhasm: tt2d1 = t if =
  1032. # asm 1: cmove <t=int64#9,<tt2d1=int64#6
  1033. # asm 2: cmove <t=%r11,<tt2d1=%r9
  1034. cmove %r11,%r9
  1035. # qhasm: t = *(uint64 *)(basep + 656 + pos)
  1036. # asm 1: movq 656(<basep=int64#4,<pos=int64#1),>t=int64#9
  1037. # asm 2: movq 656(<basep=%rcx,<pos=%rdi),>t=%r11
  1038. movq 656(%rcx,%rdi),%r11
  1039. # qhasm: tt2d2 = t if =
  1040. # asm 1: cmove <t=int64#9,<tt2d2=int64#7
  1041. # asm 2: cmove <t=%r11,<tt2d2=%rax
  1042. cmove %r11,%rax
  1043. # qhasm: t = *(uint64 *)(basep + 664 + pos)
  1044. # asm 1: movq 664(<basep=int64#4,<pos=int64#1),>t=int64#9
  1045. # asm 2: movq 664(<basep=%rcx,<pos=%rdi),>t=%r11
  1046. movq 664(%rcx,%rdi),%r11
  1047. # qhasm: tt2d3 = t if =
  1048. # asm 1: cmove <t=int64#9,<tt2d3=int64#8
  1049. # asm 2: cmove <t=%r11,<tt2d3=%r10
  1050. cmove %r11,%r10
  1051. # qhasm: =? u - 8
  1052. # asm 1: cmp $8,<u=int64#5
  1053. # asm 2: cmp $8,<u=%r8
  1054. cmp $8,%r8
  1055. # qhasm: t = *(uint64 *)(basep + 736 + pos)
  1056. # asm 1: movq 736(<basep=int64#4,<pos=int64#1),>t=int64#5
  1057. # asm 2: movq 736(<basep=%rcx,<pos=%rdi),>t=%r8
  1058. movq 736(%rcx,%rdi),%r8
  1059. # qhasm: tt2d0 = t if =
  1060. # asm 1: cmove <t=int64#5,<tt2d0=int64#2
  1061. # asm 2: cmove <t=%r8,<tt2d0=%rsi
  1062. cmove %r8,%rsi
  1063. # qhasm: t = *(uint64 *)(basep + 744 + pos)
  1064. # asm 1: movq 744(<basep=int64#4,<pos=int64#1),>t=int64#5
  1065. # asm 2: movq 744(<basep=%rcx,<pos=%rdi),>t=%r8
  1066. movq 744(%rcx,%rdi),%r8
  1067. # qhasm: tt2d1 = t if =
  1068. # asm 1: cmove <t=int64#5,<tt2d1=int64#6
  1069. # asm 2: cmove <t=%r8,<tt2d1=%r9
  1070. cmove %r8,%r9
  1071. # qhasm: t = *(uint64 *)(basep + 752 + pos)
  1072. # asm 1: movq 752(<basep=int64#4,<pos=int64#1),>t=int64#5
  1073. # asm 2: movq 752(<basep=%rcx,<pos=%rdi),>t=%r8
  1074. movq 752(%rcx,%rdi),%r8
  1075. # qhasm: tt2d2 = t if =
  1076. # asm 1: cmove <t=int64#5,<tt2d2=int64#7
  1077. # asm 2: cmove <t=%r8,<tt2d2=%rax
  1078. cmove %r8,%rax
  1079. # qhasm: t = *(uint64 *)(basep + 760 + pos)
  1080. # asm 1: movq 760(<basep=int64#4,<pos=int64#1),>t=int64#1
  1081. # asm 2: movq 760(<basep=%rcx,<pos=%rdi),>t=%rdi
  1082. movq 760(%rcx,%rdi),%rdi
  1083. # qhasm: tt2d3 = t if =
  1084. # asm 1: cmove <t=int64#1,<tt2d3=int64#8
  1085. # asm 2: cmove <t=%rdi,<tt2d3=%r10
  1086. cmove %rdi,%r10
  1087. # qhasm: tt0 = 0
  1088. # asm 1: mov $0,>tt0=int64#1
  1089. # asm 2: mov $0,>tt0=%rdi
  1090. mov $0,%rdi
  1091. # qhasm: tt1 = 0
  1092. # asm 1: mov $0,>tt1=int64#4
  1093. # asm 2: mov $0,>tt1=%rcx
  1094. mov $0,%rcx
  1095. # qhasm: tt2 = 0
  1096. # asm 1: mov $0,>tt2=int64#5
  1097. # asm 2: mov $0,>tt2=%r8
  1098. mov $0,%r8
  1099. # qhasm: tt3 = 0
  1100. # asm 1: mov $0,>tt3=int64#9
  1101. # asm 2: mov $0,>tt3=%r11
  1102. mov $0,%r11
  1103. # qhasm: carry? tt0 -= tt2d0
  1104. # asm 1: sub <tt2d0=int64#2,<tt0=int64#1
  1105. # asm 2: sub <tt2d0=%rsi,<tt0=%rdi
  1106. sub %rsi,%rdi
  1107. # qhasm: carry? tt1 -= tt2d1 - carry
  1108. # asm 1: sbb <tt2d1=int64#6,<tt1=int64#4
  1109. # asm 2: sbb <tt2d1=%r9,<tt1=%rcx
  1110. sbb %r9,%rcx
  1111. # qhasm: carry? tt2 -= tt2d2 - carry
  1112. # asm 1: sbb <tt2d2=int64#7,<tt2=int64#5
  1113. # asm 2: sbb <tt2d2=%rax,<tt2=%r8
  1114. sbb %rax,%r8
  1115. # qhasm: carry? tt3 -= tt2d3 - carry
  1116. # asm 1: sbb <tt2d3=int64#8,<tt3=int64#9
  1117. # asm 2: sbb <tt2d3=%r10,<tt3=%r11
  1118. sbb %r10,%r11
  1119. # qhasm: subt0 = 0
  1120. # asm 1: mov $0,>subt0=int64#10
  1121. # asm 2: mov $0,>subt0=%r12
  1122. mov $0,%r12
  1123. # qhasm: subt1 = 38
  1124. # asm 1: mov $38,>subt1=int64#11
  1125. # asm 2: mov $38,>subt1=%r13
  1126. mov $38,%r13
  1127. # qhasm: subt1 = subt0 if !carry
  1128. # asm 1: cmovae <subt0=int64#10,<subt1=int64#11
  1129. # asm 2: cmovae <subt0=%r12,<subt1=%r13
  1130. cmovae %r12,%r13
  1131. # qhasm: carry? tt0 -= subt1
  1132. # asm 1: sub <subt1=int64#11,<tt0=int64#1
  1133. # asm 2: sub <subt1=%r13,<tt0=%rdi
  1134. sub %r13,%rdi
  1135. # qhasm: carry? tt1 -= subt0 - carry
  1136. # asm 1: sbb <subt0=int64#10,<tt1=int64#4
  1137. # asm 2: sbb <subt0=%r12,<tt1=%rcx
  1138. sbb %r12,%rcx
  1139. # qhasm: carry? tt2 -= subt0 - carry
  1140. # asm 1: sbb <subt0=int64#10,<tt2=int64#5
  1141. # asm 2: sbb <subt0=%r12,<tt2=%r8
  1142. sbb %r12,%r8
  1143. # qhasm: carry? tt3 -= subt0 - carry
  1144. # asm 1: sbb <subt0=int64#10,<tt3=int64#9
  1145. # asm 2: sbb <subt0=%r12,<tt3=%r11
  1146. sbb %r12,%r11
  1147. # qhasm: subt0 = subt1 if carry
  1148. # asm 1: cmovc <subt1=int64#11,<subt0=int64#10
  1149. # asm 2: cmovc <subt1=%r13,<subt0=%r12
  1150. cmovc %r13,%r12
  1151. # qhasm: tt0 -= subt0
  1152. # asm 1: sub <subt0=int64#10,<tt0=int64#1
  1153. # asm 2: sub <subt0=%r12,<tt0=%rdi
  1154. sub %r12,%rdi
  1155. # qhasm: signed<? b - 0
  1156. # asm 1: cmp $0,<b=int64#3
  1157. # asm 2: cmp $0,<b=%rdx
  1158. cmp $0,%rdx
  1159. # qhasm: tt2d0 = tt0 if signed<
  1160. # asm 1: cmovl <tt0=int64#1,<tt2d0=int64#2
  1161. # asm 2: cmovl <tt0=%rdi,<tt2d0=%rsi
  1162. cmovl %rdi,%rsi
  1163. # qhasm: tt2d1 = tt1 if signed<
  1164. # asm 1: cmovl <tt1=int64#4,<tt2d1=int64#6
  1165. # asm 2: cmovl <tt1=%rcx,<tt2d1=%r9
  1166. cmovl %rcx,%r9
  1167. # qhasm: tt2d2 = tt2 if signed<
  1168. # asm 1: cmovl <tt2=int64#5,<tt2d2=int64#7
  1169. # asm 2: cmovl <tt2=%r8,<tt2d2=%rax
  1170. cmovl %r8,%rax
  1171. # qhasm: tt2d3 = tt3 if signed<
  1172. # asm 1: cmovl <tt3=int64#9,<tt2d3=int64#8
  1173. # asm 2: cmovl <tt3=%r11,<tt2d3=%r10
  1174. cmovl %r11,%r10
  1175. # qhasm: *(uint64 *)(tp + 64) = tt2d0
  1176. # asm 1: movq <tt2d0=int64#2,64(<tp=int64#13)
  1177. # asm 2: movq <tt2d0=%rsi,64(<tp=%r15)
  1178. movq %rsi,64(%r15)
  1179. # qhasm: *(uint64 *)(tp + 72) = tt2d1
  1180. # asm 1: movq <tt2d1=int64#6,72(<tp=int64#13)
  1181. # asm 2: movq <tt2d1=%r9,72(<tp=%r15)
  1182. movq %r9,72(%r15)
  1183. # qhasm: *(uint64 *)(tp + 80) = tt2d2
  1184. # asm 1: movq <tt2d2=int64#7,80(<tp=int64#13)
  1185. # asm 2: movq <tt2d2=%rax,80(<tp=%r15)
  1186. movq %rax,80(%r15)
  1187. # qhasm: *(uint64 *)(tp + 88) = tt2d3
  1188. # asm 1: movq <tt2d3=int64#8,88(<tp=int64#13)
  1189. # asm 2: movq <tt2d3=%r10,88(<tp=%r15)
  1190. movq %r10,88(%r15)
  1191. # qhasm: caller1 = caller1_stack
  1192. # asm 1: movq <caller1_stack=stack64#1,>caller1=int64#9
  1193. # asm 2: movq <caller1_stack=0(%rsp),>caller1=%r11
  1194. movq 0(%rsp),%r11
  1195. # qhasm: caller2 = caller2_stack
  1196. # asm 1: movq <caller2_stack=stack64#2,>caller2=int64#10
  1197. # asm 2: movq <caller2_stack=8(%rsp),>caller2=%r12
  1198. movq 8(%rsp),%r12
  1199. # qhasm: caller3 = caller3_stack
  1200. # asm 1: movq <caller3_stack=stack64#3,>caller3=int64#11
  1201. # asm 2: movq <caller3_stack=16(%rsp),>caller3=%r13
  1202. movq 16(%rsp),%r13
  1203. # qhasm: caller4 = caller4_stack
  1204. # asm 1: movq <caller4_stack=stack64#4,>caller4=int64#12
  1205. # asm 2: movq <caller4_stack=24(%rsp),>caller4=%r14
  1206. movq 24(%rsp),%r14
  1207. # qhasm: caller5 = caller5_stack
  1208. # asm 1: movq <caller5_stack=stack64#5,>caller5=int64#13
  1209. # asm 2: movq <caller5_stack=32(%rsp),>caller5=%r15
  1210. movq 32(%rsp),%r15
  1211. # qhasm: caller6 = caller6_stack
  1212. # asm 1: movq <caller6_stack=stack64#6,>caller6=int64#14
  1213. # asm 2: movq <caller6_stack=40(%rsp),>caller6=%rbx
  1214. movq 40(%rsp),%rbx
  1215. # qhasm: caller7 = caller7_stack
  1216. # asm 1: movq <caller7_stack=stack64#7,>caller7=int64#15
  1217. # asm 2: movq <caller7_stack=48(%rsp),>caller7=%rbp
  1218. movq 48(%rsp),%rbp
  1219. # qhasm: leave
  1220. add %r11,%rsp
  1221. mov %rdi,%rax
  1222. mov %rsi,%rdx
  1223. ret