diff options
Diffstat (limited to 'llvm/test/tools')
75 files changed, 1915 insertions, 360 deletions
diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll index 5ad61e3a007a..24f89b684156 100644 --- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll +++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll @@ -1,5 +1,6 @@ ; Just run it through opt, no passes needed. -; RUN: opt < %s -S | FileCheck %s +; This tests debug intrinsics, so we must explicitly disable records. +; RUN: opt < %s -S --write-experimental-debuginfo=false | FileCheck %s ; ModuleID = 'various_ir_values.c' source_filename = "various_ir_values.c" diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.expected index da58d0bf712e..936377e1ceee 100644 --- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.expected +++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.expected @@ -1,6 +1,7 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; Just run it through opt, no passes needed. -; RUN: opt < %s -S | FileCheck %s +; This tests debug intrinsics, so we must explicitly disable records. +; RUN: opt < %s -S --write-experimental-debuginfo=false | FileCheck %s ; ModuleID = 'various_ir_values.c' source_filename = "various_ir_values.c" diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.expected index 66f8ce7602f4..880442b7b06f 100644 --- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.expected +++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.expected @@ -1,6 +1,7 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature ; Just run it through opt, no passes needed. -; RUN: opt < %s -S | FileCheck %s +; This tests debug intrinsics, so we must explicitly disable records. +; RUN: opt < %s -S --write-experimental-debuginfo=false | FileCheck %s ; ModuleID = 'various_ir_values.c' source_filename = "various_ir_values.c" diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.globals.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.globals.expected index e52b93989c51..84f31cf76495 100644 --- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.globals.expected +++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.globals.expected @@ -1,6 +1,7 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --check-globals ; Just run it through opt, no passes needed. -; RUN: opt < %s -S | FileCheck %s +; This tests debug intrinsics, so we must explicitly disable records. +; RUN: opt < %s -S --write-experimental-debuginfo=false | FileCheck %s ; ModuleID = 'various_ir_values.c' source_filename = "various_ir_values.c" diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.noglobals.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.noglobals.expected index da58d0bf712e..936377e1ceee 100644 --- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.noglobals.expected +++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.noglobals.expected @@ -1,6 +1,7 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; Just run it through opt, no passes needed. -; RUN: opt < %s -S | FileCheck %s +; This tests debug intrinsics, so we must explicitly disable records. +; RUN: opt < %s -S --write-experimental-debuginfo=false | FileCheck %s ; ModuleID = 'various_ir_values.c' source_filename = "various_ir_values.c" diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.transitiveglobals.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.transitiveglobals.expected index f7508bd1bbf6..9464377d4016 100644 --- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.transitiveglobals.expected +++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values.ll.funcsig.transitiveglobals.expected @@ -1,6 +1,7 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals smart ; Just run it through opt, no passes needed. -; RUN: opt < %s -S | FileCheck %s +; This tests debug intrinsics, so we must explicitly disable records. +; RUN: opt < %s -S --write-experimental-debuginfo=false | FileCheck %s ; ModuleID = 'various_ir_values.c' source_filename = "various_ir_values.c" diff --git a/llvm/test/tools/dsymutil/ARM/discriminator.test b/llvm/test/tools/dsymutil/ARM/discriminator.test new file mode 100644 index 000000000000..d89d9af95d28 --- /dev/null +++ b/llvm/test/tools/dsymutil/ARM/discriminator.test @@ -0,0 +1,23 @@ +; The input at Inputs/discriminator.arm64.dylib[.o] produced by compiling +; +; int foo(int i, int a, int b) { +; return i ? a : a * b; +; } +; +; with -g -fdebug-info-for-profiling -O2. + +RUN: dsymutil --flat --linker=classic -oso-prepend-path %p -o - \ +RUN: --oso-prepend-path %p/../Inputs --verify-dwarf=none \ +RUN: %p/../Inputs/discriminator.arm64.dylib | llvm-dwarfdump -debug-line - \ +RUN: | FileCheck %s + +RUN: dsymutil --flat --linker=parallel -oso-prepend-path %p -o - \ +RUN: --oso-prepend-path %p/../Inputs --verify-dwarf=none \ +RUN: %p/../Inputs/discriminator.arm64.dylib | llvm-dwarfdump -debug-line - \ +RUN: | FileCheck %s + +CHECK: Address Line Column File ISA Discriminator OpIndex Flags +CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------- ------------- +CHECK-NEXT: 0x0000000000003f98 2 10 0 0 0 0 is_stmt prologue_end +CHECK-NEXT: 0x0000000000003fa4 2 3 0 0 6 0 +CHECK-NEXT: 0x0000000000003fa8 2 3 0 0 0 0 end_sequence
\ No newline at end of file diff --git a/llvm/test/tools/dsymutil/Inputs/discriminator.arm64.dylib b/llvm/test/tools/dsymutil/Inputs/discriminator.arm64.dylib Binary files differnew file mode 100755 index 000000000000..94890e532f82 --- /dev/null +++ b/llvm/test/tools/dsymutil/Inputs/discriminator.arm64.dylib diff --git a/llvm/test/tools/dsymutil/Inputs/discriminator.arm64.o b/llvm/test/tools/dsymutil/Inputs/discriminator.arm64.o Binary files differnew file mode 100644 index 000000000000..f50971ae58ff --- /dev/null +++ b/llvm/test/tools/dsymutil/Inputs/discriminator.arm64.o diff --git a/llvm/test/tools/llc/new-pm/pipeline.mir b/llvm/test/tools/llc/new-pm/pipeline.mir index 6baa710060f0..ee058f763b77 100644 --- a/llvm/test/tools/llc/new-pm/pipeline.mir +++ b/llvm/test/tools/llc/new-pm/pipeline.mir @@ -1,7 +1,10 @@ # RUN: llc -mtriple=x86_64-pc-linux-gnu -x mir -passes=no-op-machine-function --print-pipeline-passes -filetype=null < %s | FileCheck %s --match-full-lines +# RUN: llc -mtriple=x86_64-pc-linux-gnu -x mir -passes='require<machine-dom-tree>,print<machine-dom-tree>' -print-pipeline-passes < %s | FileCheck --check-prefix=ANALYSIS %s # CHECK: function(machine-function(no-op-machine-function)),PrintMIRPreparePass,function(machine-function(print)) +# ANALYSIS: require<machine-dom-tree>,print<machine-dom-tree> + --- name: f body: | diff --git a/llvm/test/tools/llvm-ar/windows-path.test b/llvm/test/tools/llvm-ar/windows-path.test index e33fbf532c33..9c5cf1319553 100644 --- a/llvm/test/tools/llvm-ar/windows-path.test +++ b/llvm/test/tools/llvm-ar/windows-path.test @@ -1,4 +1,4 @@ -# Test that windows path seperators are handled correctly. +# Test that windows path separators are handled correctly. REQUIRES: system-windows # Note: many of these tests depend on relative paths, so we have to cd to a diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.o b/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.o Binary files differindex 4f54fa7b8a1a..7a16162f29c0 100644 --- a/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.o +++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.o diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.proftext b/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.proftext index 82335a8195fa..97d78a39f435 100644 --- a/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.proftext +++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.proftext @@ -40,7 +40,7 @@ _Z5case2b # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0xa +0x6 _Z5case3b @@ -55,7 +55,7 @@ _Z5case3b # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x9 +0x5 _Z5case4b @@ -70,7 +70,7 @@ _Z5case4b # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x2 +0x1 _Z5case5b @@ -85,7 +85,7 @@ _Z5case5b # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x6 +0x5 _Z5case6b @@ -100,7 +100,7 @@ _Z5case6b # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x5 +0x6 _Z5case7b @@ -166,7 +166,7 @@ _Z5caseabb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0xa2 +0xe _Z5casebbb @@ -183,7 +183,7 @@ _Z5casebbb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0xa1 +0xd _Z5casecbb @@ -200,7 +200,7 @@ _Z5casecbb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x2 +0x1 _Z5casedbb @@ -217,7 +217,7 @@ _Z5casedbb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x12 +0x3 _Z5caseebb @@ -234,7 +234,7 @@ _Z5caseebb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x14 +0xa _Z5casefbb @@ -251,7 +251,7 @@ _Z5casefbb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x6 +0x9 _Z5casegbb @@ -268,7 +268,7 @@ _Z5casegbb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x23 +0x7 _Z5casehbb @@ -302,7 +302,7 @@ _Z5caseibb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x83 +0xb _Z5casejbb @@ -319,7 +319,7 @@ _Z5casejbb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0xa1 +0xd _Z5casekbb @@ -336,7 +336,7 @@ _Z5casekbb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x12 +0x3 _Z5caselbb @@ -353,7 +353,7 @@ _Z5caselbb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x12 +0x3 _Z5casembb @@ -370,7 +370,7 @@ _Z5casembb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x12 +0x3 _Z5casenbb @@ -387,7 +387,7 @@ _Z5casenbb # Num Bitmap Bytes: $1 # Bitmap Byte Values: -0x6 +0x9 main diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-const.o b/llvm/test/tools/llvm-cov/Inputs/mcdc-const.o Binary files differindex 1145fcc6f712..bc38b71b5de0 100644 --- a/llvm/test/tools/llvm-cov/Inputs/mcdc-const.o +++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-const.o diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-const.proftext b/llvm/test/tools/llvm-cov/Inputs/mcdc-const.proftext index 10253f26e0a6..16eba3a01808 100644 --- a/llvm/test/tools/llvm-cov/Inputs/mcdc-const.proftext +++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-const.proftext @@ -14,12 +14,10 @@ _Z4testbbbb 0 0 # Num Bitmap Bytes: -$4 +$2 # Bitmap Byte Values: 0x1 -0x2 -0x0 -0x0 +0x4 main diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-general-18.o b/llvm/test/tools/llvm-cov/Inputs/mcdc-general-18.o Binary files differnew file mode 100644 index 000000000000..e802f51132c0 --- /dev/null +++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-general-18.o diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-general-18.profdata b/llvm/test/tools/llvm-cov/Inputs/mcdc-general-18.profdata Binary files differnew file mode 100644 index 000000000000..d351096967db --- /dev/null +++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-general-18.profdata diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-general.o b/llvm/test/tools/llvm-cov/Inputs/mcdc-general.o Binary files differindex e802f51132c0..8bed601221a1 100644 --- a/llvm/test/tools/llvm-cov/Inputs/mcdc-general.o +++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-general.o diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-general.proftext b/llvm/test/tools/llvm-cov/Inputs/mcdc-general.proftext index a83f036ddf2c..2faca9da1b1e 100644 --- a/llvm/test/tools/llvm-cov/Inputs/mcdc-general.proftext +++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-general.proftext @@ -24,14 +24,11 @@ _Z4testbbbb 2 1 # Num Bitmap Bytes: -$6 +$3 # Bitmap Byte Values: -0x2f -0x8 -0xb -0x9 -0x83 -0x80 +0xef +0x77 +0x3 main diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-macro.o b/llvm/test/tools/llvm-cov/Inputs/mcdc-macro.o Binary files differindex c0a9d6044553..5b3934816bd2 100644 --- a/llvm/test/tools/llvm-cov/Inputs/mcdc-macro.o +++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-macro.o diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-macro.proftext b/llvm/test/tools/llvm-cov/Inputs/mcdc-macro.proftext index 35ecc42b5802..44057ffd7d88 100644 --- a/llvm/test/tools/llvm-cov/Inputs/mcdc-macro.proftext +++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-macro.proftext @@ -27,21 +27,12 @@ func 0 0 # Num Bitmap Bytes: -$13 +$4 # Bitmap Byte Values: 0x0 +0x9 0x0 -0x0 -0x20 -0x8 -0x0 -0x20 -0x0 -0x0 -0x0 -0x0 -0x0 -0x0 +0x1 func1 diff --git a/llvm/test/tools/llvm-cov/Inputs/mcdc-maxbs.o b/llvm/test/tools/llvm-cov/Inputs/mcdc-maxbs.o Binary files differindex bc993b19e847..21f9d3a17dad 100644 --- a/llvm/test/tools/llvm-cov/Inputs/mcdc-maxbs.o +++ b/llvm/test/tools/llvm-cov/Inputs/mcdc-maxbs.o diff --git a/llvm/test/tools/llvm-cov/Inputs/showProjectSummary.test b/llvm/test/tools/llvm-cov/Inputs/showProjectSummary.test index eb0222677eaa..5eb6b4e24d53 100644 --- a/llvm/test/tools/llvm-cov/Inputs/showProjectSummary.test +++ b/llvm/test/tools/llvm-cov/Inputs/showProjectSummary.test @@ -11,5 +11,5 @@ HTML-FILE: <pre>{{.*}}showProjectSummary.cpp</pre> HTML-FUNCTION: <pre>main</pre> HTML-HEADER: <td><pre>Line</pre></td> HTML-HEADER: <td><pre>Count</pre></td> -HTML-HEADER: <td><pre>Source (<a href='#L8'>jump to first uncovered line</a>)</pre></td> +HTML-HEADER: <td><pre>Source</pre></td> HTML-FOOTER: <h5>Generated by llvm-cov{{.*}}</h5> diff --git a/llvm/test/tools/llvm-cov/gcov/basic.test b/llvm/test/tools/llvm-cov/gcov/basic.test index 5313fe2d7a69..7557739add8b 100644 --- a/llvm/test/tools/llvm-cov/gcov/basic.test +++ b/llvm/test/tools/llvm-cov/gcov/basic.test @@ -3,7 +3,7 @@ # Test fails on Windows where internal shell is used due to path separator # mismatches. -REQUIRES: shell +UNSUPPORTED: system-windows RUN: rm -rf %t RUN: mkdir %t diff --git a/llvm/test/tools/llvm-cov/mcdc-general-18.test b/llvm/test/tools/llvm-cov/mcdc-general-18.test new file mode 100644 index 000000000000..8707238c4cdc --- /dev/null +++ b/llvm/test/tools/llvm-cov/mcdc-general-18.test @@ -0,0 +1,20 @@ +// Test Version11 (clang-18) files. +// mcdc-general.test is used as test patterns. + +// RUN: llvm-cov show --show-mcdc %S/Inputs/mcdc-general-18.o -instr-profile %S/Inputs/mcdc-general-18.profdata -path-equivalence=.,%S/Inputs | FileCheck %S/mcdc-general.test +// RUN: llvm-cov report --show-mcdc-summary %S/Inputs/mcdc-general-18.o -instr-profile %S/Inputs/mcdc-general-18.profdata -show-functions -path-equivalence=.,%S/Inputs %S/Inputs/mcdc-general.cpp | FileCheck %S/mcdc-general.test -check-prefix=REPORT + +// Turn off MC/DC visualization. +// RUN: llvm-cov show %S/Inputs/mcdc-general-18.o -instr-profile %S/Inputs/mcdc-general-18.profdata -path-equivalence=.,%S/Inputs | FileCheck %S/mcdc-general.test -check-prefix=NOMCDC + +// Turn off MC/DC summary. +// RUN: llvm-cov report %S/Inputs/mcdc-general-18.o -instr-profile %S/Inputs/mcdc-general-18.profdata -show-functions -path-equivalence=.,%S/Inputs %S/Inputs/mcdc-general.cpp | FileCheck %S/mcdc-general.test -check-prefix=REPORT_NOMCDC + +// Test file-level report. +// RUN: llvm-cov report --show-mcdc-summary %S/Inputs/mcdc-general-18.o -instr-profile %S/Inputs/mcdc-general-18.profdata -path-equivalence=.,%S/Inputs %S/Inputs/mcdc-general.cpp | FileCheck %S/mcdc-general.test -check-prefix=FILEREPORT + +// Test html output. +// RUN: rm -rf %t.html.dir +// RUN: llvm-cov show --show-mcdc-summary --show-mcdc %S/Inputs/mcdc-general-18.o -instr-profile %S/Inputs/mcdc-general-18.profdata -path-equivalence=.,%S/Inputs -format html -o %t.html.dir +// RUN: FileCheck -check-prefix=HTML -input-file=%t.html.dir/coverage/mcdc-general.cpp.html %S/mcdc-general.test +// RUN: FileCheck -check-prefix HTML-INDEX -input-file %t.html.dir/index.html %S/mcdc-general.test diff --git a/llvm/test/tools/llvm-cov/showLineExecutionCounts.cpp b/llvm/test/tools/llvm-cov/showLineExecutionCounts.cpp index 51ac3ae1deee..f72a9978b8a7 100644 --- a/llvm/test/tools/llvm-cov/showLineExecutionCounts.cpp +++ b/llvm/test/tools/llvm-cov/showLineExecutionCounts.cpp @@ -44,11 +44,11 @@ int main() { // TEXT: [[@LINE]]| 161|int main( // RUN: FileCheck -check-prefixes=HTML,HTML-WHOLE-FILE -input-file %t.html.dir/coverage/tmp/showLineExecutionCounts.cpp.html %s // RUN: FileCheck -check-prefixes=HTML,HTML-FILTER -input-file %t.html.filtered.dir/coverage/tmp/showLineExecutionCounts.cpp.html %s // -// HTML-WHOLE-FILE: <td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>// before -// HTML-FILTER-NOT: <td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>// before +// HTML-WHOLE-FILE: <td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='skipped-line'></td><td class='code'><pre>// before +// HTML-FILTER-NOT: <td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='skipped-line'></td><td class='code'><pre>// before // HTML: <td class='line-number'><a name='L6' href='#L6'><pre>6</pre></a></td><td class='covered-line'><pre>161</pre></td><td class='code'><pre>int main() { -// HTML-WHOLE-FILE: <td class='line-number'><a name='L26' href='#L26'><pre>26</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>// after -// HTML-FILTER-NOT: <td class='line-number'><a name='L26' href='#L26'><pre>26</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>// after +// HTML-WHOLE-FILE: <td class='line-number'><a name='L26' href='#L26'><pre>26</pre></a></td><td class='skipped-line'></td><td class='code'><pre>// after +// HTML-FILTER-NOT: <td class='line-number'><a name='L26' href='#L26'><pre>26</pre></a></td><td class='skipped-line'></td><td class='code'><pre>// after // // Test index creation. // RUN: FileCheck -check-prefix=TEXT-INDEX -input-file %t.dir/index.txt %s diff --git a/llvm/test/tools/llvm-cov/showTemplateInstantiations.cpp b/llvm/test/tools/llvm-cov/showTemplateInstantiations.cpp index 380e98b42bb8..5d6318e3d1f3 100644 --- a/llvm/test/tools/llvm-cov/showTemplateInstantiations.cpp +++ b/llvm/test/tools/llvm-cov/showTemplateInstantiations.cpp @@ -45,9 +45,9 @@ int main() { // ALL: [[@LINE]]| 1|int main() { // RUN: FileCheck -check-prefixes=HTML-SHARED,HTML-ALL -input-file=%t.html.dir/coverage/tmp/showTemplateInstantiations.cpp.html %s // RUN: FileCheck -check-prefixes=HTML-SHARED,HTML-FILTER -input-file=%t.html.filtered.dir/coverage/tmp/showTemplateInstantiations.cpp.html %s -// HTML-ALL: <td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>// before -// HTML-FILTER-NOT: <td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>// before -// HTML-ALL: <td class='line-number'><a name='L6' href='#L6'><pre>6</pre></a></td><td class='uncovered-line'></td><td class='code'><pre>template<typename T> +// HTML-ALL: <td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='skipped-line'></td><td class='code'><pre>// before +// HTML-FILTER-NOT: <td class='line-number'><a name='L4' href='#L4'><pre>4</pre></a></td><td class='skipped-line'></td><td class='code'><pre>// before +// HTML-ALL: <td class='line-number'><a name='L6' href='#L6'><pre>6</pre></a></td><td class='skipped-line'></td><td class='code'><pre>template<typename T> // HTML-ALL: <div class='source-name-title'><pre>_Z4funcIiEiT_</pre></div> // HTML-FILTER-NOT: <div class='source-name-title'><pre>_Z4funcIiEiT_</pre></div><table> @@ -57,8 +57,12 @@ int main() { // ALL: [[@LINE]]| 1|int main() { // HTML-SHARED: <td class='line-number'><a name='L7' href='#L7'><pre>7</pre></a></td><td class='covered-line'><pre>1</pre></td><td class='code'><pre>int func(T x) { // RUN: FileCheck -check-prefix=HTML-JUMP -input-file=%t.html.dir/coverage/tmp/showTemplateInstantiations.cpp.html %s -// HTML-JUMP: <pre>Source (<a href='#L{{[0-9]+}}'>jump to first uncovered line</a>)</pre> -// HTML-JUMP-NOT: <pre>Source (<a href='#L{{[0-9]+}}'>jump to first uncovered line</a>)</pre> +// HTML-JUMP: <a href='javascript:next_line()'>next uncovered line (L)</a> +// HTML-JUMP-NOT: <a href='javascript:next_line()'>next uncovered line (L)</a> +// HTML-JUMP: <a href='javascript:next_region()'>next uncovered region (R)</a> +// HTML-JUMP-NOT: <a href='javascript:next_region()'>next uncovered region (R)</a> +// HTML-JUMP: <a href='javascript:next_branch()'>next uncovered branch (B)</a> +// HTML-JUMP-NOT: <a href='javascript:next_branch()'>next uncovered branch (B)</a> // RUN: llvm-cov show %S/Inputs/templateInstantiations.covmapping -instr-profile %S/Inputs/templateInstantiations.profdata -show-instantiations=false -path-equivalence=/tmp,%S %s | FileCheck -check-prefix=NO_INSTS %s // NO_INSTS-NOT: {{^ *}}| _Z4funcIbEiT_: diff --git a/llvm/test/tools/llvm-dwarfdump/X86/locstats.ll b/llvm/test/tools/llvm-dwarfdump/X86/locstats.ll index f850119acb00..cb5908976fb6 100644 --- a/llvm/test/tools/llvm-dwarfdump/X86/locstats.ll +++ b/llvm/test/tools/llvm-dwarfdump/X86/locstats.ll @@ -1,5 +1,11 @@ ; RUN: llc -debug-entry-values %s -o - -filetype=obj \ ; RUN: | llvm-dwarfdump -statistics - | FileCheck %s +; RUN: llc -debug-entry-values --dwarf-version=4 %s -o - -filetype=obj \ +; RUN: | llvm-dwarfdump -statistics - | FileCheck %s +; RUN: llc -debug-entry-values --dwarf-version=3 %s -o - -filetype=obj \ +; RUN: | llvm-dwarfdump -statistics - | FileCheck %s +; RUN: llc -debug-entry-values --dwarf-version=2 %s -o - -filetype=obj \ +; RUN: | llvm-dwarfdump -statistics - | FileCheck %s ; CHECK: "sum_all_variables(#bytes in parent scope covered by DW_OP_entry_value)": 5, ; CHECK-NEXT: "sum_all_params(#bytes in parent scope)": 20, @@ -89,6 +95,12 @@ ; CHECK-NEXT: "#local vars - entry values with [80%,90%) of parent scope covered by DW_AT_location": 1, ; CHECK-NEXT: "#local vars - entry values with [90%,100%) of parent scope covered by DW_AT_location": 0, ; CHECK-NEXT: "#local vars - entry values with 100% of parent scope covered by DW_AT_location": 1 +; CHECK-NEXT: "#bytes with line information": 51, +; CHECK-NEXT: "#bytes with line-0 locations": 3, +; CHECK-NEXT: "#line entries": 7, +; CHECK-NEXT: "#line entries (is_stmt)": 5, +; CHECK-NEXT: "#line entries (unique)": 6, +; CHECK-NEXT: "#line entries (unique non-0)": 5 ; The source code of the test case: ; extern void fn3(int *); diff --git a/llvm/test/tools/llvm-dwp/X86/merge.test b/llvm/test/tools/llvm-dwp/X86/merge.test index 0cf56bd858a0..25a1315ee63f 100644 --- a/llvm/test/tools/llvm-dwp/X86/merge.test +++ b/llvm/test/tools/llvm-dwp/X86/merge.test @@ -44,3 +44,8 @@ CHECK: Index Signature INFO ABBREV CHECK-DAG: [[DWOC]] [0x00000000[[#COFF]], 0x00000000[[#AOFF]]) [0x0000[[CAOFF]], 0x0000[[AAOFF]]) [0x00000000, 0x00000011) [0x00000000, 0x00000018) CHECK-DAG: [[DWOA]] [0x00000000[[#AOFF]], 0x00000000[[#BOFF]]) [0x0000[[AAOFF]], 0x0000[[BAOFF]]) [0x00000011, 0x00000022) [0x00000018, 0x00000028) CHECK-DAG: [[DWOB]] [0x00000000[[#BOFF]], 0x00000000[[#XOFF]]) [0x0000[[BAOFF]], 0x000000c3) [0x00000022, 0x00000033) [0x00000028, 0x0000003c) + +CHECK-LABEL: .debug_str_offsets.dwo contents: +CHECK: Contribution size = 24, Format = DWARF32, Version = 4 +CHECK: Contribution size = 16, Format = DWARF32, Version = 4 +CHECK: Contribution size = 20, Format = DWARF32, Version = 4 diff --git a/llvm/test/tools/llvm-dwp/X86/merge_v5.test b/llvm/test/tools/llvm-dwp/X86/merge_v5.test new file mode 100644 index 000000000000..1c8b14deaea6 --- /dev/null +++ b/llvm/test/tools/llvm-dwp/X86/merge_v5.test @@ -0,0 +1,152 @@ +RUN: rm -rf %t && split-file %s %t && cd %t +RUN: llc a.ll -o a.o -filetype=obj --split-dwarf-output=a.dwo --split-dwarf-file=a.dwo +RUN: llc b.ll -o b.o -filetype=obj --split-dwarf-output=b.dwo --split-dwarf-file=b.dwo +RUN: llc c.ll -o c.o -filetype=obj --split-dwarf-output=c.dwo --split-dwarf-file=c.dwo +RUN: llvm-dwp a.dwo b.dwo -o ab.dwp +RUN: llvm-dwp c.dwo ab.dwp -o merged.dwp +RUN: llvm-dwarfdump -v merged.dwp | FileCheck --check-prefix=CHECK %s + + +CHECK-LABEL: .debug_str_offsets.dwo contents: +CHECK: Contribution size = 32, Format = DWARF32, Version = 5 +CHECK: 0x00000008: 00000000 "_Z1cv" +CHECK: 0x0000000c: 00000006 "c" +CHECK: 0x00000010: 00000008 "int" +CHECK: 0x00000014: 0000000c "baz" +CHECK: 0x00000018: 00000010 "" +CHECK: 0x0000001c: 00000011 "c.cpp" +CHECK: 0x00000020: 00000017 "c.dwo" +CHECK: Contribution size = 24, Format = DWARF32, Version = 5 +CHECK: 0x0000002c: 0000001d "a" +CHECK: 0x00000030: 0000001f "foo" +CHECK: 0x00000034: 00000010 "" +CHECK: 0x00000038: 00000023 "a.cpp" +CHECK: 0x0000003c: 00000029 "a.dwo" +CHECK: Contribution size = 28, Format = DWARF32, Version = 5 +CHECK: 0x00000048: 0000002f "_Z1b3bar" +CHECK: 0x0000004c: 00000038 "b" +CHECK: 0x00000050: 0000003a "bar" +CHECK: 0x00000054: 00000010 "" +CHECK: 0x00000058: 0000003e "b.cpp" +CHECK: 0x0000005c: 00000044 "b.dwo" +;--- a.cpp + struct foo { }; + foo a; +;--- b.cpp + struct bar { }; + void b(bar) { + } +;--- c.cpp + typedef int baz; + baz c() { + } +;--- gen +clang --target=x86_64-linux -g3 -S -emit-llvm -gsplit-dwarf a.cpp -o - +echo '#--- b.ll' +clang --target=x86_64-linux -g3 -S -emit-llvm -gsplit-dwarf b.cpp -o - +echo '#--- c.ll' +clang --target=x86_64-linux -g3 -S -emit-llvm -gsplit-dwarf c.cpp -o - +;--- a.ll +; ModuleID = 'a.cpp' +source_filename = "a.cpp" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux" + +%struct.foo = type { i8 } + +@a = dso_local global %struct.foo zeroinitializer, align 1, !dbg !0 + +!llvm.dbg.cu = !{!2} +!llvm.module.flags = !{!7, !8, !9, !10, !11, !12, !13} + +!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression()) +!1 = distinct !DIGlobalVariable(name: "a", scope: !2, file: !3, line: 2, type: !5, isLocal: false, isDefinition: true) +!2 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !3, isOptimized: false, runtimeVersion: 0, splitDebugFilename: "a.dwo", emissionKind: FullDebug, globals: !4, splitDebugInlining: false, nameTableKind: GNU) +!3 = !DIFile(filename: "a.cpp", directory: "/proc/self/cwd", checksumkind: CSK_MD5, checksum: "394299a94a96cb48c0c9c95d7baf01f5") +!4 = !{!0} +!5 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "foo", file: !3, line: 1, size: 8, flags: DIFlagTypePassByValue, elements: !6, identifier: "_ZTS3foo") +!6 = !{} +!7 = !{i32 7, !"Dwarf Version", i32 5} +!8 = !{i32 2, !"Debug Info Version", i32 3} +!9 = !{i32 1, !"wchar_size", i32 4} +!10 = !{i32 8, !"PIC Level", i32 2} +!11 = !{i32 7, !"PIE Level", i32 2} +!12 = !{i32 7, !"uwtable", i32 2} +!13 = !{i32 7, !"frame-pointer", i32 2} +#--- b.ll +; ModuleID = 'b.cpp' +source_filename = "b.cpp" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux" + +%struct.bar = type { i8 } + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define dso_local void @_Z1b3bar() #0 !dbg !9 { + %1 = alloca %struct.bar, align 1 + call void @llvm.dbg.declare(metadata ptr %1, metadata !14, metadata !DIExpression()), !dbg !15 + ret void, !dbg !16 +} + +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 + +attributes #0 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } + +!llvm.dbg.cu = !{!0} +!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} + +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, isOptimized: false, runtimeVersion: 0, splitDebugFilename: "b.dwo", emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: GNU) +!1 = !DIFile(filename: "b.cpp", directory: "/proc/self/cwd", checksumkind: CSK_MD5, checksum: "8195382ac12baa5edfe47e2e4725f4a7") +!2 = !{i32 7, !"Dwarf Version", i32 5} +!3 = !{i32 2, !"Debug Info Version", i32 3} +!4 = !{i32 1, !"wchar_size", i32 4} +!5 = !{i32 8, !"PIC Level", i32 2} +!6 = !{i32 7, !"PIE Level", i32 2} +!7 = !{i32 7, !"uwtable", i32 2} +!8 = !{i32 7, !"frame-pointer", i32 2} +!9 = distinct !DISubprogram(name: "b", linkageName: "_Z1b3bar", scope: !1, file: !1, line: 2, type: !10, scopeLine: 2, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !13) +!10 = !DISubroutineType(types: !11) +!11 = !{null, !12} +!12 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "bar", file: !1, line: 1, size: 8, flags: DIFlagTypePassByValue, elements: !13, identifier: "_ZTS3bar") +!13 = !{} +!14 = !DILocalVariable(arg: 1, scope: !9, file: !1, line: 2, type: !12) +!15 = !DILocation(line: 2, column: 13, scope: !9) +!16 = !DILocation(line: 3, column: 3, scope: !9) +#--- c.ll +; ModuleID = 'c.cpp' +source_filename = "c.cpp" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux" + +; Function Attrs: mustprogress noinline nounwind optnone uwtable +define dso_local noundef i32 @_Z1cv() #0 !dbg !9 { + call void @llvm.trap(), !dbg !14 + unreachable, !dbg !14 +} + +; Function Attrs: cold noreturn nounwind memory(inaccessiblemem: write) +declare void @llvm.trap() #1 + +attributes #0 = { mustprogress noinline nounwind optnone uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #1 = { cold noreturn nounwind memory(inaccessiblemem: write) } + +!llvm.dbg.cu = !{!0} +!llvm.module.flags = !{!2, !3, !4, !5, !6, !7, !8} + +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, isOptimized: false, runtimeVersion: 0, splitDebugFilename: "c.dwo", emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: GNU) +!1 = !DIFile(filename: "c.cpp", directory: "/proc/self/cwd", checksumkind: CSK_MD5, checksum: "e508eeb01e2e608fe8713f9132696ef5") +!2 = !{i32 7, !"Dwarf Version", i32 5} +!3 = !{i32 2, !"Debug Info Version", i32 3} +!4 = !{i32 1, !"wchar_size", i32 4} +!5 = !{i32 8, !"PIC Level", i32 2} +!6 = !{i32 7, !"PIE Level", i32 2} +!7 = !{i32 7, !"uwtable", i32 2} +!8 = !{i32 7, !"frame-pointer", i32 2} +!9 = distinct !DISubprogram(name: "c", linkageName: "_Z1cv", scope: !1, file: !1, line: 2, type: !10, scopeLine: 2, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0) +!10 = !DISubroutineType(types: !11) +!11 = !{!12} +!12 = !DIDerivedType(tag: DW_TAG_typedef, name: "baz", file: !1, line: 1, baseType: !13) +!13 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +!14 = !DILocation(line: 2, column: 11, scope: !9) diff --git a/llvm/test/tools/llvm-ifs/write-stub.test b/llvm/test/tools/llvm-ifs/write-stub.test index 44c194b77abc..e9f2d4f147b2 100644 --- a/llvm/test/tools/llvm-ifs/write-stub.test +++ b/llvm/test/tools/llvm-ifs/write-stub.test @@ -151,7 +151,7 @@ Symbols: # CHECK-NEXT: 0x[[DYNTABZ]]0000006 SYMTAB # CHECK-NEXT: 0x[[DYNTABZ]]0000005 STRTAB # CHECK-NEXT: 0x[[DYNTABZ]]000000A STRSZ -# CHECK-NEXT: 0x[[DYNTABZ]]0000001 NEEDED Shared library: [libc.so.6] +# CHECK-NEXT: 0x[[DYNTABZ]]0000001 NEEDED Shared library: libc.so.6 # CHECK-NEXT: 0x[[DYNTABZ]]0000000 NULL # CHECK-NEXT: ] diff --git a/llvm/test/tools/llvm-mca/RISCV/SyntacoreSCR/SCR3-ALU.s b/llvm/test/tools/llvm-mca/RISCV/SyntacoreSCR/SCR3-ALU.s new file mode 100644 index 000000000000..83866106b47a --- /dev/null +++ b/llvm/test/tools/llvm-mca/RISCV/SyntacoreSCR/SCR3-ALU.s @@ -0,0 +1,91 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=riscv64-unknown-unknown -mcpu=syntacore-scr3-rv64 --iterations=1 < %s | FileCheck %s --check-prefixes=CHECK,RV64 +# RUN: llvm-mca -mtriple=riscv32-unknown-unknown -mcpu=syntacore-scr3-rv32 --iterations=1 < %s | FileCheck %s --check-prefixes=CHECK,RV32 + +div a0, a0, a0 +mul t0, a0, t0 +add t1, a0, t0 +add t2, t2, t2 +div a1, a1, a1 +mul s0, a1, s0 +add s1, s0, s1 +add s2, s2, s2 + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 8 + +# RV32-NEXT: Total Cycles: 25 +# RV64-NEXT: Total Cycles: 31 + +# CHECK-NEXT: Total uOps: 8 + +# CHECK: Dispatch Width: 1 + +# RV32-NEXT: uOps Per Cycle: 0.32 +# RV32-NEXT: IPC: 0.32 +# RV32-NEXT: Block RThroughput: 16.0 + +# RV64-NEXT: uOps Per Cycle: 0.26 +# RV64-NEXT: IPC: 0.26 +# RV64-NEXT: Block RThroughput: 22.0 + +# 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: + +# RV32-NEXT: 1 8 8.00 div a0, a0, a0 +# RV64-NEXT: 1 11 11.00 div a0, a0, a0 + +# CHECK-NEXT: 1 2 1.00 mul t0, a0, t0 +# CHECK-NEXT: 1 1 1.00 add t1, a0, t0 +# CHECK-NEXT: 1 1 1.00 add t2, t2, t2 + +# RV32-NEXT: 1 8 8.00 div a1, a1, a1 +# RV64-NEXT: 1 11 11.00 div a1, a1, a1 + +# CHECK-NEXT: 1 2 1.00 mul s0, a1, s0 +# CHECK-NEXT: 1 1 1.00 add s1, s1, s0 +# CHECK-NEXT: 1 1 1.00 add s2, s2, s2 + +# CHECK: Resources: + +# RV32-NEXT: [0] - SCR3RV32_ALU +# RV32-NEXT: [1] - SCR3RV32_CFU +# RV32-NEXT: [2] - SCR3RV32_DIV +# RV32-NEXT: [3] - SCR3RV32_LSU +# RV32-NEXT: [4] - SCR3RV32_MUL + +# RV64-NEXT: [0] - SCR3RV64_ALU +# RV64-NEXT: [1] - SCR3RV64_CFU +# RV64-NEXT: [2] - SCR3RV64_DIV +# RV64-NEXT: [3] - SCR3RV64_LSU +# RV64-NEXT: [4] - SCR3RV64_MUL + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1] [2] [3] [4] + +# RV32-NEXT: 4.00 - 16.00 - 2.00 +# RV64-NEXT: 4.00 - 22.00 - 2.00 + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] Instructions: + +# RV32-NEXT: - - 8.00 - - div a0, a0, a0 +# RV64-NEXT: - - 11.00 - - div a0, a0, a0 + +# CHECK-NEXT: - - - - 1.00 mul t0, a0, t0 +# CHECK-NEXT: 1.00 - - - - add t1, a0, t0 +# CHECK-NEXT: 1.00 - - - - add t2, t2, t2 + +# RV32-NEXT: - - 8.00 - - div a1, a1, a1 +# RV64-NEXT: - - 11.00 - - div a1, a1, a1 + +# CHECK-NEXT: - - - - 1.00 mul s0, a1, s0 +# CHECK-NEXT: 1.00 - - - - add s1, s1, s0 +# CHECK-NEXT: 1.00 - - - - add s2, s2, s2 diff --git a/llvm/test/tools/llvm-mca/RISCV/SyntacoreSCR/SCR3-LSU.s b/llvm/test/tools/llvm-mca/RISCV/SyntacoreSCR/SCR3-LSU.s new file mode 100644 index 000000000000..dc8ff80198ea --- /dev/null +++ b/llvm/test/tools/llvm-mca/RISCV/SyntacoreSCR/SCR3-LSU.s @@ -0,0 +1,57 @@ +# NOTE: Assertions have been autogenerated by utils/update_mca_test_checks.py +# RUN: llvm-mca -mtriple=riscv64-unknown-unknown -mcpu=syntacore-scr3-rv64 --iterations=1 < %s | FileCheck %s --check-prefixes=CHECK,RV64 +# RUN: llvm-mca -mtriple=riscv32-unknown-unknown -mcpu=syntacore-scr3-rv32 --iterations=1 < %s | FileCheck %s --check-prefixes=CHECK,RV32 + +lw a0, 0(s0) +lw a1, 0(s0) +lw a2, 0(s0) +lw a3, 0(s0) + +# CHECK: Iterations: 1 +# CHECK-NEXT: Instructions: 4 +# CHECK-NEXT: Total Cycles: 6 +# CHECK-NEXT: Total uOps: 4 + +# CHECK: Dispatch Width: 1 +# CHECK-NEXT: uOps Per Cycle: 0.67 +# CHECK-NEXT: IPC: 0.67 +# CHECK-NEXT: Block RThroughput: 4.0 + +# 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 2 1.00 * lw a0, 0(s0) +# CHECK-NEXT: 1 2 1.00 * lw a1, 0(s0) +# CHECK-NEXT: 1 2 1.00 * lw a2, 0(s0) +# CHECK-NEXT: 1 2 1.00 * lw a3, 0(s0) + +# CHECK: Resources: + +# RV32-NEXT: [0] - SCR3RV32_ALU +# RV32-NEXT: [1] - SCR3RV32_CFU +# RV32-NEXT: [2] - SCR3RV32_DIV +# RV32-NEXT: [3] - SCR3RV32_LSU +# RV32-NEXT: [4] - SCR3RV32_MUL + +# RV64-NEXT: [0] - SCR3RV64_ALU +# RV64-NEXT: [1] - SCR3RV64_CFU +# RV64-NEXT: [2] - SCR3RV64_DIV +# RV64-NEXT: [3] - SCR3RV64_LSU +# RV64-NEXT: [4] - SCR3RV64_MUL + +# CHECK: Resource pressure per iteration: +# CHECK-NEXT: [0] [1] [2] [3] [4] +# CHECK-NEXT: - - - 4.00 - + +# CHECK: Resource pressure by instruction: +# CHECK-NEXT: [0] [1] [2] [3] [4] Instructions: +# CHECK-NEXT: - - - 1.00 - lw a0, 0(s0) +# CHECK-NEXT: - - - 1.00 - lw a1, 0(s0) +# CHECK-NEXT: - - - 1.00 - lw a2, 0(s0) +# CHECK-NEXT: - - - 1.00 - lw a3, 0(s0) diff --git a/llvm/test/tools/llvm-mca/X86/Znver4/resources-avx2.s b/llvm/test/tools/llvm-mca/X86/Znver4/resources-avx2.s index 95895352f26f..0ad14688d0b7 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver4/resources-avx2.s +++ b/llvm/test/tools/llvm-mca/X86/Znver4/resources-avx2.s @@ -625,29 +625,29 @@ vpxor (%rax), %ymm1, %ymm2 # CHECK-NEXT: 1 1 0.25 vpminuw %ymm0, %ymm1, %ymm2 # CHECK-NEXT: 1 8 0.50 * vpminuw (%rax), %ymm1, %ymm2 # CHECK-NEXT: 1 1 1.00 vpmovmskb %ymm0, %ecx -# CHECK-NEXT: 1 2 1.00 vpmovsxbd %xmm0, %ymm2 +# CHECK-NEXT: 1 2 0.50 vpmovsxbd %xmm0, %ymm2 # CHECK-NEXT: 1 11 1.50 * vpmovsxbd (%rax), %ymm2 -# CHECK-NEXT: 1 2 1.00 vpmovsxbq %xmm0, %ymm2 +# CHECK-NEXT: 1 2 0.50 vpmovsxbq %xmm0, %ymm2 # CHECK-NEXT: 1 11 1.50 * vpmovsxbq (%rax), %ymm2 -# CHECK-NEXT: 1 2 1.00 vpmovsxbw %xmm0, %ymm2 +# CHECK-NEXT: 1 2 0.50 vpmovsxbw %xmm0, %ymm2 # CHECK-NEXT: 1 11 1.50 * vpmovsxbw (%rax), %ymm2 -# CHECK-NEXT: 1 2 1.00 vpmovsxdq %xmm0, %ymm2 +# CHECK-NEXT: 1 2 0.50 vpmovsxdq %xmm0, %ymm2 # CHECK-NEXT: 1 11 1.50 * vpmovsxdq (%rax), %ymm2 -# CHECK-NEXT: 1 2 1.00 vpmovsxwd %xmm0, %ymm2 +# CHECK-NEXT: 1 2 0.50 vpmovsxwd %xmm0, %ymm2 # CHECK-NEXT: 1 11 1.50 * vpmovsxwd (%rax), %ymm2 -# CHECK-NEXT: 1 2 1.00 vpmovsxwq %xmm0, %ymm2 +# CHECK-NEXT: 1 2 0.50 vpmovsxwq %xmm0, %ymm2 # CHECK-NEXT: 1 11 1.50 * vpmovsxwq (%rax), %ymm2 -# CHECK-NEXT: 1 2 1.00 vpmovzxbd %xmm0, %ymm2 +# CHECK-NEXT: 1 2 0.50 vpmovzxbd %xmm0, %ymm2 # CHECK-NEXT: 1 11 1.50 * vpmovzxbd (%rax), %ymm2 -# CHECK-NEXT: 1 2 1.00 vpmovzxbq %xmm0, %ymm2 +# CHECK-NEXT: 1 2 0.50 vpmovzxbq %xmm0, %ymm2 # CHECK-NEXT: 1 11 1.50 * vpmovzxbq (%rax), %ymm2 -# CHECK-NEXT: 1 2 1.00 vpmovzxbw %xmm0, %ymm2 +# CHECK-NEXT: 1 2 0.50 vpmovzxbw %xmm0, %ymm2 # CHECK-NEXT: 1 11 1.50 * vpmovzxbw (%rax), %ymm2 -# CHECK-NEXT: 1 2 1.00 vpmovzxdq %xmm0, %ymm2 +# CHECK-NEXT: 1 2 0.50 vpmovzxdq %xmm0, %ymm2 # CHECK-NEXT: 1 11 1.50 * vpmovzxdq (%rax), %ymm2 -# CHECK-NEXT: 1 2 1.00 vpmovzxwd %xmm0, %ymm2 +# CHECK-NEXT: 1 2 0.50 vpmovzxwd %xmm0, %ymm2 # CHECK-NEXT: 1 11 1.50 * vpmovzxwd (%rax), %ymm2 -# CHECK-NEXT: 1 2 1.00 vpmovzxwq %xmm0, %ymm2 +# CHECK-NEXT: 1 2 0.50 vpmovzxwq %xmm0, %ymm2 # CHECK-NEXT: 1 11 1.50 * vpmovzxwq (%rax), %ymm2 # CHECK-NEXT: 1 3 0.50 vpmuldq %ymm0, %ymm1, %ymm2 # CHECK-NEXT: 1 10 0.50 * vpmuldq (%rax), %ymm1, %ymm2 @@ -789,7 +789,7 @@ vpxor (%rax), %ymm1, %ymm2 # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] -# CHECK-NEXT: 6.67 6.67 6.67 - - - - - 93.75 138.75 98.25 36.25 80.50 80.50 29.00 52.33 52.33 52.33 50.67 50.67 50.67 2.50 2.50 +# CHECK-NEXT: 6.67 6.67 6.67 - - - - - 93.75 132.75 92.25 36.25 80.50 80.50 29.00 52.33 52.33 52.33 50.67 50.67 50.67 2.50 2.50 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] Instructions: @@ -958,29 +958,29 @@ vpxor (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 - - - - - - - - - - - vpminuw %ymm0, %ymm1, %ymm2 # CHECK-NEXT: - - - - - - - - 0.25 0.25 0.25 0.25 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpminuw (%rax), %ymm1, %ymm2 # CHECK-NEXT: - - - - - - - - - - 1.00 - - - - - - - - - - - - vpmovmskb %ymm0, %ecx -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbd %xmm0, %ymm2 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbd %xmm0, %ymm2 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbd (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbq %xmm0, %ymm2 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbq %xmm0, %ymm2 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbq (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbw %xmm0, %ymm2 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbw %xmm0, %ymm2 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbw (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxdq %xmm0, %ymm2 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxdq %xmm0, %ymm2 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxdq (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwd %xmm0, %ymm2 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwd %xmm0, %ymm2 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwd (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwq %xmm0, %ymm2 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwq %xmm0, %ymm2 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwq (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbd %xmm0, %ymm2 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbd %xmm0, %ymm2 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbd (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbq %xmm0, %ymm2 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbq %xmm0, %ymm2 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbq (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbw %xmm0, %ymm2 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbw %xmm0, %ymm2 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbw (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxdq %xmm0, %ymm2 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxdq %xmm0, %ymm2 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxdq (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwd %xmm0, %ymm2 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwd %xmm0, %ymm2 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwd (%rax), %ymm2 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwq %xmm0, %ymm2 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwq %xmm0, %ymm2 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwq (%rax), %ymm2 # CHECK-NEXT: - - - - - - - - 0.50 - - 0.50 - - - - - - - - - - - vpmuldq %ymm0, %ymm1, %ymm2 # CHECK-NEXT: - - - - - - - - 0.50 - - 0.50 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmuldq (%rax), %ymm1, %ymm2 diff --git a/llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512bwvl.s b/llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512bwvl.s index 3ac35f55b7ee..8a62f803fce0 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512bwvl.s +++ b/llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512bwvl.s @@ -1604,53 +1604,53 @@ vpunpcklwd (%rax), %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 1 0 0.17 vpmovm2w %k0, %xmm0 # CHECK-NEXT: 1 0 0.17 vpmovm2b %k0, %ymm0 # CHECK-NEXT: 1 0 0.17 vpmovm2w %k0, %ymm0 -# CHECK-NEXT: 1 2 1.00 vpmovsxbw %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovsxbw %xmm16, %xmm19 # CHECK-NEXT: 1 8 0.50 * vpmovsxbw (%rax), %xmm19 -# CHECK-NEXT: 1 2 1.00 vpmovsxbw %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovsxbw %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 8 0.50 * vpmovsxbw (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxbw %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovsxbw %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 1 8 0.50 * vpmovsxbw (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovsxbw %xmm16, %ymm19 +# CHECK-NEXT: 1 2 0.50 vpmovsxbw %xmm16, %ymm19 # CHECK-NEXT: 1 11 1.50 * vpmovsxbw (%rax), %ymm19 -# CHECK-NEXT: 1 2 1.00 vpmovsxbw %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovsxbw %xmm16, %ymm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovsxbw (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxbw %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovsxbw %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: 1 11 1.50 * vpmovsxbw (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovswb %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovswb %xmm16, %xmm19 # CHECK-NEXT: 1 11 1.50 * vpmovswb %xmm16, (%rax) -# CHECK-NEXT: 1 2 1.00 vpmovswb %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovswb %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovswb %xmm16, (%rax) {%k1} -# CHECK-NEXT: 2 4 1.50 vpmovswb %ymm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovswb %ymm16, %xmm19 # CHECK-NEXT: 1 11 1.50 * vpmovswb %ymm16, (%rax) -# CHECK-NEXT: 2 4 1.50 vpmovswb %ymm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovswb %ymm16, %xmm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovswb %ymm16, (%rax) {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovuswb %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovuswb %xmm16, %xmm19 # CHECK-NEXT: 1 11 1.50 * vpmovuswb %xmm16, (%rax) -# CHECK-NEXT: 1 2 1.00 vpmovuswb %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovuswb %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovuswb %xmm16, (%rax) {%k1} -# CHECK-NEXT: 2 4 1.50 vpmovuswb %ymm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovuswb %ymm16, %xmm19 # CHECK-NEXT: 1 11 1.50 * vpmovuswb %ymm16, (%rax) -# CHECK-NEXT: 2 4 1.50 vpmovuswb %ymm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovuswb %ymm16, %xmm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovuswb %ymm16, (%rax) {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovwb %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovwb %xmm16, %xmm19 # CHECK-NEXT: 1 11 1.50 * vpmovwb %xmm16, (%rax) -# CHECK-NEXT: 1 2 1.00 vpmovwb %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovwb %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovwb %xmm16, (%rax) {%k1} -# CHECK-NEXT: 2 4 1.50 vpmovwb %ymm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovwb %ymm16, %xmm19 # CHECK-NEXT: 1 11 1.50 * vpmovwb %ymm16, (%rax) -# CHECK-NEXT: 2 4 1.50 vpmovwb %ymm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovwb %ymm16, %xmm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovwb %ymm16, (%rax) {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxbw %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovzxbw %xmm16, %xmm19 # CHECK-NEXT: 1 8 0.50 * vpmovzxbw (%rax), %xmm19 -# CHECK-NEXT: 1 2 1.00 vpmovzxbw %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovzxbw %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 8 0.50 * vpmovzxbw (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxbw %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovzxbw %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 1 8 0.50 * vpmovzxbw (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovzxbw %xmm16, %ymm19 +# CHECK-NEXT: 1 2 0.50 vpmovzxbw %xmm16, %ymm19 # CHECK-NEXT: 1 11 1.50 * vpmovzxbw (%rax), %ymm19 -# CHECK-NEXT: 1 2 1.00 vpmovzxbw %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovzxbw %xmm16, %ymm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovzxbw (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxbw %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovzxbw %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: 1 11 1.50 * vpmovzxbw (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 3 0.50 vpmulhrsw %xmm16, %xmm17, %xmm19 # CHECK-NEXT: 1 10 0.50 * vpmulhrsw (%rax), %xmm17, %xmm19 @@ -2036,7 +2036,7 @@ vpunpcklwd (%rax), %ymm17, %ymm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] -# CHECK-NEXT: - - - 4.00 4.00 4.00 4.00 - 233.00 423.50 312.50 140.00 226.00 226.00 8.00 150.67 150.67 150.67 148.00 148.00 148.00 4.00 4.00 +# CHECK-NEXT: - - - 4.00 4.00 4.00 4.00 - 233.00 408.50 297.50 140.00 226.00 226.00 8.00 150.67 150.67 150.67 148.00 148.00 148.00 4.00 4.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] Instructions: @@ -2552,53 +2552,53 @@ vpunpcklwd (%rax), %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vpmovm2w %k0, %xmm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vpmovm2b %k0, %ymm0 # CHECK-NEXT: - - - - - - - - - - - - - - - - - - - - - - - vpmovm2w %k0, %ymm0 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbw %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbw %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbw (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbw %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbw %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbw (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbw %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbw %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbw (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbw %xmm16, %ymm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbw %xmm16, %ymm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbw (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbw %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbw %xmm16, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbw (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbw %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbw %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbw (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovswb %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovswb %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovswb %xmm16, (%rax) -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovswb %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovswb %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovswb %xmm16, (%rax) {%k1} -# CHECK-NEXT: - - - - - - - - - 1.50 1.50 - - - - - - - - - - - - vpmovswb %ymm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovswb %ymm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovswb %ymm16, (%rax) -# CHECK-NEXT: - - - - - - - - - 1.50 1.50 - - - - - - - - - - - - vpmovswb %ymm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovswb %ymm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovswb %ymm16, (%rax) {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovuswb %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovuswb %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovuswb %xmm16, (%rax) -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovuswb %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovuswb %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovuswb %xmm16, (%rax) {%k1} -# CHECK-NEXT: - - - - - - - - - 1.50 1.50 - - - - - - - - - - - - vpmovuswb %ymm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovuswb %ymm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovuswb %ymm16, (%rax) -# CHECK-NEXT: - - - - - - - - - 1.50 1.50 - - - - - - - - - - - - vpmovuswb %ymm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovuswb %ymm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovuswb %ymm16, (%rax) {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovwb %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovwb %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovwb %xmm16, (%rax) -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovwb %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovwb %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovwb %xmm16, (%rax) {%k1} -# CHECK-NEXT: - - - - - - - - - 1.50 1.50 - - - - - - - - - - - - vpmovwb %ymm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovwb %ymm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovwb %ymm16, (%rax) -# CHECK-NEXT: - - - - - - - - - 1.50 1.50 - - - - - - - - - - - - vpmovwb %ymm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovwb %ymm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovwb %ymm16, (%rax) {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbw %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbw %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbw (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbw %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbw %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbw (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbw %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbw %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbw (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbw %xmm16, %ymm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbw %xmm16, %ymm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbw (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbw %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbw %xmm16, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbw (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbw %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbw %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbw (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - 0.50 - - 0.50 - - - - - - - - - - - vpmulhrsw %xmm16, %xmm17, %xmm19 # CHECK-NEXT: - - - - - - - - 0.50 - - 0.50 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmulhrsw (%rax), %xmm17, %xmm19 diff --git a/llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vl.s b/llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vl.s index e2813a564384..2d26eb50351a 100644 --- a/llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vl.s +++ b/llvm/test/tools/llvm-mca/X86/Znver4/resources-avx512vl.s @@ -2759,125 +2759,125 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 1 5 0.33 * vpgatherdd (%rax,%xmm1,2), %xmm2 {%k1} # CHECK-NEXT: 1 5 0.33 * vpgatherqq (%rax,%xmm1,2), %xmm2 {%k1} # CHECK-NEXT: 1 5 0.33 * vpgatherqd (%rax,%xmm1,2), %xmm2 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxbd %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovsxbd %xmm16, %xmm19 # CHECK-NEXT: 1 8 0.50 * vpmovsxbd (%rax), %xmm19 -# CHECK-NEXT: 1 2 1.00 vpmovsxbd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovsxbd %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 8 0.50 * vpmovsxbd (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxbd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovsxbd %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 1 8 0.50 * vpmovsxbd (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovsxbd %xmm16, %ymm19 +# CHECK-NEXT: 1 2 0.50 vpmovsxbd %xmm16, %ymm19 # CHECK-NEXT: 1 11 1.50 * vpmovsxbd (%rax), %ymm19 -# CHECK-NEXT: 1 2 1.00 vpmovsxbd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovsxbd %xmm16, %ymm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovsxbd (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxbd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovsxbd %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: 1 11 1.50 * vpmovsxbd (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovsxbq %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovsxbq %xmm16, %xmm19 # CHECK-NEXT: 1 8 0.50 * vpmovsxbq (%rax), %xmm19 -# CHECK-NEXT: 1 2 1.00 vpmovsxbq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovsxbq %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 8 0.50 * vpmovsxbq (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxbq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovsxbq %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 1 8 0.50 * vpmovsxbq (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovsxbq %xmm16, %ymm19 +# CHECK-NEXT: 1 2 0.50 vpmovsxbq %xmm16, %ymm19 # CHECK-NEXT: 1 11 1.50 * vpmovsxbq (%rax), %ymm19 -# CHECK-NEXT: 1 2 1.00 vpmovsxbq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovsxbq %xmm16, %ymm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovsxbq (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxbq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovsxbq %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: 1 11 1.50 * vpmovsxbq (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovsxdq %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovsxdq %xmm16, %xmm19 # CHECK-NEXT: 1 8 0.50 * vpmovsxdq (%rax), %xmm19 -# CHECK-NEXT: 1 2 1.00 vpmovsxdq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovsxdq %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 8 0.50 * vpmovsxdq (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxdq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovsxdq %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 1 8 0.50 * vpmovsxdq (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovsxdq %xmm16, %ymm19 +# CHECK-NEXT: 1 2 0.50 vpmovsxdq %xmm16, %ymm19 # CHECK-NEXT: 1 11 1.50 * vpmovsxdq (%rax), %ymm19 -# CHECK-NEXT: 1 2 1.00 vpmovsxdq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovsxdq %xmm16, %ymm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovsxdq (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxdq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovsxdq %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: 1 11 1.50 * vpmovsxdq (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovsxwd %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovsxwd %xmm16, %xmm19 # CHECK-NEXT: 1 8 0.50 * vpmovsxwd (%rax), %xmm19 -# CHECK-NEXT: 1 2 1.00 vpmovsxwd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovsxwd %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 8 0.50 * vpmovsxwd (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxwd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovsxwd %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 1 8 0.50 * vpmovsxwd (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovsxwd %xmm16, %ymm19 +# CHECK-NEXT: 1 2 0.50 vpmovsxwd %xmm16, %ymm19 # CHECK-NEXT: 1 11 1.50 * vpmovsxwd (%rax), %ymm19 -# CHECK-NEXT: 1 2 1.00 vpmovsxwd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovsxwd %xmm16, %ymm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovsxwd (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxwd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovsxwd %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: 1 11 1.50 * vpmovsxwd (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovsxwq %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovsxwq %xmm16, %xmm19 # CHECK-NEXT: 1 8 0.50 * vpmovsxwq (%rax), %xmm19 -# CHECK-NEXT: 1 2 1.00 vpmovsxwq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovsxwq %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 8 0.50 * vpmovsxwq (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxwq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovsxwq %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 1 8 0.50 * vpmovsxwq (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovsxwq %xmm16, %ymm19 +# CHECK-NEXT: 1 2 0.50 vpmovsxwq %xmm16, %ymm19 # CHECK-NEXT: 1 11 1.50 * vpmovsxwq (%rax), %ymm19 -# CHECK-NEXT: 1 2 1.00 vpmovsxwq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovsxwq %xmm16, %ymm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovsxwq (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovsxwq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovsxwq %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: 1 11 1.50 * vpmovsxwq (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovzxbd %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovzxbd %xmm16, %xmm19 # CHECK-NEXT: 1 8 0.50 * vpmovzxbd (%rax), %xmm19 -# CHECK-NEXT: 1 2 1.00 vpmovzxbd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovzxbd %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 8 0.50 * vpmovzxbd (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxbd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovzxbd %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 1 8 0.50 * vpmovzxbd (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovzxbd %xmm16, %ymm19 +# CHECK-NEXT: 1 2 0.50 vpmovzxbd %xmm16, %ymm19 # CHECK-NEXT: 1 11 1.50 * vpmovzxbd (%rax), %ymm19 -# CHECK-NEXT: 1 2 1.00 vpmovzxbd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovzxbd %xmm16, %ymm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovzxbd (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxbd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovzxbd %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: 1 11 1.50 * vpmovzxbd (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovzxbq %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovzxbq %xmm16, %xmm19 # CHECK-NEXT: 1 8 0.50 * vpmovzxbq (%rax), %xmm19 -# CHECK-NEXT: 1 2 1.00 vpmovzxbq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovzxbq %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 8 0.50 * vpmovzxbq (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxbq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovzxbq %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 1 8 0.50 * vpmovzxbq (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovzxbq %xmm16, %ymm19 +# CHECK-NEXT: 1 2 0.50 vpmovzxbq %xmm16, %ymm19 # CHECK-NEXT: 1 11 1.50 * vpmovzxbq (%rax), %ymm19 -# CHECK-NEXT: 1 2 1.00 vpmovzxbq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovzxbq %xmm16, %ymm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovzxbq (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxbq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovzxbq %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: 1 11 1.50 * vpmovzxbq (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovzxdq %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovzxdq %xmm16, %xmm19 # CHECK-NEXT: 1 8 0.50 * vpmovzxdq (%rax), %xmm19 -# CHECK-NEXT: 1 2 1.00 vpmovzxdq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovzxdq %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 8 0.50 * vpmovzxdq (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxdq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovzxdq %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 1 8 0.50 * vpmovzxdq (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovzxdq %xmm16, %ymm19 +# CHECK-NEXT: 1 2 0.50 vpmovzxdq %xmm16, %ymm19 # CHECK-NEXT: 1 11 1.50 * vpmovzxdq (%rax), %ymm19 -# CHECK-NEXT: 1 2 1.00 vpmovzxdq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovzxdq %xmm16, %ymm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovzxdq (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxdq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovzxdq %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: 1 11 1.50 * vpmovzxdq (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovzxwd %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovzxwd %xmm16, %xmm19 # CHECK-NEXT: 1 8 0.50 * vpmovzxwd (%rax), %xmm19 -# CHECK-NEXT: 1 2 1.00 vpmovzxwd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovzxwd %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 8 0.50 * vpmovzxwd (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxwd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovzxwd %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 1 8 0.50 * vpmovzxwd (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovzxwd %xmm16, %ymm19 +# CHECK-NEXT: 1 2 0.50 vpmovzxwd %xmm16, %ymm19 # CHECK-NEXT: 1 11 1.50 * vpmovzxwd (%rax), %ymm19 -# CHECK-NEXT: 1 2 1.00 vpmovzxwd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovzxwd %xmm16, %ymm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovzxwd (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxwd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovzxwd %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: 1 11 1.50 * vpmovzxwd (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovzxwq %xmm16, %xmm19 +# CHECK-NEXT: 1 2 0.50 vpmovzxwq %xmm16, %xmm19 # CHECK-NEXT: 1 8 0.50 * vpmovzxwq (%rax), %xmm19 -# CHECK-NEXT: 1 2 1.00 vpmovzxwq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovzxwq %xmm16, %xmm19 {%k1} # CHECK-NEXT: 1 8 0.50 * vpmovzxwq (%rax), %xmm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxwq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovzxwq %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: 1 8 0.50 * vpmovzxwq (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: 1 2 1.00 vpmovzxwq %xmm16, %ymm19 +# CHECK-NEXT: 1 2 0.50 vpmovzxwq %xmm16, %ymm19 # CHECK-NEXT: 1 11 1.50 * vpmovzxwq (%rax), %ymm19 -# CHECK-NEXT: 1 2 1.00 vpmovzxwq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: 1 2 0.50 vpmovzxwq %xmm16, %ymm19 {%k1} # CHECK-NEXT: 1 11 1.50 * vpmovzxwq (%rax), %ymm19 {%k1} -# CHECK-NEXT: 1 2 1.00 vpmovzxwq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: 1 2 0.50 vpmovzxwq %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: 1 11 1.50 * vpmovzxwq (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: 1 3 0.50 vpmulld %xmm16, %xmm17, %xmm19 # CHECK-NEXT: 1 10 0.50 * vpmulld (%rax), %xmm17, %xmm19 @@ -3243,7 +3243,7 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK: Resource pressure per iteration: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] -# CHECK-NEXT: 5.33 5.33 5.33 - - - - - 208.00 978.00 531.50 261.50 478.50 478.50 32.00 324.33 324.33 324.33 313.67 313.67 313.67 16.00 16.00 +# CHECK-NEXT: 5.33 5.33 5.33 - - - - - 208.00 948.00 501.50 261.50 478.50 478.50 32.00 324.33 324.33 324.33 313.67 313.67 313.67 16.00 16.00 # CHECK: Resource pressure by instruction: # CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12.0] [12.1] [13] [14.0] [14.1] [14.2] [15.0] [15.1] [15.2] [16.0] [16.1] Instructions: @@ -4297,125 +4297,125 @@ vunpcklps (%rax){1to8}, %ymm17, %ymm19 {z}{k1} # CHECK-NEXT: 0.33 0.33 0.33 - - - - - - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpgatherdd (%rax,%xmm1,2), %xmm2 {%k1} # CHECK-NEXT: 0.33 0.33 0.33 - - - - - - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpgatherqq (%rax,%xmm1,2), %xmm2 {%k1} # CHECK-NEXT: 0.33 0.33 0.33 - - - - - - - - - - - - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpgatherqd (%rax,%xmm1,2), %xmm2 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbd %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbd %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbd (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbd %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbd (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbd %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbd (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbd %xmm16, %ymm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbd %xmm16, %ymm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbd (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbd %xmm16, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbd (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbd %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbd (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbq %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbq %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbq (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbq %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbq (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbq %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbq (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbq %xmm16, %ymm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbq %xmm16, %ymm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbq (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbq %xmm16, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbq (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxbq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxbq %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxbq (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxdq %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxdq %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxdq (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxdq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxdq %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxdq (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxdq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxdq %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxdq (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxdq %xmm16, %ymm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxdq %xmm16, %ymm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxdq (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxdq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxdq %xmm16, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxdq (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxdq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxdq %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxdq (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwd %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwd %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwd (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwd %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwd (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwd %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwd (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwd %xmm16, %ymm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwd %xmm16, %ymm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwd (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwd %xmm16, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwd (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwd %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwd (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwq %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwq %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwq (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwq %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwq (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwq %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwq (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwq %xmm16, %ymm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwq %xmm16, %ymm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwq (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwq %xmm16, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwq (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovsxwq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovsxwq %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovsxwq (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbd %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbd %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbd (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbd %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbd (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbd %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbd (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbd %xmm16, %ymm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbd %xmm16, %ymm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbd (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbd %xmm16, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbd (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbd %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbd (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbq %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbq %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbq (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbq %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbq (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbq %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbq (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbq %xmm16, %ymm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbq %xmm16, %ymm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbq (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbq %xmm16, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbq (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxbq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxbq %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxbq (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxdq %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxdq %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxdq (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxdq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxdq %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxdq (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxdq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxdq %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxdq (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxdq %xmm16, %ymm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxdq %xmm16, %ymm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxdq (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxdq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxdq %xmm16, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxdq (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxdq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxdq %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxdq (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwd %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwd %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwd (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwd %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwd %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwd (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwd %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwd %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwd (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwd %xmm16, %ymm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwd %xmm16, %ymm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwd (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwd %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwd %xmm16, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwd (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwd %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwd %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwd (%rax), %ymm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwq %xmm16, %xmm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwq %xmm16, %xmm19 # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwq (%rax), %xmm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwq %xmm16, %xmm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwq %xmm16, %xmm19 {%k1} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwq (%rax), %xmm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwq %xmm16, %xmm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwq %xmm16, %xmm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 0.50 0.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwq (%rax), %xmm19 {%k1} {z} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwq %xmm16, %ymm19 +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwq %xmm16, %ymm19 # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwq (%rax), %ymm19 -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwq %xmm16, %ymm19 {%k1} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwq %xmm16, %ymm19 {%k1} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwq (%rax), %ymm19 {%k1} -# CHECK-NEXT: - - - - - - - - - 1.00 1.00 - - - - - - - - - - - - vpmovzxwq %xmm16, %ymm19 {%k1} {z} +# CHECK-NEXT: - - - - - - - - - 0.50 0.50 - - - - - - - - - - - - vpmovzxwq %xmm16, %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - - 1.50 1.50 - 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmovzxwq (%rax), %ymm19 {%k1} {z} # CHECK-NEXT: - - - - - - - - 0.50 - - 0.50 - - - - - - - - - - - vpmulld %xmm16, %xmm17, %xmm19 # CHECK-NEXT: - - - - - - - - 0.50 - - 0.50 0.50 0.50 - 0.33 0.33 0.33 0.33 0.33 0.33 - - vpmulld (%rax), %xmm17, %xmm19 diff --git a/llvm/test/tools/llvm-objcopy/ELF/mirror-permissions-win.test b/llvm/test/tools/llvm-objcopy/ELF/mirror-permissions-win.test index c35df343c0d3..f8b0d389df9b 100644 --- a/llvm/test/tools/llvm-objcopy/ELF/mirror-permissions-win.test +++ b/llvm/test/tools/llvm-objcopy/ELF/mirror-permissions-win.test @@ -1,7 +1,7 @@ ## Test that permissions for ouput files are mirrored ## from their input files. -## The Unix version of this test is seperated because it needs +## The Unix version of this test is separated because it needs ## to use umask(1). Windows has no umask, so it can be considered ## to be always 0, the required behavior. # REQUIRES: system-windows diff --git a/llvm/test/tools/llvm-objdump/XCOFF/file-headers.test b/llvm/test/tools/llvm-objdump/XCOFF/file-headers.test new file mode 100644 index 000000000000..89218ac6852f --- /dev/null +++ b/llvm/test/tools/llvm-objdump/XCOFF/file-headers.test @@ -0,0 +1,21 @@ +## Test the `--file-headers` option of llvm-objdump for XCOFF object files. +# RUN: yaml2obj %s -o %t1 +# RUN: llvm-objdump --file-headers %t1 |\ +# RUN: FileCheck %s --check-prefix=CHECK32 --match-full-lines +# RUN: yaml2obj %s -DMAGIC=0x1F7 -o %t2 +# RUN: llvm-objdump --file-headers %t2 |\ +# RUN: FileCheck %s --check-prefix=CHECK64 --match-full-lines + +# CHECK32: {{.*}}file format aixcoff-rs6000 +# CHECK32-NEXT: architecture: powerpc +# CHECK32-NEXT: start address: 0x00001111 + +# CHECK64: {{.*}}file format aix5coff64-rs6000 +# CHECK64-NEXT: architecture: powerpc64 +# CHECK64-NEXT: start address: 0x0000000000001111 + +--- !XCOFF +FileHeader: + MagicNumber: [[MAGIC=0x1DF]] +AuxiliaryHeader: + EntryPointAddr: 0x1111 diff --git a/llvm/test/tools/llvm-profdata/Inputs/basic-histogram.memprofexe b/llvm/test/tools/llvm-profdata/Inputs/basic-histogram.memprofexe Binary files differnew file mode 100755 index 000000000000..502472c6977d --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/basic-histogram.memprofexe diff --git a/llvm/test/tools/llvm-profdata/Inputs/basic-histogram.memprofraw b/llvm/test/tools/llvm-profdata/Inputs/basic-histogram.memprofraw Binary files differnew file mode 100644 index 000000000000..850da9e55711 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/basic-histogram.memprofraw diff --git a/llvm/test/tools/llvm-profdata/Inputs/basic.memprofexe b/llvm/test/tools/llvm-profdata/Inputs/basic.memprofexe Binary files differindex d03894b6d8e4..32b52c8b5be9 100755 --- a/llvm/test/tools/llvm-profdata/Inputs/basic.memprofexe +++ b/llvm/test/tools/llvm-profdata/Inputs/basic.memprofexe diff --git a/llvm/test/tools/llvm-profdata/Inputs/basic.memprofraw b/llvm/test/tools/llvm-profdata/Inputs/basic.memprofraw Binary files differindex 62b7d299d3aa..dae9b4d9c079 100644 --- a/llvm/test/tools/llvm-profdata/Inputs/basic.memprofraw +++ b/llvm/test/tools/llvm-profdata/Inputs/basic.memprofraw diff --git a/llvm/test/tools/llvm-profdata/Inputs/basic_v3.memprofexe b/llvm/test/tools/llvm-profdata/Inputs/basic_v3.memprofexe Binary files differnew file mode 100755 index 000000000000..d03894b6d8e4 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/basic_v3.memprofexe diff --git a/llvm/test/tools/llvm-profdata/Inputs/basic_v3.memprofraw b/llvm/test/tools/llvm-profdata/Inputs/basic_v3.memprofraw Binary files differnew file mode 100644 index 000000000000..62b7d299d3aa --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/basic_v3.memprofraw diff --git a/llvm/test/tools/llvm-profdata/Inputs/buildid.memprofexe b/llvm/test/tools/llvm-profdata/Inputs/buildid.memprofexe Binary files differindex 5687d065d035..3de26f6ee421 100755 --- a/llvm/test/tools/llvm-profdata/Inputs/buildid.memprofexe +++ b/llvm/test/tools/llvm-profdata/Inputs/buildid.memprofexe diff --git a/llvm/test/tools/llvm-profdata/Inputs/buildid.memprofraw b/llvm/test/tools/llvm-profdata/Inputs/buildid.memprofraw Binary files differindex 43f9ca99c28b..56926cb9d32e 100644 --- a/llvm/test/tools/llvm-profdata/Inputs/buildid.memprofraw +++ b/llvm/test/tools/llvm-profdata/Inputs/buildid.memprofraw diff --git a/llvm/test/tools/llvm-profdata/Inputs/inline.memprofexe b/llvm/test/tools/llvm-profdata/Inputs/inline.memprofexe Binary files differindex 766d2c471313..2953080c3d52 100755 --- a/llvm/test/tools/llvm-profdata/Inputs/inline.memprofexe +++ b/llvm/test/tools/llvm-profdata/Inputs/inline.memprofexe diff --git a/llvm/test/tools/llvm-profdata/Inputs/inline.memprofraw b/llvm/test/tools/llvm-profdata/Inputs/inline.memprofraw Binary files differindex 26254ae67c7c..453b059b3319 100644 --- a/llvm/test/tools/llvm-profdata/Inputs/inline.memprofraw +++ b/llvm/test/tools/llvm-profdata/Inputs/inline.memprofraw diff --git a/llvm/test/tools/llvm-profdata/Inputs/multi.memprofexe b/llvm/test/tools/llvm-profdata/Inputs/multi.memprofexe Binary files differindex d5c3ec65b3ac..3ba9f8a565ed 100755 --- a/llvm/test/tools/llvm-profdata/Inputs/multi.memprofexe +++ b/llvm/test/tools/llvm-profdata/Inputs/multi.memprofexe diff --git a/llvm/test/tools/llvm-profdata/Inputs/multi.memprofraw b/llvm/test/tools/llvm-profdata/Inputs/multi.memprofraw Binary files differindex a1018aae2fba..792edb742303 100644 --- a/llvm/test/tools/llvm-profdata/Inputs/multi.memprofraw +++ b/llvm/test/tools/llvm-profdata/Inputs/multi.memprofraw diff --git a/llvm/test/tools/llvm-profdata/Inputs/padding-histogram.memprofexe b/llvm/test/tools/llvm-profdata/Inputs/padding-histogram.memprofexe Binary files differnew file mode 100755 index 000000000000..fad3fc111a33 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/padding-histogram.memprofexe diff --git a/llvm/test/tools/llvm-profdata/Inputs/padding-histogram.memprofraw b/llvm/test/tools/llvm-profdata/Inputs/padding-histogram.memprofraw Binary files differnew file mode 100644 index 000000000000..0d540ca94a5a --- /dev/null +++ b/llvm/test/tools/llvm-profdata/Inputs/padding-histogram.memprofraw diff --git a/llvm/test/tools/llvm-profdata/Inputs/pic.memprofexe b/llvm/test/tools/llvm-profdata/Inputs/pic.memprofexe Binary files differindex d854186380e7..b92ed10d2410 100755 --- a/llvm/test/tools/llvm-profdata/Inputs/pic.memprofexe +++ b/llvm/test/tools/llvm-profdata/Inputs/pic.memprofexe diff --git a/llvm/test/tools/llvm-profdata/Inputs/pic.memprofraw b/llvm/test/tools/llvm-profdata/Inputs/pic.memprofraw Binary files differindex 992022fa9129..1994b49eb15e 100644 --- a/llvm/test/tools/llvm-profdata/Inputs/pic.memprofraw +++ b/llvm/test/tools/llvm-profdata/Inputs/pic.memprofraw diff --git a/llvm/test/tools/llvm-profdata/Inputs/update_memprof_inputs.sh b/llvm/test/tools/llvm-profdata/Inputs/update_memprof_inputs.sh index 5365a0bb6cc3..10c36a834c06 100755 --- a/llvm/test/tools/llvm-profdata/Inputs/update_memprof_inputs.sh +++ b/llvm/test/tools/llvm-profdata/Inputs/update_memprof_inputs.sh @@ -31,7 +31,7 @@ read -r -d '' INLINE << EOF __attribute__((always_inline)) void qux(int x) { - char *ptr = malloc(x); + char *ptr = (char*) malloc(x); memset(ptr, 0, x); free(ptr); } @@ -64,6 +64,190 @@ int main(int argc, char **argv) { } EOF +read -r -d '' BASIC_HISTOGRAM << EOF +struct A { + long int a; + long int b; + long int c; + long int d; + long int e; + long int f; + long int g; + long int h; + A() {}; +}; + +void foo() { + long int acc = 0; + A *a = new A(); + acc += a->a; + acc += a->b; + acc += a->c; + acc += a->d; + acc += a->e; + acc += a->f; + acc += a->g; + acc += a->h; + delete a; +} +void bar() { + long int acc = 0; + A *a = new A(); + acc += a->a; + acc += a->a; + acc += a->a; + acc += a->a; + acc += a->a; + acc += a->a; + acc += a->a; + acc += a->a; + acc += a->b; + acc += a->b; + acc += a->b; + acc += a->b; + acc += a->b; + acc += a->b; + acc += a->b; + acc += a->c; + acc += a->c; + acc += a->c; + acc += a->c; + acc += a->c; + acc += a->c; + acc += a->d; + acc += a->d; + acc += a->d; + acc += a->d; + acc += a->d; + acc += a->e; + acc += a->e; + acc += a->e; + acc += a->e; + acc += a->f; + acc += a->f; + acc += a->f; + acc += a->g; + acc += a->g; + acc += a->h; + + delete a; +} + +int main(int argc, char **argv) { + long int acc = 0; + A *a = new A(); + acc += a->a; + acc += a->b; + acc += a->c; + acc += a->d; + acc += a->e; + acc += a->f; + acc += a->g; + acc += a->h; + + delete a; + + A *b = new A(); + acc += b->a; + acc += b->a; + acc += b->a; + acc += b->a; + acc += b->a; + acc += b->a; + acc += b->a; + acc += b->a; + acc += b->b; + acc += b->b; + acc += b->b; + acc += b->b; + acc += b->b; + acc += b->b; + acc += b->b; + acc += b->c; + acc += b->c; + acc += b->c; + acc += b->c; + acc += b->c; + acc += b->c; + acc += b->d; + acc += b->d; + acc += b->d; + acc += b->d; + acc += b->d; + acc += b->e; + acc += b->e; + acc += b->e; + acc += b->e; + acc += b->f; + acc += b->f; + acc += b->f; + acc += b->g; + acc += b->g; + acc += b->h; + + delete b; + + A *c = new A(); + acc += c->a; + + for (int i = 0; i < 21; ++i) { + + foo(); + } + + for (int i = 0; i < 21; ++i) { + + bar(); + } + + return 0; +} +EOF + +read -r -d '' PADDING_HISTOGRAM << EOF +struct A { + char a; + char b; + long int c; + char d; + int e; + A() {}; +}; + +struct B { + double x; + double y; + B() {}; +}; + +struct C { + A a; + char z; + B b; + C() {}; +}; + +int main(int argc, char **argv) { + long int acc = 0; + + A *a = new A(); + acc += a->a; + acc += a->b; + acc += a->c; + acc += a->d; + acc += a->e; + + C *c = new C(); + acc += c->a.a; + acc += c->a.a; + acc += c->b.x; + acc += c->b.y; + + return 0; +} +EOF + + DEFAULT_MEMPROF_FLAGS="-fuse-ld=lld -Wl,--no-rosegment -gmlt -fdebug-info-for-profiling -fmemory-profile -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -m64 -Wl,-build-id -no-pie" # Map each test to their source and any additional flags separated by ; @@ -81,3 +265,20 @@ for name in "${!INPUTS[@]}"; do env MEMPROF_OPTIONS=log_path=stdout ${OUTDIR}/${name}.memprofexe > ${OUTDIR}/${name}.memprofraw rm ${OUTDIR}/${name}.c done + + +DEFAULT_HIST_FLAGS="${DEFAULT_MEMPROF_FLAGS} -mllvm -memprof-use-callbacks=true -mllvm -memprof-histogram" + + +# Map each test to their source and any additional flags separated by ; +declare -A HISTOGRAM_INPUTS +HISTOGRAM_INPUTS["basic-histogram"]="BASIC_HISTOGRAM" +HISTOGRAM_INPUTS["padding-histogram"]="PADDING_HISTOGRAM" + +for name in "${!HISTOGRAM_INPUTS[@]}"; do + IFS=";" read -r src flags <<< "${HISTOGRAM_INPUTS[$name]}" + echo "${!src}" > ${OUTDIR}/${name}.c + ${CLANG} ${DEFAULT_HIST_FLAGS} ${flags} ${OUTDIR}/${name}.c -o ${OUTDIR}/${name}.memprofexe + env MEMPROF_OPTIONS=log_path=stdout ${OUTDIR}/${name}.memprofexe > ${OUTDIR}/${name}.memprofraw + rm ${OUTDIR}/${name}.c +done
\ No newline at end of file diff --git a/llvm/test/tools/llvm-profdata/memprof-basic-histogram.test b/llvm/test/tools/llvm-profdata/memprof-basic-histogram.test new file mode 100644 index 000000000000..3d30a627bdd7 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/memprof-basic-histogram.test @@ -0,0 +1,244 @@ +REQUIRES: x86_64-linux + +To update the inputs used below run Inputs/update_memprof_inputs.sh /path/to/updated/clang +RUN: llvm-profdata show --memory %p/Inputs/basic-histogram.memprofraw --profiled-binary %p/Inputs/basic-histogram.memprofexe -o - | FileCheck %s + +We expect 5 MIBs, each with different AccessHistogramValues. + +CHECK: MemprofProfile: +CHECK-NEXT: Summary: +CHECK-NEXT: Version: 4 +CHECK-NEXT: NumSegments: {{[0-9]+}} +CHECK-NEXT: NumMibInfo: 5 +CHECK-NEXT: NumAllocFunctions: 3 +CHECK-NEXT: NumStackOffsets: 5 +CHECK-NEXT: Segments: +CHECK-NEXT: - +CHECK-NEXT: BuildId: {{[[:xdigit:]]+}} +CHECK-NEXT: Start: 0x{{[[:xdigit:]]+}} +CHECK-NEXT: End: 0x{{[[:xdigit:]]+}} +CHECK-NEXT: Offset: 0x{{[[:xdigit:]]+}} +CHECK-NEXT: - + +CHECK: Records: +CHECK-NEXT: - +CHECK-NEXT: FunctionGUID: {{[0-9]+}} +CHECK-NEXT: AllocSites: +CHECK-NEXT: - +CHECK-NEXT: Callstack: +CHECK-NEXT: - +CHECK-NEXT: Function: {{[0-9]+}} +CHECK-NEXT: SymbolName: main +CHECK-NEXT: LineOffset: 2 +CHECK-NEXT: Column: 10 +CHECK-NEXT: Inline: 0 +CHECK-NEXT: MemInfoBlock: +CHECK-NEXT: AllocCount: 1 +CHECK-NEXT: TotalAccessCount: 8 +CHECK-NEXT: MinAccessCount: 8 +CHECK-NEXT: MaxAccessCount: 8 +CHECK-NEXT: TotalSize: 64 +CHECK-NEXT: MinSize: 64 +CHECK-NEXT: MaxSize: 64 +CHECK-NEXT: AllocTimestamp: {{[0-9]+}} +CHECK-NEXT: DeallocTimestamp: {{[0-9]+}} +CHECK-NEXT: TotalLifetime: 0 +CHECK-NEXT: MinLifetime: 0 +CHECK-NEXT: MaxLifetime: 0 +CHECK-NEXT: AllocCpuId: {{[0-9]+}} +CHECK-NEXT: DeallocCpuId: {{[0-9]+}} +CHECK-NEXT: NumMigratedCpu: 0 +CHECK-NEXT: NumLifetimeOverlaps: 0 +CHECK-NEXT: NumSameAllocCpu: 0 +CHECK-NEXT: NumSameDeallocCpu: 0 +CHECK-NEXT: DataTypeId: {{[0-9]+}} +CHECK-NEXT: TotalAccessDensity: 12 +CHECK-NEXT: MinAccessDensity: 12 +CHECK-NEXT: MaxAccessDensity: 12 +CHECK-NEXT: TotalLifetimeAccessDensity: 12000 +CHECK-NEXT: MinLifetimeAccessDensity: 12000 +CHECK-NEXT: MaxLifetimeAccessDensity: 12000 +CHECK-NEXT: AccessHistogramSize: 8 +CHECK-NEXT: AccessHistogram: {{[0-9]+}} +CHECK-NEXT: AccessHistogramValues: 1 1 1 1 1 1 1 1 +CHECK-NEXT: - +CHECK-NEXT: Callstack: +CHECK-NEXT: - +CHECK-NEXT: Function: {{[0-9]+}} +CHECK-NEXT: SymbolName: main +CHECK-NEXT: LineOffset: 14 +CHECK-NEXT: Column: 10 +CHECK-NEXT: Inline: 0 +CHECK-NEXT: MemInfoBlock: +CHECK-NEXT: AllocCount: 1 +CHECK-NEXT: TotalAccessCount: 36 +CHECK-NEXT: MinAccessCount: 36 +CHECK-NEXT: MaxAccessCount: 36 +CHECK-NEXT: TotalSize: 64 +CHECK-NEXT: MinSize: 64 +CHECK-NEXT: MaxSize: 64 +CHECK-NEXT: AllocTimestamp: {{[0-9]+}} +CHECK-NEXT: DeallocTimestamp: {{[0-9]+}} +CHECK-NEXT: TotalLifetime: 0 +CHECK-NEXT: MinLifetime: 0 +CHECK-NEXT: MaxLifetime: 0 +CHECK-NEXT: AllocCpuId: {{[0-9]+}} +CHECK-NEXT: DeallocCpuId: {{[0-9]+}} +CHECK-NEXT: NumMigratedCpu: 0 +CHECK-NEXT: NumLifetimeOverlaps: 0 +CHECK-NEXT: NumSameAllocCpu: 0 +CHECK-NEXT: NumSameDeallocCpu: 0 +CHECK-NEXT: DataTypeId: {{[0-9]+}} +CHECK-NEXT: TotalAccessDensity: 56 +CHECK-NEXT: MinAccessDensity: 56 +CHECK-NEXT: MaxAccessDensity: 56 +CHECK-NEXT: TotalLifetimeAccessDensity: 56000 +CHECK-NEXT: MinLifetimeAccessDensity: 56000 +CHECK-NEXT: MaxLifetimeAccessDensity: 56000 +CHECK-NEXT: AccessHistogramSize: 8 +CHECK-NEXT: AccessHistogram: {{[0-9]+}} +CHECK-NEXT: AccessHistogramValues: 8 7 6 5 4 3 2 1 +CHECK-NEXT: - +CHECK-NEXT: Callstack: +CHECK-NEXT: - +CHECK-NEXT: Function: {{[0-9]+}} +CHECK-NEXT: SymbolName: main +CHECK-NEXT: LineOffset: 54 +CHECK-NEXT: Column: 10 +CHECK-NEXT: Inline: 0 +CHECK-NEXT: MemInfoBlock: +CHECK-NEXT: AllocCount: 1 +CHECK-NEXT: TotalAccessCount: 1 +CHECK-NEXT: MinAccessCount: 1 +CHECK-NEXT: MaxAccessCount: 1 +CHECK-NEXT: TotalSize: 64 +CHECK-NEXT: MinSize: 64 +CHECK-NEXT: MaxSize: 64 +CHECK-NEXT: AllocTimestamp: {{[0-9]+}} +CHECK-NEXT: DeallocTimestamp: {{[0-9]+}} +CHECK-NEXT: TotalLifetime: 0 +CHECK-NEXT: MinLifetime: 0 +CHECK-NEXT: MaxLifetime: 0 +CHECK-NEXT: AllocCpuId: {{[0-9]+}} +CHECK-NEXT: DeallocCpuId: {{[0-9]+}} +CHECK-NEXT: NumMigratedCpu: 0 +CHECK-NEXT: NumLifetimeOverlaps: 0 +CHECK-NEXT: NumSameAllocCpu: 0 +CHECK-NEXT: NumSameDeallocCpu: 0 +CHECK-NEXT: DataTypeId: {{[0-9]+}} +CHECK-NEXT: TotalAccessDensity: 1 +CHECK-NEXT: MinAccessDensity: 1 +CHECK-NEXT: MaxAccessDensity: 1 +CHECK-NEXT: TotalLifetimeAccessDensity: 1000 +CHECK-NEXT: MinLifetimeAccessDensity: 1000 +CHECK-NEXT: MaxLifetimeAccessDensity: 1000 +CHECK-NEXT: AccessHistogramSize: 8 +CHECK-NEXT: AccessHistogram: {{[0-9]+}} +CHECK-NEXT: AccessHistogramValues: 1 0 0 0 0 0 0 0 +CHECK-NEXT: CallSites: +CHECK-NEXT: - +CHECK-NEXT: - +CHECK-NEXT: Function: {{[0-9]+}} +CHECK-NEXT: SymbolName: main +CHECK-NEXT: LineOffset: 59 +CHECK-NEXT: Column: 5 +CHECK-NEXT: Inline: 0 +CHECK-NEXT: - +CHECK-NEXT: - +CHECK-NEXT: Function: {{[0-9]+}} +CHECK-NEXT: SymbolName: main +CHECK-NEXT: LineOffset: 64 +CHECK-NEXT: Column: 5 +CHECK-NEXT: Inline: 0 +CHECK-NEXT: - +CHECK-NEXT: FunctionGUID: {{[0-9]+}} +CHECK-NEXT: AllocSites: +CHECK-NEXT: - +CHECK-NEXT: Callstack: +CHECK-NEXT: - +CHECK-NEXT: Function: {{[0-9]+}} +CHECK-NEXT: SymbolName: _Z3foov +CHECK-NEXT: LineOffset: 2 +CHECK-NEXT: Column: 10 +CHECK-NEXT: Inline: 0 +CHECK-NEXT: - +CHECK-NEXT: Function: {{[0-9]+}} +CHECK-NEXT: SymbolName: main +CHECK-NEXT: LineOffset: 59 +CHECK-NEXT: Column: 5 +CHECK-NEXT: Inline: 0 +CHECK-NEXT: MemInfoBlock: +CHECK-NEXT: AllocCount: 21 +CHECK-NEXT: TotalAccessCount: 168 +CHECK-NEXT: MinAccessCount: 8 +CHECK-NEXT: MaxAccessCount: 8 +CHECK-NEXT: TotalSize: 1344 +CHECK-NEXT: MinSize: 64 +CHECK-NEXT: MaxSize: 64 +CHECK-NEXT: AllocTimestamp: {{[0-9]+}} +CHECK-NEXT: DeallocTimestamp: {{[0-9]+}} +CHECK-NEXT: TotalLifetime: 0 +CHECK-NEXT: MinLifetime: 0 +CHECK-NEXT: MaxLifetime: 0 +CHECK-NEXT: AllocCpuId: {{[0-9]+}} +CHECK-NEXT: DeallocCpuId: {{[0-9]+}} +CHECK-NEXT: NumMigratedCpu: 0 +CHECK-NEXT: NumLifetimeOverlaps: 0 +CHECK-NEXT: NumSameAllocCpu: 20 +CHECK-NEXT: NumSameDeallocCpu: 20 +CHECK-NEXT: DataTypeId: {{[0-9]+}} +CHECK-NEXT: TotalAccessDensity: 252 +CHECK-NEXT: MinAccessDensity: 12 +CHECK-NEXT: MaxAccessDensity: 12 +CHECK-NEXT: TotalLifetimeAccessDensity: 252000 +CHECK-NEXT: MinLifetimeAccessDensity: 12000 +CHECK-NEXT: MaxLifetimeAccessDensity: 12000 +CHECK-NEXT: AccessHistogramSize: 8 +CHECK-NEXT: AccessHistogram: {{[0-9]+}} +CHECK-NEXT: AccessHistogramValues: 21 21 21 21 21 21 21 21 +CHECK-NEXT: - +CHECK-NEXT: FunctionGUID: {{[0-9]+}} +CHECK-NEXT: AllocSites: +CHECK-NEXT: - +CHECK-NEXT: Callstack: +CHECK-NEXT: - +CHECK-NEXT: Function: {{[0-9]+}} +CHECK-NEXT: SymbolName: _Z3barv +CHECK-NEXT: LineOffset: 2 +CHECK-NEXT: Column: 10 +CHECK-NEXT: Inline: 0 +CHECK-NEXT: - +CHECK-NEXT: Function: {{[0-9]+}} +CHECK-NEXT: SymbolName: main +CHECK-NEXT: LineOffset: 64 +CHECK-NEXT: Column: 5 +CHECK-NEXT: Inline: 0 +CHECK-NEXT: MemInfoBlock: +CHECK-NEXT: AllocCount: 21 +CHECK-NEXT: TotalAccessCount: 756 +CHECK-NEXT: MinAccessCount: 36 +CHECK-NEXT: MaxAccessCount: 36 +CHECK-NEXT: TotalSize: 1344 +CHECK-NEXT: MinSize: 64 +CHECK-NEXT: MaxSize: 64 +CHECK-NEXT: AllocTimestamp: {{[0-9]+}} +CHECK-NEXT: DeallocTimestamp: {{[0-9]+}} +CHECK-NEXT: TotalLifetime: 0 +CHECK-NEXT: MinLifetime: 0 +CHECK-NEXT: MaxLifetime: 0 +CHECK-NEXT: AllocCpuId: {{[0-9]+}} +CHECK-NEXT: DeallocCpuId: {{[0-9]+}} +CHECK-NEXT: NumMigratedCpu: 0 +CHECK-NEXT: NumLifetimeOverlaps: 0 +CHECK-NEXT: NumSameAllocCpu: 20 +CHECK-NEXT: NumSameDeallocCpu: 20 +CHECK-NEXT: DataTypeId: {{[0-9]+}} +CHECK-NEXT: TotalAccessDensity: 1176 +CHECK-NEXT: MinAccessDensity: 56 +CHECK-NEXT: MaxAccessDensity: 56 +CHECK-NEXT: TotalLifetimeAccessDensity: 1176000 +CHECK-NEXT: MinLifetimeAccessDensity: 56000 +CHECK-NEXT: MaxLifetimeAccessDensity: 56000 +CHECK-NEXT: AccessHistogramSize: 8 +CHECK-NEXT: AccessHistogram: {{[0-9]+}} +CHECK-NEXT: AccessHistogramValues: 168 147 126 105 84 63 42 21
\ No newline at end of file diff --git a/llvm/test/tools/llvm-profdata/memprof-basic.test b/llvm/test/tools/llvm-profdata/memprof-basic.test index 8eaa2fa1013f..e15df50bc165 100644 --- a/llvm/test/tools/llvm-profdata/memprof-basic.test +++ b/llvm/test/tools/llvm-profdata/memprof-basic.test @@ -8,7 +8,7 @@ additional allocations which do not originate from the main binary are pruned. CHECK: MemprofProfile: CHECK-NEXT: Summary: -CHECK-NEXT: Version: 3 +CHECK-NEXT: Version: 4 CHECK-NEXT: NumSegments: {{[0-9]+}} CHECK-NEXT: NumMibInfo: 2 CHECK-NEXT: NumAllocFunctions: 1 @@ -59,6 +59,8 @@ CHECK-NEXT: MaxAccessDensity: 20 CHECK-NEXT: TotalLifetimeAccessDensity: 20000 CHECK-NEXT: MinLifetimeAccessDensity: 20000 CHECK-NEXT: MaxLifetimeAccessDensity: 20000 +CHECK-NEXT: AccessHistogramSize: 0 +CHECK-NEXT: AccessHistogram: 0 CHECK-NEXT: - CHECK-NEXT: Callstack: CHECK-NEXT: - @@ -93,3 +95,5 @@ CHECK-NEXT: MaxAccessDensity: 20 CHECK-NEXT: TotalLifetimeAccessDensity: 20000 CHECK-NEXT: MinLifetimeAccessDensity: 20000 CHECK-NEXT: MaxLifetimeAccessDensity: 20000 +CHECK-NEXT: AccessHistogramSize: 0 +CHECK-NEXT: AccessHistogram: 0
\ No newline at end of file diff --git a/llvm/test/tools/llvm-profdata/memprof-basic_v3.test b/llvm/test/tools/llvm-profdata/memprof-basic_v3.test new file mode 100644 index 000000000000..3c10c574c403 --- /dev/null +++ b/llvm/test/tools/llvm-profdata/memprof-basic_v3.test @@ -0,0 +1,102 @@ +REQUIRES: x86_64-linux + +This is a copy of memprof-basic.test with slight changes to check that we can still read v3 of memprofraw. + +Inputs cannot and should not be updated. + +RUN: llvm-profdata show --memory %p/Inputs/basic_v3.memprofraw --profiled-binary %p/Inputs/basic_v3.memprofexe -o - | FileCheck %s + +We expect 2 MIB entries, 1 each for the malloc calls in the program. Any +additional allocations which do not originate from the main binary are pruned. + +CHECK: MemprofProfile: +CHECK-NEXT: Summary: +CHECK-NEXT: Version: 3 +CHECK-NEXT: NumSegments: {{[0-9]+}} +CHECK-NEXT: NumMibInfo: 2 +CHECK-NEXT: NumAllocFunctions: 1 +CHECK-NEXT: NumStackOffsets: 2 +CHECK-NEXT: Segments: +CHECK-NEXT: - +CHECK-NEXT: BuildId: {{[[:xdigit:]]+}} +CHECK-NEXT: Start: 0x{{[[:xdigit:]]+}} +CHECK-NEXT: End: 0x{{[[:xdigit:]]+}} +CHECK-NEXT: Offset: 0x{{[[:xdigit:]]+}} +CHECK-NEXT: - + +CHECK: Records: +CHECK-NEXT: - +CHECK-NEXT: FunctionGUID: {{[0-9]+}} +CHECK-NEXT: AllocSites: +CHECK-NEXT: - +CHECK-NEXT: Callstack: +CHECK-NEXT: - +CHECK-NEXT: Function: {{[0-9]+}} +CHECK-NEXT: SymbolName: main +CHECK-NEXT: LineOffset: 1 +CHECK-NEXT: Column: 21 +CHECK-NEXT: Inline: 0 +CHECK-NEXT: MemInfoBlock: +CHECK-NEXT: AllocCount: 1 +CHECK-NEXT: TotalAccessCount: 2 +CHECK-NEXT: MinAccessCount: 2 +CHECK-NEXT: MaxAccessCount: 2 +CHECK-NEXT: TotalSize: 10 +CHECK-NEXT: MinSize: 10 +CHECK-NEXT: MaxSize: 10 +CHECK-NEXT: AllocTimestamp: {{[0-9]+}} +CHECK-NEXT: DeallocTimestamp: {{[0-9]+}} +CHECK-NEXT: TotalLifetime: 0 +CHECK-NEXT: MinLifetime: 0 +CHECK-NEXT: MaxLifetime: 0 +CHECK-NEXT: AllocCpuId: {{[0-9]+}} +CHECK-NEXT: DeallocCpuId: {{[0-9]+}} +CHECK-NEXT: NumMigratedCpu: 0 +CHECK-NEXT: NumLifetimeOverlaps: 0 +CHECK-NEXT: NumSameAllocCpu: 0 +CHECK-NEXT: NumSameDeallocCpu: 0 +CHECK-NEXT: DataTypeId: {{[0-9]+}} +CHECK-NEXT: TotalAccessDensity: 20 +CHECK-NEXT: MinAccessDensity: 20 +CHECK-NEXT: MaxAccessDensity: 20 +CHECK-NEXT: TotalLifetimeAccessDensity: 20000 +CHECK-NEXT: MinLifetimeAccessDensity: 20000 +CHECK-NEXT: MaxLifetimeAccessDensity: 20000 +CHECK-NEXT: AccessHistogramSize: 0 +CHECK-NEXT: AccessHistogram: 0 +CHECK-NEXT: - +CHECK-NEXT: Callstack: +CHECK-NEXT: - +CHECK-NEXT: Function: {{[0-9]+}} +CHECK-NEXT: SymbolName: main +CHECK-NEXT: LineOffset: 4 +CHECK-NEXT: Column: 15 +CHECK-NEXT: Inline: 0 +CHECK-NEXT: MemInfoBlock: +CHECK-NEXT: AllocCount: 1 +CHECK-NEXT: TotalAccessCount: 2 +CHECK-NEXT: MinAccessCount: 2 +CHECK-NEXT: MaxAccessCount: 2 +CHECK-NEXT: TotalSize: 10 +CHECK-NEXT: MinSize: 10 +CHECK-NEXT: MaxSize: 10 +CHECK-NEXT: AllocTimestamp: {{[0-9]+}} +CHECK-NEXT: DeallocTimestamp: {{[0-9]+}} +CHECK-NEXT: TotalLifetime: 0 +CHECK-NEXT: MinLifetime: 0 +CHECK-NEXT: MaxLifetime: 0 +CHECK-NEXT: AllocCpuId: {{[0-9]+}} +CHECK-NEXT: DeallocCpuId: {{[0-9]+}} +CHECK-NEXT: NumMigratedCpu: 0 +CHECK-NEXT: NumLifetimeOverlaps: 0 +CHECK-NEXT: NumSameAllocCpu: 0 +CHECK-NEXT: NumSameDeallocCpu: 0 +CHECK-NEXT: DataTypeId: {{[0-9]+}} +CHECK-NEXT: TotalAccessDensity: 20 +CHECK-NEXT: MinAccessDensity: 20 +CHECK-NEXT: MaxAccessDensity: 20 +CHECK-NEXT: TotalLifetimeAccessDensity: 20000 +CHECK-NEXT: MinLifetimeAccessDensity: 20000 +CHECK-NEXT: MaxLifetimeAccessDensity: 20000 +CHECK-NEXT: AccessHistogramSize: 0 +CHECK-NEXT: AccessHistogram: 0
\ No newline at end of file diff --git a/llvm/test/tools/llvm-profdata/memprof-inline.test b/llvm/test/tools/llvm-profdata/memprof-inline.test index dd842c054208..79ce2ad83848 100644 --- a/llvm/test/tools/llvm-profdata/memprof-inline.test +++ b/llvm/test/tools/llvm-profdata/memprof-inline.test @@ -5,7 +5,7 @@ RUN: llvm-profdata show --memory %p/Inputs/inline.memprofraw --profiled-binary % CHECK: MemprofProfile: CHECK-NEXT: Summary: -CHECK-NEXT: Version: 3 +CHECK-NEXT: Version: 4 CHECK-NEXT: NumSegments: {{[0-9]+}} CHECK-NEXT: NumMibInfo: 2 CHECK-NEXT: NumAllocFunctions: 2 @@ -20,25 +20,25 @@ CHECK-NEXT: - CHECK: Records: CHECK-NEXT: - -CHECK-NEXT: FunctionGUID: 15505678318020221912 +CHECK-NEXT: FunctionGUID: 3873612792189045660 CHECK-NEXT: AllocSites: CHECK-NEXT: - CHECK-NEXT: Callstack: CHECK-NEXT: - -CHECK-NEXT: Function: 15505678318020221912 -CHECK-NEXT: SymbolName: qux +CHECK-NEXT: Function: 3873612792189045660 +CHECK-NEXT: SymbolName: _Z3quxi CHECK-NEXT: LineOffset: 1 -CHECK-NEXT: Column: 15 +CHECK-NEXT: Column: 23 CHECK-NEXT: Inline: 1 CHECK-NEXT: - -CHECK-NEXT: Function: 6699318081062747564 -CHECK-NEXT: SymbolName: foo +CHECK-NEXT: Function: 1228452328526475178 +CHECK-NEXT: SymbolName: _Z3fooi CHECK-NEXT: LineOffset: 0 CHECK-NEXT: Column: 18 CHECK-NEXT: Inline: 0 CHECK-NEXT: - -CHECK-NEXT: Function: 16434608426314478903 -CHECK-NEXT: SymbolName: bar +CHECK-NEXT: Function: 3727899762981752933 +CHECK-NEXT: SymbolName: _Z3bari CHECK-NEXT: LineOffset: 0 CHECK-NEXT: Column: 19 CHECK-NEXT: Inline: 0 @@ -74,26 +74,30 @@ CHECK-NEXT: MaxAccessDensity: 100 CHECK-NEXT: TotalLifetimeAccessDensity: 100000 CHECK-NEXT: MinLifetimeAccessDensity: 100000 CHECK-NEXT: MaxLifetimeAccessDensity: 100000 +CHECK-NEXT: AccessHistogramSize: 0 +CHECK-NEXT: AccessHistogram: 0 + + CHECK-NEXT: - -CHECK-NEXT: FunctionGUID: 6699318081062747564 +CHECK-NEXT: FunctionGUID: 1228452328526475178 CHECK-NEXT: AllocSites: CHECK-NEXT: - CHECK-NEXT: Callstack: CHECK-NEXT: - -CHECK-NEXT: Function: 15505678318020221912 -CHECK-NEXT: SymbolName: qux +CHECK-NEXT: Function: 3873612792189045660 +CHECK-NEXT: SymbolName: _Z3quxi CHECK-NEXT: LineOffset: 1 -CHECK-NEXT: Column: 15 +CHECK-NEXT: Column: 23 CHECK-NEXT: Inline: 1 CHECK-NEXT: - -CHECK-NEXT: Function: 6699318081062747564 -CHECK-NEXT: SymbolName: foo +CHECK-NEXT: Function: 1228452328526475178 +CHECK-NEXT: SymbolName: _Z3fooi CHECK-NEXT: LineOffset: 0 CHECK-NEXT: Column: 18 CHECK-NEXT: Inline: 0 CHECK-NEXT: - -CHECK-NEXT: Function: 16434608426314478903 -CHECK-NEXT: SymbolName: bar +CHECK-NEXT: Function: 3727899762981752933 +CHECK-NEXT: SymbolName: _Z3bari CHECK-NEXT: LineOffset: 0 CHECK-NEXT: Column: 19 CHECK-NEXT: Inline: 0 @@ -129,28 +133,31 @@ CHECK-NEXT: MaxAccessDensity: 100 CHECK-NEXT: TotalLifetimeAccessDensity: 100000 CHECK-NEXT: MinLifetimeAccessDensity: 100000 CHECK-NEXT: MaxLifetimeAccessDensity: 100000 +CHECK-NEXT: AccessHistogramSize: 0 +CHECK-NEXT: AccessHistogram: 0 + CHECK-NEXT: CallSites: CHECK-NEXT: - CHECK-NEXT: - -CHECK-NEXT: Function: 15505678318020221912 -CHECK-NEXT: SymbolName: qux +CHECK-NEXT: Function: 3873612792189045660 +CHECK-NEXT: SymbolName: _Z3quxi CHECK-NEXT: LineOffset: 1 -CHECK-NEXT: Column: 15 +CHECK-NEXT: Column: 23 CHECK-NEXT: Inline: 1 CHECK-NEXT: - CHECK-NEXT: - -CHECK-NEXT: Function: 6699318081062747564 -CHECK-NEXT: SymbolName: foo +CHECK-NEXT: Function: 1228452328526475178 +CHECK-NEXT: SymbolName: _Z3fooi CHECK-NEXT: LineOffset: 0 CHECK-NEXT: Column: 18 CHECK-NEXT: Inline: 0 CHECK-NEXT: - -CHECK-NEXT: FunctionGUID: 16434608426314478903 +CHECK-NEXT: FunctionGUID: 3727899762981752933 CHECK-NEXT: CallSites: CHECK-NEXT: - CHECK-NEXT: - -CHECK-NEXT: Function: 16434608426314478903 -CHECK-NEXT: SymbolName: bar +CHECK-NEXT: Function: 3727899762981752933 +CHECK-NEXT: SymbolName: _Z3bari CHECK-NEXT: LineOffset: 0 CHECK-NEXT: Column: 19 CHECK-NEXT: Inline: 0 diff --git a/llvm/test/tools/llvm-profdata/memprof-multi.test b/llvm/test/tools/llvm-profdata/memprof-multi.test index f3cdbd1f5266..62439823defd 100644 --- a/llvm/test/tools/llvm-profdata/memprof-multi.test +++ b/llvm/test/tools/llvm-profdata/memprof-multi.test @@ -7,7 +7,7 @@ We expect 2 MIB entries, 1 each for the malloc calls in the program. CHECK: MemprofProfile: CHECK-NEXT: Summary: -CHECK-NEXT: Version: 3 +CHECK-NEXT: Version: 4 CHECK-NEXT: NumSegments: {{[0-9]+}} CHECK-NEXT: NumMibInfo: 2 CHECK-NEXT: NumAllocFunctions: 1 diff --git a/llvm/test/tools/llvm-profdata/memprof-padding-histogram.test b/llvm/test/tools/llvm-profdata/memprof-padding-histogram.test new file mode 100644 index 000000000000..4ba58e3c870d --- /dev/null +++ b/llvm/test/tools/llvm-profdata/memprof-padding-histogram.test @@ -0,0 +1,99 @@ +REQUIRES: x86_64-linux + +To update the inputs used below run Inputs/update_memprof_inputs.sh /path/to/updated/clang +RUN: llvm-profdata show --memory %p/Inputs/padding-histogram.memprofraw --profiled-binary %p/Inputs/padding-histogram.memprofexe -o - | FileCheck %s + +We expect 2 different MIBs with histogram values. This test is to make sure we properly deal with padding. + +CHECK: MemprofProfile: +CHECK-NEXT: Summary: +CHECK-NEXT: Version: 4 +CHECK-NEXT: NumSegments: {{[0-9]+}} +CHECK-NEXT: NumMibInfo: 2 +CHECK-NEXT: NumAllocFunctions: 1 +CHECK-NEXT: NumStackOffsets: 2 +CHECK-NEXT: Segments: +CHECK-NEXT: - +CHECK-NEXT: BuildId: {{[[:xdigit:]]+}} +CHECK-NEXT: Start: 0x{{[[:xdigit:]]+}} +CHECK-NEXT: End: 0x{{[[:xdigit:]]+}} +CHECK-NEXT: Offset: 0x{{[[:xdigit:]]+}} +CHECK-NEXT: - + +CHECK: Records: +CHEC-NEXT FunctionGUID: {{[0-9]+}} +CHEC-NEXT AllocSites: +CHEC-NEXT - +CHEC-NEXT Callstack: +CHEC-NEXT - +CHEC-NEXT Function: {{[0-9]+}} +CHEC-NEXT SymbolName: main +CHEC-NEXT LineOffset: 3 +CHEC-NEXT Column: 10 +CHEC-NEXT Inline: 0 +CHEC-NEXT MemInfoBlock: +CHEC-NEXT AllocCount: 1 +CHEC-NEXT TotalAccessCount: 5 +CHEC-NEXT MinAccessCount: 5 +CHEC-NEXT MaxAccessCount: 5 +CHEC-NEXT TotalSize: 24 +CHEC-NEXT MinSize: 24 +CHEC-NEXT MaxSize: 24 +CHEC-NEXT AllocTimestamp: {{[0-9]+}} +CHEC-NEXT DeallocTimestamp: {{[0-9]+}} +CHEC-NEXT TotalLifetime: 0 +CHEC-NEXT MinLifetime: 0 +CHEC-NEXT MaxLifetime: 0 +CHEC-NEXT AllocCpuId: 11 +CHEC-NEXT DeallocCpuId: 11 +CHEC-NEXT NumMigratedCpu: 0 +CHEC-NEXT NumLifetimeOverlaps: 0 +CHEC-NEXT NumSameAllocCpu: 0 +CHEC-NEXT NumSameDeallocCpu: 0 +CHEC-NEXT DataTypeId: 0 +CHEC-NEXT TotalAccessDensity: 20 +CHEC-NEXT MinAccessDensity: 20 +CHEC-NEXT MaxAccessDensity: 20 +CHEC-NEXT TotalLifetimeAccessDensity: 20000 +CHEC-NEXT MinLifetimeAccessDensity: 20000 +CHEC-NEXT MaxLifetimeAccessDensity: 20000 +CHEC-NEXT AccessHistogramSize: 3 +CHEC-NEXT AccessHistogram: {{[0-9]+}} +CHEC-NEXT AccessHistogramValues: -2 -1 -2 +CHEC-NEXT - +CHEC-NEXT Callstack: +CHEC-NEXT - +CHEC-NEXT Function: {{[0-9]+}} +CHEC-NEXT SymbolName: main +CHEC-NEXT LineOffset: 10 +CHEC-NEXT Column: 10 +CHEC-NEXT Inline: 0 +CHEC-NEXT MemInfoBlock: +CHEC-NEXT AllocCount: 1 +CHEC-NEXT TotalAccessCount: 4 +CHEC-NEXT MinAccessCount: 4 +CHEC-NEXT MaxAccessCount: 4 +CHEC-NEXT TotalSize: 48 +CHEC-NEXT MinSize: 48 +CHEC-NEXT MaxSize: 48 +CHEC-NEXT AllocTimestamp: {{[0-9]+}} +CHEC-NEXT DeallocTimestamp: {{[0-9]+}} +CHEC-NEXT TotalLifetime: 0 +CHEC-NEXT MinLifetime: 0 +CHEC-NEXT MaxLifetime: 0 +CHEC-NEXT AllocCpuId: 11 +CHEC-NEXT DeallocCpuId: 11 +CHEC-NEXT NumMigratedCpu: 0 +CHEC-NEXT NumLifetimeOverlaps: 0 +CHEC-NEXT NumSameAllocCpu: 0 +CHEC-NEXT NumSameDeallocCpu: 0 +CHEC-NEXT DataTypeId: 0 +CHEC-NEXT TotalAccessDensity: 8 +CHEC-NEXT MinAccessDensity: 8 +CHEC-NEXT MaxAccessDensity: 8 +CHEC-NEXT TotalLifetimeAccessDensity: 8000 +CHEC-NEXT MinLifetimeAccessDensity: 8000 +CHEC-NEXT MaxLifetimeAccessDensity: 8000 +CHEC-NEXT AccessHistogramSize: 6 +CHEC-NEXT AccessHistogram: {{[0-9]+}} +CHEC-NEXT AccessHistogramValues: -2 -0 -0 -0 -1 -1
\ No newline at end of file diff --git a/llvm/test/tools/llvm-profdata/memprof-pic.test b/llvm/test/tools/llvm-profdata/memprof-pic.test index 03c98ed9200d..78d2c5c54feb 100644 --- a/llvm/test/tools/llvm-profdata/memprof-pic.test +++ b/llvm/test/tools/llvm-profdata/memprof-pic.test @@ -11,7 +11,7 @@ RUN: llvm-profdata show --memory %p/Inputs/pic.memprofraw --profiled-binary %p/I CHECK: MemprofProfile: CHECK-NEXT: Summary: -CHECK-NEXT: Version: 3 +CHECK-NEXT: Version: 4 CHECK-NEXT: NumSegments: {{[0-9]+}} CHECK-NEXT: NumMibInfo: 2 CHECK-NEXT: NumAllocFunctions: 1 @@ -62,6 +62,9 @@ CHECK-NEXT: MaxAccessDensity: 20 CHECK-NEXT: TotalLifetimeAccessDensity: 20000 CHECK-NEXT: MinLifetimeAccessDensity: 20000 CHECK-NEXT: MaxLifetimeAccessDensity: 20000 +CHECK-NEXT: AccessHistogramSize: 0 +CHECK-NEXT: AccessHistogram: 0 + CHECK-NEXT: - CHECK-NEXT: Callstack: CHECK-NEXT: - @@ -96,3 +99,5 @@ CHECK-NEXT: MaxAccessDensity: 20 CHECK-NEXT: TotalLifetimeAccessDensity: 20000 CHECK-NEXT: MinLifetimeAccessDensity: 20000 CHECK-NEXT: MaxLifetimeAccessDensity: 20000 +CHECK-NEXT: AccessHistogramSize: 0 +CHECK-NEXT: AccessHistogram: 0
\ No newline at end of file diff --git a/llvm/test/tools/llvm-profdata/vtable-value-prof.test b/llvm/test/tools/llvm-profdata/vtable-value-prof.test index 378c2e11b236..8dc8f6f0d480 100644 --- a/llvm/test/tools/llvm-profdata/vtable-value-prof.test +++ b/llvm/test/tools/llvm-profdata/vtable-value-prof.test @@ -1,7 +1,7 @@ ; RUN: rm -rf %t && mkdir %t && cd %t ; Generate indexed profiles from text profiles -RUN: llvm-profdata merge %S/Inputs/vtable-value-prof.proftext -o indexed.profdata +RUN: llvm-profdata merge --keep-vtable-symbols %S/Inputs/vtable-value-prof.proftext -o indexed.profdata ; Show indexed profiles RUN: llvm-profdata show --function=main --ic-targets --show-vtables indexed.profdata | FileCheck %s --check-prefix=INDEXED @@ -10,7 +10,7 @@ RUN: llvm-profdata show --function=main --ic-targets --show-vtables indexed.prof RUN: llvm-profdata show --function=main --ic-targets --show-vtables --text %S/Inputs/vtable-value-prof.proftext | FileCheck %s --check-prefix=ICTEXT ; Convert indexed profiles to its textual output and show it. -RUN: llvm-profdata merge --text -o text-from-indexed.proftext indexed.profdata +RUN: llvm-profdata merge --keep-vtable-symbols --text -o text-from-indexed.proftext indexed.profdata RUN: llvm-profdata show --function=main --ic-targets --show-vtables text-from-indexed.proftext | FileCheck %s --check-prefix=INDEXED RUN: llvm-profdata show --function=main --ic-targets --show-vtables --text text-from-indexed.proftext | FileCheck %s --check-prefix=ICTEXT diff --git a/llvm/test/tools/llvm-rc/windres-prefix.test b/llvm/test/tools/llvm-rc/windres-prefix.test index 7dda51d06352..a90766628470 100644 --- a/llvm/test/tools/llvm-rc/windres-prefix.test +++ b/llvm/test/tools/llvm-rc/windres-prefix.test @@ -1,3 +1,6 @@ +; This test uses symlinks. +; UNSUPPORTED: system-windows + ; RUN: rm -rf %t && mkdir %t ; Check that a triple prefix on the executable gets picked up as target triple. diff --git a/llvm/test/tools/llvm-rc/windres-preproc.test b/llvm/test/tools/llvm-rc/windres-preproc.test index 13f82299a074..52427862e760 100644 --- a/llvm/test/tools/llvm-rc/windres-preproc.test +++ b/llvm/test/tools/llvm-rc/windres-preproc.test @@ -1,7 +1,6 @@ ;; Some quoted arguments below don't work properly on Windows when llvm-lit -;; invokes the cmd shell to run the commands. Just require running in a -;; posix shell, to keep being able to test this corner case on Unix at least. -; REQUIRES: shell +;; invokes the cmd shell to run the commands. +; UNSUPPORTED: system-windows ; RUN: llvm-windres -### --include-dir %p/incdir1 --include %p/incdir2 "-DFOO1=\\\"foo bar\\\"" -UFOO2 -D FOO3 --preprocessor-arg "-DFOO4=\\\"baz baz\\\"" -DFOO5=\"bar\" %p/Inputs/empty.rc %t.res | FileCheck %s --check-prefix=CHECK1 ; RUN: llvm-windres -### --include-dir %p/incdir1 --include %p/incdir2 "-DFOO1=\"foo bar\"" -UFOO2 -D FOO3 --preprocessor-arg "-DFOO4=\"baz baz\"" "-DFOO5=bar" %p/Inputs/empty.rc %t.res --use-temp-file | FileCheck %s --check-prefix=CHECK1 diff --git a/llvm/test/tools/llvm-readobj/ELF/dynamic-malformed.test b/llvm/test/tools/llvm-readobj/ELF/dynamic-malformed.test index d160ea87208c..05be15775e9e 100644 --- a/llvm/test/tools/llvm-readobj/ELF/dynamic-malformed.test +++ b/llvm/test/tools/llvm-readobj/ELF/dynamic-malformed.test @@ -100,15 +100,15 @@ ProgramHeaders: # BAD-STRING-LLVM-NEXT: 0x0000000000000005 STRTAB 0x1000 # BAD-STRING-LLVM-NEXT: 0x000000000000000A STRSZ 1 (bytes) # BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb2: it goes past the end of the table (0xb1) -# BAD-STRING-LLVM-NEXT: 0x0000000000000001 NEEDED Shared library: [<?>] +# BAD-STRING-LLVM-NEXT: 0x0000000000000001 NEEDED Shared library: <?> # BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb3: it goes past the end of the table (0xb1) -# BAD-STRING-LLVM-NEXT: 0x000000007FFFFFFF FILTER Filter library: [<?>] +# BAD-STRING-LLVM-NEXT: 0x000000007FFFFFFF FILTER Filter library: <?> # BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb4: it goes past the end of the table (0xb1) -# BAD-STRING-LLVM-NEXT: 0x000000007FFFFFFD AUXILIARY Auxiliary library: [<?>] +# BAD-STRING-LLVM-NEXT: 0x000000007FFFFFFD AUXILIARY Auxiliary library: <?> # BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb5: it goes past the end of the table (0xb1) -# BAD-STRING-LLVM-NEXT: 0x000000007FFFFFFE USED Not needed object: [<?>] +# BAD-STRING-LLVM-NEXT: 0x000000007FFFFFFE USED Not needed object: <?> ## Note: there is no "string table at offset 0xb0..." warning here, because it was printed earlier. -# BAD-STRING-LLVM-NEXT: 0x000000000000000E SONAME Library soname: [<?>] +# BAD-STRING-LLVM-NEXT: 0x000000000000000E SONAME Library soname: <?> # BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb7: it goes past the end of the table (0xb1) # BAD-STRING-LLVM-NEXT: 0x000000000000000F RPATH Library rpath: [<?>] # BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb8: it goes past the end of the table (0xb1) @@ -121,15 +121,15 @@ ProgramHeaders: # BAD-STRING-GNU-NEXT: 0x0000000000000005 (STRTAB) 0x1000 # BAD-STRING-GNU-NEXT: 0x000000000000000a (STRSZ) 1 (bytes) # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb2: it goes past the end of the table (0xb1) -# BAD-STRING-GNU-NEXT: 0x0000000000000001 (NEEDED) Shared library: [<?>] +# BAD-STRING-GNU-NEXT: 0x0000000000000001 (NEEDED) Shared library: <?> # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb3: it goes past the end of the table (0xb1) -# BAD-STRING-GNU-NEXT: 0x000000007fffffff (FILTER) Filter library: [<?>] +# BAD-STRING-GNU-NEXT: 0x000000007fffffff (FILTER) Filter library: <?> # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb4: it goes past the end of the table (0xb1) -# BAD-STRING-GNU-NEXT: 0x000000007ffffffd (AUXILIARY) Auxiliary library: [<?>] +# BAD-STRING-GNU-NEXT: 0x000000007ffffffd (AUXILIARY) Auxiliary library: <?> # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb5: it goes past the end of the table (0xb1) -# BAD-STRING-GNU-NEXT: 0x000000007ffffffe (USED) Not needed object: [<?>] +# BAD-STRING-GNU-NEXT: 0x000000007ffffffe (USED) Not needed object: <?> # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb6: it goes past the end of the table (0xb1) -# BAD-STRING-GNU-NEXT: 0x000000000000000e (SONAME) Library soname: [<?>] +# BAD-STRING-GNU-NEXT: 0x000000000000000e (SONAME) Library soname: <?> # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb7: it goes past the end of the table (0xb1) # BAD-STRING-GNU-NEXT: 0x000000000000000f (RPATH) Library rpath: [<?>] # BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb8: it goes past the end of the table (0xb1) @@ -199,8 +199,8 @@ ProgramHeaders: # BAD-STRTAB-ERR2: warning: '[[FILE]]': unable to parse DT_STRTAB: virtual address is not in any segment: 0x2000000 # BAD-STRTAB-LLVM: LoadName: <Not found> # BAD-STRTAB: warning: '[[FILE]]': string table was not found -# BAD-STRTAB-LLVM-NEXT: 0x0000000000000001 NEEDED Shared library: [<?>] -# BAD-STRTAB-GNU-NEXT: 0x0000000000000001 (NEEDED) Shared library: [<?>] +# BAD-STRTAB-LLVM-NEXT: 0x0000000000000001 NEEDED Shared library: <?> +# BAD-STRTAB-GNU-NEXT: 0x0000000000000001 (NEEDED) Shared library: <?> # BAD-STRTAB: NeededLibraries [ # BAD-STRTAB: <?> # BAD-STRTAB: ] @@ -313,15 +313,15 @@ ProgramHeaders: # NOT-TERMINATED-LLVM: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb4: the string table is not null-terminated # NOT-TERMINATED: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb0: the string table is not null-terminated -# NOT-TERMINATED-NEXT: {{[(]?}}NEEDED{{[)]?}} Shared library: [<?>] +# NOT-TERMINATED-NEXT: {{[(]?}}NEEDED{{[)]?}} Shared library: <?> # NOT-TERMINATED-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb1: the string table is not null-terminated -# NOT-TERMINATED-NEXT: {{[(]?}}FILTER{{[)]?}} Filter library: [<?>] +# NOT-TERMINATED-NEXT: {{[(]?}}FILTER{{[)]?}} Filter library: <?> # NOT-TERMINATED-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb2: the string table is not null-terminated -# NOT-TERMINATED-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: [<?>] +# NOT-TERMINATED-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: <?> # NOT-TERMINATED-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb3: the string table is not null-terminated -# NOT-TERMINATED-NEXT: {{[(]?}}USED{{[)]?}} Not needed object: [<?>] +# NOT-TERMINATED-NEXT: {{[(]?}}USED{{[)]?}} Not needed object: <?> # NOT-TERMINATED-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb4: the string table is not null-terminated -# NOT-TERMINATED-NEXT: {{[(]?}}SONAME{{[)]?}} Library soname: [<?>] +# NOT-TERMINATED-NEXT: {{[(]?}}SONAME{{[)]?}} Library soname: <?> # NOT-TERMINATED-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb5: the string table is not null-terminated # NOT-TERMINATED-NEXT: {{[(]?}}RPATH{{[)]?}} Library rpath: [<?>] # NOT-TERMINATED-GREQ-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb6: the string table is not null-terminated @@ -390,11 +390,11 @@ ProgramHeaders: ## as normal. Since the file ends with a zero byte, strings are dumped, but if it didn't, ## we'd get <?> printed instead. The important bit is that we don't get the past the end warning. -# BEFORE-THE-EOF: {{[(]?}}NEEDED{{[)]?}} Shared library: [test.soabc] -# BEFORE-THE-EOF-NEXT: {{[(]?}}FILTER{{[)]?}} Filter library: [est.soabc] -# BEFORE-THE-EOF-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: [st.soabc] -# BEFORE-THE-EOF-NEXT: {{[(]?}}USED{{[)]?}} Not needed object: [t.soabc] -# BEFORE-THE-EOF-NEXT: {{[(]?}}SONAME{{[)]?}} Library soname: [.soabc] +# BEFORE-THE-EOF: {{[(]?}}NEEDED{{[)]?}} Shared library: test.soabc +# BEFORE-THE-EOF-NEXT: {{[(]?}}FILTER{{[)]?}} Filter library: est.soabc +# BEFORE-THE-EOF-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: st.soabc +# BEFORE-THE-EOF-NEXT: {{[(]?}}USED{{[)]?}} Not needed object: t.soabc +# BEFORE-THE-EOF-NEXT: {{[(]?}}SONAME{{[)]?}} Library soname: .soabc # BEFORE-THE-EOF-NEXT: {{[(]?}}RPATH{{[)]?}} Library rpath: [soabc] # BEFORE-THE-EOF-NEXT: {{[(]?}}RUNPATH{{[)]?}} Library runpath: [oabc] # BEFORE-THE-EOF-NEXT: {{[(]?}}NULL{{[)]?}} 0x0 @@ -406,11 +406,11 @@ ProgramHeaders: # PAST-THE-EOF: warning: '[[FILE]]': the dynamic string table at 0xb0 goes past the end of the file (0x2c0) with DT_STRSZ = 0x211 # PAST-THE-EOF: warning: '[[FILE]]': string table was not found -# PAST-THE-EOF: {{[(]?}}NEEDED{{[)]?}} Shared library: [<?>] -# PAST-THE-EOF-NEXT: {{[(]?}}FILTER{{[)]?}} Filter library: [<?>] -# PAST-THE-EOF-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: [<?>] -# PAST-THE-EOF-NEXT: {{[(]?}}USED{{[)]?}} Not needed object: [<?>] -# PAST-THE-EOF-NEXT: {{[(]?}}SONAME{{[)]?}} Library soname: [<?>] +# PAST-THE-EOF: {{[(]?}}NEEDED{{[)]?}} Shared library: <?> +# PAST-THE-EOF-NEXT: {{[(]?}}FILTER{{[)]?}} Filter library: <?> +# PAST-THE-EOF-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: <?> +# PAST-THE-EOF-NEXT: {{[(]?}}USED{{[)]?}} Not needed object: <?> +# PAST-THE-EOF-NEXT: {{[(]?}}SONAME{{[)]?}} Library soname: <?> # PAST-THE-EOF-NEXT: {{[(]?}}RPATH{{[)]?}} Library rpath: [<?>] # PAST-THE-EOF-NEXT: {{[(]?}}RUNPATH{{[)]?}} Library runpath: [<?>] # PAST-THE-EOF-NEXT: {{[(]?}}NULL{{[)]?}} 0x0 diff --git a/llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test b/llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test index 5610ed872df5..e25f64ca2202 100644 --- a/llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test +++ b/llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test @@ -8,10 +8,12 @@ # RUN: llvm-readelf --dynamic-table %t1 \ # RUN: | FileCheck %s --strict-whitespace --match-full-lines --check-prefix=GNU64 # RUN: llvm-readelf -d %t1 | FileCheck %s --check-prefix=GNU64 +# RUN: llvm-readelf --dynamic-table --pretty-print --elf-output-style=JSON %t1 \ +# RUN: | FileCheck %s --strict-whitespace --check-prefix=JSON64 # LLVM64:DynamicSection [ (61 entries) # LLVM64-NEXT: Tag Type Name/Value -# LLVM64-NEXT: 0x0000000000000001 NEEDED Shared library: [D] +# LLVM64-NEXT: 0x0000000000000001 NEEDED Shared library: D # LLVM64-NEXT: 0x0000000000000002 PLTRELSZ 16 (bytes) # LLVM64-NEXT: 0x0000000000000003 PLTGOT 0x1000 # LLVM64-NEXT: 0x0000000000000004 HASH 0x1000 @@ -24,8 +26,8 @@ # LLVM64-NEXT: 0x000000000000000B SYMENT 2439 (bytes) # LLVM64-NEXT: 0x000000000000000C INIT 0x1000 # LLVM64-NEXT: 0x000000000000000D FINI 0x1000 -# LLVM64-NEXT: 0x000000000000000E SONAME Library soname: [U] -# LLVM64-NEXT: 0x000000000000000F RPATH Library rpath: [f] +# LLVM64-NEXT: 0x000000000000000E SONAME Library soname: U +# LLVM64-NEXT: 0x000000000000000F RPATH Library rpath: [x:w:U] # LLVM64-NEXT: 0x0000000000000010 SYMBOLIC 0x1234567890ABCDEF # LLVM64-NEXT: 0x0000000000000011 REL 0x1000 # LLVM64-NEXT: 0x0000000000000012 RELSZ 16 (bytes) @@ -65,9 +67,9 @@ # LLVM64-NEXT: 0x000000006FFFFFFD VERDEFNUM 0 # LLVM64-NEXT: 0x000000006FFFFFFE VERNEED 0x1000 # LLVM64-NEXT: 0x000000006FFFFFFF VERNEEDNUM 0 -# LLVM64-NEXT: 0x000000007FFFFFFD AUXILIARY Auxiliary library: [D] -# LLVM64-NEXT: 0x000000007FFFFFFE USED Not needed object: [U] -# LLVM64-NEXT: 0x000000007FFFFFFF FILTER Filter library: [U] +# LLVM64-NEXT: 0x000000007FFFFFFD AUXILIARY Auxiliary library: D +# LLVM64-NEXT: 0x000000007FFFFFFE USED Not needed object: U +# LLVM64-NEXT: 0x000000007FFFFFFF FILTER Filter library: U # LLVM64-NEXT: 0x0000000012345678 <unknown:>0x12345678 0x8765432187654321 # LLVM64-NEXT: 0x000000006ABCDEF0 <unknown:>0x6abcdef0 0x9988776655443322 # LLVM64-NEXT: 0x0000000076543210 <unknown:>0x76543210 0x5555666677778888 @@ -76,7 +78,7 @@ # GNU64:Dynamic section at offset {{.*}} contains 61 entries: # GNU64-NEXT: Tag Type Name/Value -# GNU64-NEXT: 0x0000000000000001 (NEEDED) Shared library: [D] +# GNU64-NEXT: 0x0000000000000001 (NEEDED) Shared library: D # GNU64-NEXT: 0x0000000000000002 (PLTRELSZ) 16 (bytes) # GNU64-NEXT: 0x0000000000000003 (PLTGOT) 0x1000 # GNU64-NEXT: 0x0000000000000004 (HASH) 0x1000 @@ -89,8 +91,8 @@ # GNU64-NEXT: 0x000000000000000b (SYMENT) 2439 (bytes) # GNU64-NEXT: 0x000000000000000c (INIT) 0x1000 # GNU64-NEXT: 0x000000000000000d (FINI) 0x1000 -# GNU64-NEXT: 0x000000000000000e (SONAME) Library soname: [U] -# GNU64-NEXT: 0x000000000000000f (RPATH) Library rpath: [f] +# GNU64-NEXT: 0x000000000000000e (SONAME) Library soname: U +# GNU64-NEXT: 0x000000000000000f (RPATH) Library rpath: [x:w:U] # GNU64-NEXT: 0x0000000000000010 (SYMBOLIC) 0x1234567890abcdef # GNU64-NEXT: 0x0000000000000011 (REL) 0x1000 # GNU64-NEXT: 0x0000000000000012 (RELSZ) 16 (bytes) @@ -130,14 +132,371 @@ # GNU64-NEXT: 0x000000006ffffffd (VERDEFNUM) 0 # GNU64-NEXT: 0x000000006ffffffe (VERNEED) 0x1000 # GNU64-NEXT: 0x000000006fffffff (VERNEEDNUM) 0 -# GNU64-NEXT: 0x000000007ffffffd (AUXILIARY) Auxiliary library: [D] -# GNU64-NEXT: 0x000000007ffffffe (USED) Not needed object: [U] -# GNU64-NEXT: 0x000000007fffffff (FILTER) Filter library: [U] +# GNU64-NEXT: 0x000000007ffffffd (AUXILIARY) Auxiliary library: D +# GNU64-NEXT: 0x000000007ffffffe (USED) Not needed object: U +# GNU64-NEXT: 0x000000007fffffff (FILTER) Filter library: U # GNU64-NEXT: 0x0000000012345678 (<unknown:>0x12345678) 0x8765432187654321 # GNU64-NEXT: 0x000000006abcdef0 (<unknown:>0x6abcdef0) 0x9988776655443322 # GNU64-NEXT: 0x0000000076543210 (<unknown:>0x76543210) 0x5555666677778888 # GNU64-NEXT: 0x0000000000000000 (NULL) 0x0 +# JSON64:"DynamicSection": [ +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1, +# JSON64-NEXT: "Type": "NEEDED", +# JSON64-NEXT: "Value": 1, +# JSON64-NEXT: "Library": "D" +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 2, +# JSON64-NEXT: "Type": "PLTRELSZ", +# JSON64-NEXT: "Value": 16 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 3, +# JSON64-NEXT: "Type": "PLTGOT", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 4, +# JSON64-NEXT: "Type": "HASH", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 5, +# JSON64-NEXT: "Type": "STRTAB", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 6, +# JSON64-NEXT: "Type": "SYMTAB", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 7, +# JSON64-NEXT: "Type": "RELA", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 8, +# JSON64-NEXT: "Type": "RELASZ", +# JSON64-NEXT: "Value": 16 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 9, +# JSON64-NEXT: "Type": "RELAENT", +# JSON64-NEXT: "Value": 1929 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 10, +# JSON64-NEXT: "Type": "STRSZ", +# JSON64-NEXT: "Value": 16 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 11, +# JSON64-NEXT: "Type": "SYMENT", +# JSON64-NEXT: "Value": 2439 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 12, +# JSON64-NEXT: "Type": "INIT", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 13, +# JSON64-NEXT: "Type": "FINI", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 14, +# JSON64-NEXT: "Type": "SONAME", +# JSON64-NEXT: "Value": 3, +# JSON64-NEXT: "Name": "U" +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 15, +# JSON64-NEXT: "Type": "RPATH", +# JSON64-NEXT: "Value": 9, +# JSON64-NEXT: "Path": [ +# JSON64-NEXT: "x", +# JSON64-NEXT: "w", +# JSON64-NEXT: "U" +# JSON64-NEXT: ] +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 16, +# JSON64-NEXT: "Type": "SYMBOLIC", +# JSON64-NEXT: "Value": 1311768467294899695 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 17, +# JSON64-NEXT: "Type": "REL", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 18, +# JSON64-NEXT: "Type": "RELSZ", +# JSON64-NEXT: "Value": 16 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 19, +# JSON64-NEXT: "Type": "RELENT", +# JSON64-NEXT: "Value": 291 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 20, +# JSON64-NEXT: "Type": "PLTREL", +# JSON64-NEXT: "Value": 7 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 21, +# JSON64-NEXT: "Type": "DEBUG", +# JSON64-NEXT: "Value": 18364757930599072545 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 22, +# JSON64-NEXT: "Type": "TEXTREL", +# JSON64-NEXT: "Value": 1234605616436508552 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 23, +# JSON64-NEXT: "Type": "JMPREL", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 24, +# JSON64-NEXT: "Type": "BIND_NOW", +# JSON64-NEXT: "Value": 9833440827789222417 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 25, +# JSON64-NEXT: "Type": "INIT_ARRAY", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 26, +# JSON64-NEXT: "Type": "FINI_ARRAY", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 27, +# JSON64-NEXT: "Type": "INIT_ARRAYSZ", +# JSON64-NEXT: "Value": 16 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 28, +# JSON64-NEXT: "Type": "FINI_ARRAYSZ", +# JSON64-NEXT: "Value": 16 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 29, +# JSON64-NEXT: "Type": "RUNPATH", +# JSON64-NEXT: "Value": 7, +# JSON64-NEXT: "Path": [ +# JSON64-NEXT: "w" +# JSON64-NEXT: ] +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 30, +# JSON64-NEXT: "Type": "FLAGS", +# JSON64-NEXT: "Value": 18446744073709551615, +# JSON64-NEXT: "Flags": [ +# JSON64-NEXT: "ORIGIN", +# JSON64-NEXT: "SYMBOLIC", +# JSON64-NEXT: "TEXTREL", +# JSON64-NEXT: "BIND_NOW", +# JSON64-NEXT: "STATIC_TLS" +# JSON64-NEXT: ] +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 32, +# JSON64-NEXT: "Type": "PREINIT_ARRAY", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 33, +# JSON64-NEXT: "Type": "PREINIT_ARRAYSZ", +# JSON64-NEXT: "Value": 16 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 34, +# JSON64-NEXT: "Type": "SYMTAB_SHNDX", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 35, +# JSON64-NEXT: "Type": "RELRSZ", +# JSON64-NEXT: "Value": 16 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 36, +# JSON64-NEXT: "Type": "RELR", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 37, +# JSON64-NEXT: "Type": "RELRENT", +# JSON64-NEXT: "Value": 17185 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1610612751, +# JSON64-NEXT: "Type": "ANDROID_REL", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1610612752, +# JSON64-NEXT: "Type": "ANDROID_RELSZ", +# JSON64-NEXT: "Value": 16 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1610612753, +# JSON64-NEXT: "Type": "ANDROID_RELA", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1610612754, +# JSON64-NEXT: "Type": "ANDROID_RELASZ", +# JSON64-NEXT: "Value": 16 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879040000, +# JSON64-NEXT: "Type": "ANDROID_RELR", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879040001, +# JSON64-NEXT: "Type": "ANDROID_RELRSZ", +# JSON64-NEXT: "Value": 16 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879040003, +# JSON64-NEXT: "Type": "ANDROID_RELRENT", +# JSON64-NEXT: "Value": 4660 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879047925, +# JSON64-NEXT: "Type": "GNU_HASH", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879047926, +# JSON64-NEXT: "Type": "TLSDESC_PLT", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879047927, +# JSON64-NEXT: "Type": "TLSDESC_GOT", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879048185, +# JSON64-NEXT: "Type": "RELACOUNT", +# JSON64-NEXT: "Value": 0 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879048186, +# JSON64-NEXT: "Type": "RELCOUNT", +# JSON64-NEXT: "Value": 0 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879048187, +# JSON64-NEXT: "Type": "FLAGS_1" +# JSON64-NEXT: "Value": 18446744073709551615, +# JSON64-NEXT: "Flags": [ +# JSON64-NEXT: "NOW", +# JSON64-NEXT: "GLOBAL", +# JSON64-NEXT: "GROUP", +# JSON64-NEXT: "NODELETE", +# JSON64-NEXT: "LOADFLTR", +# JSON64-NEXT: "INITFIRST", +# JSON64-NEXT: "NOOPEN", +# JSON64-NEXT: "ORIGIN", +# JSON64-NEXT: "DIRECT", +# JSON64-NEXT: "TRANS", +# JSON64-NEXT: "INTERPOSE", +# JSON64-NEXT: "NODEFLIB", +# JSON64-NEXT: "NODUMP", +# JSON64-NEXT: "CONFALT", +# JSON64-NEXT: "ENDFILTEE", +# JSON64-NEXT: "DISPRELDNE", +# JSON64-NEXT: "DISPRELPND", +# JSON64-NEXT: "NODIRECT", +# JSON64-NEXT: "IGNMULDEF", +# JSON64-NEXT: "NOKSYMS", +# JSON64-NEXT: "NOHDR", +# JSON64-NEXT: "EDITED", +# JSON64-NEXT: "NORELOC", +# JSON64-NEXT: "SYMINTPOSE", +# JSON64-NEXT: "GLOBAUDIT", +# JSON64-NEXT: "SINGLETON", +# JSON64-NEXT: "PIE" +# JSON64-NEXT: ] +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879048176, +# JSON64-NEXT: "Type": "VERSYM", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879048188, +# JSON64-NEXT: "Type": "VERDEF", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879048189, +# JSON64-NEXT: "Type": "VERDEFNUM", +# JSON64-NEXT: "Value": 0 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879048190, +# JSON64-NEXT: "Type": "VERNEED", +# JSON64-NEXT: "Value": 4096 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1879048191, +# JSON64-NEXT: "Type": "VERNEEDNUM", +# JSON64-NEXT: "Value": 0 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 2147483645, +# JSON64-NEXT: "Type": "AUXILIARY" +# JSON64-NEXT: "Value": 1, +# JSON64-NEXT: "Library": "D" +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 2147483646, +# JSON64-NEXT: "Type": "USED", +# JSON64-NEXT: "Value": 3, +# JSON64-NEXT: "Object": "U" +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 2147483647, +# JSON64-NEXT: "Type": "FILTER", +# JSON64-NEXT: "Value": 3, +# JSON64-NEXT: "Library": "U" +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 305419896, +# JSON64-NEXT: "Type": "<unknown:>0x12345678", +# JSON64-NEXT: "Value": 9756277979052589857 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1790762736, +# JSON64-NEXT: "Type": "<unknown:>0x6abcdef0", +# JSON64-NEXT: "Value": 11063223766036525858 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 1985229328, +# JSON64-NEXT: "Type": "<unknown:>0x76543210", +# JSON64-NEXT: "Value": 6148933456521300104 +# JSON64-NEXT: }, +# JSON64-NEXT: { +# JSON64-NEXT: "Tag": 0, +# JSON64-NEXT: "Type": "NULL", +# JSON64-NEXT: "Value": 0 +# JSON64-NEXT: } +# JSON64-NEXT:] + --- !ELF FileHeader: Class: ELFCLASS[[BITS=64]] @@ -149,7 +508,7 @@ Sections: Type: SHT_STRTAB Address: 0x1000 Size: 0x10 - Content: "004400550066007700" + Content: "004400550066007700783A773A5500" - Name: .dynamic Type: SHT_DYNAMIC Address: 0x1010 @@ -183,7 +542,7 @@ Sections: - Tag: DT_SONAME Value: 0x3 - Tag: DT_RPATH - Value: 0x5 + Value: 0x9 - Tag: DT_SYMBOLIC Value: [[SYMBOLIC=0x1234567890abcdef]] - Tag: DT_REL @@ -302,7 +661,7 @@ ProgramHeaders: # LLVM32:DynamicSection [ (61 entries) # LLVM32-NEXT: Tag Type Name/Value -# LLVM32-NEXT: 0x00000001 NEEDED Shared library: [D] +# LLVM32-NEXT: 0x00000001 NEEDED Shared library: D # LLVM32-NEXT: 0x00000002 PLTRELSZ 16 (bytes) # LLVM32-NEXT: 0x00000003 PLTGOT 0x1000 # LLVM32-NEXT: 0x00000004 HASH 0x1000 @@ -315,8 +674,8 @@ ProgramHeaders: # LLVM32-NEXT: 0x0000000B SYMENT 2439 (bytes) # LLVM32-NEXT: 0x0000000C INIT 0x1000 # LLVM32-NEXT: 0x0000000D FINI 0x1000 -# LLVM32-NEXT: 0x0000000E SONAME Library soname: [U] -# LLVM32-NEXT: 0x0000000F RPATH Library rpath: [f] +# LLVM32-NEXT: 0x0000000E SONAME Library soname: U +# LLVM32-NEXT: 0x0000000F RPATH Library rpath: [x:w:U] # LLVM32-NEXT: 0x00000010 SYMBOLIC 0x12345678 # LLVM32-NEXT: 0x00000011 REL 0x1000 # LLVM32-NEXT: 0x00000012 RELSZ 16 (bytes) @@ -356,9 +715,9 @@ ProgramHeaders: # LLVM32-NEXT: 0x6FFFFFFD VERDEFNUM 0 # LLVM32-NEXT: 0x6FFFFFFE VERNEED 0x1000 # LLVM32-NEXT: 0x6FFFFFFF VERNEEDNUM 0 -# LLVM32-NEXT: 0x7FFFFFFD AUXILIARY Auxiliary library: [D] -# LLVM32-NEXT: 0x7FFFFFFE USED Not needed object: [U] -# LLVM32-NEXT: 0x7FFFFFFF FILTER Filter library: [U] +# LLVM32-NEXT: 0x7FFFFFFD AUXILIARY Auxiliary library: D +# LLVM32-NEXT: 0x7FFFFFFE USED Not needed object: U +# LLVM32-NEXT: 0x7FFFFFFF FILTER Filter library: U # LLVM32-NEXT: 0x12345678 <unknown:>0x12345678 0x87654321 # LLVM32-NEXT: 0x6ABCDEF0 <unknown:>0x6abcdef0 0x99887766 # LLVM32-NEXT: 0x76543210 <unknown:>0x76543210 0x55556666 @@ -367,7 +726,7 @@ ProgramHeaders: # GNU32:Dynamic section at offset 0x84 contains 61 entries: # GNU32-NEXT: Tag Type Name/Value -# GNU32-NEXT: 0x00000001 (NEEDED) Shared library: [D] +# GNU32-NEXT: 0x00000001 (NEEDED) Shared library: D # GNU32-NEXT: 0x00000002 (PLTRELSZ) 16 (bytes) # GNU32-NEXT: 0x00000003 (PLTGOT) 0x1000 # GNU32-NEXT: 0x00000004 (HASH) 0x1000 @@ -380,8 +739,8 @@ ProgramHeaders: # GNU32-NEXT: 0x0000000b (SYMENT) 2439 (bytes) # GNU32-NEXT: 0x0000000c (INIT) 0x1000 # GNU32-NEXT: 0x0000000d (FINI) 0x1000 -# GNU32-NEXT: 0x0000000e (SONAME) Library soname: [U] -# GNU32-NEXT: 0x0000000f (RPATH) Library rpath: [f] +# GNU32-NEXT: 0x0000000e (SONAME) Library soname: U +# GNU32-NEXT: 0x0000000f (RPATH) Library rpath: [x:w:U] # GNU32-NEXT: 0x00000010 (SYMBOLIC) 0x12345678 # GNU32-NEXT: 0x00000011 (REL) 0x1000 # GNU32-NEXT: 0x00000012 (RELSZ) 16 (bytes) @@ -421,9 +780,9 @@ ProgramHeaders: # GNU32-NEXT: 0x6ffffffd (VERDEFNUM) 0 # GNU32-NEXT: 0x6ffffffe (VERNEED) 0x1000 # GNU32-NEXT: 0x6fffffff (VERNEEDNUM) 0 -# GNU32-NEXT: 0x7ffffffd (AUXILIARY) Auxiliary library: [D] -# GNU32-NEXT: 0x7ffffffe (USED) Not needed object: [U] -# GNU32-NEXT: 0x7fffffff (FILTER) Filter library: [U] +# GNU32-NEXT: 0x7ffffffd (AUXILIARY) Auxiliary library: D +# GNU32-NEXT: 0x7ffffffe (USED) Not needed object: U +# GNU32-NEXT: 0x7fffffff (FILTER) Filter library: U # GNU32-NEXT: 0x12345678 (<unknown:>0x12345678) 0x87654321 # GNU32-NEXT: 0x6abcdef0 (<unknown:>0x6abcdef0) 0x99887766 # GNU32-NEXT: 0x76543210 (<unknown:>0x76543210) 0x55556666 @@ -497,7 +856,7 @@ Sections: # PHENTSIZE-LLVM: DynamicSection [ (61 entries) # PHENTSIZE-LLVM-NEXT: Tag Type Name/Value -# PHENTSIZE-LLVM-NEXT: 0x0000000000000001 NEEDED Shared library: [<?>] +# PHENTSIZE-LLVM-NEXT: 0x0000000000000001 NEEDED Shared library: <?> # PHENTSIZE-LLVM-NEXT: 0x0000000000000002 PLTRELSZ 16 (bytes) # PHENTSIZE-LLVM-NEXT: 0x0000000000000003 PLTGOT 0x1000 # PHENTSIZE-LLVM-NEXT: 0x0000000000000004 HASH 0x1000 @@ -510,7 +869,7 @@ Sections: # PHENTSIZE-LLVM-NEXT: 0x000000000000000B SYMENT 2439 (bytes) # PHENTSIZE-LLVM-NEXT: 0x000000000000000C INIT 0x1000 # PHENTSIZE-LLVM-NEXT: 0x000000000000000D FINI 0x1000 -# PHENTSIZE-LLVM-NEXT: 0x000000000000000E SONAME Library soname: [<?>] +# PHENTSIZE-LLVM-NEXT: 0x000000000000000E SONAME Library soname: <?> # PHENTSIZE-LLVM-NEXT: 0x000000000000000F RPATH Library rpath: [<?>] # PHENTSIZE-LLVM-NEXT: 0x0000000000000010 SYMBOLIC 0x1234567890ABCDEF # PHENTSIZE-LLVM-NEXT: 0x0000000000000011 REL 0x1000 @@ -551,9 +910,9 @@ Sections: # PHENTSIZE-LLVM-NEXT: 0x000000006FFFFFFD VERDEFNUM 0 # PHENTSIZE-LLVM-NEXT: 0x000000006FFFFFFE VERNEED 0x1000 # PHENTSIZE-LLVM-NEXT: 0x000000006FFFFFFF VERNEEDNUM 0 -# PHENTSIZE-LLVM-NEXT: 0x000000007FFFFFFD AUXILIARY Auxiliary library: [<?>] -# PHENTSIZE-LLVM-NEXT: 0x000000007FFFFFFE USED Not needed object: [<?>] -# PHENTSIZE-LLVM-NEXT: 0x000000007FFFFFFF FILTER Filter library: [<?>] +# PHENTSIZE-LLVM-NEXT: 0x000000007FFFFFFD AUXILIARY Auxiliary library: <?> +# PHENTSIZE-LLVM-NEXT: 0x000000007FFFFFFE USED Not needed object: <?> +# PHENTSIZE-LLVM-NEXT: 0x000000007FFFFFFF FILTER Filter library: <?> # PHENTSIZE-LLVM-NEXT: 0x0000000012345678 <unknown:>0x12345678 0x8765432187654321 # PHENTSIZE-LLVM-NEXT: 0x000000006ABCDEF0 <unknown:>0x6abcdef0 0x9988776655443322 # PHENTSIZE-LLVM-NEXT: 0x0000000076543210 <unknown:>0x76543210 0x5555666677778888 @@ -563,7 +922,7 @@ Sections: # PHENTSIZE-GNU: Dynamic section at offset 0xc0 contains 61 entries: # PHENTSIZE-GNU-NEXT: Tag Type Name/Value # PHENTSIZE-GNU-NEXT: warning: '[[FILE]]': string table was not found -# PHENTSIZE-GNU-NEXT: 0x0000000000000001 (NEEDED) Shared library: [<?>] +# PHENTSIZE-GNU-NEXT: 0x0000000000000001 (NEEDED) Shared library: <?> # PHENTSIZE-GNU-NEXT: 0x0000000000000002 (PLTRELSZ) 16 (bytes) # PHENTSIZE-GNU-NEXT: 0x0000000000000003 (PLTGOT) 0x1000 # PHENTSIZE-GNU-NEXT: 0x0000000000000004 (HASH) 0x1000 @@ -576,7 +935,7 @@ Sections: # PHENTSIZE-GNU-NEXT: 0x000000000000000b (SYMENT) 2439 (bytes) # PHENTSIZE-GNU-NEXT: 0x000000000000000c (INIT) 0x1000 # PHENTSIZE-GNU-NEXT: 0x000000000000000d (FINI) 0x1000 -# PHENTSIZE-GNU-NEXT: 0x000000000000000e (SONAME) Library soname: [<?>] +# PHENTSIZE-GNU-NEXT: 0x000000000000000e (SONAME) Library soname: <?> # PHENTSIZE-GNU-NEXT: 0x000000000000000f (RPATH) Library rpath: [<?>] # PHENTSIZE-GNU-NEXT: 0x0000000000000010 (SYMBOLIC) 0x1234567890abcdef # PHENTSIZE-GNU-NEXT: 0x0000000000000011 (REL) 0x1000 @@ -617,9 +976,9 @@ Sections: # PHENTSIZE-GNU-NEXT: 0x000000006ffffffd (VERDEFNUM) 0 # PHENTSIZE-GNU-NEXT: 0x000000006ffffffe (VERNEED) 0x1000 # PHENTSIZE-GNU-NEXT: 0x000000006fffffff (VERNEEDNUM) 0 -# PHENTSIZE-GNU-NEXT: 0x000000007ffffffd (AUXILIARY) Auxiliary library: [<?>] -# PHENTSIZE-GNU-NEXT: 0x000000007ffffffe (USED) Not needed object: [<?>] -# PHENTSIZE-GNU-NEXT: 0x000000007fffffff (FILTER) Filter library: [<?>] +# PHENTSIZE-GNU-NEXT: 0x000000007ffffffd (AUXILIARY) Auxiliary library: <?> +# PHENTSIZE-GNU-NEXT: 0x000000007ffffffe (USED) Not needed object: <?> +# PHENTSIZE-GNU-NEXT: 0x000000007fffffff (FILTER) Filter library: <?> # PHENTSIZE-GNU-NEXT: 0x0000000012345678 (<unknown:>0x12345678) 0x8765432187654321 # PHENTSIZE-GNU-NEXT: 0x000000006abcdef0 (<unknown:>0x6abcdef0) 0x9988776655443322 # PHENTSIZE-GNU-NEXT: 0x0000000076543210 (<unknown:>0x76543210) 0x5555666677778888 diff --git a/llvm/test/tools/llvm-readobj/ELF/loadname.test b/llvm/test/tools/llvm-readobj/ELF/loadname.test index 18db00845e00..359b9ca76233 100644 --- a/llvm/test/tools/llvm-readobj/ELF/loadname.test +++ b/llvm/test/tools/llvm-readobj/ELF/loadname.test @@ -15,7 +15,7 @@ # GNU-NEXT: Tag Type Name/Value # GNU-NEXT: 0x0000000000000005 (STRTAB) 0x0 # GNU-NEXT: 0x000000000000000a (STRSZ) 8 (bytes) -# GNU-NEXT: 0x000000000000000e (SONAME) Library soname: [test.so] +# GNU-NEXT: 0x000000000000000e (SONAME) Library soname: test.so # GNU-NEXT: 0x0000000000000000 (NULL) 0x0 !ELF @@ -62,4 +62,4 @@ ProgramHeaders: # BROKEN-OFFSET: warning: '[[FILE]]': unable to parse DT_STRTAB: can't map virtual address 0xfffe to the segment with index 1: the segment ends at 0x10077, which is greater than the file size (0x228) # BROKEN-OFFSET: warning: '[[FILE]]': string table was not found # BROKEN-OFFSET-LLVM: LoadName: <?> -# BROKEN-OFFSET-GNU: 0x000000000000000e (SONAME) Library soname: [<?>] +# BROKEN-OFFSET-GNU: 0x000000000000000e (SONAME) Library soname: <?> diff --git a/llvm/test/tools/llvm-split/AMDGPU/address-taken-externalize-with-call.ll b/llvm/test/tools/llvm-split/AMDGPU/address-taken-externalize-with-call.ll index 8b76237efa32..d269f9276385 100644 --- a/llvm/test/tools/llvm-split/AMDGPU/address-taken-externalize-with-call.ll +++ b/llvm/test/tools/llvm-split/AMDGPU/address-taken-externalize-with-call.ll @@ -1,4 +1,4 @@ -; RUN: llvm-split -o %t %s -j 3 -mtriple amdgcn-amd-amdhsa -amdgpu-module-splitting-large-kernel-threshold=0 +; RUN: llvm-split -o %t %s -j 3 -mtriple amdgcn-amd-amdhsa -amdgpu-module-splitting-large-function-threshold=0 ; RUN: llvm-dis -o - %t0 | FileCheck --check-prefix=CHECK0 %s ; RUN: llvm-dis -o - %t1 | FileCheck --check-prefix=CHECK1 %s ; RUN: llvm-dis -o - %t2 | FileCheck --check-prefix=CHECK2 %s diff --git a/llvm/test/tools/llvm-split/AMDGPU/address-taken-externalize.ll b/llvm/test/tools/llvm-split/AMDGPU/address-taken-externalize.ll index 46d7d9783aea..731cf4b374c9 100644 --- a/llvm/test/tools/llvm-split/AMDGPU/address-taken-externalize.ll +++ b/llvm/test/tools/llvm-split/AMDGPU/address-taken-externalize.ll @@ -1,4 +1,4 @@ -; RUN: llvm-split -o %t %s -j 2 -mtriple amdgcn-amd-amdhsa -amdgpu-module-splitting-large-kernel-threshold=0 +; RUN: llvm-split -o %t %s -j 2 -mtriple amdgcn-amd-amdhsa -amdgpu-module-splitting-large-function-threshold=0 ; RUN: llvm-dis -o - %t0 | FileCheck --check-prefix=CHECK0 %s ; RUN: llvm-dis -o - %t1 | FileCheck --check-prefix=CHECK1 %s diff --git a/llvm/test/tools/llvm-split/AMDGPU/debug-non-kernel-root.ll b/llvm/test/tools/llvm-split/AMDGPU/debug-non-kernel-root.ll new file mode 100644 index 000000000000..836b5c05d065 --- /dev/null +++ b/llvm/test/tools/llvm-split/AMDGPU/debug-non-kernel-root.ll @@ -0,0 +1,36 @@ +; RUN: llvm-split -o %t %s -j 2 -mtriple amdgcn-amd-amdhsa -debug 2>&1 | FileCheck %s --implicit-check-not="[root]" +; REQUIRES: asserts + +; func_3 is never directly called, it needs to be considered +; as a root to handle this module correctly. + +; CHECK: [root] kernel_1 +; CHECK-NEXT: [dependency] func_1 +; CHECK-NEXT: [dependency] func_2 +; CHECK-NEXT: [root] func_3 +; CHECK-NEXT: [dependency] func_2 + +define amdgpu_kernel void @kernel_1() { +entry: + call void @func_1() + ret void +} + +define linkonce_odr hidden void @func_1() { +entry: + %call = call i32 @func_2() + ret void +} + +define linkonce_odr hidden i32 @func_2() #0 { +entry: + ret i32 0 +} + +define void @func_3() { +entry: + %call = call i32 @func_2() + ret void +} + +attributes #0 = { noinline optnone } diff --git a/llvm/test/tools/llvm-split/AMDGPU/large-kernels-merging.ll b/llvm/test/tools/llvm-split/AMDGPU/large-kernels-merging.ll index 4fdbac7d1789..459c5a7f1a2d 100644 --- a/llvm/test/tools/llvm-split/AMDGPU/large-kernels-merging.ll +++ b/llvm/test/tools/llvm-split/AMDGPU/large-kernels-merging.ll @@ -1,9 +1,9 @@ -; RUN: llvm-split -o %t %s -j 3 -mtriple amdgcn-amd-amdhsa -amdgpu-module-splitting-large-kernel-threshold=1.2 -amdgpu-module-splitting-large-kernel-merge-overlap=0.5 +; RUN: llvm-split -o %t %s -j 3 -mtriple amdgcn-amd-amdhsa -amdgpu-module-splitting-large-function-threshold=1.2 -amdgpu-module-splitting-large-function-merge-overlap=0.5 ; RUN: llvm-dis -o - %t0 | FileCheck --check-prefix=CHECK0 %s ; RUN: llvm-dis -o - %t1 | FileCheck --check-prefix=CHECK1 %s ; RUN: llvm-dis -o - %t2 | FileCheck --check-prefix=CHECK2 %s -; RUN: llvm-split -o %t.nolarge %s -j 3 -mtriple amdgcn-amd-amdhsa -amdgpu-module-splitting-large-kernel-threshold=0 +; RUN: llvm-split -o %t.nolarge %s -j 3 -mtriple amdgcn-amd-amdhsa -amdgpu-module-splitting-large-function-threshold=0 ; RUN: llvm-dis -o - %t.nolarge0 | FileCheck --check-prefix=NOLARGEKERNELS-CHECK0 %s ; RUN: llvm-dis -o - %t.nolarge1 | FileCheck --check-prefix=NOLARGEKERNELS-CHECK1 %s ; RUN: llvm-dis -o - %t.nolarge2 | FileCheck --check-prefix=NOLARGEKERNELS-CHECK2 %s diff --git a/llvm/test/tools/llvm-split/AMDGPU/non-kernels-dependencies.ll b/llvm/test/tools/llvm-split/AMDGPU/non-kernels-dependencies.ll new file mode 100644 index 000000000000..f944b7ef65d2 --- /dev/null +++ b/llvm/test/tools/llvm-split/AMDGPU/non-kernels-dependencies.ll @@ -0,0 +1,44 @@ +; RUN: llvm-split -o %t %s -j 3 -mtriple amdgcn-amd-amdhsa +; RUN: llvm-dis -o - %t0 | FileCheck --check-prefix=CHECK0 --implicit-check-not=DEFINE %s +; RUN: llvm-dis -o - %t1 | FileCheck --check-prefix=CHECK1 --implicit-check-not=DEFINE %s +; RUN: llvm-dis -o - %t2 | FileCheck --check-prefix=CHECK2 --implicit-check-not=DEFINE %s + +; 3 functions with each their own dependencies should go into 3 +; distinct partitions. + +; CHECK0: define void @C +; CHECK0: define internal void @HelperC + +; CHECK1: define void @B +; CHECK1: define internal void @HelperB + +; CHECK2: define void @A +; CHECK2: define internal void @HelperA + + +define void @A() { + call void @HelperA() + ret void +} + +define internal void @HelperA() { + ret void +} + +define void @B() { + call void @HelperB() + ret void +} + +define internal void @HelperB() { + ret void +} + +define void @C() { + call void @HelperC() + ret void +} + +define internal void @HelperC() { + ret void +} diff --git a/llvm/test/tools/llvm-split/AMDGPU/non-kernels-dependency-indirect.ll b/llvm/test/tools/llvm-split/AMDGPU/non-kernels-dependency-indirect.ll new file mode 100644 index 000000000000..167930ce0e80 --- /dev/null +++ b/llvm/test/tools/llvm-split/AMDGPU/non-kernels-dependency-indirect.ll @@ -0,0 +1,72 @@ +; RUN: llvm-split -o %t %s -j 3 -mtriple amdgcn-amd-amdhsa +; RUN: llvm-dis -o - %t0 | FileCheck --check-prefix=CHECK0 --implicit-check-not=DEFINE %s +; RUN: llvm-dis -o - %t1 | FileCheck --check-prefix=CHECK1 --implicit-check-not=DEFINE %s +; RUN: llvm-dis -o - %t2 | FileCheck --check-prefix=CHECK2 --implicit-check-not=DEFINE %s + +; We have 4 function: +; - Each function has an internal helper +; - @A and @B's helpers does an indirect call. +; +; For non-kernels, indirect calls shouldn't matter, so +; @CallCandidate doesn't have to be in A/B's partition, unlike +; in the corresponding tests for kernels where it has to. + +; CHECK0: define hidden void @HelperA +; CHECK0: define hidden void @HelperB +; CHECK0: define internal void @HelperC +; CHECK0: define internal void @HelperD +; CHECK0: define void @A +; CHECK0: define void @B + +; CHECK1: define internal void @HelperD +; CHECK1: define void @D + +; CHECK2: define hidden void @CallCandidate +; CHECK2: define internal void @HelperC +; CHECK2: define void @C + +@addrthief = global [3 x ptr] [ptr @HelperA, ptr @HelperB, ptr @CallCandidate] + +define internal void @HelperA(ptr %call) { + call void %call() + ret void +} + +define internal void @HelperB(ptr %call) { + call void @HelperC() + call void %call() + call void @HelperD() + ret void +} + +define internal void @CallCandidate() { + ret void +} + +define internal void @HelperC() { + ret void +} + +define internal void @HelperD() { + ret void +} + +define void @A(ptr %call) { + call void @HelperA(ptr %call) + ret void +} + +define void @B(ptr %call) { + call void @HelperB(ptr %call) + ret void +} + +define void @C() { + call void @HelperC() + ret void +} + +define void @D() { + call void @HelperD() + ret void +} diff --git a/llvm/test/tools/yaml2obj/COFF/load-config.yaml b/llvm/test/tools/yaml2obj/COFF/load-config.yaml index 36c66e6d6927..8d177bdc3e12 100644 --- a/llvm/test/tools/yaml2obj/COFF/load-config.yaml +++ b/llvm/test/tools/yaml2obj/COFF/load-config.yaml @@ -190,7 +190,7 @@ sections: symbols: [] ... -## Create laod config larger than coff_load_configuration32 struct. +## Create load config larger than coff_load_configuration32 struct. # RUN: yaml2obj --docnum=4 %s -o %t # RUN: llvm-readobj --hex-dump=.rdata %t | FileCheck %s --check-prefix=LARGE |
