GCC does not generate ADCX or ADOX for _addcarryx_u64

Jeffrey Walton noloader@gmail.com
Mon Aug 21 10:59:00 GMT 2017


Hi Everyone,

I'm trying to use _addcarryx_u64. GCC 7.1 is still generating ADD and
ADC instead of ADCX or ADOX:

$ objdump --disassemble test.o | c++filt | egrep 'adc|adcx|adox'
  a4:   48 11 c8                adc    %rcx,%rax
 10f:   48 11 c8                adc    %rcx,%rax
 17a:   48 11 c8                adc    %rcx,%rax
 1e5:   48 11 c8                adc    %rcx,%rax
 24a:   48 11 c8                adc    %rcx,%rax
 29d:   48 11 c8                adc    %rcx,%rax
 2f0:   48 11 c8                adc    %rcx,%rax
 337:   48 11 c8                adc    %rcx,%rax

Below is the test program, the objdump and the cpu features as
reported in /proc/cpuinfo. Unnecessary stuff was removed from objdump,
like Print and static initalizers.

The bug reporter is still hanging, so I cannot search for bug reports.
It would be nice if someone fixed the web server problem, too. Its
been a problem of 3 or 6 months now.

Any ideas what I am doing wrong with respect to ADX?

Thanks in advance

****************************************

$ g++ -Wall -march=native test.cxx -c

****************************************

skylake:cryptopp-fork$ objdump --disassemble test.o | c++filt

test.o:     file format elf64-x86-64

Disassembly of section .text:

0000000000000000 <unsigned char Add<8u>(unsigned long*, unsigned long
const*, unsigned long const*)>:
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
   4:   48 81 ec c0 00 00 00    sub    $0xc0,%rsp
   b:   48 89 bd d8 fe ff ff    mov    %rdi,-0x128(%rbp)
  12:   48 89 b5 d0 fe ff ff    mov    %rsi,-0x130(%rbp)
  19:   48 89 95 c8 fe ff ff    mov    %rdx,-0x138(%rbp)
  20:   48 8b 85 d0 fe ff ff    mov    -0x130(%rbp),%rax
  27:   48 89 45 f8             mov    %rax,-0x8(%rbp)
  2b:   48 8b 85 c8 fe ff ff    mov    -0x138(%rbp),%rax
  32:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  36:   48 8b 85 d8 fe ff ff    mov    -0x128(%rbp),%rax
  3d:   48 89 45 e8             mov    %rax,-0x18(%rbp)
  41:   c6 45 e7 00             movb   $0x0,-0x19(%rbp)
  45:   48 8b 45 e8             mov    -0x18(%rbp),%rax
  49:   48 8d 70 38             lea    0x38(%rax),%rsi
  4d:   48 8b 45 f0             mov    -0x10(%rbp),%rax
  51:   48 83 c0 38             add    $0x38,%rax
  55:   48 8b 00                mov    (%rax),%rax
  58:   48 8b 55 f8             mov    -0x8(%rbp),%rdx
  5c:   48 83 c2 38             add    $0x38,%rdx
  60:   48 8b 12                mov    (%rdx),%rdx
  63:   0f b6 4d e7             movzbl -0x19(%rbp),%ecx
  67:   88 8d 07 ff ff ff       mov    %cl,-0xf9(%rbp)
  6d:   48 89 95 f8 fe ff ff    mov    %rdx,-0x108(%rbp)
  74:   48 89 85 f0 fe ff ff    mov    %rax,-0x110(%rbp)
  7b:   48 89 b5 e8 fe ff ff    mov    %rsi,-0x118(%rbp)
  82:   0f b6 85 07 ff ff ff    movzbl -0xf9(%rbp),%eax
  89:   89 c6                   mov    %eax,%esi
  8b:   48 8b 85 f8 fe ff ff    mov    -0x108(%rbp),%rax
  92:   48 8b 8d f0 fe ff ff    mov    -0x110(%rbp),%rcx
  99:   48 8b 95 e8 fe ff ff    mov    -0x118(%rbp),%rdx
  a0:   40 80 c6 ff             add    $0xff,%sil
  a4:   48 11 c8                adc    %rcx,%rax
  a7:   0f 92 c1                setb   %cl
  aa:   48 89 02                mov    %rax,(%rdx)
  ad:   88 4d e7                mov    %cl,-0x19(%rbp)
  b0:   48 8b 45 e8             mov    -0x18(%rbp),%rax
  b4:   48 8d 70 30             lea    0x30(%rax),%rsi
  b8:   48 8b 45 f0             mov    -0x10(%rbp),%rax
  bc:   48 83 c0 30             add    $0x30,%rax
  c0:   48 8b 00                mov    (%rax),%rax
  c3:   48 8b 55 f8             mov    -0x8(%rbp),%rdx
  c7:   48 83 c2 30             add    $0x30,%rdx
  cb:   48 8b 12                mov    (%rdx),%rdx
  ce:   0f b6 4d e7             movzbl -0x19(%rbp),%ecx
  d2:   88 8d 27 ff ff ff       mov    %cl,-0xd9(%rbp)
  d8:   48 89 95 18 ff ff ff    mov    %rdx,-0xe8(%rbp)
  df:   48 89 85 10 ff ff ff    mov    %rax,-0xf0(%rbp)
  e6:   48 89 b5 08 ff ff ff    mov    %rsi,-0xf8(%rbp)
  ed:   0f b6 85 27 ff ff ff    movzbl -0xd9(%rbp),%eax
  f4:   89 c6                   mov    %eax,%esi
  f6:   48 8b 85 18 ff ff ff    mov    -0xe8(%rbp),%rax
  fd:   48 8b 8d 10 ff ff ff    mov    -0xf0(%rbp),%rcx
 104:   48 8b 95 08 ff ff ff    mov    -0xf8(%rbp),%rdx
 10b:   40 80 c6 ff             add    $0xff,%sil
 10f:   48 11 c8                adc    %rcx,%rax
 112:   0f 92 c1                setb   %cl
 115:   48 89 02                mov    %rax,(%rdx)
 118:   88 4d e7                mov    %cl,-0x19(%rbp)
 11b:   48 8b 45 e8             mov    -0x18(%rbp),%rax
 11f:   48 8d 70 28             lea    0x28(%rax),%rsi
 123:   48 8b 45 f0             mov    -0x10(%rbp),%rax
 127:   48 83 c0 28             add    $0x28,%rax
 12b:   48 8b 00                mov    (%rax),%rax
 12e:   48 8b 55 f8             mov    -0x8(%rbp),%rdx
 132:   48 83 c2 28             add    $0x28,%rdx
 136:   48 8b 12                mov    (%rdx),%rdx
 139:   0f b6 4d e7             movzbl -0x19(%rbp),%ecx
 13d:   88 8d 47 ff ff ff       mov    %cl,-0xb9(%rbp)
 143:   48 89 95 38 ff ff ff    mov    %rdx,-0xc8(%rbp)
 14a:   48 89 85 30 ff ff ff    mov    %rax,-0xd0(%rbp)
 151:   48 89 b5 28 ff ff ff    mov    %rsi,-0xd8(%rbp)
 158:   0f b6 85 47 ff ff ff    movzbl -0xb9(%rbp),%eax
 15f:   89 c6                   mov    %eax,%esi
 161:   48 8b 85 38 ff ff ff    mov    -0xc8(%rbp),%rax
 168:   48 8b 8d 30 ff ff ff    mov    -0xd0(%rbp),%rcx
 16f:   48 8b 95 28 ff ff ff    mov    -0xd8(%rbp),%rdx
 176:   40 80 c6 ff             add    $0xff,%sil
 17a:   48 11 c8                adc    %rcx,%rax
 17d:   0f 92 c1                setb   %cl
 180:   48 89 02                mov    %rax,(%rdx)
 183:   88 4d e7                mov    %cl,-0x19(%rbp)
 186:   48 8b 45 e8             mov    -0x18(%rbp),%rax
 18a:   48 8d 70 20             lea    0x20(%rax),%rsi
 18e:   48 8b 45 f0             mov    -0x10(%rbp),%rax
 192:   48 83 c0 20             add    $0x20,%rax
 196:   48 8b 00                mov    (%rax),%rax
 199:   48 8b 55 f8             mov    -0x8(%rbp),%rdx
 19d:   48 83 c2 20             add    $0x20,%rdx
 1a1:   48 8b 12                mov    (%rdx),%rdx
 1a4:   0f b6 4d e7             movzbl -0x19(%rbp),%ecx
 1a8:   88 8d 67 ff ff ff       mov    %cl,-0x99(%rbp)
 1ae:   48 89 95 58 ff ff ff    mov    %rdx,-0xa8(%rbp)
 1b5:   48 89 85 50 ff ff ff    mov    %rax,-0xb0(%rbp)
 1bc:   48 89 b5 48 ff ff ff    mov    %rsi,-0xb8(%rbp)
 1c3:   0f b6 85 67 ff ff ff    movzbl -0x99(%rbp),%eax
 1ca:   89 c6                   mov    %eax,%esi
 1cc:   48 8b 85 58 ff ff ff    mov    -0xa8(%rbp),%rax
 1d3:   48 8b 8d 50 ff ff ff    mov    -0xb0(%rbp),%rcx
 1da:   48 8b 95 48 ff ff ff    mov    -0xb8(%rbp),%rdx
 1e1:   40 80 c6 ff             add    $0xff,%sil
 1e5:   48 11 c8                adc    %rcx,%rax
 1e8:   0f 92 c1                setb   %cl
 1eb:   48 89 02                mov    %rax,(%rdx)
 1ee:   88 4d e7                mov    %cl,-0x19(%rbp)
 1f1:   48 8b 45 e8             mov    -0x18(%rbp),%rax
 1f5:   48 8d 70 18             lea    0x18(%rax),%rsi
 1f9:   48 8b 45 f0             mov    -0x10(%rbp),%rax
 1fd:   48 83 c0 18             add    $0x18,%rax
 201:   48 8b 00                mov    (%rax),%rax
 204:   48 8b 55 f8             mov    -0x8(%rbp),%rdx
 208:   48 83 c2 18             add    $0x18,%rdx
 20c:   48 8b 12                mov    (%rdx),%rdx
 20f:   0f b6 4d e7             movzbl -0x19(%rbp),%ecx
 213:   88 4d 87                mov    %cl,-0x79(%rbp)
 216:   48 89 95 78 ff ff ff    mov    %rdx,-0x88(%rbp)
 21d:   48 89 85 70 ff ff ff    mov    %rax,-0x90(%rbp)
 224:   48 89 b5 68 ff ff ff    mov    %rsi,-0x98(%rbp)
 22b:   0f b6 45 87             movzbl -0x79(%rbp),%eax
 22f:   89 c6                   mov    %eax,%esi
 231:   48 8b 85 78 ff ff ff    mov    -0x88(%rbp),%rax
 238:   48 8b 8d 70 ff ff ff    mov    -0x90(%rbp),%rcx
 23f:   48 8b 95 68 ff ff ff    mov    -0x98(%rbp),%rdx
 246:   40 80 c6 ff             add    $0xff,%sil
 24a:   48 11 c8                adc    %rcx,%rax
 24d:   0f 92 c1                setb   %cl
 250:   48 89 02                mov    %rax,(%rdx)
 253:   88 4d e7                mov    %cl,-0x19(%rbp)
 256:   48 8b 45 e8             mov    -0x18(%rbp),%rax
 25a:   48 8d 70 10             lea    0x10(%rax),%rsi
 25e:   48 8b 45 f0             mov    -0x10(%rbp),%rax
 262:   48 83 c0 10             add    $0x10,%rax
 266:   48 8b 00                mov    (%rax),%rax
 269:   48 8b 55 f8             mov    -0x8(%rbp),%rdx
 26d:   48 83 c2 10             add    $0x10,%rdx
 271:   48 8b 12                mov    (%rdx),%rdx
 274:   0f b6 4d e7             movzbl -0x19(%rbp),%ecx
 278:   88 4d a7                mov    %cl,-0x59(%rbp)
 27b:   48 89 55 98             mov    %rdx,-0x68(%rbp)
 27f:   48 89 45 90             mov    %rax,-0x70(%rbp)
 283:   48 89 75 88             mov    %rsi,-0x78(%rbp)
 287:   0f b6 45 a7             movzbl -0x59(%rbp),%eax
 28b:   89 c6                   mov    %eax,%esi
 28d:   48 8b 45 98             mov    -0x68(%rbp),%rax
 291:   48 8b 4d 90             mov    -0x70(%rbp),%rcx
 295:   48 8b 55 88             mov    -0x78(%rbp),%rdx
 299:   40 80 c6 ff             add    $0xff,%sil
 29d:   48 11 c8                adc    %rcx,%rax
 2a0:   0f 92 c1                setb   %cl
 2a3:   48 89 02                mov    %rax,(%rdx)
 2a6:   88 4d e7                mov    %cl,-0x19(%rbp)
 2a9:   48 8b 45 e8             mov    -0x18(%rbp),%rax
 2ad:   48 8d 70 08             lea    0x8(%rax),%rsi
 2b1:   48 8b 45 f0             mov    -0x10(%rbp),%rax
 2b5:   48 83 c0 08             add    $0x8,%rax
 2b9:   48 8b 00                mov    (%rax),%rax
 2bc:   48 8b 55 f8             mov    -0x8(%rbp),%rdx
 2c0:   48 83 c2 08             add    $0x8,%rdx
 2c4:   48 8b 12                mov    (%rdx),%rdx
 2c7:   0f b6 4d e7             movzbl -0x19(%rbp),%ecx
 2cb:   88 4d c7                mov    %cl,-0x39(%rbp)
 2ce:   48 89 55 b8             mov    %rdx,-0x48(%rbp)
 2d2:   48 89 45 b0             mov    %rax,-0x50(%rbp)
 2d6:   48 89 75 a8             mov    %rsi,-0x58(%rbp)
 2da:   0f b6 45 c7             movzbl -0x39(%rbp),%eax
 2de:   89 c6                   mov    %eax,%esi
 2e0:   48 8b 45 b8             mov    -0x48(%rbp),%rax
 2e4:   48 8b 4d b0             mov    -0x50(%rbp),%rcx
 2e8:   48 8b 55 a8             mov    -0x58(%rbp),%rdx
 2ec:   40 80 c6 ff             add    $0xff,%sil
 2f0:   48 11 c8                adc    %rcx,%rax
 2f3:   0f 92 c1                setb   %cl
 2f6:   48 89 02                mov    %rax,(%rdx)
 2f9:   88 4d e7                mov    %cl,-0x19(%rbp)
 2fc:   48 8b 45 f0             mov    -0x10(%rbp),%rax
 300:   48 8b 00                mov    (%rax),%rax
 303:   48 8b 55 f8             mov    -0x8(%rbp),%rdx
 307:   48 8b 12                mov    (%rdx),%rdx
 30a:   0f b6 4d e7             movzbl -0x19(%rbp),%ecx
 30e:   88 4d e6                mov    %cl,-0x1a(%rbp)
 311:   48 89 55 d8             mov    %rdx,-0x28(%rbp)
 315:   48 89 45 d0             mov    %rax,-0x30(%rbp)
 319:   48 8b 45 e8             mov    -0x18(%rbp),%rax
 31d:   48 89 45 c8             mov    %rax,-0x38(%rbp)
 321:   0f b6 45 e6             movzbl -0x1a(%rbp),%eax
 325:   89 c6                   mov    %eax,%esi
 327:   48 8b 45 d8             mov    -0x28(%rbp),%rax
 32b:   48 8b 4d d0             mov    -0x30(%rbp),%rcx
 32f:   48 8b 55 c8             mov    -0x38(%rbp),%rdx
 333:   40 80 c6 ff             add    $0xff,%sil
 337:   48 11 c8                adc    %rcx,%rax
 33a:   0f 92 c1                setb   %cl
 33d:   48 89 02                mov    %rax,(%rdx)
 340:   88 4d e7                mov    %cl,-0x19(%rbp)
 343:   0f b6 45 e7             movzbl -0x19(%rbp),%eax
 347:   c9                      leaveq
 348:   c3                      retq

