Skip to content

[GlobalIsel] Add combine for select with constants #121088

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

vg0204
Copy link
Contributor

@vg0204 vg0204 commented Dec 25, 2024

The SelectionDAG Isel supports the both version of combines mentioned below :

select Cond, Pow2, 0 --> (zext Cond)  << log2(Pow2) 
select Cond, 0, Pow2 --> (zext !Cond) << log2(Pow2)

The GlobalIsel for now only supports the first one defined in it's generic combinerHelper.cpp. This patch adds the missing second one.

The SelectionDAG Isel supports the both version of combines :
select Cond, Pow2, 0 --> (zext Cond) << log2(Pow2)
select Cond, 0, Pow2 --> (zext !Cond) << log2(Pow2)

But, here we add the latter missing combine for select in
globalIsel.
@llvmbot
Copy link
Member

llvmbot commented Dec 25, 2024

@llvm/pr-subscribers-backend-aarch64

Author: Vikash Gupta (vg0204)

Changes

The SelectionDAG Isel supports the both version of combines mentioned below :

select Cond, Pow2, 0 --&gt; (zext Cond)  &lt;&lt; log2(Pow2) 
select Cond, 0, Pow2 --&gt; (zext !Cond) &lt;&lt; log2(Pow2)

But, here we add the latter missing combine for select in globalIsel.


Full diff: https://github.com/llvm/llvm-project/pull/121088.diff

2 Files Affected:

  • (modified) llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp (+17)
  • (modified) llvm/test/CodeGen/AArch64/GlobalISel/combine-select.mir (+30)
diff --git a/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
index b46d4baf72a269..c94e642a47b500 100644
--- a/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
@@ -6823,6 +6823,23 @@ bool CombinerHelper::tryFoldSelectOfConstants(GSelect *Select,
     };
     return true;
   }
+
+  // select Cond, 0, Pow2 --> (zext (!Cond)) << log2(Pow2)
+  if (FalseValue.isPowerOf2() && TrueValue.isZero()) {
+    MatchInfo = [=](MachineIRBuilder &B) {
+      B.setInstrAndDebugLoc(*Select);
+      Register Not = MRI.createGenericVirtualRegister(CondTy);
+      B.buildNot(Not, Cond);
+      Register Inner = MRI.createGenericVirtualRegister(TrueTy);
+      B.buildZExtOrTrunc(Inner, Not);
+      // The shift amount must be scalar.
+      LLT ShiftTy = TrueTy.isVector() ? TrueTy.getElementType() : TrueTy;
+      auto ShAmtC = B.buildConstant(ShiftTy, FalseValue.exactLogBase2());
+      B.buildShl(Dest, Inner, ShAmtC, Flags);
+    };
+    return true;
+  }
+
   // select Cond, -1, C --> or (sext Cond), C
   if (TrueValue.isAllOnes()) {
     MatchInfo = [=](MachineIRBuilder &B) {
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/combine-select.mir b/llvm/test/CodeGen/AArch64/GlobalISel/combine-select.mir
index 86fa12aa064acb..4afa0d4378fe12 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/combine-select.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/combine-select.mir
@@ -436,6 +436,36 @@ body:             |
     $w0 = COPY %ext(s32)
 ...
 ---
+# select cond, 0, 64 --> (zext (!Cond)) << log2(Pow2)
+name:            select_cond_0_64_to_shift
+body:             |
+  bb.1:
+    liveins: $x0, $x1, $x2
+    ; CHECK-LABEL: name: select_cond_0_64_to_shift
+    ; CHECK: liveins: $x0, $x1, $x2
+    ; CHECK-NEXT: {{  $}}
+    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
+    ; CHECK-NEXT: %c:_(s1) = G_TRUNC [[COPY]](s64)
+    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
+    ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s1) = G_XOR %c, [[C]]
+    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s8) = G_ZEXT [[XOR]](s1)
+    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s8) = G_CONSTANT i8 6
+    ; CHECK-NEXT: %sel:_(s8) = G_SHL [[ZEXT]], [[C1]](s8)
+    ; CHECK-NEXT: %ext:_(s32) = G_ANYEXT %sel(s8)
+    ; CHECK-NEXT: $w0 = COPY %ext(s32)
+    %0:_(s64) = COPY $x0
+    %1:_(s64) = COPY $x1
+    %2:_(s64) = COPY $x2
+    %c:_(s1) = G_TRUNC %0
+    %t:_(s1) = G_TRUNC %1
+    %f:_(s1) = G_TRUNC %2
+    %two:_(s8) = G_CONSTANT i8 0
+    %one:_(s8) = G_CONSTANT i8 64
+    %sel:_(s8) = G_SELECT %c, %two, %one
+    %ext:_(s32) = G_ANYEXT %sel
+    $w0 = COPY %ext(s32)
+...
+---
 # select cond, -1, 0 --> sext Cond
 name:            select_cond_minus_1_0_to_sext_cond
 body:             |

