1bc3d5698SJohn Baldwin/* Do not modify. This file is auto-generated from x86_64cpuid.pl. */ 2bc3d5698SJohn Baldwin 3bc3d5698SJohn Baldwin.hidden OPENSSL_cpuid_setup 4bc3d5698SJohn Baldwin.section .init 5bc3d5698SJohn Baldwin call OPENSSL_cpuid_setup 6bc3d5698SJohn Baldwin 7bc3d5698SJohn Baldwin.hidden OPENSSL_ia32cap_P 8bc3d5698SJohn Baldwin.comm OPENSSL_ia32cap_P,16,4 9bc3d5698SJohn Baldwin 10bc3d5698SJohn Baldwin.text 11bc3d5698SJohn Baldwin 12bc3d5698SJohn Baldwin.globl OPENSSL_atomic_add 13bc3d5698SJohn Baldwin.type OPENSSL_atomic_add,@function 14bc3d5698SJohn Baldwin.align 16 15bc3d5698SJohn BaldwinOPENSSL_atomic_add: 16*c0855eaaSJohn Baldwin.cfi_startproc 17*c0855eaaSJohn Baldwin.byte 243,15,30,250 18bc3d5698SJohn Baldwin movl (%rdi),%eax 19bc3d5698SJohn Baldwin.Lspin: leaq (%rsi,%rax,1),%r8 20bc3d5698SJohn Baldwin.byte 0xf0 21bc3d5698SJohn Baldwin cmpxchgl %r8d,(%rdi) 22bc3d5698SJohn Baldwin jne .Lspin 23bc3d5698SJohn Baldwin movl %r8d,%eax 24bc3d5698SJohn Baldwin.byte 0x48,0x98 25bc3d5698SJohn Baldwin .byte 0xf3,0xc3 26*c0855eaaSJohn Baldwin.cfi_endproc 27bc3d5698SJohn Baldwin.size OPENSSL_atomic_add,.-OPENSSL_atomic_add 28bc3d5698SJohn Baldwin 29bc3d5698SJohn Baldwin.globl OPENSSL_rdtsc 30bc3d5698SJohn Baldwin.type OPENSSL_rdtsc,@function 31bc3d5698SJohn Baldwin.align 16 32bc3d5698SJohn BaldwinOPENSSL_rdtsc: 33*c0855eaaSJohn Baldwin.cfi_startproc 34*c0855eaaSJohn Baldwin.byte 243,15,30,250 35bc3d5698SJohn Baldwin rdtsc 36bc3d5698SJohn Baldwin shlq $32,%rdx 37bc3d5698SJohn Baldwin orq %rdx,%rax 38bc3d5698SJohn Baldwin .byte 0xf3,0xc3 39*c0855eaaSJohn Baldwin.cfi_endproc 40bc3d5698SJohn Baldwin.size OPENSSL_rdtsc,.-OPENSSL_rdtsc 41bc3d5698SJohn Baldwin 42bc3d5698SJohn Baldwin.globl OPENSSL_ia32_cpuid 43bc3d5698SJohn Baldwin.type OPENSSL_ia32_cpuid,@function 44bc3d5698SJohn Baldwin.align 16 45bc3d5698SJohn BaldwinOPENSSL_ia32_cpuid: 46bc3d5698SJohn Baldwin.cfi_startproc 47*c0855eaaSJohn Baldwin.byte 243,15,30,250 48bc3d5698SJohn Baldwin movq %rbx,%r8 49bc3d5698SJohn Baldwin.cfi_register %rbx,%r8 50bc3d5698SJohn Baldwin 51bc3d5698SJohn Baldwin xorl %eax,%eax 52bc3d5698SJohn Baldwin movq %rax,8(%rdi) 53bc3d5698SJohn Baldwin cpuid 54bc3d5698SJohn Baldwin movl %eax,%r11d 55bc3d5698SJohn Baldwin 56bc3d5698SJohn Baldwin xorl %eax,%eax 57bc3d5698SJohn Baldwin cmpl $0x756e6547,%ebx 58bc3d5698SJohn Baldwin setne %al 59bc3d5698SJohn Baldwin movl %eax,%r9d 60bc3d5698SJohn Baldwin cmpl $0x49656e69,%edx 61bc3d5698SJohn Baldwin setne %al 62bc3d5698SJohn Baldwin orl %eax,%r9d 63bc3d5698SJohn Baldwin cmpl $0x6c65746e,%ecx 64bc3d5698SJohn Baldwin setne %al 65bc3d5698SJohn Baldwin orl %eax,%r9d 66bc3d5698SJohn Baldwin jz .Lintel 67bc3d5698SJohn Baldwin 68bc3d5698SJohn Baldwin cmpl $0x68747541,%ebx 69bc3d5698SJohn Baldwin setne %al 70bc3d5698SJohn Baldwin movl %eax,%r10d 71bc3d5698SJohn Baldwin cmpl $0x69746E65,%edx 72bc3d5698SJohn Baldwin setne %al 73bc3d5698SJohn Baldwin orl %eax,%r10d 74bc3d5698SJohn Baldwin cmpl $0x444D4163,%ecx 75bc3d5698SJohn Baldwin setne %al 76bc3d5698SJohn Baldwin orl %eax,%r10d 77bc3d5698SJohn Baldwin jnz .Lintel 78bc3d5698SJohn Baldwin 79bc3d5698SJohn Baldwin 80bc3d5698SJohn Baldwin movl $0x80000000,%eax 81bc3d5698SJohn Baldwin cpuid 82bc3d5698SJohn Baldwin cmpl $0x80000001,%eax 83bc3d5698SJohn Baldwin jb .Lintel 84bc3d5698SJohn Baldwin movl %eax,%r10d 85bc3d5698SJohn Baldwin movl $0x80000001,%eax 86bc3d5698SJohn Baldwin cpuid 87bc3d5698SJohn Baldwin orl %ecx,%r9d 88bc3d5698SJohn Baldwin andl $0x00000801,%r9d 89bc3d5698SJohn Baldwin 90bc3d5698SJohn Baldwin cmpl $0x80000008,%r10d 91bc3d5698SJohn Baldwin jb .Lintel 92bc3d5698SJohn Baldwin 93bc3d5698SJohn Baldwin movl $0x80000008,%eax 94bc3d5698SJohn Baldwin cpuid 95bc3d5698SJohn Baldwin movzbq %cl,%r10 96bc3d5698SJohn Baldwin incq %r10 97bc3d5698SJohn Baldwin 98bc3d5698SJohn Baldwin movl $1,%eax 99bc3d5698SJohn Baldwin cpuid 100bc3d5698SJohn Baldwin btl $28,%edx 101bc3d5698SJohn Baldwin jnc .Lgeneric 102bc3d5698SJohn Baldwin shrl $16,%ebx 103bc3d5698SJohn Baldwin cmpb %r10b,%bl 104bc3d5698SJohn Baldwin ja .Lgeneric 105bc3d5698SJohn Baldwin andl $0xefffffff,%edx 106bc3d5698SJohn Baldwin jmp .Lgeneric 107bc3d5698SJohn Baldwin 108bc3d5698SJohn Baldwin.Lintel: 109bc3d5698SJohn Baldwin cmpl $4,%r11d 110bc3d5698SJohn Baldwin movl $-1,%r10d 111bc3d5698SJohn Baldwin jb .Lnocacheinfo 112bc3d5698SJohn Baldwin 113bc3d5698SJohn Baldwin movl $4,%eax 114bc3d5698SJohn Baldwin movl $0,%ecx 115bc3d5698SJohn Baldwin cpuid 116bc3d5698SJohn Baldwin movl %eax,%r10d 117bc3d5698SJohn Baldwin shrl $14,%r10d 118bc3d5698SJohn Baldwin andl $0xfff,%r10d 119bc3d5698SJohn Baldwin 120bc3d5698SJohn Baldwin.Lnocacheinfo: 121bc3d5698SJohn Baldwin movl $1,%eax 122bc3d5698SJohn Baldwin cpuid 123bc3d5698SJohn Baldwin movd %eax,%xmm0 124bc3d5698SJohn Baldwin andl $0xbfefffff,%edx 125bc3d5698SJohn Baldwin cmpl $0,%r9d 126bc3d5698SJohn Baldwin jne .Lnotintel 127bc3d5698SJohn Baldwin orl $0x40000000,%edx 128bc3d5698SJohn Baldwin andb $15,%ah 129bc3d5698SJohn Baldwin cmpb $15,%ah 130bc3d5698SJohn Baldwin jne .LnotP4 131bc3d5698SJohn Baldwin orl $0x00100000,%edx 132bc3d5698SJohn Baldwin.LnotP4: 133bc3d5698SJohn Baldwin cmpb $6,%ah 134bc3d5698SJohn Baldwin jne .Lnotintel 135bc3d5698SJohn Baldwin andl $0x0fff0ff0,%eax 136bc3d5698SJohn Baldwin cmpl $0x00050670,%eax 137bc3d5698SJohn Baldwin je .Lknights 138bc3d5698SJohn Baldwin cmpl $0x00080650,%eax 139bc3d5698SJohn Baldwin jne .Lnotintel 140bc3d5698SJohn Baldwin.Lknights: 141bc3d5698SJohn Baldwin andl $0xfbffffff,%ecx 142bc3d5698SJohn Baldwin 143bc3d5698SJohn Baldwin.Lnotintel: 144bc3d5698SJohn Baldwin btl $28,%edx 145bc3d5698SJohn Baldwin jnc .Lgeneric 146bc3d5698SJohn Baldwin andl $0xefffffff,%edx 147bc3d5698SJohn Baldwin cmpl $0,%r10d 148bc3d5698SJohn Baldwin je .Lgeneric 149bc3d5698SJohn Baldwin 150bc3d5698SJohn Baldwin orl $0x10000000,%edx 151bc3d5698SJohn Baldwin shrl $16,%ebx 152bc3d5698SJohn Baldwin cmpb $1,%bl 153bc3d5698SJohn Baldwin ja .Lgeneric 154bc3d5698SJohn Baldwin andl $0xefffffff,%edx 155bc3d5698SJohn Baldwin.Lgeneric: 156bc3d5698SJohn Baldwin andl $0x00000800,%r9d 157bc3d5698SJohn Baldwin andl $0xfffff7ff,%ecx 158bc3d5698SJohn Baldwin orl %ecx,%r9d 159bc3d5698SJohn Baldwin 160bc3d5698SJohn Baldwin movl %edx,%r10d 161bc3d5698SJohn Baldwin 162bc3d5698SJohn Baldwin cmpl $7,%r11d 163bc3d5698SJohn Baldwin jb .Lno_extended_info 164bc3d5698SJohn Baldwin movl $7,%eax 165bc3d5698SJohn Baldwin xorl %ecx,%ecx 166bc3d5698SJohn Baldwin cpuid 167bc3d5698SJohn Baldwin btl $26,%r9d 168bc3d5698SJohn Baldwin jc .Lnotknights 169bc3d5698SJohn Baldwin andl $0xfff7ffff,%ebx 170bc3d5698SJohn Baldwin.Lnotknights: 171bc3d5698SJohn Baldwin movd %xmm0,%eax 172bc3d5698SJohn Baldwin andl $0x0fff0ff0,%eax 173bc3d5698SJohn Baldwin cmpl $0x00050650,%eax 174bc3d5698SJohn Baldwin jne .Lnotskylakex 175bc3d5698SJohn Baldwin andl $0xfffeffff,%ebx 176bc3d5698SJohn Baldwin 177bc3d5698SJohn Baldwin.Lnotskylakex: 178bc3d5698SJohn Baldwin movl %ebx,8(%rdi) 179bc3d5698SJohn Baldwin movl %ecx,12(%rdi) 180bc3d5698SJohn Baldwin.Lno_extended_info: 181bc3d5698SJohn Baldwin 182bc3d5698SJohn Baldwin btl $27,%r9d 183bc3d5698SJohn Baldwin jnc .Lclear_avx 184bc3d5698SJohn Baldwin xorl %ecx,%ecx 185bc3d5698SJohn Baldwin.byte 0x0f,0x01,0xd0 186bc3d5698SJohn Baldwin andl $0xe6,%eax 187bc3d5698SJohn Baldwin cmpl $0xe6,%eax 188bc3d5698SJohn Baldwin je .Ldone 189bc3d5698SJohn Baldwin andl $0x3fdeffff,8(%rdi) 190bc3d5698SJohn Baldwin 191bc3d5698SJohn Baldwin 192bc3d5698SJohn Baldwin 193bc3d5698SJohn Baldwin 194bc3d5698SJohn Baldwin andl $6,%eax 195bc3d5698SJohn Baldwin cmpl $6,%eax 196bc3d5698SJohn Baldwin je .Ldone 197bc3d5698SJohn Baldwin.Lclear_avx: 198bc3d5698SJohn Baldwin movl $0xefffe7ff,%eax 199bc3d5698SJohn Baldwin andl %eax,%r9d 200bc3d5698SJohn Baldwin movl $0x3fdeffdf,%eax 201bc3d5698SJohn Baldwin andl %eax,8(%rdi) 202bc3d5698SJohn Baldwin.Ldone: 203bc3d5698SJohn Baldwin shlq $32,%r9 204bc3d5698SJohn Baldwin movl %r10d,%eax 205bc3d5698SJohn Baldwin movq %r8,%rbx 206bc3d5698SJohn Baldwin.cfi_restore %rbx 207bc3d5698SJohn Baldwin orq %r9,%rax 208bc3d5698SJohn Baldwin .byte 0xf3,0xc3 209bc3d5698SJohn Baldwin.cfi_endproc 210bc3d5698SJohn Baldwin.size OPENSSL_ia32_cpuid,.-OPENSSL_ia32_cpuid 211bc3d5698SJohn Baldwin 212bc3d5698SJohn Baldwin.globl OPENSSL_cleanse 213bc3d5698SJohn Baldwin.type OPENSSL_cleanse,@function 214bc3d5698SJohn Baldwin.align 16 215bc3d5698SJohn BaldwinOPENSSL_cleanse: 216*c0855eaaSJohn Baldwin.cfi_startproc 217*c0855eaaSJohn Baldwin.byte 243,15,30,250 218bc3d5698SJohn Baldwin xorq %rax,%rax 219bc3d5698SJohn Baldwin cmpq $15,%rsi 220bc3d5698SJohn Baldwin jae .Lot 221bc3d5698SJohn Baldwin cmpq $0,%rsi 222bc3d5698SJohn Baldwin je .Lret 223bc3d5698SJohn Baldwin.Little: 224bc3d5698SJohn Baldwin movb %al,(%rdi) 225bc3d5698SJohn Baldwin subq $1,%rsi 226bc3d5698SJohn Baldwin leaq 1(%rdi),%rdi 227bc3d5698SJohn Baldwin jnz .Little 228bc3d5698SJohn Baldwin.Lret: 229bc3d5698SJohn Baldwin .byte 0xf3,0xc3 230bc3d5698SJohn Baldwin.align 16 231bc3d5698SJohn Baldwin.Lot: 232bc3d5698SJohn Baldwin testq $7,%rdi 233bc3d5698SJohn Baldwin jz .Laligned 234bc3d5698SJohn Baldwin movb %al,(%rdi) 235bc3d5698SJohn Baldwin leaq -1(%rsi),%rsi 236bc3d5698SJohn Baldwin leaq 1(%rdi),%rdi 237bc3d5698SJohn Baldwin jmp .Lot 238bc3d5698SJohn Baldwin.Laligned: 239bc3d5698SJohn Baldwin movq %rax,(%rdi) 240bc3d5698SJohn Baldwin leaq -8(%rsi),%rsi 241bc3d5698SJohn Baldwin testq $-8,%rsi 242bc3d5698SJohn Baldwin leaq 8(%rdi),%rdi 243bc3d5698SJohn Baldwin jnz .Laligned 244bc3d5698SJohn Baldwin cmpq $0,%rsi 245bc3d5698SJohn Baldwin jne .Little 246bc3d5698SJohn Baldwin .byte 0xf3,0xc3 247*c0855eaaSJohn Baldwin.cfi_endproc 248bc3d5698SJohn Baldwin.size OPENSSL_cleanse,.-OPENSSL_cleanse 249bc3d5698SJohn Baldwin 250bc3d5698SJohn Baldwin.globl CRYPTO_memcmp 251bc3d5698SJohn Baldwin.type CRYPTO_memcmp,@function 252bc3d5698SJohn Baldwin.align 16 253bc3d5698SJohn BaldwinCRYPTO_memcmp: 254*c0855eaaSJohn Baldwin.cfi_startproc 255*c0855eaaSJohn Baldwin.byte 243,15,30,250 256bc3d5698SJohn Baldwin xorq %rax,%rax 257bc3d5698SJohn Baldwin xorq %r10,%r10 258bc3d5698SJohn Baldwin cmpq $0,%rdx 259bc3d5698SJohn Baldwin je .Lno_data 260bc3d5698SJohn Baldwin cmpq $16,%rdx 261bc3d5698SJohn Baldwin jne .Loop_cmp 262bc3d5698SJohn Baldwin movq (%rdi),%r10 263bc3d5698SJohn Baldwin movq 8(%rdi),%r11 264bc3d5698SJohn Baldwin movq $1,%rdx 265bc3d5698SJohn Baldwin xorq (%rsi),%r10 266bc3d5698SJohn Baldwin xorq 8(%rsi),%r11 267bc3d5698SJohn Baldwin orq %r11,%r10 268bc3d5698SJohn Baldwin cmovnzq %rdx,%rax 269bc3d5698SJohn Baldwin .byte 0xf3,0xc3 270bc3d5698SJohn Baldwin 271bc3d5698SJohn Baldwin.align 16 272bc3d5698SJohn Baldwin.Loop_cmp: 273bc3d5698SJohn Baldwin movb (%rdi),%r10b 274bc3d5698SJohn Baldwin leaq 1(%rdi),%rdi 275bc3d5698SJohn Baldwin xorb (%rsi),%r10b 276bc3d5698SJohn Baldwin leaq 1(%rsi),%rsi 277bc3d5698SJohn Baldwin orb %r10b,%al 278bc3d5698SJohn Baldwin decq %rdx 279bc3d5698SJohn Baldwin jnz .Loop_cmp 280bc3d5698SJohn Baldwin negq %rax 281bc3d5698SJohn Baldwin shrq $63,%rax 282bc3d5698SJohn Baldwin.Lno_data: 283bc3d5698SJohn Baldwin .byte 0xf3,0xc3 284*c0855eaaSJohn Baldwin.cfi_endproc 285bc3d5698SJohn Baldwin.size CRYPTO_memcmp,.-CRYPTO_memcmp 286bc3d5698SJohn Baldwin.globl OPENSSL_wipe_cpu 287bc3d5698SJohn Baldwin.type OPENSSL_wipe_cpu,@function 288bc3d5698SJohn Baldwin.align 16 289bc3d5698SJohn BaldwinOPENSSL_wipe_cpu: 290*c0855eaaSJohn Baldwin.cfi_startproc 291*c0855eaaSJohn Baldwin.byte 243,15,30,250 292bc3d5698SJohn Baldwin pxor %xmm0,%xmm0 293bc3d5698SJohn Baldwin pxor %xmm1,%xmm1 294bc3d5698SJohn Baldwin pxor %xmm2,%xmm2 295bc3d5698SJohn Baldwin pxor %xmm3,%xmm3 296bc3d5698SJohn Baldwin pxor %xmm4,%xmm4 297bc3d5698SJohn Baldwin pxor %xmm5,%xmm5 298bc3d5698SJohn Baldwin pxor %xmm6,%xmm6 299bc3d5698SJohn Baldwin pxor %xmm7,%xmm7 300bc3d5698SJohn Baldwin pxor %xmm8,%xmm8 301bc3d5698SJohn Baldwin pxor %xmm9,%xmm9 302bc3d5698SJohn Baldwin pxor %xmm10,%xmm10 303bc3d5698SJohn Baldwin pxor %xmm11,%xmm11 304bc3d5698SJohn Baldwin pxor %xmm12,%xmm12 305bc3d5698SJohn Baldwin pxor %xmm13,%xmm13 306bc3d5698SJohn Baldwin pxor %xmm14,%xmm14 307bc3d5698SJohn Baldwin pxor %xmm15,%xmm15 308bc3d5698SJohn Baldwin xorq %rcx,%rcx 309bc3d5698SJohn Baldwin xorq %rdx,%rdx 310bc3d5698SJohn Baldwin xorq %rsi,%rsi 311bc3d5698SJohn Baldwin xorq %rdi,%rdi 312bc3d5698SJohn Baldwin xorq %r8,%r8 313bc3d5698SJohn Baldwin xorq %r9,%r9 314bc3d5698SJohn Baldwin xorq %r10,%r10 315bc3d5698SJohn Baldwin xorq %r11,%r11 316bc3d5698SJohn Baldwin leaq 8(%rsp),%rax 317bc3d5698SJohn Baldwin .byte 0xf3,0xc3 318*c0855eaaSJohn Baldwin.cfi_endproc 319bc3d5698SJohn Baldwin.size OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu 320bc3d5698SJohn Baldwin.globl OPENSSL_instrument_bus 321bc3d5698SJohn Baldwin.type OPENSSL_instrument_bus,@function 322bc3d5698SJohn Baldwin.align 16 323bc3d5698SJohn BaldwinOPENSSL_instrument_bus: 324*c0855eaaSJohn Baldwin.cfi_startproc 325*c0855eaaSJohn Baldwin.byte 243,15,30,250 326bc3d5698SJohn Baldwin movq %rdi,%r10 327bc3d5698SJohn Baldwin movq %rsi,%rcx 328bc3d5698SJohn Baldwin movq %rsi,%r11 329bc3d5698SJohn Baldwin 330bc3d5698SJohn Baldwin rdtsc 331bc3d5698SJohn Baldwin movl %eax,%r8d 332bc3d5698SJohn Baldwin movl $0,%r9d 333bc3d5698SJohn Baldwin clflush (%r10) 334bc3d5698SJohn Baldwin.byte 0xf0 335bc3d5698SJohn Baldwin addl %r9d,(%r10) 336bc3d5698SJohn Baldwin jmp .Loop 337bc3d5698SJohn Baldwin.align 16 338bc3d5698SJohn Baldwin.Loop: rdtsc 339bc3d5698SJohn Baldwin movl %eax,%edx 340bc3d5698SJohn Baldwin subl %r8d,%eax 341bc3d5698SJohn Baldwin movl %edx,%r8d 342bc3d5698SJohn Baldwin movl %eax,%r9d 343bc3d5698SJohn Baldwin clflush (%r10) 344bc3d5698SJohn Baldwin.byte 0xf0 345bc3d5698SJohn Baldwin addl %eax,(%r10) 346bc3d5698SJohn Baldwin leaq 4(%r10),%r10 347bc3d5698SJohn Baldwin subq $1,%rcx 348bc3d5698SJohn Baldwin jnz .Loop 349bc3d5698SJohn Baldwin 350bc3d5698SJohn Baldwin movq %r11,%rax 351bc3d5698SJohn Baldwin .byte 0xf3,0xc3 352*c0855eaaSJohn Baldwin.cfi_endproc 353bc3d5698SJohn Baldwin.size OPENSSL_instrument_bus,.-OPENSSL_instrument_bus 354bc3d5698SJohn Baldwin 355bc3d5698SJohn Baldwin.globl OPENSSL_instrument_bus2 356bc3d5698SJohn Baldwin.type OPENSSL_instrument_bus2,@function 357bc3d5698SJohn Baldwin.align 16 358bc3d5698SJohn BaldwinOPENSSL_instrument_bus2: 359*c0855eaaSJohn Baldwin.cfi_startproc 360*c0855eaaSJohn Baldwin.byte 243,15,30,250 361bc3d5698SJohn Baldwin movq %rdi,%r10 362bc3d5698SJohn Baldwin movq %rsi,%rcx 363bc3d5698SJohn Baldwin movq %rdx,%r11 364bc3d5698SJohn Baldwin movq %rcx,8(%rsp) 365bc3d5698SJohn Baldwin 366bc3d5698SJohn Baldwin rdtsc 367bc3d5698SJohn Baldwin movl %eax,%r8d 368bc3d5698SJohn Baldwin movl $0,%r9d 369bc3d5698SJohn Baldwin 370bc3d5698SJohn Baldwin clflush (%r10) 371bc3d5698SJohn Baldwin.byte 0xf0 372bc3d5698SJohn Baldwin addl %r9d,(%r10) 373bc3d5698SJohn Baldwin 374bc3d5698SJohn Baldwin rdtsc 375bc3d5698SJohn Baldwin movl %eax,%edx 376bc3d5698SJohn Baldwin subl %r8d,%eax 377bc3d5698SJohn Baldwin movl %edx,%r8d 378bc3d5698SJohn Baldwin movl %eax,%r9d 379bc3d5698SJohn Baldwin.Loop2: 380bc3d5698SJohn Baldwin clflush (%r10) 381bc3d5698SJohn Baldwin.byte 0xf0 382bc3d5698SJohn Baldwin addl %eax,(%r10) 383bc3d5698SJohn Baldwin 384bc3d5698SJohn Baldwin subq $1,%r11 385bc3d5698SJohn Baldwin jz .Ldone2 386bc3d5698SJohn Baldwin 387bc3d5698SJohn Baldwin rdtsc 388bc3d5698SJohn Baldwin movl %eax,%edx 389bc3d5698SJohn Baldwin subl %r8d,%eax 390bc3d5698SJohn Baldwin movl %edx,%r8d 391bc3d5698SJohn Baldwin cmpl %r9d,%eax 392bc3d5698SJohn Baldwin movl %eax,%r9d 393bc3d5698SJohn Baldwin movl $0,%edx 394bc3d5698SJohn Baldwin setne %dl 395bc3d5698SJohn Baldwin subq %rdx,%rcx 396bc3d5698SJohn Baldwin leaq (%r10,%rdx,4),%r10 397bc3d5698SJohn Baldwin jnz .Loop2 398bc3d5698SJohn Baldwin 399bc3d5698SJohn Baldwin.Ldone2: 400bc3d5698SJohn Baldwin movq 8(%rsp),%rax 401bc3d5698SJohn Baldwin subq %rcx,%rax 402bc3d5698SJohn Baldwin .byte 0xf3,0xc3 403*c0855eaaSJohn Baldwin.cfi_endproc 404bc3d5698SJohn Baldwin.size OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2 405bc3d5698SJohn Baldwin.globl OPENSSL_ia32_rdrand_bytes 406bc3d5698SJohn Baldwin.type OPENSSL_ia32_rdrand_bytes,@function 407bc3d5698SJohn Baldwin.align 16 408bc3d5698SJohn BaldwinOPENSSL_ia32_rdrand_bytes: 409*c0855eaaSJohn Baldwin.cfi_startproc 410*c0855eaaSJohn Baldwin.byte 243,15,30,250 411bc3d5698SJohn Baldwin xorq %rax,%rax 412bc3d5698SJohn Baldwin cmpq $0,%rsi 413bc3d5698SJohn Baldwin je .Ldone_rdrand_bytes 414bc3d5698SJohn Baldwin 415bc3d5698SJohn Baldwin movq $8,%r11 416bc3d5698SJohn Baldwin.Loop_rdrand_bytes: 417bc3d5698SJohn Baldwin.byte 73,15,199,242 418bc3d5698SJohn Baldwin jc .Lbreak_rdrand_bytes 419bc3d5698SJohn Baldwin decq %r11 420bc3d5698SJohn Baldwin jnz .Loop_rdrand_bytes 421bc3d5698SJohn Baldwin jmp .Ldone_rdrand_bytes 422bc3d5698SJohn Baldwin 423bc3d5698SJohn Baldwin.align 16 424bc3d5698SJohn Baldwin.Lbreak_rdrand_bytes: 425bc3d5698SJohn Baldwin cmpq $8,%rsi 426bc3d5698SJohn Baldwin jb .Ltail_rdrand_bytes 427bc3d5698SJohn Baldwin movq %r10,(%rdi) 428bc3d5698SJohn Baldwin leaq 8(%rdi),%rdi 429bc3d5698SJohn Baldwin addq $8,%rax 430bc3d5698SJohn Baldwin subq $8,%rsi 431bc3d5698SJohn Baldwin jz .Ldone_rdrand_bytes 432bc3d5698SJohn Baldwin movq $8,%r11 433bc3d5698SJohn Baldwin jmp .Loop_rdrand_bytes 434bc3d5698SJohn Baldwin 435bc3d5698SJohn Baldwin.align 16 436bc3d5698SJohn Baldwin.Ltail_rdrand_bytes: 437bc3d5698SJohn Baldwin movb %r10b,(%rdi) 438bc3d5698SJohn Baldwin leaq 1(%rdi),%rdi 439bc3d5698SJohn Baldwin incq %rax 440bc3d5698SJohn Baldwin shrq $8,%r10 441bc3d5698SJohn Baldwin decq %rsi 442bc3d5698SJohn Baldwin jnz .Ltail_rdrand_bytes 443bc3d5698SJohn Baldwin 444bc3d5698SJohn Baldwin.Ldone_rdrand_bytes: 445bc3d5698SJohn Baldwin xorq %r10,%r10 446bc3d5698SJohn Baldwin .byte 0xf3,0xc3 447*c0855eaaSJohn Baldwin.cfi_endproc 448bc3d5698SJohn Baldwin.size OPENSSL_ia32_rdrand_bytes,.-OPENSSL_ia32_rdrand_bytes 449bc3d5698SJohn Baldwin.globl OPENSSL_ia32_rdseed_bytes 450bc3d5698SJohn Baldwin.type OPENSSL_ia32_rdseed_bytes,@function 451bc3d5698SJohn Baldwin.align 16 452bc3d5698SJohn BaldwinOPENSSL_ia32_rdseed_bytes: 453*c0855eaaSJohn Baldwin.cfi_startproc 454*c0855eaaSJohn Baldwin.byte 243,15,30,250 455bc3d5698SJohn Baldwin xorq %rax,%rax 456bc3d5698SJohn Baldwin cmpq $0,%rsi 457bc3d5698SJohn Baldwin je .Ldone_rdseed_bytes 458bc3d5698SJohn Baldwin 459bc3d5698SJohn Baldwin movq $8,%r11 460bc3d5698SJohn Baldwin.Loop_rdseed_bytes: 461bc3d5698SJohn Baldwin.byte 73,15,199,250 462bc3d5698SJohn Baldwin jc .Lbreak_rdseed_bytes 463bc3d5698SJohn Baldwin decq %r11 464bc3d5698SJohn Baldwin jnz .Loop_rdseed_bytes 465bc3d5698SJohn Baldwin jmp .Ldone_rdseed_bytes 466bc3d5698SJohn Baldwin 467bc3d5698SJohn Baldwin.align 16 468bc3d5698SJohn Baldwin.Lbreak_rdseed_bytes: 469bc3d5698SJohn Baldwin cmpq $8,%rsi 470bc3d5698SJohn Baldwin jb .Ltail_rdseed_bytes 471bc3d5698SJohn Baldwin movq %r10,(%rdi) 472bc3d5698SJohn Baldwin leaq 8(%rdi),%rdi 473bc3d5698SJohn Baldwin addq $8,%rax 474bc3d5698SJohn Baldwin subq $8,%rsi 475bc3d5698SJohn Baldwin jz .Ldone_rdseed_bytes 476bc3d5698SJohn Baldwin movq $8,%r11 477bc3d5698SJohn Baldwin jmp .Loop_rdseed_bytes 478bc3d5698SJohn Baldwin 479bc3d5698SJohn Baldwin.align 16 480bc3d5698SJohn Baldwin.Ltail_rdseed_bytes: 481bc3d5698SJohn Baldwin movb %r10b,(%rdi) 482bc3d5698SJohn Baldwin leaq 1(%rdi),%rdi 483bc3d5698SJohn Baldwin incq %rax 484bc3d5698SJohn Baldwin shrq $8,%r10 485bc3d5698SJohn Baldwin decq %rsi 486bc3d5698SJohn Baldwin jnz .Ltail_rdseed_bytes 487bc3d5698SJohn Baldwin 488bc3d5698SJohn Baldwin.Ldone_rdseed_bytes: 489bc3d5698SJohn Baldwin xorq %r10,%r10 490bc3d5698SJohn Baldwin .byte 0xf3,0xc3 491*c0855eaaSJohn Baldwin.cfi_endproc 492bc3d5698SJohn Baldwin.size OPENSSL_ia32_rdseed_bytes,.-OPENSSL_ia32_rdseed_bytes 493*c0855eaaSJohn Baldwin .section ".note.gnu.property", "a" 494*c0855eaaSJohn Baldwin .p2align 3 495*c0855eaaSJohn Baldwin .long 1f - 0f 496*c0855eaaSJohn Baldwin .long 4f - 1f 497*c0855eaaSJohn Baldwin .long 5 498*c0855eaaSJohn Baldwin0: 499*c0855eaaSJohn Baldwin # "GNU" encoded with .byte, since .asciz isn't supported 500*c0855eaaSJohn Baldwin # on Solaris. 501*c0855eaaSJohn Baldwin .byte 0x47 502*c0855eaaSJohn Baldwin .byte 0x4e 503*c0855eaaSJohn Baldwin .byte 0x55 504*c0855eaaSJohn Baldwin .byte 0 505*c0855eaaSJohn Baldwin1: 506*c0855eaaSJohn Baldwin .p2align 3 507*c0855eaaSJohn Baldwin .long 0xc0000002 508*c0855eaaSJohn Baldwin .long 3f - 2f 509*c0855eaaSJohn Baldwin2: 510*c0855eaaSJohn Baldwin .long 3 511*c0855eaaSJohn Baldwin3: 512*c0855eaaSJohn Baldwin .p2align 3 513*c0855eaaSJohn Baldwin4: 514