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 t 33 34# qhasm: int64 c 35 36# qhasm: int64 r 37 38# qhasm: enter vec_reduce_asm 39.p2align 5 40.global _PQCLEAN_MCELIECE348864F_AVX_vec_reduce_asm 41.global PQCLEAN_MCELIECE348864F_AVX_vec_reduce_asm 42_PQCLEAN_MCELIECE348864F_AVX_vec_reduce_asm: 43PQCLEAN_MCELIECE348864F_AVX_vec_reduce_asm: 44mov %rsp,%r11 45and $31,%r11 46add $0,%r11 47sub %r11,%rsp 48 49# qhasm: r = 0 50# asm 1: mov $0,>r=int64#7 51# asm 2: mov $0,>r=%rax 52mov $0,%rax 53 54# qhasm: t = mem64[ input_0 + 88 ] 55# asm 1: movq 88(<input_0=int64#1),>t=int64#2 56# asm 2: movq 88(<input_0=%rdi),>t=%rsi 57movq 88(%rdi),%rsi 58 59# qhasm: c = count(t) 60# asm 1: popcnt <t=int64#2, >c=int64#2 61# asm 2: popcnt <t=%rsi, >c=%rsi 62popcnt %rsi, %rsi 63 64# qhasm: (uint32) c &= 1 65# asm 1: and $1,<c=int64#2d 66# asm 2: and $1,<c=%esi 67and $1,%esi 68 69# qhasm: r <<= 1 70# asm 1: shl $1,<r=int64#7 71# asm 2: shl $1,<r=%rax 72shl $1,%rax 73 74# qhasm: r |= c 75# asm 1: or <c=int64#2,<r=int64#7 76# asm 2: or <c=%rsi,<r=%rax 77or %rsi,%rax 78 79# qhasm: t = mem64[ input_0 + 80 ] 80# asm 1: movq 80(<input_0=int64#1),>t=int64#2 81# asm 2: movq 80(<input_0=%rdi),>t=%rsi 82movq 80(%rdi),%rsi 83 84# qhasm: c = count(t) 85# asm 1: popcnt <t=int64#2, >c=int64#2 86# asm 2: popcnt <t=%rsi, >c=%rsi 87popcnt %rsi, %rsi 88 89# qhasm: (uint32) c &= 1 90# asm 1: and $1,<c=int64#2d 91# asm 2: and $1,<c=%esi 92and $1,%esi 93 94# qhasm: r <<= 1 95# asm 1: shl $1,<r=int64#7 96# asm 2: shl $1,<r=%rax 97shl $1,%rax 98 99# qhasm: r |= c 100# asm 1: or <c=int64#2,<r=int64#7 101# asm 2: or <c=%rsi,<r=%rax 102or %rsi,%rax 103 104# qhasm: t = mem64[ input_0 + 72 ] 105# asm 1: movq 72(<input_0=int64#1),>t=int64#2 106# asm 2: movq 72(<input_0=%rdi),>t=%rsi 107movq 72(%rdi),%rsi 108 109# qhasm: c = count(t) 110# asm 1: popcnt <t=int64#2, >c=int64#2 111# asm 2: popcnt <t=%rsi, >c=%rsi 112popcnt %rsi, %rsi 113 114# qhasm: (uint32) c &= 1 115# asm 1: and $1,<c=int64#2d 116# asm 2: and $1,<c=%esi 117and $1,%esi 118 119# qhasm: r <<= 1 120# asm 1: shl $1,<r=int64#7 121# asm 2: shl $1,<r=%rax 122shl $1,%rax 123 124# qhasm: r |= c 125# asm 1: or <c=int64#2,<r=int64#7 126# asm 2: or <c=%rsi,<r=%rax 127or %rsi,%rax 128 129# qhasm: t = mem64[ input_0 + 64 ] 130# asm 1: movq 64(<input_0=int64#1),>t=int64#2 131# asm 2: movq 64(<input_0=%rdi),>t=%rsi 132movq 64(%rdi),%rsi 133 134# qhasm: c = count(t) 135# asm 1: popcnt <t=int64#2, >c=int64#2 136# asm 2: popcnt <t=%rsi, >c=%rsi 137popcnt %rsi, %rsi 138 139# qhasm: (uint32) c &= 1 140# asm 1: and $1,<c=int64#2d 141# asm 2: and $1,<c=%esi 142and $1,%esi 143 144# qhasm: r <<= 1 145# asm 1: shl $1,<r=int64#7 146# asm 2: shl $1,<r=%rax 147shl $1,%rax 148 149# qhasm: r |= c 150# asm 1: or <c=int64#2,<r=int64#7 151# asm 2: or <c=%rsi,<r=%rax 152or %rsi,%rax 153 154# qhasm: t = mem64[ input_0 + 56 ] 155# asm 1: movq 56(<input_0=int64#1),>t=int64#2 156# asm 2: movq 56(<input_0=%rdi),>t=%rsi 157movq 56(%rdi),%rsi 158 159# qhasm: c = count(t) 160# asm 1: popcnt <t=int64#2, >c=int64#2 161# asm 2: popcnt <t=%rsi, >c=%rsi 162popcnt %rsi, %rsi 163 164# qhasm: (uint32) c &= 1 165# asm 1: and $1,<c=int64#2d 166# asm 2: and $1,<c=%esi 167and $1,%esi 168 169# qhasm: r <<= 1 170# asm 1: shl $1,<r=int64#7 171# asm 2: shl $1,<r=%rax 172shl $1,%rax 173 174# qhasm: r |= c 175# asm 1: or <c=int64#2,<r=int64#7 176# asm 2: or <c=%rsi,<r=%rax 177or %rsi,%rax 178 179# qhasm: t = mem64[ input_0 + 48 ] 180# asm 1: movq 48(<input_0=int64#1),>t=int64#2 181# asm 2: movq 48(<input_0=%rdi),>t=%rsi 182movq 48(%rdi),%rsi 183 184# qhasm: c = count(t) 185# asm 1: popcnt <t=int64#2, >c=int64#2 186# asm 2: popcnt <t=%rsi, >c=%rsi 187popcnt %rsi, %rsi 188 189# qhasm: (uint32) c &= 1 190# asm 1: and $1,<c=int64#2d 191# asm 2: and $1,<c=%esi 192and $1,%esi 193 194# qhasm: r <<= 1 195# asm 1: shl $1,<r=int64#7 196# asm 2: shl $1,<r=%rax 197shl $1,%rax 198 199# qhasm: r |= c 200# asm 1: or <c=int64#2,<r=int64#7 201# asm 2: or <c=%rsi,<r=%rax 202or %rsi,%rax 203 204# qhasm: t = mem64[ input_0 + 40 ] 205# asm 1: movq 40(<input_0=int64#1),>t=int64#2 206# asm 2: movq 40(<input_0=%rdi),>t=%rsi 207movq 40(%rdi),%rsi 208 209# qhasm: c = count(t) 210# asm 1: popcnt <t=int64#2, >c=int64#2 211# asm 2: popcnt <t=%rsi, >c=%rsi 212popcnt %rsi, %rsi 213 214# qhasm: (uint32) c &= 1 215# asm 1: and $1,<c=int64#2d 216# asm 2: and $1,<c=%esi 217and $1,%esi 218 219# qhasm: r <<= 1 220# asm 1: shl $1,<r=int64#7 221# asm 2: shl $1,<r=%rax 222shl $1,%rax 223 224# qhasm: r |= c 225# asm 1: or <c=int64#2,<r=int64#7 226# asm 2: or <c=%rsi,<r=%rax 227or %rsi,%rax 228 229# qhasm: t = mem64[ input_0 + 32 ] 230# asm 1: movq 32(<input_0=int64#1),>t=int64#2 231# asm 2: movq 32(<input_0=%rdi),>t=%rsi 232movq 32(%rdi),%rsi 233 234# qhasm: c = count(t) 235# asm 1: popcnt <t=int64#2, >c=int64#2 236# asm 2: popcnt <t=%rsi, >c=%rsi 237popcnt %rsi, %rsi 238 239# qhasm: (uint32) c &= 1 240# asm 1: and $1,<c=int64#2d 241# asm 2: and $1,<c=%esi 242and $1,%esi 243 244# qhasm: r <<= 1 245# asm 1: shl $1,<r=int64#7 246# asm 2: shl $1,<r=%rax 247shl $1,%rax 248 249# qhasm: r |= c 250# asm 1: or <c=int64#2,<r=int64#7 251# asm 2: or <c=%rsi,<r=%rax 252or %rsi,%rax 253 254# qhasm: t = mem64[ input_0 + 24 ] 255# asm 1: movq 24(<input_0=int64#1),>t=int64#2 256# asm 2: movq 24(<input_0=%rdi),>t=%rsi 257movq 24(%rdi),%rsi 258 259# qhasm: c = count(t) 260# asm 1: popcnt <t=int64#2, >c=int64#2 261# asm 2: popcnt <t=%rsi, >c=%rsi 262popcnt %rsi, %rsi 263 264# qhasm: (uint32) c &= 1 265# asm 1: and $1,<c=int64#2d 266# asm 2: and $1,<c=%esi 267and $1,%esi 268 269# qhasm: r <<= 1 270# asm 1: shl $1,<r=int64#7 271# asm 2: shl $1,<r=%rax 272shl $1,%rax 273 274# qhasm: r |= c 275# asm 1: or <c=int64#2,<r=int64#7 276# asm 2: or <c=%rsi,<r=%rax 277or %rsi,%rax 278 279# qhasm: t = mem64[ input_0 + 16 ] 280# asm 1: movq 16(<input_0=int64#1),>t=int64#2 281# asm 2: movq 16(<input_0=%rdi),>t=%rsi 282movq 16(%rdi),%rsi 283 284# qhasm: c = count(t) 285# asm 1: popcnt <t=int64#2, >c=int64#2 286# asm 2: popcnt <t=%rsi, >c=%rsi 287popcnt %rsi, %rsi 288 289# qhasm: (uint32) c &= 1 290# asm 1: and $1,<c=int64#2d 291# asm 2: and $1,<c=%esi 292and $1,%esi 293 294# qhasm: r <<= 1 295# asm 1: shl $1,<r=int64#7 296# asm 2: shl $1,<r=%rax 297shl $1,%rax 298 299# qhasm: r |= c 300# asm 1: or <c=int64#2,<r=int64#7 301# asm 2: or <c=%rsi,<r=%rax 302or %rsi,%rax 303 304# qhasm: t = mem64[ input_0 + 8 ] 305# asm 1: movq 8(<input_0=int64#1),>t=int64#2 306# asm 2: movq 8(<input_0=%rdi),>t=%rsi 307movq 8(%rdi),%rsi 308 309# qhasm: c = count(t) 310# asm 1: popcnt <t=int64#2, >c=int64#2 311# asm 2: popcnt <t=%rsi, >c=%rsi 312popcnt %rsi, %rsi 313 314# qhasm: (uint32) c &= 1 315# asm 1: and $1,<c=int64#2d 316# asm 2: and $1,<c=%esi 317and $1,%esi 318 319# qhasm: r <<= 1 320# asm 1: shl $1,<r=int64#7 321# asm 2: shl $1,<r=%rax 322shl $1,%rax 323 324# qhasm: r |= c 325# asm 1: or <c=int64#2,<r=int64#7 326# asm 2: or <c=%rsi,<r=%rax 327or %rsi,%rax 328 329# qhasm: t = mem64[ input_0 + 0 ] 330# asm 1: movq 0(<input_0=int64#1),>t=int64#1 331# asm 2: movq 0(<input_0=%rdi),>t=%rdi 332movq 0(%rdi),%rdi 333 334# qhasm: c = count(t) 335# asm 1: popcnt <t=int64#1, >c=int64#1 336# asm 2: popcnt <t=%rdi, >c=%rdi 337popcnt %rdi, %rdi 338 339# qhasm: (uint32) c &= 1 340# asm 1: and $1,<c=int64#1d 341# asm 2: and $1,<c=%edi 342and $1,%edi 343 344# qhasm: r <<= 1 345# asm 1: shl $1,<r=int64#7 346# asm 2: shl $1,<r=%rax 347shl $1,%rax 348 349# qhasm: r |= c 350# asm 1: or <c=int64#1,<r=int64#7 351# asm 2: or <c=%rdi,<r=%rax 352or %rdi,%rax 353 354# qhasm: return r 355add %r11,%rsp 356ret 357