@llvmbot
Copy link
Member

llvmbot commented Dec 25, 2024

@llvm/pr-subscribers-llvm-globalisel

Author: Vikash Gupta (vg0204)

Changes

The SelectionDAG Isel supports the both version of combines mentioned below :

select Cond, Pow2, 0 --&gt; (zext Cond)  &lt;&lt; log2(Pow2) 
select Cond, 0, Pow2 --&gt; (zext !Cond) &lt;&lt; log2(Pow2)

But, here we add the latter missing combine for select in globalIsel.


Full diff: https://github.com/llvm/llvm-project/pull/121088.diff

2 Files Affected:

  • (modified) llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp (+17)
  • (modified) llvm/test/CodeGen/AArch64/GlobalISel/combine-select.mir (+30)
diff --git a/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
index b46d4baf72a269..c94e642a47b500 100644
--- a/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
@@ -6823,6 +6823,23 @@ bool CombinerHelper::tryFoldSelectOfConstants(GSelect *Select,
     };
     return true;
   }
+
+  // select Cond, 0, Pow2 --> (zext (!Cond)) << log2(Pow2)
+  if (FalseValue.isPowerOf2() && TrueValue.isZero()) {
+    MatchInfo = [=](MachineIRBuilder &B) {
+      B.setInstrAndDebugLoc(*Select);
+      Register Not = MRI.createGenericVirtualRegister(CondTy);
+      B.buildNot(Not, Cond);
+      Register Inner = MRI.createGenericVirtualRegister(TrueTy);
+      B.buildZExtOrTrunc(Inner, Not);
+      // The shift amount must be scalar.
+      LLT ShiftTy = TrueTy.isVector() ? TrueTy.getElementType() : TrueTy;
+      auto ShAmtC = B.buildConstant(ShiftTy, FalseValue.exactLogBase2());
+      B.buildShl(Dest, Inner, ShAmtC, Flags);
+    };
+    return true;
+  }
+
   // select Cond, -1, C --> or (sext Cond), C
   if (TrueValue.isAllOnes()) {
     MatchInfo = [=](MachineIRBuilder &B) {
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/combine-select.mir b/llvm/test/CodeGen/AArch64/GlobalISel/combine-select.mir
index 86fa12aa064acb..4afa0d4378fe12 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/combine-select.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/combine-select.mir
@@ -436,6 +436,36 @@ body:             |
     $w0 = COPY %ext(s32)
 ...
 ---
+# select cond, 0, 64 --> (zext (!Cond)) << log2(Pow2)
+name:            select_cond_0_64_to_shift
+body:             |
+  bb.1:
+    liveins: $x0, $x1, $x2
+    ; CHECK-LABEL: name: select_cond_0_64_to_shift
+    ; CHECK: liveins: $x0, $x1, $x2
+    ; CHECK-NEXT: {{  $}}
+    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
+    ; CHECK-NEXT: %c:_(s1) = G_TRUNC [[COPY]](s64)
+    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s1) = G_CONSTANT i1 true
+    ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s1) = G_XOR %c, [[C]]
+    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s8) = G_ZEXT [[XOR]](s1)
+    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s8) = G_CONSTANT i8 6
+    ; CHECK-NEXT: %sel:_(s8) = G_SHL [[ZEXT]], [[C1]](s8)
+    ; CHECK-NEXT: %ext:_(s32) = G_ANYEXT %sel(s8)
+    ; CHECK-NEXT: $w0 = COPY %ext(s32)
+    %0:_(s64) = COPY $x0
+    %1:_(s64) = COPY $x1
+    %2:_(s64) = COPY $x2
+    %c:_(s1) = G_TRUNC %0
+    %t:_(s1) = G_TRUNC %1
+    %f:_(s1) = G_TRUNC %2
+    %two:_(s8) = G_CONSTANT i8 0
+    %one:_(s8) = G_CONSTANT i8 64
+    %sel:_(s8) = G_SELECT %c, %two, %one
+    %ext:_(s32) = G_ANYEXT %sel
+    $w0 = COPY %ext(s32)
+...
+---
 # select cond, -1, 0 --> sext Cond
 name:            select_cond_minus_1_0_to_sext_cond
 body:             |

