1 2# qhasm: int64 input_0 3 4# qhasm: int64 input_1 5 6# qhasm: int64 input_2 7 8# qhasm: int64 input_3 9 10# qhasm: int64 input_4 11 12# qhasm: int64 input_5 13 14# qhasm: stack64 input_6 15 16# qhasm: stack64 input_7 17 18# qhasm: int64 caller_r11 19 20# qhasm: int64 caller_r12 21 22# qhasm: int64 caller_r13 23 24# qhasm: int64 caller_r14 25 26# qhasm: int64 caller_r15 27 28# qhasm: int64 caller_rbx 29 30# qhasm: int64 caller_rbp 31 32# qhasm: int64 s0 33 34# qhasm: int64 s1 35 36# qhasm: int64 s2 37 38# qhasm: enter update_asm 39.p2align 5 40.global _PQCLEAN_MCELIECE6688128_AVX_update_asm 41.global PQCLEAN_MCELIECE6688128_AVX_update_asm 42_PQCLEAN_MCELIECE6688128_AVX_update_asm: 43PQCLEAN_MCELIECE6688128_AVX_update_asm: 44mov %rsp,%r11 45and $31,%r11 46add $0,%r11 47sub %r11,%rsp 48 49# qhasm: s2 = input_1 50# asm 1: mov <input_1=int64#2,>s2=int64#2 51# asm 2: mov <input_1=%rsi,>s2=%rsi 52mov %rsi,%rsi 53 54# qhasm: s0 = mem64[ input_0 + 0 ] 55# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 56# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 57movq 0(%rdi),%rcx 58 59# qhasm: s1 = mem64[ input_0 + 8 ] 60# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 61# asm 2: movq 8(<input_0=%rdi),>s1=%r8 62movq 8(%rdi),%r8 63 64# qhasm: s0 = (s1 s0) >> 1 65# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 66# asm 2: shrd $1,<s1=%r8,<s0=%rcx 67shrd $1,%r8,%rcx 68 69# qhasm: s1 = (s2 s1) >> 1 70# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 71# asm 2: shrd $1,<s2=%rsi,<s1=%r8 72shrd $1,%rsi,%r8 73 74# qhasm: (uint64) s2 >>= 1 75# asm 1: shr $1,<s2=int64#2 76# asm 2: shr $1,<s2=%rsi 77shr $1,%rsi 78 79# qhasm: mem64[ input_0 + 0 ] = s0 80# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 81# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 82movq %rcx,0(%rdi) 83 84# qhasm: mem64[ input_0 + 8 ] = s1 85# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 86# asm 2: movq <s1=%r8,8(<input_0=%rdi) 87movq %r8,8(%rdi) 88 89# qhasm: input_0 += input_2 90# asm 1: add <input_2=int64#3,<input_0=int64#1 91# asm 2: add <input_2=%rdx,<input_0=%rdi 92add %rdx,%rdi 93 94# qhasm: s0 = mem64[ input_0 + 0 ] 95# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 96# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 97movq 0(%rdi),%rcx 98 99# qhasm: s1 = mem64[ input_0 + 8 ] 100# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 101# asm 2: movq 8(<input_0=%rdi),>s1=%r8 102movq 8(%rdi),%r8 103 104# qhasm: s0 = (s1 s0) >> 1 105# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 106# asm 2: shrd $1,<s1=%r8,<s0=%rcx 107shrd $1,%r8,%rcx 108 109# qhasm: s1 = (s2 s1) >> 1 110# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 111# asm 2: shrd $1,<s2=%rsi,<s1=%r8 112shrd $1,%rsi,%r8 113 114# qhasm: (uint64) s2 >>= 1 115# asm 1: shr $1,<s2=int64#2 116# asm 2: shr $1,<s2=%rsi 117shr $1,%rsi 118 119# qhasm: mem64[ input_0 + 0 ] = s0 120# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 121# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 122movq %rcx,0(%rdi) 123 124# qhasm: mem64[ input_0 + 8 ] = s1 125# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 126# asm 2: movq <s1=%r8,8(<input_0=%rdi) 127movq %r8,8(%rdi) 128 129# qhasm: input_0 += input_2 130# asm 1: add <input_2=int64#3,<input_0=int64#1 131# asm 2: add <input_2=%rdx,<input_0=%rdi 132add %rdx,%rdi 133 134# qhasm: s0 = mem64[ input_0 + 0 ] 135# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 136# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 137movq 0(%rdi),%rcx 138 139# qhasm: s1 = mem64[ input_0 + 8 ] 140# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 141# asm 2: movq 8(<input_0=%rdi),>s1=%r8 142movq 8(%rdi),%r8 143 144# qhasm: s0 = (s1 s0) >> 1 145# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 146# asm 2: shrd $1,<s1=%r8,<s0=%rcx 147shrd $1,%r8,%rcx 148 149# qhasm: s1 = (s2 s1) >> 1 150# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 151# asm 2: shrd $1,<s2=%rsi,<s1=%r8 152shrd $1,%rsi,%r8 153 154# qhasm: (uint64) s2 >>= 1 155# asm 1: shr $1,<s2=int64#2 156# asm 2: shr $1,<s2=%rsi 157shr $1,%rsi 158 159# qhasm: mem64[ input_0 + 0 ] = s0 160# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 161# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 162movq %rcx,0(%rdi) 163 164# qhasm: mem64[ input_0 + 8 ] = s1 165# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 166# asm 2: movq <s1=%r8,8(<input_0=%rdi) 167movq %r8,8(%rdi) 168 169# qhasm: input_0 += input_2 170# asm 1: add <input_2=int64#3,<input_0=int64#1 171# asm 2: add <input_2=%rdx,<input_0=%rdi 172add %rdx,%rdi 173 174# qhasm: s0 = mem64[ input_0 + 0 ] 175# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 176# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 177movq 0(%rdi),%rcx 178 179# qhasm: s1 = mem64[ input_0 + 8 ] 180# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 181# asm 2: movq 8(<input_0=%rdi),>s1=%r8 182movq 8(%rdi),%r8 183 184# qhasm: s0 = (s1 s0) >> 1 185# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 186# asm 2: shrd $1,<s1=%r8,<s0=%rcx 187shrd $1,%r8,%rcx 188 189# qhasm: s1 = (s2 s1) >> 1 190# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 191# asm 2: shrd $1,<s2=%rsi,<s1=%r8 192shrd $1,%rsi,%r8 193 194# qhasm: (uint64) s2 >>= 1 195# asm 1: shr $1,<s2=int64#2 196# asm 2: shr $1,<s2=%rsi 197shr $1,%rsi 198 199# qhasm: mem64[ input_0 + 0 ] = s0 200# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 201# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 202movq %rcx,0(%rdi) 203 204# qhasm: mem64[ input_0 + 8 ] = s1 205# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 206# asm 2: movq <s1=%r8,8(<input_0=%rdi) 207movq %r8,8(%rdi) 208 209# qhasm: input_0 += input_2 210# asm 1: add <input_2=int64#3,<input_0=int64#1 211# asm 2: add <input_2=%rdx,<input_0=%rdi 212add %rdx,%rdi 213 214# qhasm: s0 = mem64[ input_0 + 0 ] 215# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 216# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 217movq 0(%rdi),%rcx 218 219# qhasm: s1 = mem64[ input_0 + 8 ] 220# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 221# asm 2: movq 8(<input_0=%rdi),>s1=%r8 222movq 8(%rdi),%r8 223 224# qhasm: s0 = (s1 s0) >> 1 225# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 226# asm 2: shrd $1,<s1=%r8,<s0=%rcx 227shrd $1,%r8,%rcx 228 229# qhasm: s1 = (s2 s1) >> 1 230# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 231# asm 2: shrd $1,<s2=%rsi,<s1=%r8 232shrd $1,%rsi,%r8 233 234# qhasm: (uint64) s2 >>= 1 235# asm 1: shr $1,<s2=int64#2 236# asm 2: shr $1,<s2=%rsi 237shr $1,%rsi 238 239# qhasm: mem64[ input_0 + 0 ] = s0 240# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 241# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 242movq %rcx,0(%rdi) 243 244# qhasm: mem64[ input_0 + 8 ] = s1 245# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 246# asm 2: movq <s1=%r8,8(<input_0=%rdi) 247movq %r8,8(%rdi) 248 249# qhasm: input_0 += input_2 250# asm 1: add <input_2=int64#3,<input_0=int64#1 251# asm 2: add <input_2=%rdx,<input_0=%rdi 252add %rdx,%rdi 253 254# qhasm: s0 = mem64[ input_0 + 0 ] 255# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 256# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 257movq 0(%rdi),%rcx 258 259# qhasm: s1 = mem64[ input_0 + 8 ] 260# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 261# asm 2: movq 8(<input_0=%rdi),>s1=%r8 262movq 8(%rdi),%r8 263 264# qhasm: s0 = (s1 s0) >> 1 265# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 266# asm 2: shrd $1,<s1=%r8,<s0=%rcx 267shrd $1,%r8,%rcx 268 269# qhasm: s1 = (s2 s1) >> 1 270# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 271# asm 2: shrd $1,<s2=%rsi,<s1=%r8 272shrd $1,%rsi,%r8 273 274# qhasm: (uint64) s2 >>= 1 275# asm 1: shr $1,<s2=int64#2 276# asm 2: shr $1,<s2=%rsi 277shr $1,%rsi 278 279# qhasm: mem64[ input_0 + 0 ] = s0 280# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 281# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 282movq %rcx,0(%rdi) 283 284# qhasm: mem64[ input_0 + 8 ] = s1 285# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 286# asm 2: movq <s1=%r8,8(<input_0=%rdi) 287movq %r8,8(%rdi) 288 289# qhasm: input_0 += input_2 290# asm 1: add <input_2=int64#3,<input_0=int64#1 291# asm 2: add <input_2=%rdx,<input_0=%rdi 292add %rdx,%rdi 293 294# qhasm: s0 = mem64[ input_0 + 0 ] 295# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 296# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 297movq 0(%rdi),%rcx 298 299# qhasm: s1 = mem64[ input_0 + 8 ] 300# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 301# asm 2: movq 8(<input_0=%rdi),>s1=%r8 302movq 8(%rdi),%r8 303 304# qhasm: s0 = (s1 s0) >> 1 305# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 306# asm 2: shrd $1,<s1=%r8,<s0=%rcx 307shrd $1,%r8,%rcx 308 309# qhasm: s1 = (s2 s1) >> 1 310# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 311# asm 2: shrd $1,<s2=%rsi,<s1=%r8 312shrd $1,%rsi,%r8 313 314# qhasm: (uint64) s2 >>= 1 315# asm 1: shr $1,<s2=int64#2 316# asm 2: shr $1,<s2=%rsi 317shr $1,%rsi 318 319# qhasm: mem64[ input_0 + 0 ] = s0 320# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 321# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 322movq %rcx,0(%rdi) 323 324# qhasm: mem64[ input_0 + 8 ] = s1 325# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 326# asm 2: movq <s1=%r8,8(<input_0=%rdi) 327movq %r8,8(%rdi) 328 329# qhasm: input_0 += input_2 330# asm 1: add <input_2=int64#3,<input_0=int64#1 331# asm 2: add <input_2=%rdx,<input_0=%rdi 332add %rdx,%rdi 333 334# qhasm: s0 = mem64[ input_0 + 0 ] 335# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 336# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 337movq 0(%rdi),%rcx 338 339# qhasm: s1 = mem64[ input_0 + 8 ] 340# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 341# asm 2: movq 8(<input_0=%rdi),>s1=%r8 342movq 8(%rdi),%r8 343 344# qhasm: s0 = (s1 s0) >> 1 345# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 346# asm 2: shrd $1,<s1=%r8,<s0=%rcx 347shrd $1,%r8,%rcx 348 349# qhasm: s1 = (s2 s1) >> 1 350# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 351# asm 2: shrd $1,<s2=%rsi,<s1=%r8 352shrd $1,%rsi,%r8 353 354# qhasm: (uint64) s2 >>= 1 355# asm 1: shr $1,<s2=int64#2 356# asm 2: shr $1,<s2=%rsi 357shr $1,%rsi 358 359# qhasm: mem64[ input_0 + 0 ] = s0 360# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 361# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 362movq %rcx,0(%rdi) 363 364# qhasm: mem64[ input_0 + 8 ] = s1 365# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 366# asm 2: movq <s1=%r8,8(<input_0=%rdi) 367movq %r8,8(%rdi) 368 369# qhasm: input_0 += input_2 370# asm 1: add <input_2=int64#3,<input_0=int64#1 371# asm 2: add <input_2=%rdx,<input_0=%rdi 372add %rdx,%rdi 373 374# qhasm: s0 = mem64[ input_0 + 0 ] 375# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 376# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 377movq 0(%rdi),%rcx 378 379# qhasm: s1 = mem64[ input_0 + 8 ] 380# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 381# asm 2: movq 8(<input_0=%rdi),>s1=%r8 382movq 8(%rdi),%r8 383 384# qhasm: s0 = (s1 s0) >> 1 385# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 386# asm 2: shrd $1,<s1=%r8,<s0=%rcx 387shrd $1,%r8,%rcx 388 389# qhasm: s1 = (s2 s1) >> 1 390# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 391# asm 2: shrd $1,<s2=%rsi,<s1=%r8 392shrd $1,%rsi,%r8 393 394# qhasm: (uint64) s2 >>= 1 395# asm 1: shr $1,<s2=int64#2 396# asm 2: shr $1,<s2=%rsi 397shr $1,%rsi 398 399# qhasm: mem64[ input_0 + 0 ] = s0 400# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 401# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 402movq %rcx,0(%rdi) 403 404# qhasm: mem64[ input_0 + 8 ] = s1 405# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 406# asm 2: movq <s1=%r8,8(<input_0=%rdi) 407movq %r8,8(%rdi) 408 409# qhasm: input_0 += input_2 410# asm 1: add <input_2=int64#3,<input_0=int64#1 411# asm 2: add <input_2=%rdx,<input_0=%rdi 412add %rdx,%rdi 413 414# qhasm: s0 = mem64[ input_0 + 0 ] 415# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 416# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 417movq 0(%rdi),%rcx 418 419# qhasm: s1 = mem64[ input_0 + 8 ] 420# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 421# asm 2: movq 8(<input_0=%rdi),>s1=%r8 422movq 8(%rdi),%r8 423 424# qhasm: s0 = (s1 s0) >> 1 425# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 426# asm 2: shrd $1,<s1=%r8,<s0=%rcx 427shrd $1,%r8,%rcx 428 429# qhasm: s1 = (s2 s1) >> 1 430# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 431# asm 2: shrd $1,<s2=%rsi,<s1=%r8 432shrd $1,%rsi,%r8 433 434# qhasm: (uint64) s2 >>= 1 435# asm 1: shr $1,<s2=int64#2 436# asm 2: shr $1,<s2=%rsi 437shr $1,%rsi 438 439# qhasm: mem64[ input_0 + 0 ] = s0 440# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 441# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 442movq %rcx,0(%rdi) 443 444# qhasm: mem64[ input_0 + 8 ] = s1 445# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 446# asm 2: movq <s1=%r8,8(<input_0=%rdi) 447movq %r8,8(%rdi) 448 449# qhasm: input_0 += input_2 450# asm 1: add <input_2=int64#3,<input_0=int64#1 451# asm 2: add <input_2=%rdx,<input_0=%rdi 452add %rdx,%rdi 453 454# qhasm: s0 = mem64[ input_0 + 0 ] 455# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 456# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 457movq 0(%rdi),%rcx 458 459# qhasm: s1 = mem64[ input_0 + 8 ] 460# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 461# asm 2: movq 8(<input_0=%rdi),>s1=%r8 462movq 8(%rdi),%r8 463 464# qhasm: s0 = (s1 s0) >> 1 465# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 466# asm 2: shrd $1,<s1=%r8,<s0=%rcx 467shrd $1,%r8,%rcx 468 469# qhasm: s1 = (s2 s1) >> 1 470# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 471# asm 2: shrd $1,<s2=%rsi,<s1=%r8 472shrd $1,%rsi,%r8 473 474# qhasm: (uint64) s2 >>= 1 475# asm 1: shr $1,<s2=int64#2 476# asm 2: shr $1,<s2=%rsi 477shr $1,%rsi 478 479# qhasm: mem64[ input_0 + 0 ] = s0 480# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 481# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 482movq %rcx,0(%rdi) 483 484# qhasm: mem64[ input_0 + 8 ] = s1 485# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 486# asm 2: movq <s1=%r8,8(<input_0=%rdi) 487movq %r8,8(%rdi) 488 489# qhasm: input_0 += input_2 490# asm 1: add <input_2=int64#3,<input_0=int64#1 491# asm 2: add <input_2=%rdx,<input_0=%rdi 492add %rdx,%rdi 493 494# qhasm: s0 = mem64[ input_0 + 0 ] 495# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 496# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 497movq 0(%rdi),%rcx 498 499# qhasm: s1 = mem64[ input_0 + 8 ] 500# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 501# asm 2: movq 8(<input_0=%rdi),>s1=%r8 502movq 8(%rdi),%r8 503 504# qhasm: s0 = (s1 s0) >> 1 505# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 506# asm 2: shrd $1,<s1=%r8,<s0=%rcx 507shrd $1,%r8,%rcx 508 509# qhasm: s1 = (s2 s1) >> 1 510# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 511# asm 2: shrd $1,<s2=%rsi,<s1=%r8 512shrd $1,%rsi,%r8 513 514# qhasm: (uint64) s2 >>= 1 515# asm 1: shr $1,<s2=int64#2 516# asm 2: shr $1,<s2=%rsi 517shr $1,%rsi 518 519# qhasm: mem64[ input_0 + 0 ] = s0 520# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 521# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 522movq %rcx,0(%rdi) 523 524# qhasm: mem64[ input_0 + 8 ] = s1 525# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 526# asm 2: movq <s1=%r8,8(<input_0=%rdi) 527movq %r8,8(%rdi) 528 529# qhasm: input_0 += input_2 530# asm 1: add <input_2=int64#3,<input_0=int64#1 531# asm 2: add <input_2=%rdx,<input_0=%rdi 532add %rdx,%rdi 533 534# qhasm: s0 = mem64[ input_0 + 0 ] 535# asm 1: movq 0(<input_0=int64#1),>s0=int64#4 536# asm 2: movq 0(<input_0=%rdi),>s0=%rcx 537movq 0(%rdi),%rcx 538 539# qhasm: s1 = mem64[ input_0 + 8 ] 540# asm 1: movq 8(<input_0=int64#1),>s1=int64#5 541# asm 2: movq 8(<input_0=%rdi),>s1=%r8 542movq 8(%rdi),%r8 543 544# qhasm: s0 = (s1 s0) >> 1 545# asm 1: shrd $1,<s1=int64#5,<s0=int64#4 546# asm 2: shrd $1,<s1=%r8,<s0=%rcx 547shrd $1,%r8,%rcx 548 549# qhasm: s1 = (s2 s1) >> 1 550# asm 1: shrd $1,<s2=int64#2,<s1=int64#5 551# asm 2: shrd $1,<s2=%rsi,<s1=%r8 552shrd $1,%rsi,%r8 553 554# qhasm: (uint64) s2 >>= 1 555# asm 1: shr $1,<s2=int64#2 556# asm 2: shr $1,<s2=%rsi 557shr $1,%rsi 558 559# qhasm: mem64[ input_0 + 0 ] = s0 560# asm 1: movq <s0=int64#4,0(<input_0=int64#1) 561# asm 2: movq <s0=%rcx,0(<input_0=%rdi) 562movq %rcx,0(%rdi) 563 564# qhasm: mem64[ input_0 + 8 ] = s1 565# asm 1: movq <s1=int64#5,8(<input_0=int64#1) 566# asm 2: movq <s1=%r8,8(<input_0=%rdi) 567movq %r8,8(%rdi) 568 569# qhasm: input_0 += input_2 570# asm 1: add <input_2=int64#3,<input_0=int64#1 571# asm 2: add <input_2=%rdx,<input_0=%rdi 572add %rdx,%rdi 573 574# qhasm: return 575add %r11,%rsp 576ret 577