0000000000000349 <main>:
 349:   55                      push   %rbp
 34a:   48 89 e5                mov    %rsp,%rbp
 34d:   53                      push   %rbx
 34e:   48 81 ec f8 02 00 00    sub    $0x2f8,%rsp
 355:   89 bd 0c fd ff ff       mov    %edi,-0x2f4(%rbp)
 35b:   48 89 b5 00 fd ff ff    mov    %rsi,-0x300(%rbp)
 362:   48 8d 85 10 fd ff ff    lea    -0x2f0(%rbp),%rax
 369:   48 89 c7                mov    %rax,%rdi
 36c:   e8 00 00 00 00          callq  371 <main+0x28>
 371:   48 8d 85 10 fd ff ff    lea    -0x2f0(%rbp),%rax
 378:   ba 08 00 00 00          mov    $0x8,%edx
 37d:   be 00 00 00 00          mov    $0x0,%esi
 382:   48 89 c7                mov    %rax,%rdi
 385:   e8 00 00 00 00          callq  38a <main+0x41>
 38a:   48 8d 8d 60 ff ff ff    lea    -0xa0(%rbp),%rcx
 391:   48 8d 85 10 fd ff ff    lea    -0x2f0(%rbp),%rax
 398:   ba 40 00 00 00          mov    $0x40,%edx
 39d:   48 89 ce                mov    %rcx,%rsi
 3a0:   48 89 c7                mov    %rax,%rdi
 3a3:   e8 00 00 00 00          callq  3a8 <main+0x5f>
 3a8:   48 8d 8d 20 ff ff ff    lea    -0xe0(%rbp),%rcx
 3af:   48 8d 85 10 fd ff ff    lea    -0x2f0(%rbp),%rax
 3b6:   ba 40 00 00 00          mov    $0x40,%edx
 3bb:   48 89 ce                mov    %rcx,%rsi
 3be:   48 89 c7                mov    %rax,%rdi
 3c1:   e8 00 00 00 00          callq  3c6 <main+0x7d>
 3c6:   48 8d 95 20 ff ff ff    lea    -0xe0(%rbp),%rdx
 3cd:   48 8d 8d 60 ff ff ff    lea    -0xa0(%rbp),%rcx
 3d4:   48 8d 45 a0             lea    -0x60(%rbp),%rax
 3d8:   48 89 ce                mov    %rcx,%rsi
 3db:   48 89 c7                mov    %rax,%rdi
 3de:   e8 00 00 00 00          callq  3e3 <main+0x9a>
 3e3:   88 45 ef                mov    %al,-0x11(%rbp)
 3e6:   be 00 00 00 00          mov    $0x0,%esi
 3eb:   bf 00 00 00 00          mov    $0x0,%edi
 3f0:   e8 00 00 00 00          callq  3f5 <main+0xac>
 3f5:   48 8d 85 60 ff ff ff    lea    -0xa0(%rbp),%rax
 3fc:   48 89 c7                mov    %rax,%rdi
 3ff:   e8 00 00 00 00          callq  404 <main+0xbb>
 404:   be 00 00 00 00          mov    $0x0,%esi
 409:   bf 00 00 00 00          mov    $0x0,%edi
 40e:   e8 00 00 00 00          callq  413 <main+0xca>
 413:   48 8d 85 20 ff ff ff    lea    -0xe0(%rbp),%rax
 41a:   48 89 c7                mov    %rax,%rdi
 41d:   e8 00 00 00 00          callq  422 <main+0xd9>
 422:   be 00 00 00 00          mov    $0x0,%esi
 427:   bf 00 00 00 00          mov    $0x0,%edi
 42c:   e8 00 00 00 00          callq  431 <main+0xe8>
 431:   80 7d ef 00             cmpb   $0x0,-0x11(%rbp)
 435:   74 0a                   je     441 <main+0xf8>
 437:   bf 31 00 00 00          mov    $0x31,%edi
 43c:   e8 00 00 00 00          callq  441 <main+0xf8>
 441:   48 8d 45 a0             lea    -0x60(%rbp),%rax
 445:   48 89 c7                mov    %rax,%rdi
 448:   e8 00 00 00 00          callq  44d <main+0x104>
 44d:   bb 00 00 00 00          mov    $0x0,%ebx
 452:   48 8d 85 10 fd ff ff    lea    -0x2f0(%rbp),%rax
 459:   48 89 c7                mov    %rax,%rdi
 45c:   e8 00 00 00 00          callq  461 <main+0x118>
 461:   89 d8                   mov    %ebx,%eax
 463:   eb 1d                   jmp    482 <main+0x139>
 465:   48 89 c3                mov    %rax,%rbx
 468:   48 8d 85 10 fd ff ff    lea    -0x2f0(%rbp),%rax
 46f:   48 89 c7                mov    %rax,%rdi
 472:   e8 00 00 00 00          callq  477 <main+0x12e>
 477:   48 89 d8                mov    %rbx,%rax
 47a:   48 89 c7                mov    %rax,%rdi
 47d:   e8 00 00 00 00          callq  482 <main+0x139>
 482:   48 81 c4 f8 02 00 00    add    $0x2f8,%rsp
 489:   5b                      pop    %rbx
 48a:   5d                      pop    %rbp
 48b:   c3                      retq