@cdevadas
Copy link
Collaborator

But, here we add the latter missing combine for select in globalIsel.

This description is ambiguous. Does GlobalISel currently support only the latter?

@cdevadas cdevadas requested a review from aemerson December 26, 2024 05:08
@cdevadas
Copy link
Collaborator

It's still a WIP patch. Noted.

@vg0204
Copy link
Contributor Author

vg0204 commented Dec 30, 2024

Ping!

@cdevadas
Copy link
Collaborator

Remove the WIP tag from the PR heading if it is ready for review.

@vg0204 vg0204 changed the title [WIP] [GlobalIsel] Add combine for select with constants [GlobalIsel] Add combine for select with constants Dec 30, 2024
@vg0204 vg0204 requested a review from cdevadas December 30, 2024 17:05
Copy link
Contributor

@aemerson aemerson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be nice if we could succinctly handle both cases in the same combine.

@vg0204
Copy link
Contributor Author

vg0204 commented Dec 31, 2024

Would be nice if we could succinctly handle both cases in the same combine.

Can be done, but just followed the format by which other select with constants combine had been handled in such scenarios!

@vg0204
Copy link
Contributor Author

vg0204 commented Dec 31, 2024

@aemerson, would be better if we handle it separately for all such pairs of cases separately, once this PR gets merged?

@aemerson
Copy link
Contributor

Yes you don't have to do it in this PR, was just a minor suggestion.

@vg0204 vg0204 merged commit 2838066 into llvm:main Jan 1, 2025
11 checks passed
@llvm-ci
Copy link
Collaborator

llvm-ci commented Jan 1, 2025

LLVM Buildbot has detected a new failure on builder fuchsia-x86_64-linux running on fuchsia-debian-64-us-central1-a-1 while building llvm at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/11/builds/10362

