[llvm-mca][x86] Add 32-bit instruction resource tests
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 31 Jul 2018 17:33:08 +0000 (17:33 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Tue, 31 Jul 2018 17:33:08 +0000 (17:33 +0000)
These aren't exhaustive, but cover some instructions that are only available in 32-bit mode (where would we be without good BCD math performance?).

llvm-svn: 338404

llvm/test/tools/llvm-mca/X86/Atom/resources-x86_32.s [new file with mode: 0644]
llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_32.s [new file with mode: 0644]
llvm/test/tools/llvm-mca/X86/BtVer2/resources-x86_32.s [new file with mode: 0644]
llvm/test/tools/llvm-mca/X86/Generic/resources-x86_32.s [new file with mode: 0644]
llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_32.s [new file with mode: 0644]
llvm/test/tools/llvm-mca/X86/SLM/resources-x86_32.s [new file with mode: 0644]
llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x86_32.s [new file with mode: 0644]
llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_32.s [new file with mode: 0644]
llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_32.s [new file with mode: 0644]
llvm/test/tools/llvm-mca/X86/Znver1/resources-x86_32.s [new file with mode: 0644]

diff --git a/llvm/test/tools/llvm-mca/X86/Atom/resources-x86_32.s b/llvm/test/tools/llvm-mca/X86/Atom/resources-x86_32.s
new file mode 100644 (file)
index 0000000..f913a2f
--- /dev/null
@@ -0,0 +1,72 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=atom -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      13    6.50                        aaa
+# CHECK-NEXT:  1      7     3.50                        aad
+# CHECK-NEXT:  1      7     3.50                        aad    $7
+# CHECK-NEXT:  1      21    10.50                       aam
+# CHECK-NEXT:  1      21    10.50                       aam    $7
+# CHECK-NEXT:  1      13    6.50                        aas
+# CHECK-NEXT:  1      11    5.50                  U     bound  %bx, (%eax)
+# CHECK-NEXT:  1      11    5.50                  U     bound  %ebx, (%eax)
+# CHECK-NEXT:  1      18    9.00                        daa
+# CHECK-NEXT:  1      20    10.00                       das
+# CHECK-NEXT:  1      6     3.00                  U     into
+# CHECK-NEXT:  1      2     1.00    *                   leave
+# CHECK-NEXT:  1      1     0.50                  U     salc
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - AtomPort0
+# CHECK-NEXT: [1]   - AtomPort1
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]
+# CHECK-NEXT: 75.50  75.50
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    Instructions:
+# CHECK-NEXT: 6.50   6.50   aaa
+# CHECK-NEXT: 3.50   3.50   aad
+# CHECK-NEXT: 3.50   3.50   aad        $7
+# CHECK-NEXT: 10.50  10.50  aam
+# CHECK-NEXT: 10.50  10.50  aam        $7
+# CHECK-NEXT: 6.50   6.50   aas
+# CHECK-NEXT: 5.50   5.50   bound      %bx, (%eax)
+# CHECK-NEXT: 5.50   5.50   bound      %ebx, (%eax)
+# CHECK-NEXT: 9.00   9.00   daa
+# CHECK-NEXT: 10.00  10.00  das
+# CHECK-NEXT: 3.00   3.00   into
+# CHECK-NEXT: 1.00   1.00   leave
+# CHECK-NEXT: 0.50   0.50   salc
diff --git a/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_32.s b/llvm/test/tools/llvm-mca/X86/Broadwell/resources-x86_32.s
new file mode 100644 (file)
index 0000000..b880fe5
--- /dev/null
@@ -0,0 +1,80 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=broadwell -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      100   0.25                        aaa
+# CHECK-NEXT:  1      100   0.25                        aad
+# CHECK-NEXT:  1      100   0.25                        aad    $7
+# CHECK-NEXT:  1      100   0.25                        aam
+# CHECK-NEXT:  1      100   0.25                        aam    $7
+# CHECK-NEXT:  1      100   0.25                        aas
+# CHECK-NEXT:  1      100   0.25                  U     bound  %bx, (%eax)
+# CHECK-NEXT:  1      100   0.25                  U     bound  %ebx, (%eax)
+# CHECK-NEXT:  1      100   0.25                        daa
+# CHECK-NEXT:  1      100   0.25                        das
+# CHECK-NEXT:  1      100   0.25                  U     into
+# CHECK-NEXT:  3      7     0.50    *                   leave
+# CHECK-NEXT:  1      1     0.25                  U     salc
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - BWDivider
+# CHECK-NEXT: [1]   - BWFPDivider
+# CHECK-NEXT: [2]   - BWPort0
+# CHECK-NEXT: [3]   - BWPort1
+# CHECK-NEXT: [4]   - BWPort2
+# CHECK-NEXT: [5]   - BWPort3
+# CHECK-NEXT: [6]   - BWPort4
+# CHECK-NEXT: [7]   - BWPort5
+# CHECK-NEXT: [8]   - BWPort6
+# CHECK-NEXT: [9]   - BWPort7
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
+# CHECK-NEXT:  -      -     3.50   3.50   0.50   0.50    -     3.50   3.50    -
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aaa
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aad
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aad        $7
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aam
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aam        $7
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aas
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     bound      %bx, (%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     bound      %ebx, (%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     daa
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     das
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     into
+# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -     0.50   0.50    -     leave
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     salc
diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x86_32.s b/llvm/test/tools/llvm-mca/X86/BtVer2/resources-x86_32.s
new file mode 100644 (file)
index 0000000..5556e78
--- /dev/null
@@ -0,0 +1,84 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=btver2 -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      100   0.50                        aaa
+# CHECK-NEXT:  1      100   0.50                        aad
+# CHECK-NEXT:  1      100   0.50                        aad    $7
+# CHECK-NEXT:  1      100   0.50                        aam
+# CHECK-NEXT:  1      100   0.50                        aam    $7
+# CHECK-NEXT:  1      100   0.50                        aas
+# CHECK-NEXT:  1      100   0.50                  U     bound  %bx, (%eax)
+# CHECK-NEXT:  1      100   0.50                  U     bound  %ebx, (%eax)
+# CHECK-NEXT:  1      100   0.50                        daa
+# CHECK-NEXT:  1      100   0.50                        das
+# CHECK-NEXT:  1      100   0.50                  U     into
+# CHECK-NEXT:  1      1     0.50    *                   leave
+# CHECK-NEXT:  1      1     0.50                  U     salc
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - JALU0
+# CHECK-NEXT: [1]   - JALU1
+# CHECK-NEXT: [2]   - JDiv
+# CHECK-NEXT: [3]   - JFPA
+# CHECK-NEXT: [4]   - JFPM
+# CHECK-NEXT: [5]   - JFPU0
+# CHECK-NEXT: [6]   - JFPU1
+# CHECK-NEXT: [7]   - JLAGU
+# CHECK-NEXT: [8]   - JMul
+# CHECK-NEXT: [9]   - JSAGU
+# CHECK-NEXT: [10]  - JSTC
+# CHECK-NEXT: [11]  - JVALU0
+# CHECK-NEXT: [12]  - JVALU1
+# CHECK-NEXT: [13]  - JVIMUL
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]
+# CHECK-NEXT: 6.50   6.50    -      -      -      -      -      -      -      -      -      -      -      -
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   [13]   Instructions:
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     aaa
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     aad
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     aad    $7
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     aam
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     aam    $7
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     aas
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     bound  %bx, (%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     bound  %ebx, (%eax)
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     daa
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     das
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     into
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     leave
+# CHECK-NEXT: 0.50   0.50    -      -      -      -      -      -      -      -      -      -      -      -     salc
diff --git a/llvm/test/tools/llvm-mca/X86/Generic/resources-x86_32.s b/llvm/test/tools/llvm-mca/X86/Generic/resources-x86_32.s
new file mode 100644 (file)
index 0000000..b467262
--- /dev/null
@@ -0,0 +1,78 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=x86-64 -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      100   0.33                        aaa
+# CHECK-NEXT:  1      100   0.33                        aad
+# CHECK-NEXT:  1      100   0.33                        aad    $7
+# CHECK-NEXT:  1      100   0.33                        aam
+# CHECK-NEXT:  1      100   0.33                        aam    $7
+# CHECK-NEXT:  1      100   0.33                        aas
+# CHECK-NEXT:  1      100   0.33                  U     bound  %bx, (%eax)
+# CHECK-NEXT:  1      100   0.33                  U     bound  %ebx, (%eax)
+# CHECK-NEXT:  1      100   0.33                        daa
+# CHECK-NEXT:  1      100   0.33                        das
+# CHECK-NEXT:  1      100   0.33                  U     into
+# CHECK-NEXT:  3      7     0.67    *                   leave
+# CHECK-NEXT:  1      1     0.33                  U     salc
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - SBDivider
+# CHECK-NEXT: [1]   - SBFPDivider
+# CHECK-NEXT: [2]   - SBPort0
+# CHECK-NEXT: [3]   - SBPort1
+# CHECK-NEXT: [4]   - SBPort4
+# CHECK-NEXT: [5]   - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
+# CHECK-NEXT:  -      -     4.67   4.67    -     4.67   0.50   0.50
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     aaa
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     aad
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     aad      $7
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     aam
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     aam      $7
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     aas
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     bound    %bx, (%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     bound    %ebx, (%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     daa
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     das
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     into
+# CHECK-NEXT:  -      -     0.67   0.67    -     0.67   0.50   0.50   leave
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     salc
diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_32.s b/llvm/test/tools/llvm-mca/X86/Haswell/resources-x86_32.s
new file mode 100644 (file)
index 0000000..2a2db69
--- /dev/null
@@ -0,0 +1,80 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=haswell -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      100   0.25                        aaa
+# CHECK-NEXT:  1      100   0.25                        aad
+# CHECK-NEXT:  1      100   0.25                        aad    $7
+# CHECK-NEXT:  1      100   0.25                        aam
+# CHECK-NEXT:  1      100   0.25                        aam    $7
+# CHECK-NEXT:  1      100   0.25                        aas
+# CHECK-NEXT:  15     1     3.75                  U     bound  %bx, (%eax)
+# CHECK-NEXT:  15     1     3.75                  U     bound  %ebx, (%eax)
+# CHECK-NEXT:  1      100   0.25                        daa
+# CHECK-NEXT:  1      100   0.25                        das
+# CHECK-NEXT:  4      1     1.00                  U     into
+# CHECK-NEXT:  3      7     0.50    *                   leave
+# CHECK-NEXT:  1      1     0.25                  U     salc
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - HWDivider
+# CHECK-NEXT: [1]   - HWFPDivider
+# CHECK-NEXT: [2]   - HWPort0
+# CHECK-NEXT: [3]   - HWPort1
+# CHECK-NEXT: [4]   - HWPort2
+# CHECK-NEXT: [5]   - HWPort3
+# CHECK-NEXT: [6]   - HWPort4
+# CHECK-NEXT: [7]   - HWPort5
+# CHECK-NEXT: [8]   - HWPort6
+# CHECK-NEXT: [9]   - HWPort7
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
+# CHECK-NEXT:  -      -     2.75   2.75   0.50   0.50    -     2.75   2.75    -
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aaa
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aad
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aad        $7
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aam
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aam        $7
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aas
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     bound      %bx, (%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     bound      %ebx, (%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     daa
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     das
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -     into
+# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -     0.50   0.50    -     leave
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     salc
diff --git a/llvm/test/tools/llvm-mca/X86/SLM/resources-x86_32.s b/llvm/test/tools/llvm-mca/X86/SLM/resources-x86_32.s
new file mode 100644 (file)
index 0000000..bc194ed
--- /dev/null
@@ -0,0 +1,78 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=slm -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      100   1.00                        aaa
+# CHECK-NEXT:  1      100   1.00                        aad
+# CHECK-NEXT:  1      100   1.00                        aad    $7
+# CHECK-NEXT:  1      100   1.00                        aam
+# CHECK-NEXT:  1      100   1.00                        aam    $7
+# CHECK-NEXT:  1      100   1.00                        aas
+# CHECK-NEXT:  1      100   1.00                  U     bound  %bx, (%eax)
+# CHECK-NEXT:  1      100   1.00                  U     bound  %ebx, (%eax)
+# CHECK-NEXT:  1      100   1.00                        daa
+# CHECK-NEXT:  1      100   1.00                        das
+# CHECK-NEXT:  1      100   1.00                  U     into
+# CHECK-NEXT:  1      1     0.50    *                   leave
+# CHECK-NEXT:  1      1     0.50                  U     salc
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - SLMDivider
+# CHECK-NEXT: [1]   - SLMFPDivider
+# CHECK-NEXT: [2]   - SLMFPMultiplier
+# CHECK-NEXT: [3]   - SLM_FPC_RSV0
+# CHECK-NEXT: [4]   - SLM_FPC_RSV1
+# CHECK-NEXT: [5]   - SLM_IEC_RSV0
+# CHECK-NEXT: [6]   - SLM_IEC_RSV1
+# CHECK-NEXT: [7]   - SLM_MEC_RSV
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]
+# CHECK-NEXT:  -      -      -     11.00   -     1.00   1.00    -
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    Instructions:
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     aaa
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     aad
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     aad      $7
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     aam
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     aam      $7
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     aas
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     bound    %bx, (%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     bound    %ebx, (%eax)
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     daa
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     das
+# CHECK-NEXT:  -      -      -     1.00    -      -      -      -     into
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     leave
+# CHECK-NEXT:  -      -      -      -      -     0.50   0.50    -     salc
diff --git a/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x86_32.s b/llvm/test/tools/llvm-mca/X86/SandyBridge/resources-x86_32.s
new file mode 100644 (file)
index 0000000..4441391
--- /dev/null
@@ -0,0 +1,78 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=sandybridge -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      100   0.33                        aaa
+# CHECK-NEXT:  1      100   0.33                        aad
+# CHECK-NEXT:  1      100   0.33                        aad    $7
+# CHECK-NEXT:  1      100   0.33                        aam
+# CHECK-NEXT:  1      100   0.33                        aam    $7
+# CHECK-NEXT:  1      100   0.33                        aas
+# CHECK-NEXT:  1      100   0.33                  U     bound  %bx, (%eax)
+# CHECK-NEXT:  1      100   0.33                  U     bound  %ebx, (%eax)
+# CHECK-NEXT:  1      100   0.33                        daa
+# CHECK-NEXT:  1      100   0.33                        das
+# CHECK-NEXT:  1      100   0.33                  U     into
+# CHECK-NEXT:  3      7     0.67    *                   leave
+# CHECK-NEXT:  1      1     0.33                  U     salc
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - SBDivider
+# CHECK-NEXT: [1]   - SBFPDivider
+# CHECK-NEXT: [2]   - SBPort0
+# CHECK-NEXT: [3]   - SBPort1
+# CHECK-NEXT: [4]   - SBPort4
+# CHECK-NEXT: [5]   - SBPort5
+# CHECK-NEXT: [6.0] - SBPort23
+# CHECK-NEXT: [6.1] - SBPort23
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]
+# CHECK-NEXT:  -      -     4.67   4.67    -     4.67   0.50   0.50
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6.0]  [6.1]  Instructions:
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     aaa
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     aad
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     aad      $7
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     aam
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     aam      $7
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     aas
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     bound    %bx, (%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     bound    %ebx, (%eax)
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     daa
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     das
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     into
+# CHECK-NEXT:  -      -     0.67   0.67    -     0.67   0.50   0.50   leave
+# CHECK-NEXT:  -      -     0.33   0.33    -     0.33    -      -     salc
diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_32.s b/llvm/test/tools/llvm-mca/X86/SkylakeClient/resources-x86_32.s
new file mode 100644 (file)
index 0000000..103cc3c
--- /dev/null
@@ -0,0 +1,80 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=skylake -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      100   0.25                        aaa
+# CHECK-NEXT:  1      100   0.25                        aad
+# CHECK-NEXT:  1      100   0.25                        aad    $7
+# CHECK-NEXT:  1      100   0.25                        aam
+# CHECK-NEXT:  1      100   0.25                        aam    $7
+# CHECK-NEXT:  1      100   0.25                        aas
+# CHECK-NEXT:  1      100   0.25                  U     bound  %bx, (%eax)
+# CHECK-NEXT:  1      100   0.25                  U     bound  %ebx, (%eax)
+# CHECK-NEXT:  1      100   0.25                        daa
+# CHECK-NEXT:  1      100   0.25                        das
+# CHECK-NEXT:  1      100   0.25                  U     into
+# CHECK-NEXT:  3      7     0.50    *                   leave
+# CHECK-NEXT:  1      1     0.25                  U     salc
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - SKLDivider
+# CHECK-NEXT: [1]   - SKLFPDivider
+# CHECK-NEXT: [2]   - SKLPort0
+# CHECK-NEXT: [3]   - SKLPort1
+# CHECK-NEXT: [4]   - SKLPort2
+# CHECK-NEXT: [5]   - SKLPort3
+# CHECK-NEXT: [6]   - SKLPort4
+# CHECK-NEXT: [7]   - SKLPort5
+# CHECK-NEXT: [8]   - SKLPort6
+# CHECK-NEXT: [9]   - SKLPort7
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
+# CHECK-NEXT:  -      -     3.50   3.50   0.50   0.50    -     3.50   3.50    -
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aaa
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aad
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aad        $7
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aam
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aam        $7
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aas
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     bound      %bx, (%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     bound      %ebx, (%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     daa
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     das
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     into
+# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -     0.50   0.50    -     leave
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     salc
diff --git a/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_32.s b/llvm/test/tools/llvm-mca/X86/SkylakeServer/resources-x86_32.s
new file mode 100644 (file)
index 0000000..ebb503c
--- /dev/null
@@ -0,0 +1,80 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=skylake-avx512 -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      100   0.25                        aaa
+# CHECK-NEXT:  1      100   0.25                        aad
+# CHECK-NEXT:  1      100   0.25                        aad    $7
+# CHECK-NEXT:  1      100   0.25                        aam
+# CHECK-NEXT:  1      100   0.25                        aam    $7
+# CHECK-NEXT:  1      100   0.25                        aas
+# CHECK-NEXT:  1      100   0.25                  U     bound  %bx, (%eax)
+# CHECK-NEXT:  1      100   0.25                  U     bound  %ebx, (%eax)
+# CHECK-NEXT:  1      100   0.25                        daa
+# CHECK-NEXT:  1      100   0.25                        das
+# CHECK-NEXT:  1      100   0.25                  U     into
+# CHECK-NEXT:  3      7     0.50    *                   leave
+# CHECK-NEXT:  1      1     0.25                  U     salc
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - SKXDivider
+# CHECK-NEXT: [1]   - SKXFPDivider
+# CHECK-NEXT: [2]   - SKXPort0
+# CHECK-NEXT: [3]   - SKXPort1
+# CHECK-NEXT: [4]   - SKXPort2
+# CHECK-NEXT: [5]   - SKXPort3
+# CHECK-NEXT: [6]   - SKXPort4
+# CHECK-NEXT: [7]   - SKXPort5
+# CHECK-NEXT: [8]   - SKXPort6
+# CHECK-NEXT: [9]   - SKXPort7
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]
+# CHECK-NEXT:  -      -     3.50   3.50   0.50   0.50    -     3.50   3.50    -
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    Instructions:
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aaa
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aad
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aad        $7
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aam
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aam        $7
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     aas
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     bound      %bx, (%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     bound      %ebx, (%eax)
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     daa
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     das
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     into
+# CHECK-NEXT:  -      -     0.50   0.50   0.50   0.50    -     0.50   0.50    -     leave
+# CHECK-NEXT:  -      -     0.25   0.25    -      -      -     0.25   0.25    -     salc
diff --git a/llvm/test/tools/llvm-mca/X86/Znver1/resources-x86_32.s b/llvm/test/tools/llvm-mca/X86/Znver1/resources-x86_32.s
new file mode 100644 (file)
index 0000000..85bd0dc
--- /dev/null
@@ -0,0 +1,82 @@
+# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py
+# RUN: llvm-mca -mtriple=i686-unknown-unknown -mcpu=znver1 -instruction-tables < %s | FileCheck %s
+
+aaa
+
+aad
+aad $7
+
+aam
+aam $7
+
+aas
+
+bound %bx, (%eax)
+bound %ebx, (%eax)
+
+daa
+
+das
+
+into
+
+leave
+
+salc
+
+# CHECK:      Instruction Info:
+# CHECK-NEXT: [1]: #uOps
+# CHECK-NEXT: [2]: Latency
+# CHECK-NEXT: [3]: RThroughput
+# CHECK-NEXT: [4]: MayLoad
+# CHECK-NEXT: [5]: MayStore
+# CHECK-NEXT: [6]: HasSideEffects (U)
+
+# CHECK:      [1]    [2]    [3]    [4]    [5]    [6]    Instructions:
+# CHECK-NEXT:  1      100   0.25                        aaa
+# CHECK-NEXT:  1      100   0.25                        aad
+# CHECK-NEXT:  1      100   0.25                        aad    $7
+# CHECK-NEXT:  1      100   0.25                        aam
+# CHECK-NEXT:  1      100   0.25                        aam    $7
+# CHECK-NEXT:  1      100   0.25                        aas
+# CHECK-NEXT:  1      100   0.25                  U     bound  %bx, (%eax)
+# CHECK-NEXT:  1      100   0.25                  U     bound  %ebx, (%eax)
+# CHECK-NEXT:  1      100   0.25                        daa
+# CHECK-NEXT:  1      100   0.25                        das
+# CHECK-NEXT:  1      100   0.25                  U     into
+# CHECK-NEXT:  2      8     0.50    *                   leave
+# CHECK-NEXT:  1      1     0.25                  U     salc
+
+# CHECK:      Resources:
+# CHECK-NEXT: [0]   - ZnAGU0
+# CHECK-NEXT: [1]   - ZnAGU1
+# CHECK-NEXT: [2]   - ZnALU0
+# CHECK-NEXT: [3]   - ZnALU1
+# CHECK-NEXT: [4]   - ZnALU2
+# CHECK-NEXT: [5]   - ZnALU3
+# CHECK-NEXT: [6]   - ZnDivider
+# CHECK-NEXT: [7]   - ZnFPU0
+# CHECK-NEXT: [8]   - ZnFPU1
+# CHECK-NEXT: [9]   - ZnFPU2
+# CHECK-NEXT: [10]  - ZnFPU3
+# CHECK-NEXT: [11]  - ZnMultiplier
+
+# CHECK:      Resource pressure per iteration:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]
+# CHECK-NEXT: 0.50   0.50   0.50   0.50   0.50   0.50    -      -      -      -      -      -
+
+# CHECK:      Resource pressure by instruction:
+# CHECK-NEXT: [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   Instructions:
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     aaa
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     aad
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     aad  $7
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     aam
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     aam  $7
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     aas
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     bound        %bx, (%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     bound        %ebx, (%eax)
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     daa
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     das
+# CHECK-NEXT:  -      -      -      -      -      -      -      -      -      -      -      -     into
+# CHECK-NEXT: 0.50   0.50   0.25   0.25   0.25   0.25    -      -      -      -      -      -     leave
+# CHECK-NEXT:  -      -     0.25   0.25   0.25   0.25    -      -      -      -      -      -     salc