****************************************

$ cat -n test.cxx
     1  #include <iostream>
     2  #include <string>
     3  #include <fstream>
     4  #include <cstdio>
     5  #include <cstdint>
     6  #include <cstring>
     7
     8  #include <immintrin.h>
     9  #if defined(__GNUC__)
    10  # include <adxintrin.h>
    11  #endif
    12
    13  #if !defined(__ADX__)
    14  # error ADX is not available
    15  #endif
    16
    17  template<unsigned int N>
    18  void Print(uint64_t vals[])
    19  {
    20      for (size_t i=0; i<N; ++i)
    21      {
    22                  printf("%08X", static_cast<uint32_t>(vals[i] >> 32));
    23                  printf("%08X", static_cast<uint32_t>(vals[i]));
    24      }
    25      printf("\n");
    26  }
    27
    28  template<unsigned int N>
    29  uint8_t Add(uint64_t C[], const uint64_t A[], const uint64_t B[])
    30  {
    31      const ssize_t NN = static_cast<ssize_t>(N);
    32      const long long unsigned int* AA = reinterpret_cast<const
long long unsigned int*>(A);
    33          const long long unsigned int* BB =
reinterpret_cast<const long long unsigned int*>(B);
    34                long long unsigned int* CC =
reinterpret_cast<long long unsigned int*>(C);
    35
    36          uint8_t carry = 0;
    37          for (ssize_t i=NN-1; i>=0; --i)
    38                  carry = _addcarryx_u64(carry, AA[i], BB[i], &CC[i]);
    39
    40          return carry;
    41  }
    42
    43  template<>
    44  uint8_t Add<8>(uint64_t C[], const uint64_t A[], const uint64_t B[])
    45  {
    46      const long long unsigned int* AA = reinterpret_cast<const
long long unsigned int*>(A);
    47          const long long unsigned int* BB =
reinterpret_cast<const long long unsigned int*>(B);
    48                long long unsigned int* CC =
reinterpret_cast<long long unsigned int*>(C);
    49
    50          uint8_t carry = 0;
    51
    52          carry = _addcarryx_u64(carry, AA[7], BB[7], &CC[7]);
    53          carry = _addcarryx_u64(carry, AA[6], BB[6], &CC[6]);
    54          carry = _addcarryx_u64(carry, AA[5], BB[5], &CC[5]);
    55          carry = _addcarryx_u64(carry, AA[4], BB[4], &CC[4]);
    56          carry = _addcarryx_u64(carry, AA[3], BB[3], &CC[3]);
    57          carry = _addcarryx_u64(carry, AA[2], BB[2], &CC[2]);
    58          carry = _addcarryx_u64(carry, AA[1], BB[1], &CC[1]);
    59          carry = _addcarryx_u64(carry, AA[0], BB[0], &CC[0]);
    60
    61          return carry;
    62  }
    63
    64  int main(int argc, char* argv[])
    65  {
    66      enum {COUNT=8};
    67      uint64_t C[COUNT], A[COUNT], B[COUNT];
    68
    69          std::ifstream in;
    70          in.open("/dev/urandom");
    71          in.read(reinterpret_cast<char*>(A), sizeof(A));
    72          in.read(reinterpret_cast<char*>(B), sizeof(B));
    73
    74          uint8_t carry = Add<COUNT>(C, A, B);
    75
    76      std::cout << "A:\n ";
    77      Print<COUNT>(A);
    78
    79      std::cout << "B:\n ";
    80      Print<COUNT>(B);
    81
    82      std::cout << "C:\n";
    83      if (carry) printf("1");
    84      Print<COUNT>(C);
    85
    86      return 0;
    87  }

****************************************

$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 94
model name      : Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz
stepping        : 3
microcode       : 0xba
cpu MHz         : 799.914
cache size      : 6144 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 22
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts
rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq
pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16
xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer
aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault
intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust
bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt
xsaveopt xsavec xgetbv1 xsaves dtherm ida arat pln pts hwp hwp_notify
hwp_act_window hwp_epp
bugs            :
bogomips        : 5424.00
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual



More information about the Gcc-help mailing list