Here is the relevant piece of the build log for the reference
Step 4 (annotate) failure: 'python ../llvm-zorg/zorg/buildbot/builders/annotated/fuchsia-linux.py ...' (failure)
...
[1361/1364] Building CXX object unittests/Transforms/Scalar/CMakeFiles/ScalarTests.dir/LoopPassManagerTest.cpp.o
clang++: warning: optimization flag '-ffat-lto-objects' is not supported [-Wignored-optimization-argument]
[1362/1364] Linking CXX executable unittests/Transforms/Scalar/ScalarTests
[1363/1364] Running the LLVM regression tests
llvm-lit: /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using ld.lld: /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/ld.lld
llvm-lit: /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using lld-link: /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/lld-link
llvm-lit: /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using ld64.lld: /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/ld64.lld
llvm-lit: /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using wasm-ld: /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/wasm-ld
-- Testing: 57469 tests, 60 workers --
Testing:  0.. 10.. 20.. 30.. 40.. 50
FAIL: LLVM :: ExecutionEngine/JITLink/AArch64/ELF_relocations.s (30057 of 57469)
******************** TEST 'LLVM :: ExecutionEngine/JITLink/AArch64/ELF_relocations.s' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: rm -rf /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp && mkdir -p /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp
+ rm -rf /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp
+ mkdir -p /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp
RUN: at line 2: /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/llvm-mc -triple=aarch64-unknown-linux-gnu -x86-relax-relocations=false    -position-independent -filetype=obj -o /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp/elf_reloc.o /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/test/ExecutionEngine/JITLink/AArch64/ELF_relocations.s
+ /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/llvm-mc -triple=aarch64-unknown-linux-gnu -x86-relax-relocations=false -position-independent -filetype=obj -o /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp/elf_reloc.o /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/test/ExecutionEngine/JITLink/AArch64/ELF_relocations.s
RUN: at line 4: /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/llvm-jitlink -noexec               -abs external_data=0xdeadbeef               -abs external_func=0xcafef00d               -check /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/test/ExecutionEngine/JITLink/AArch64/ELF_relocations.s /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp/elf_reloc.o
+ /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/llvm-jitlink -noexec -abs external_data=0xdeadbeef -abs external_func=0xcafef00d -check /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/test/ExecutionEngine/JITLink/AArch64/ELF_relocations.s /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp/elf_reloc.o
Expression 'decode_operand(test_adr_gotpage_external, 1) =      (got_addr(elf_reloc.o, external_data)[32:12] -         test_adr_gotpage_external[32:12])' is false: 0x108 != 0xffffffffffe00108
/var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/llvm-jitlink: Some checks in /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/test/ExecutionEngine/JITLink/AArch64/ELF_relocations.s failed

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. 
********************
Failed Tests (1):
  LLVM :: ExecutionEngine/JITLink/AArch64/ELF_relocations.s


Testing Time: 74.91s

Total Discovered Tests: 63375
  Skipped          :    35 (0.06%)
  Unsupported      : 17362 (27.40%)
  Passed           : 45911 (72.44%)
  Expectedly Failed:    66 (0.10%)
  Failed           :     1 (0.00%)
FAILED: test/CMakeFiles/check-llvm /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/CMakeFiles/check-llvm 
cd /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test && /usr/bin/python3.10 /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/./bin/llvm-lit -sv /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test
ninja: build stopped: subcommand failed.
['ninja', '-C', '/var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46', 'check-llvm', 'check-clang', 'check-lld'] exited with return code 1.
@@@STEP_FAILURE@@@
Step 7 (check) failure: check (failure)
...
[1361/1364] Building CXX object unittests/Transforms/Scalar/CMakeFiles/ScalarTests.dir/LoopPassManagerTest.cpp.o
clang++: warning: optimization flag '-ffat-lto-objects' is not supported [-Wignored-optimization-argument]
[1362/1364] Linking CXX executable unittests/Transforms/Scalar/ScalarTests
[1363/1364] Running the LLVM regression tests
llvm-lit: /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using ld.lld: /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/ld.lld
llvm-lit: /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using lld-link: /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/lld-link
llvm-lit: /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using ld64.lld: /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/ld64.lld
llvm-lit: /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/utils/lit/lit/llvm/config.py:506: note: using wasm-ld: /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/wasm-ld
-- Testing: 57469 tests, 60 workers --
Testing:  0.. 10.. 20.. 30.. 40.. 50
FAIL: LLVM :: ExecutionEngine/JITLink/AArch64/ELF_relocations.s (30057 of 57469)
******************** TEST 'LLVM :: ExecutionEngine/JITLink/AArch64/ELF_relocations.s' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: rm -rf /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp && mkdir -p /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp
+ rm -rf /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp
+ mkdir -p /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp
RUN: at line 2: /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/llvm-mc -triple=aarch64-unknown-linux-gnu -x86-relax-relocations=false    -position-independent -filetype=obj -o /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp/elf_reloc.o /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/test/ExecutionEngine/JITLink/AArch64/ELF_relocations.s
+ /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/llvm-mc -triple=aarch64-unknown-linux-gnu -x86-relax-relocations=false -position-independent -filetype=obj -o /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp/elf_reloc.o /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/test/ExecutionEngine/JITLink/AArch64/ELF_relocations.s
RUN: at line 4: /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/llvm-jitlink -noexec               -abs external_data=0xdeadbeef               -abs external_func=0xcafef00d               -check /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/test/ExecutionEngine/JITLink/AArch64/ELF_relocations.s /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp/elf_reloc.o
+ /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/llvm-jitlink -noexec -abs external_data=0xdeadbeef -abs external_func=0xcafef00d -check /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/test/ExecutionEngine/JITLink/AArch64/ELF_relocations.s /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/ExecutionEngine/JITLink/AArch64/Output/ELF_relocations.s.tmp/elf_reloc.o
Expression 'decode_operand(test_adr_gotpage_external, 1) =      (got_addr(elf_reloc.o, external_data)[32:12] -         test_adr_gotpage_external[32:12])' is false: 0x108 != 0xffffffffffe00108
/var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/bin/llvm-jitlink: Some checks in /var/lib/buildbot/fuchsia-x86_64-linux/llvm-project/llvm/test/ExecutionEngine/JITLink/AArch64/ELF_relocations.s failed

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. 
********************
Failed Tests (1):
  LLVM :: ExecutionEngine/JITLink/AArch64/ELF_relocations.s


Testing Time: 74.91s

Total Discovered Tests: 63375
  Skipped          :    35 (0.06%)
  Unsupported      : 17362 (27.40%)
  Passed           : 45911 (72.44%)
  Expectedly Failed:    66 (0.10%)
  Failed           :     1 (0.00%)
FAILED: test/CMakeFiles/check-llvm /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test/CMakeFiles/check-llvm 
cd /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test && /usr/bin/python3.10 /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/./bin/llvm-lit -sv /var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46/test
ninja: build stopped: subcommand failed.
['ninja', '-C', '/var/lib/buildbot/fuchsia-x86_64-linux/build/llvm-build-p_rd6d46', 'check-llvm', 'check-clang', 'check-lld'] exited with return code 1.
program finished with exit code 0
elapsedTime=1103.472978

@llvm-ci
Copy link
Collaborator

llvm-ci commented Jan 1, 2025

LLVM Buildbot has detected a new failure on builder clang-s390x-linux-lnt running on systemz-1 while building llvm at step 7 "ninja check 1".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/136/builds/2211

Here is the relevant piece of the build log for the reference
Step 7 (ninja check 1) failure: stage 1 checked (failure)
******************** TEST 'libFuzzer-s390x-default-Linux :: fuzzer-timeout.test' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
RUN: at line 1: /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/clang    -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta   --driver-mode=g++ -O2 -gline-tables-only -fsanitize=address,fuzzer -I/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer  /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/TimeoutTest.cpp -o /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest
+ /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/clang -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta --driver-mode=g++ -O2 -gline-tables-only -fsanitize=address,fuzzer -I/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/TimeoutTest.cpp -o /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest
RUN: at line 2: /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/clang    -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta   --driver-mode=g++ -O2 -gline-tables-only -fsanitize=address,fuzzer -I/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer  /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/TimeoutEmptyTest.cpp -o /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutEmptyTest
+ /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/clang -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta --driver-mode=g++ -O2 -gline-tables-only -fsanitize=address,fuzzer -I/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/TimeoutEmptyTest.cpp -o /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutEmptyTest
RUN: at line 3: not  /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1 2>&1 | FileCheck /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/fuzzer-timeout.test --check-prefix=TimeoutTest
+ not /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1
+ FileCheck /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/fuzzer-timeout.test --check-prefix=TimeoutTest
RUN: at line 12: not  /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1 /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/hi.txt 2>&1 | FileCheck /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/fuzzer-timeout.test --check-prefix=SingleInputTimeoutTest
+ not /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1 /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/hi.txt
+ FileCheck /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/fuzzer-timeout.test --check-prefix=SingleInputTimeoutTest
RUN: at line 16: /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1 -timeout_exitcode=0
+ /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1 -timeout_exitcode=0
INFO: Running with entropic power schedule (0xFF, 100).
INFO: Seed: 703330766
INFO: Loaded 1 modules   (13 inline 8-bit counters): 13 [0x2aa3594fe70, 0x2aa3594fe7d), 
INFO: Loaded 1 PC tables (13 PCs): 13 [0x2aa3594fe80,0x2aa3594ff50), 
INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 4096 bytes
INFO: A corpus is not provided, starting from an empty corpus
#2	INITED cov: 2 ft: 2 corp: 1/1b exec/s: 0 rss: 31Mb
#1237	NEW    cov: 3 ft: 3 corp: 2/15b lim: 14 exec/s: 0 rss: 32Mb L: 14/14 MS: 5 CrossOver-ChangeByte-InsertRepeatedBytes-CopyPart-ChangeByte-
#1239	REDUCE cov: 3 ft: 3 corp: 2/12b lim: 14 exec/s: 0 rss: 32Mb L: 11/11 MS: 2 CrossOver-EraseBytes-
#1297	REDUCE cov: 3 ft: 3 corp: 2/7b lim: 14 exec/s: 0 rss: 32Mb L: 6/6 MS: 3 CopyPart-InsertByte-CrossOver-
#1299	REDUCE cov: 3 ft: 3 corp: 2/4b lim: 14 exec/s: 0 rss: 32Mb L: 3/3 MS: 2 ChangeBit-EraseBytes-
#1345	REDUCE cov: 3 ft: 3 corp: 2/3b lim: 14 exec/s: 0 rss: 32Mb L: 2/2 MS: 1 EraseBytes-
#1476	REDUCE cov: 4 ft: 4 corp: 3/4b lim: 14 exec/s: 0 rss: 32Mb L: 1/2 MS: 1 EraseBytes-
#6102	NEW    cov: 5 ft: 5 corp: 4/6b lim: 58 exec/s: 0 rss: 32Mb L: 2/2 MS: 1 InsertByte-
#6138	NEW    cov: 6 ft: 6 corp: 5/49b lim: 58 exec/s: 0 rss: 32Mb L: 43/43 MS: 1 InsertRepeatedBytes-
#6194	REDUCE cov: 6 ft: 6 corp: 5/29b lim: 58 exec/s: 0 rss: 32Mb L: 23/23 MS: 1 EraseBytes-
#6363	REDUCE cov: 6 ft: 6 corp: 5/18b lim: 58 exec/s: 0 rss: 32Mb L: 12/12 MS: 4 ChangeBinInt-InsertByte-ChangeByte-EraseBytes-
#6524	REDUCE cov: 6 ft: 6 corp: 5/16b lim: 58 exec/s: 0 rss: 32Mb L: 10/10 MS: 1 EraseBytes-
#6740	REDUCE cov: 6 ft: 6 corp: 5/15b lim: 58 exec/s: 0 rss: 32Mb L: 9/9 MS: 1 EraseBytes-
#6783	REDUCE cov: 6 ft: 6 corp: 5/13b lim: 58 exec/s: 0 rss: 32Mb L: 7/7 MS: 3 ChangeByte-CrossOver-EraseBytes-
#6851	REDUCE cov: 6 ft: 6 corp: 5/11b lim: 58 exec/s: 0 rss: 32Mb L: 5/5 MS: 3 ChangeBit-ShuffleBytes-EraseBytes-
#6918	REDUCE cov: 6 ft: 6 corp: 5/9b lim: 58 exec/s: 0 rss: 32Mb L: 3/3 MS: 2 InsertByte-EraseBytes-
ALARM: working on the last Unit for 1 seconds
       and the timeout value is 1 (use -timeout=N to change)
MS: 2 ShuffleBytes-InsertByte-; base unit: 94dd9e08c129c785f7f256e82fbe0a30e6d1ae40
0x48,0x69,0x21,
Hi!
artifact_prefix='./'; Test unit written to ./timeout-c0a0ad26a634840c67a210fefdda76577b03a111
Base64: SGkh
==3279150== ERROR: libFuzzer: timeout after 1 seconds
AddressSanitizer:DEADLYSIGNAL
=================================================================
AddressSanitizer:DEADLYSIGNAL
...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants