Skip to content

Conversation

@aabhinavg1
Copy link
Contributor

@aabhinavg1 aabhinavg1 commented Dec 5, 2025

When handling usub.with.overflow, we were checking LHS > RHS
(SETUGT), which is the opposite of the actual borrow condition
(LHS < RHS). This could produce an incorrect overflow flag.

This patch picks CompareLHS/CompareRHS based on IsAdd so that we now:
• use (Result < LHS) for uadd
• use (LHS < RHS) for usub

So the logic now matches unsigned overflow rules for both cases.

fix #170634

@aabhinavg1 aabhinavg1 requested review from dtcxzyw and xgupta December 5, 2025 18:20
@aabhinavg1 aabhinavg1 requested a review from nikic as a code owner December 5, 2025 18:20
@llvmbot llvmbot added llvm:instcombine Covers the InstCombine, InstSimplify and AggressiveInstCombine passes llvm:transforms labels Dec 5, 2025
@llvmbot
Copy link
Member

llvmbot commented Dec 5, 2025

@llvm/pr-subscribers-backend-amdgpu
@llvm/pr-subscribers-backend-x86
@llvm/pr-subscribers-backend-loongarch
@llvm/pr-subscribers-backend-arm
@llvm/pr-subscribers-backend-powerpc
@llvm/pr-subscribers-llvm-selectiondag
@llvm/pr-subscribers-backend-risc-v

@llvm/pr-subscribers-llvm-transforms

Author: None (aabhinavg1)

Changes

Transform usub.with.overflow(X, Y) -> {X - Y, X u&lt; Y} for unsigned subtraction
fix #170634


Patch is 21.28 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/170896.diff

7 Files Affected:

  • (modified) llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp (+13)
  • (modified) llvm/test/Transforms/InstCombine/known-bits.ll (+7-8)
  • (added) llvm/test/Transforms/InstCombine/pr170634.ll (+33)
  • (modified) llvm/test/Transforms/InstCombine/result-of-usub-is-non-zero-and-no-overflow.ll (+30-30)
  • (modified) llvm/test/Transforms/InstCombine/usub-overflow-known-by-implied-cond.ll (+16-24)
  • (modified) llvm/test/Transforms/InstCombine/usubo.ll (+4-6)
  • (modified) llvm/test/Transforms/InstCombine/with_overflow.ll (+5-2)
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
index 743c4f574e131..3bd7eb855b147 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
@@ -865,6 +865,19 @@ InstCombinerImpl::foldIntrinsicWithOverflowCommon(IntrinsicInst *II) {
                             WO->getRHS(), *WO, OperationResult, OverflowResult))
     return createOverflowTuple(WO, OperationResult, OverflowResult);
 
+  // Transform: usub.with.overflow(X, Y) -> {X - Y, X u< Y}
+  if (WO->getBinaryOp() == Instruction::Sub && !WO->isSigned()) {
+    IRBuilder<> Builder(WO);
+    Value *Sub = Builder.CreateSub(WO->getLHS(), WO->getRHS());
+    Value *Overflow = Builder.CreateICmpULT(WO->getLHS(), WO->getRHS());
+
+    Value *ResultStruct = UndefValue::get(WO->getType());
+    ResultStruct = Builder.CreateInsertValue(ResultStruct, Sub, 0);
+    ResultStruct = Builder.CreateInsertValue(ResultStruct, Overflow, 1);
+
+    return replaceInstUsesWith(*WO, ResultStruct);
+  }
+
   // See whether we can optimize the overflow check with assumption information.
   for (User *U : WO->users()) {
     if (!match(U, m_ExtractValue<1>(m_Value())))
diff --git a/llvm/test/Transforms/InstCombine/known-bits.ll b/llvm/test/Transforms/InstCombine/known-bits.ll
index da2123a5dfe74..fc73ce5503ffe 100644
--- a/llvm/test/Transforms/InstCombine/known-bits.ll
+++ b/llvm/test/Transforms/InstCombine/known-bits.ll
@@ -1068,12 +1068,12 @@ define i1 @extract_value_usub(i8 %x, i8 %zz) {
 ; CHECK-LABEL: @extract_value_usub(
 ; CHECK-NEXT:    [[Z:%.*]] = add nuw i8 [[ZZ:%.*]], 1
 ; CHECK-NEXT:    [[Y:%.*]] = add i8 [[X:%.*]], [[Z]]
-; CHECK-NEXT:    [[SUB_UOV:%.*]] = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 [[X]], i8 [[Y]])
-; CHECK-NEXT:    [[SUB:%.*]] = extractvalue { i8, i1 } [[SUB_UOV]], 0
-; CHECK-NEXT:    [[UOV:%.*]] = extractvalue { i8, i1 } [[SUB_UOV]], 1
+; CHECK-NEXT:    [[SUB:%.*]] = xor i8 [[ZZ]], -1
+; CHECK-NEXT:    [[UOV:%.*]] = icmp ult i8 [[X]], [[Y]]
 ; CHECK-NEXT:    call void @use.i1(i1 [[UOV]])
 ; CHECK-NEXT:    call void @use.i8(i8 [[SUB]])
-; CHECK-NEXT:    ret i1 false
+; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[ZZ]], -1
+; CHECK-NEXT:    ret i1 [[R]]
 ;
   %z = add nuw i8 %zz, 1
   %y = add i8 %x, %z
@@ -1090,12 +1090,11 @@ define i1 @extract_value_usub(i8 %x, i8 %zz) {
 define i1 @extract_value_usub_fail(i8 %x, i8 %z) {
 ; CHECK-LABEL: @extract_value_usub_fail(
 ; CHECK-NEXT:    [[Y:%.*]] = add i8 [[X:%.*]], [[Z:%.*]]
-; CHECK-NEXT:    [[SUB_UOV:%.*]] = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 [[X]], i8 [[Y]])
-; CHECK-NEXT:    [[SUB:%.*]] = extractvalue { i8, i1 } [[SUB_UOV]], 0
-; CHECK-NEXT:    [[UOV:%.*]] = extractvalue { i8, i1 } [[SUB_UOV]], 1
+; CHECK-NEXT:    [[SUB:%.*]] = sub i8 0, [[Z]]
+; CHECK-NEXT:    [[UOV:%.*]] = icmp ult i8 [[X]], [[Y]]
 ; CHECK-NEXT:    call void @use.i1(i1 [[UOV]])
 ; CHECK-NEXT:    call void @use.i8(i8 [[SUB]])
-; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[SUB]], 0
+; CHECK-NEXT:    [[R:%.*]] = icmp eq i8 [[Z]], 0
 ; CHECK-NEXT:    ret i1 [[R]]
 ;
   %y = add i8 %x, %z
diff --git a/llvm/test/Transforms/InstCombine/pr170634.ll b/llvm/test/Transforms/InstCombine/pr170634.ll
new file mode 100644
index 0000000000000..62a332e14b04a
--- /dev/null
+++ b/llvm/test/Transforms/InstCombine/pr170634.ll
@@ -0,0 +1,33 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -passes=instcombine -S < %s | FileCheck %s
+define dso_local i64 @func(i64 noundef %x, i64 noundef %y) local_unnamed_addr {
+; CHECK-LABEL: @func(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    [[TMP0:%.*]] = icmp ult i64 [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT:    br i1 [[TMP0]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]
+; CHECK:       if.then:
+; CHECK-NEXT:    br label [[RETURN:%.*]]
+; CHECK:       if.end:
+; CHECK-NEXT:    [[TMP1:%.*]] = sub nuw i64 [[X]], [[Y]]
+; CHECK-NEXT:    br label [[RETURN]]
+; CHECK:       return:
+; CHECK-NEXT:    [[RETVAL_0:%.*]] = phi i64 [ 291, [[IF_THEN]] ], [ [[TMP1]], [[IF_END]] ]
+; CHECK-NEXT:    ret i64 [[RETVAL_0]]
+;
+entry:
+  %0 = call { i64, i1 } @llvm.usub.with.overflow.i64(i64 %x, i64 %y)
+  %1 = extractvalue { i64, i1 } %0, 1
+  %2 = extractvalue { i64, i1 } %0, 0
+  br i1 %1, label %if.then, label %if.end
+
+if.then:                                          ; preds = %entry
+  br label %return
+
+if.end:                                           ; preds = %entry
+  br label %return
+
+return:                                           ; preds = %if.end, %if.then
+  %retval.0 = phi i64 [ 291, %if.then ], [ %2, %if.end ]
+  ret i64 %retval.0
+}
+
diff --git a/llvm/test/Transforms/InstCombine/result-of-usub-is-non-zero-and-no-overflow.ll b/llvm/test/Transforms/InstCombine/result-of-usub-is-non-zero-and-no-overflow.ll
index 30a5072c7edc8..46b8a853e6cf5 100644
--- a/llvm/test/Transforms/InstCombine/result-of-usub-is-non-zero-and-no-overflow.ll
+++ b/llvm/test/Transforms/InstCombine/result-of-usub-is-non-zero-and-no-overflow.ll
@@ -141,16 +141,16 @@ define i1 @t1_strict_logical(i8 %base, i8 %offset) {
 
 define i1 @t2(i8 %base, i8 %offset) {
 ; CHECK-LABEL: @t2(
-; CHECK-NEXT:    [[AGG:%.*]] = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 [[BASE:%.*]], i8 [[OFFSET:%.*]])
+; CHECK-NEXT:    [[ADJUSTED:%.*]] = sub i8 [[BASE:%.*]], [[OFFSET:%.*]]
+; CHECK-NEXT:    [[UNDERFLOW:%.*]] = icmp ult i8 [[BASE]], [[OFFSET]]
+; CHECK-NEXT:    [[TMP3:%.*]] = insertvalue { i8, i1 } undef, i8 [[ADJUSTED]], 0
+; CHECK-NEXT:    [[AGG:%.*]] = insertvalue { i8, i1 } [[TMP3]], i1 [[UNDERFLOW]], 1
 ; CHECK-NEXT:    call void @useagg({ i8, i1 } [[AGG]])
-; CHECK-NEXT:    [[ADJUSTED:%.*]] = extractvalue { i8, i1 } [[AGG]], 0
 ; CHECK-NEXT:    call void @use8(i8 [[ADJUSTED]])
-; CHECK-NEXT:    [[UNDERFLOW:%.*]] = extractvalue { i8, i1 } [[AGG]], 1
 ; CHECK-NEXT:    call void @use1(i1 [[UNDERFLOW]])
 ; CHECK-NEXT:    [[NO_UNDERFLOW:%.*]] = xor i1 [[UNDERFLOW]], true
 ; CHECK-NEXT:    call void @use1(i1 [[NO_UNDERFLOW]])
-; CHECK-NEXT:    [[NOT_NULL:%.*]] = icmp ne i8 [[ADJUSTED]], 0
-; CHECK-NEXT:    [[R:%.*]] = and i1 [[NOT_NULL]], [[NO_UNDERFLOW]]
+; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[BASE]], [[OFFSET]]
 ; CHECK-NEXT:    ret i1 [[R]]
 ;
   %agg = call {i8, i1} @llvm.usub.with.overflow(i8 %base, i8 %offset)
@@ -168,16 +168,16 @@ define i1 @t2(i8 %base, i8 %offset) {
 
 define i1 @t2_logical(i8 %base, i8 %offset) {
 ; CHECK-LABEL: @t2_logical(
-; CHECK-NEXT:    [[AGG:%.*]] = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 [[BASE:%.*]], i8 [[OFFSET:%.*]])
+; CHECK-NEXT:    [[ADJUSTED:%.*]] = sub i8 [[BASE:%.*]], [[OFFSET:%.*]]
+; CHECK-NEXT:    [[UNDERFLOW:%.*]] = icmp ult i8 [[BASE]], [[OFFSET]]
+; CHECK-NEXT:    [[TMP3:%.*]] = insertvalue { i8, i1 } undef, i8 [[ADJUSTED]], 0
+; CHECK-NEXT:    [[AGG:%.*]] = insertvalue { i8, i1 } [[TMP3]], i1 [[UNDERFLOW]], 1
 ; CHECK-NEXT:    call void @useagg({ i8, i1 } [[AGG]])
-; CHECK-NEXT:    [[ADJUSTED:%.*]] = extractvalue { i8, i1 } [[AGG]], 0
 ; CHECK-NEXT:    call void @use8(i8 [[ADJUSTED]])
-; CHECK-NEXT:    [[UNDERFLOW:%.*]] = extractvalue { i8, i1 } [[AGG]], 1
 ; CHECK-NEXT:    call void @use1(i1 [[UNDERFLOW]])
 ; CHECK-NEXT:    [[NO_UNDERFLOW:%.*]] = xor i1 [[UNDERFLOW]], true
 ; CHECK-NEXT:    call void @use1(i1 [[NO_UNDERFLOW]])
-; CHECK-NEXT:    [[NOT_NULL:%.*]] = icmp ne i8 [[ADJUSTED]], 0
-; CHECK-NEXT:    [[R:%.*]] = and i1 [[NOT_NULL]], [[NO_UNDERFLOW]]
+; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[BASE]], [[OFFSET]]
 ; CHECK-NEXT:    ret i1 [[R]]
 ;
   %agg = call {i8, i1} @llvm.usub.with.overflow(i8 %base, i8 %offset)
@@ -321,16 +321,16 @@ define i1 @t5_commutability2_logical(i8 %base, i8 %offset) {
 
 define i1 @t6_commutability(i8 %base, i8 %offset) {
 ; CHECK-LABEL: @t6_commutability(
-; CHECK-NEXT:    [[AGG:%.*]] = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 [[BASE:%.*]], i8 [[OFFSET:%.*]])
+; CHECK-NEXT:    [[ADJUSTED:%.*]] = sub i8 [[BASE:%.*]], [[OFFSET:%.*]]
+; CHECK-NEXT:    [[UNDERFLOW:%.*]] = icmp ult i8 [[BASE]], [[OFFSET]]
+; CHECK-NEXT:    [[TMP3:%.*]] = insertvalue { i8, i1 } undef, i8 [[ADJUSTED]], 0
+; CHECK-NEXT:    [[AGG:%.*]] = insertvalue { i8, i1 } [[TMP3]], i1 [[UNDERFLOW]], 1
 ; CHECK-NEXT:    call void @useagg({ i8, i1 } [[AGG]])
-; CHECK-NEXT:    [[ADJUSTED:%.*]] = extractvalue { i8, i1 } [[AGG]], 0
 ; CHECK-NEXT:    call void @use8(i8 [[ADJUSTED]])
-; CHECK-NEXT:    [[UNDERFLOW:%.*]] = extractvalue { i8, i1 } [[AGG]], 1
 ; CHECK-NEXT:    call void @use1(i1 [[UNDERFLOW]])
 ; CHECK-NEXT:    [[NO_UNDERFLOW:%.*]] = xor i1 [[UNDERFLOW]], true
 ; CHECK-NEXT:    call void @use1(i1 [[NO_UNDERFLOW]])
-; CHECK-NEXT:    [[NOT_NULL:%.*]] = icmp ne i8 [[ADJUSTED]], 0
-; CHECK-NEXT:    [[R:%.*]] = and i1 [[NOT_NULL]], [[NO_UNDERFLOW]]
+; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[BASE]], [[OFFSET]]
 ; CHECK-NEXT:    ret i1 [[R]]
 ;
   %agg = call {i8, i1} @llvm.usub.with.overflow(i8 %base, i8 %offset)
@@ -348,16 +348,16 @@ define i1 @t6_commutability(i8 %base, i8 %offset) {
 
 define i1 @t6_commutability_logical(i8 %base, i8 %offset) {
 ; CHECK-LABEL: @t6_commutability_logical(
-; CHECK-NEXT:    [[AGG:%.*]] = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 [[BASE:%.*]], i8 [[OFFSET:%.*]])
+; CHECK-NEXT:    [[ADJUSTED:%.*]] = sub i8 [[BASE:%.*]], [[OFFSET:%.*]]
+; CHECK-NEXT:    [[UNDERFLOW:%.*]] = icmp ult i8 [[BASE]], [[OFFSET]]
+; CHECK-NEXT:    [[TMP3:%.*]] = insertvalue { i8, i1 } undef, i8 [[ADJUSTED]], 0
+; CHECK-NEXT:    [[AGG:%.*]] = insertvalue { i8, i1 } [[TMP3]], i1 [[UNDERFLOW]], 1
 ; CHECK-NEXT:    call void @useagg({ i8, i1 } [[AGG]])
-; CHECK-NEXT:    [[ADJUSTED:%.*]] = extractvalue { i8, i1 } [[AGG]], 0
 ; CHECK-NEXT:    call void @use8(i8 [[ADJUSTED]])
-; CHECK-NEXT:    [[UNDERFLOW:%.*]] = extractvalue { i8, i1 } [[AGG]], 1
 ; CHECK-NEXT:    call void @use1(i1 [[UNDERFLOW]])
 ; CHECK-NEXT:    [[NO_UNDERFLOW:%.*]] = xor i1 [[UNDERFLOW]], true
 ; CHECK-NEXT:    call void @use1(i1 [[NO_UNDERFLOW]])
-; CHECK-NEXT:    [[NOT_NULL:%.*]] = icmp ne i8 [[ADJUSTED]], 0
-; CHECK-NEXT:    [[R:%.*]] = and i1 [[NOT_NULL]], [[NO_UNDERFLOW]]
+; CHECK-NEXT:    [[R:%.*]] = icmp ugt i8 [[BASE]], [[OFFSET]]
 ; CHECK-NEXT:    ret i1 [[R]]
 ;
   %agg = call {i8, i1} @llvm.usub.with.overflow(i8 %base, i8 %offset)
@@ -459,14 +459,14 @@ define i1 @t7_nonstrict_logical(i8 %base, i8 %offset) {
 
 define i1 @t8(i8 %base, i8 %offset) {
 ; CHECK-LABEL: @t8(
-; CHECK-NEXT:    [[AGG:%.*]] = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 [[BASE:%.*]], i8 [[OFFSET:%.*]])
+; CHECK-NEXT:    [[ADJUSTED:%.*]] = sub i8 [[BASE:%.*]], [[OFFSET:%.*]]
+; CHECK-NEXT:    [[UNDERFLOW:%.*]] = icmp ult i8 [[BASE]], [[OFFSET]]
+; CHECK-NEXT:    [[TMP3:%.*]] = insertvalue { i8, i1 } undef, i8 [[ADJUSTED]], 0
+; CHECK-NEXT:    [[AGG:%.*]] = insertvalue { i8, i1 } [[TMP3]], i1 [[UNDERFLOW]], 1
 ; CHECK-NEXT:    call void @useagg({ i8, i1 } [[AGG]])
-; CHECK-NEXT:    [[ADJUSTED:%.*]] = extractvalue { i8, i1 } [[AGG]], 0
 ; CHECK-NEXT:    call void @use8(i8 [[ADJUSTED]])
-; CHECK-NEXT:    [[UNDERFLOW:%.*]] = extractvalue { i8, i1 } [[AGG]], 1
 ; CHECK-NEXT:    call void @use1(i1 [[UNDERFLOW]])
-; CHECK-NEXT:    [[NULL:%.*]] = icmp eq i8 [[ADJUSTED]], 0
-; CHECK-NEXT:    [[R:%.*]] = or i1 [[NULL]], [[UNDERFLOW]]
+; CHECK-NEXT:    [[R:%.*]] = icmp ule i8 [[BASE]], [[OFFSET]]
 ; CHECK-NEXT:    ret i1 [[R]]
 ;
   %agg = call {i8, i1} @llvm.usub.with.overflow(i8 %base, i8 %offset)
@@ -482,14 +482,14 @@ define i1 @t8(i8 %base, i8 %offset) {
 
 define i1 @t8_logical(i8 %base, i8 %offset) {
 ; CHECK-LABEL: @t8_logical(
-; CHECK-NEXT:    [[AGG:%.*]] = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 [[BASE:%.*]], i8 [[OFFSET:%.*]])
+; CHECK-NEXT:    [[ADJUSTED:%.*]] = sub i8 [[BASE:%.*]], [[OFFSET:%.*]]
+; CHECK-NEXT:    [[UNDERFLOW:%.*]] = icmp ult i8 [[BASE]], [[OFFSET]]
+; CHECK-NEXT:    [[TMP3:%.*]] = insertvalue { i8, i1 } undef, i8 [[ADJUSTED]], 0
+; CHECK-NEXT:    [[AGG:%.*]] = insertvalue { i8, i1 } [[TMP3]], i1 [[UNDERFLOW]], 1
 ; CHECK-NEXT:    call void @useagg({ i8, i1 } [[AGG]])
-; CHECK-NEXT:    [[ADJUSTED:%.*]] = extractvalue { i8, i1 } [[AGG]], 0
 ; CHECK-NEXT:    call void @use8(i8 [[ADJUSTED]])
-; CHECK-NEXT:    [[UNDERFLOW:%.*]] = extractvalue { i8, i1 } [[AGG]], 1
 ; CHECK-NEXT:    call void @use1(i1 [[UNDERFLOW]])
-; CHECK-NEXT:    [[NULL:%.*]] = icmp eq i8 [[ADJUSTED]], 0
-; CHECK-NEXT:    [[R:%.*]] = or i1 [[NULL]], [[UNDERFLOW]]
+; CHECK-NEXT:    [[R:%.*]] = icmp ule i8 [[BASE]], [[OFFSET]]
 ; CHECK-NEXT:    ret i1 [[R]]
 ;
   %agg = call {i8, i1} @llvm.usub.with.overflow(i8 %base, i8 %offset)
diff --git a/llvm/test/Transforms/InstCombine/usub-overflow-known-by-implied-cond.ll b/llvm/test/Transforms/InstCombine/usub-overflow-known-by-implied-cond.ll
index 90ca39a70a0bb..c9030e5ab0321 100644
--- a/llvm/test/Transforms/InstCombine/usub-overflow-known-by-implied-cond.ll
+++ b/llvm/test/Transforms/InstCombine/usub-overflow-known-by-implied-cond.ll
@@ -175,11 +175,10 @@ define i32 @test7(i32 %a, i32 %b) {
 ; CHECK-NEXT:    [[COND:%.*]] = icmp slt i32 [[A:%.*]], [[B:%.*]]
 ; CHECK-NEXT:    br i1 [[COND]], label [[BB1:%.*]], label [[BB3:%.*]]
 ; CHECK:       bb1:
-; CHECK-NEXT:    [[SUB1:%.*]] = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 [[A]], i32 [[B]])
-; CHECK-NEXT:    [[C1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 1
+; CHECK-NEXT:    [[C1:%.*]] = icmp ult i32 [[A]], [[B]]
 ; CHECK-NEXT:    br i1 [[C1]], label [[BB3]], label [[BB2:%.*]]
 ; CHECK:       bb2:
-; CHECK-NEXT:    [[R1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 0
+; CHECK-NEXT:    [[R1:%.*]] = sub nuw i32 [[A]], [[B]]
 ; CHECK-NEXT:    ret i32 [[R1]]
 ; CHECK:       bb3:
 ; CHECK-NEXT:    ret i32 0
@@ -205,11 +204,10 @@ define i32 @test8(i32 %a, i32 %b) {
 ; CHECK-NEXT:    [[COND_NOT:%.*]] = icmp eq i32 [[A:%.*]], [[B:%.*]]
 ; CHECK-NEXT:    br i1 [[COND_NOT]], label [[BB3:%.*]], label [[BB1:%.*]]
 ; CHECK:       bb1:
-; CHECK-NEXT:    [[SUB1:%.*]] = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 [[A]], i32 [[B]])
-; CHECK-NEXT:    [[C1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 1
+; CHECK-NEXT:    [[C1:%.*]] = icmp ult i32 [[A]], [[B]]
 ; CHECK-NEXT:    br i1 [[C1]], label [[BB3]], label [[BB2:%.*]]
 ; CHECK:       bb2:
-; CHECK-NEXT:    [[R1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 0
+; CHECK-NEXT:    [[R1:%.*]] = sub nuw i32 [[A]], [[B]]
 ; CHECK-NEXT:    ret i32 [[R1]]
 ; CHECK:       bb3:
 ; CHECK-NEXT:    ret i32 0
@@ -296,11 +294,10 @@ define i32 @test10(i32 %a, i32 %b, i1 %cond2) {
 ; CHECK-NEXT:    [[AND:%.*]] = and i1 [[COND]], [[COND2:%.*]]
 ; CHECK-NEXT:    br i1 [[AND]], label [[BB3:%.*]], label [[BB1:%.*]]
 ; CHECK:       bb1:
-; CHECK-NEXT:    [[SUB1:%.*]] = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 [[A]], i32 [[B]])
-; CHECK-NEXT:    [[C1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 1
+; CHECK-NEXT:    [[C1:%.*]] = icmp ult i32 [[A]], [[B]]
 ; CHECK-NEXT:    br i1 [[C1]], label [[BB3]], label [[BB2:%.*]]
 ; CHECK:       bb2:
-; CHECK-NEXT:    [[R1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 0
+; CHECK-NEXT:    [[R1:%.*]] = sub nuw i32 [[A]], [[B]]
 ; CHECK-NEXT:    ret i32 [[R1]]
 ; CHECK:       bb3:
 ; CHECK-NEXT:    ret i32 0
@@ -328,11 +325,10 @@ define i32 @test10_logical(i32 %a, i32 %b, i1 %cond2) {
 ; CHECK-NEXT:    [[AND:%.*]] = select i1 [[COND]], i1 [[COND2:%.*]], i1 false
 ; CHECK-NEXT:    br i1 [[AND]], label [[BB3:%.*]], label [[BB1:%.*]]
 ; CHECK:       bb1:
-; CHECK-NEXT:    [[SUB1:%.*]] = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 [[A]], i32 [[B]])
-; CHECK-NEXT:    [[C1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 1
+; CHECK-NEXT:    [[C1:%.*]] = icmp ult i32 [[A]], [[B]]
 ; CHECK-NEXT:    br i1 [[C1]], label [[BB3]], label [[BB2:%.*]]
 ; CHECK:       bb2:
-; CHECK-NEXT:    [[R1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 0
+; CHECK-NEXT:    [[R1:%.*]] = sub nuw i32 [[A]], [[B]]
 ; CHECK-NEXT:    ret i32 [[R1]]
 ; CHECK:       bb3:
 ; CHECK-NEXT:    ret i32 0
@@ -360,11 +356,10 @@ define i32 @test11(i32 %a, i32 %b, i1 %cond2) {
 ; CHECK-NEXT:    [[OR:%.*]] = or i1 [[COND]], [[COND2:%.*]]
 ; CHECK-NEXT:    br i1 [[OR]], label [[BB1:%.*]], label [[BB3:%.*]]
 ; CHECK:       bb1:
-; CHECK-NEXT:    [[SUB1:%.*]] = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 [[A]], i32 [[B]])
-; CHECK-NEXT:    [[C1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 1
+; CHECK-NEXT:    [[C1:%.*]] = icmp ult i32 [[A]], [[B]]
 ; CHECK-NEXT:    br i1 [[C1]], label [[BB3]], label [[BB2:%.*]]
 ; CHECK:       bb2:
-; CHECK-NEXT:    [[R1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 0
+; CHECK-NEXT:    [[R1:%.*]] = sub nuw i32 [[A]], [[B]]
 ; CHECK-NEXT:    ret i32 [[R1]]
 ; CHECK:       bb3:
 ; CHECK-NEXT:    ret i32 0
@@ -392,11 +387,10 @@ define i32 @test11_logical(i32 %a, i32 %b, i1 %cond2) {
 ; CHECK-NEXT:    [[OR:%.*]] = select i1 [[COND]], i1 true, i1 [[COND2:%.*]]
 ; CHECK-NEXT:    br i1 [[OR]], label [[BB1:%.*]], label [[BB3:%.*]]
 ; CHECK:       bb1:
-; CHECK-NEXT:    [[SUB1:%.*]] = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 [[A]], i32 [[B]])
-; CHECK-NEXT:    [[C1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 1
+; CHECK-NEXT:    [[C1:%.*]] = icmp ult i32 [[A]], [[B]]
 ; CHECK-NEXT:    br i1 [[C1]], label [[BB3]], label [[BB2:%.*]]
 ; CHECK:       bb2:
-; CHECK-NEXT:    [[R1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 0
+; CHECK-NEXT:    [[R1:%.*]] = sub nuw i32 [[A]], [[B]]
 ; CHECK-NEXT:    ret i32 [[R1]]
 ; CHECK:       bb3:
 ; CHECK-NEXT:    ret i32 0
@@ -424,11 +418,10 @@ define i32 @test12(i32 %a, i32 %b, i1 %cond2) {
 ; CHECK-NEXT:    [[OR:%.*]] = or i1 [[COND]], [[COND2:%.*]]
 ; CHECK-NEXT:    br i1 [[OR]], label [[BB3:%.*]], label [[BB1:%.*]]
 ; CHECK:       bb1:
-; CHECK-NEXT:    [[SUB1:%.*]] = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 [[A]], i32 [[B]])
-; CHECK-NEXT:    [[C1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 1
+; CHECK-NEXT:    [[C1:%.*]] = icmp ult i32 [[A]], [[B]]
 ; CHECK-NEXT:    br i1 [[C1]], label [[BB3]], label [[BB2:%.*]]
 ; CHECK:       bb2:
-; CHECK-NEXT:    [[R1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 0
+; CHECK-NEXT:    [[R1:%.*]] = sub nuw i32 [[A]], [[B]]
 ; CHECK-NEXT:    ret i32 [[R1]]
 ; CHECK:       bb3:
 ; CHECK-NEXT:    ret i32 0
@@ -456,11 +449,10 @@ define i32 @test12_logical(i32 %a, i32 %b, i1 %cond2) {
 ; CHECK-NEXT:    [[OR:%.*]] = select i1 [[COND]], i1 true, i1 [[COND2:%.*]]
 ; CHECK-NEXT:    br i1 [[OR]], label [[BB3:%.*]], label [[BB1:%.*]]
 ; CHECK:       bb1:
-; CHECK-NEXT:    [[SUB1:%.*]] = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 [[A]], i32 [[B]])
-; CHECK-NEXT:    [[C1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 1
+; CHECK-NEXT:    [[C1:%.*]] = icmp ult i32 [[A]], [[B]]
 ; CHECK-NEXT:    br i1 [[C1]], label [[BB3]], label [[BB2:%.*]]
 ; CHECK:       bb2:
-; CHECK-NEXT:    [[R1:%.*]] = extractvalue { i32, i1 } [[SUB1]], 0
+; CHECK-NEXT:    [[R1:%.*]] = sub nuw i32 [[A]], [[B]]
 ; CHECK-NEXT:    ret i32 [[R1]]
 ; CHECK:       bb3:
 ; CHECK-NEXT:    ret i32 0
diff --git a/llvm/test/Transforms/InstCombine/usubo.ll b/llvm/test/Transforms/InstCombine/usubo.ll
index 2074190a2cd45..e4b9c0e08ba22 100644
--- a/llvm/test/Transforms/InstCombine/usubo.ll
+++ b/llvm/test/Transforms/InstCombine/usubo.ll
@@ -130,10 +130,9 @@ define i1 @sub_ne0(i8 %x, i8 %y, i1 %b) {
 
 define i1 @sub_eq1(i8 %x, i8 %y, i1 %b) {
 ; CHECK-LABEL: @sub_eq1(
-; CHECK-NEXT:    [[SS:%.*]] = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
-; CHECK-NEXT:    [[OV:%.*]] = extractvalue { i8, i1 } [[SS]], 1
+; CHECK-NEXT:    [[SUB:%.*]] = sub i8 [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT:    [[OV:%.*]] = icmp ult i8 [[X]], [[Y]]
 ; CHECK-NEXT:    call void @use(i1 [[OV]])
-; CHECK-NEXT:    [[SUB:%.*]] = extractvalue { i8, i1 } [[SS]], 0
 ; CHECK-NEXT:    [[EQ1:%.*]] = icmp eq i8 [[SUB]], 1
 ; CHECK-NEXT:    ret i1 [[EQ1]]
 ;
@@ -149,10 +148,9 @@ define i1 @sub_eq1(i8 %x, i8 %y, i1 %b) {
 
 define i1 @sub_sgt0(i8 %x, i8 %y, i1 %b) {
 ; CHECK-LABEL: @sub_sgt0(
-; CHECK-NEXT:    [[SS:%.*]] = call { i8, i1 } @llvm.usub.with.overflow.i8(i8 [[X:%.*]], i8 [[Y:%.*]])
-; CHECK-NEXT:    [[OV:%.*]] = extractvalue { i8, i1 } [[SS]], 1
+; CHECK-NEXT:    [[SUB:%.*]] = sub i8 [[X:%.*]], [[Y:%.*]]
+; CHECK-NEXT:    [[OV:%.*]] = icmp ult i8 [[X]], [[Y]]
 ; CHECK-NEXT:    call void @use(i1 [[OV]])
-; CHECK-NEXT:    [[SUB:%.*]] = extractvalue { i8, i1 } [[SS]], 0
 ; CHECK-NEXT:    [[SGT0:%.*]] = icmp sgt i8 [[SUB]], 0
 ; CHECK-NEXT:    ret i1 [[SGT0]]
 ;
diff --git a/llvm/test/Transforms/InstC...
[truncated]

@github-actions
Copy link

github-actions bot commented Dec 5, 2025

✅ With the latest revision this PR passed the undef deprecator.

@github-actions
Copy link

github-actions bot commented Dec 5, 2025

🐧 Linux x64 Test Results

  • 166843 tests passed
  • 2910 tests skipped
  • 22 tests failed

Failed Tests

(click on a test name to see its output)

LLVM

LLVM.CodeGen/AArch64/active_lane_mask.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=aarch64-linux-gnu -mattr=+sve < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/active_lane_mask.ll | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/active_lane_mask.ll --check-prefixes=CHECK,CHECK-SVE
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=aarch64-linux-gnu -mattr=+sve
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/active_lane_mask.ll --check-prefixes=CHECK,CHECK-SVE
# note: command had no output on stdout or stderr
# RUN: at line 3
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=aarch64-linux-gnu -mattr=+sme -force-streaming < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/active_lane_mask.ll | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/active_lane_mask.ll --check-prefixes=CHECK,CHECK-STREAMING
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=aarch64-linux-gnu -mattr=+sme -force-streaming
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/active_lane_mask.ll --check-prefixes=CHECK,CHECK-STREAMING
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/active_lane_mask.ll:307:25: error: CHECK-STREAMING-NEXT: expected string not found in input
# | ; CHECK-STREAMING-NEXT: index z0.b, w0, #1
# |                         ^
# | <stdin>:396:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:397:2: note: possible intended match here
# |  index z0.b, #0, #1
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/active_lane_mask.ll:334:25: error: CHECK-STREAMING-NEXT: expected string not found in input
# | ; CHECK-STREAMING-NEXT: index z0.b, w0, #1
# |                         ^
# | <stdin>:418:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:419:2: note: possible intended match here
# |  index z0.b, #0, #1
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/active_lane_mask.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |           391:  .globl lane_mask_v16i1_i8 // -- Begin function lane_mask_v16i1_i8 
# |           392:  .p2align 2 
# |           393:  .type lane_mask_v16i1_i8,@function 
# |           394: lane_mask_v16i1_i8: // @lane_mask_v16i1_i8 
# |           395:  .cfi_startproc 
# |           396: // %bb.0: 
# | next:307'0              X error: no match found
# |           397:  index z0.b, #0, #1 
# | next:307'0     ~~~~~~~~~~~~~~~~~~~~
# | next:307'1      ?                   possible intended match
# |           398:  mov z1.b, w0 
# | next:307'0     ~~~~~~~~~~~~~~
# |           399:  ptrue p0.b, vl16 
# | next:307'0     ~~~~~~~~~~~~~~~~~~
# |           400:  add z1.b, z1.b, z0.b 
# | next:307'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           401:  cmphi p1.b, p0/z, z0.b, z1.b 
# | next:307'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           402:  mov z0.b, p1/z, #-1 // =0xffffffffffffffff 
# | next:307'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           413:  .globl lane_mask_v8i1_i8 // -- Begin function lane_mask_v8i1_i8 
# | next:307'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           414:  .p2align 2 
# | next:307'0     ~~~~~~~~~~~~
# |           415:  .type lane_mask_v8i1_i8,@function 
# | next:307'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           416: lane_mask_v8i1_i8: // @lane_mask_v8i1_i8 
# | next:307'0     ~~~~~~~~~~~~~~~~~~
# |           417:  .cfi_startproc 
# |           418: // %bb.0: 
# | next:334'0              X error: no match found
# |           419:  index z0.b, #0, #1 
# | next:334'0     ~~~~~~~~~~~~~~~~~~~~
# | next:334'1      ?                   possible intended match
# |           420:  mov z1.b, w0 
# | next:334'0     ~~~~~~~~~~~~~~
# |           421:  ptrue p0.b, vl8 
# | next:334'0     ~~~~~~~~~~~~~~~~~
# |           422:  add z1.b, z1.b, z0.b 
# | next:334'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           423:  cmphi p1.b, p0/z, z0.b, z1.b 
# | next:334'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           424:  mov z0.b, p1/z, #-1 // =0xffffffffffffffff 
# | next:334'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/AArch64/vec_uaddo.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll -mtriple=aarch64-none-linux-gnu -mattr=+neon | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll --check-prefix=CHECK
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=aarch64-none-linux-gnu -mattr=+neon
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll --check-prefix=CHECK
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll:22:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: add v1.2s, v0.2s, v1.2s
# |               ^
# | <stdin>:7:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:8:2: note: possible intended match here
# |  add v2.2s, v0.2s, v1.2s
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll:37:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: add v1.2s, v0.2s, v1.2s
# |               ^
# | <stdin>:19:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:20:2: note: possible intended match here
# |  add v2.2s, v0.2s, v1.2s
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll:52:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: add v1.4s, v0.4s, v1.4s
# |               ^
# | <stdin>:31:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:32:2: note: possible intended match here
# |  add v2.4s, v0.4s, v1.4s
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll:69:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: add v1.4s, v0.4s, v1.4s
# |               ^
# | <stdin>:45:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:46:2: note: possible intended match here
# |  add v2.4s, v0.4s, v1.4s
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll:97:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: add v2.4s, v3.4s, v2.4s
# |               ^
# | <stdin>:70:16: note: scanning from here
# |  add x8, sp, #8
# |                ^
# | <stdin>:71:2: note: possible intended match here
# |  add v3.4s, v3.4s, v2.4s
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll:124:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: add v2.4s, v0.4s, v2.4s
# |               ^
# | <stdin>:94:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:95:2: note: possible intended match here
# |  add v4.4s, v0.4s, v2.4s
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll:142:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: cmhi v0.16b, v0.16b, v4.16b
# |               ^
# | <stdin>:109:28: note: scanning from here
# |  add v4.16b, v0.16b, v1.16b
# |                            ^
# | <stdin>:110:2: note: possible intended match here
# |  cmhi v0.16b, v1.16b, v4.16b
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll:174:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: cmhi v0.8h, v0.8h, v2.8h
# |               ^
# | <stdin>:138:25: note: scanning from here
# |  add v2.8h, v0.8h, v1.8h
# |                         ^
# | <stdin>:139:2: note: possible intended match here
# |  cmhi v0.8h, v1.8h, v2.8h
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll:197:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: add v1.2d, v0.2d, v1.2d
# |               ^
# | <stdin>:158:10: note: scanning from here
# | // %bb.0:
# |          ^
# | <stdin>:159:2: note: possible intended match here
# |  add v2.2d, v0.2d, v1.2d
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AArch64/vec_uaddo.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             1:  .file "<stdin>" 
# |             2:  .text 
# |             3:  .globl uaddo_v1i32 // -- Begin function uaddo_v1i32 
# |             4:  .p2align 2 
# |             5:  .type uaddo_v1i32,@function 
# |             6: uaddo_v1i32: // @uaddo_v1i32 
# |             7: // %bb.0: 
# | next:22'0               X error: no match found
# |             8:  add v2.2s, v0.2s, v1.2s 
# | next:22'0      ~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:22'1       ?                        possible intended match
# |             9:  cmhi v0.2s, v1.2s, v2.2s 
# | next:22'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            10:  str s2, [x0] 
# | next:22'0      ~~~~~~~~~~~~~~
# |            11:  ret 
# | next:22'0      ~~~~~
# |            12: .Lfunc_end0: 
# | next:22'0      ~~~~~~~~~~~~~
# |            13:  .size uaddo_v1i32, .Lfunc_end0-uaddo_v1i32 
# | next:22'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            14:  // -- End function 
# | next:22'0      ~~~~~~~~~~~~~~~~~~~~
# |            15:  .globl uaddo_v2i32 // -- Begin function uaddo_v2i32 
# | next:22'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            16:  .p2align 2 
# | next:22'0      ~~~~~~~~~~~~
# |            17:  .type uaddo_v2i32,@function 
# | next:22'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            18: uaddo_v2i32: // @uaddo_v2i32 
# | next:22'0      ~~~~~~~~~~~~
# |            19: // %bb.0: 
# | next:37'0               X error: no match found
# |            20:  add v2.2s, v0.2s, v1.2s 
# | next:37'0      ~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:37'1       ?                        possible intended match
# |            21:  cmhi v0.2s, v1.2s, v2.2s 
# | next:37'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            22:  str d2, [x0] 
# | next:37'0      ~~~~~~~~~~~~~~
# |            23:  ret 
# | next:37'0      ~~~~~
# |            24: .Lfunc_end1: 
# | next:37'0      ~~~~~~~~~~~~~
# |            25:  .size uaddo_v2i32, .Lfunc_end1-uaddo_v2i32 
# | next:37'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            26:  // -- End function 
# | next:37'0      ~~~~~~~~~~~~~~~~~~~~
# |            27:  .globl uaddo_v3i32 // -- Begin function uaddo_v3i32 
# | next:37'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            28:  .p2align 2 
# | next:37'0      ~~~~~~~~~~~~
# |            29:  .type uaddo_v3i32,@function 
# | next:37'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            30: uaddo_v3i32: // @uaddo_v3i32 
# | next:37'0      ~~~~~~~~~~~~
# |            31: // %bb.0: 
# | next:52'0               X error: no match found
# |            32:  add v2.4s, v0.4s, v1.4s 
# | next:52'0      ~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:52'1       ?                        possible intended match
# |            33:  cmhi v0.4s, v1.4s, v2.4s 
# | next:52'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            34:  mov s1, v2.s[2] 
# | next:52'0      ~~~~~~~~~~~~~~~~~
# |            35:  str d2, [x0] 
# | next:52'0      ~~~~~~~~~~~~~~
# |            36:  str s1, [x0, #8] 
# | next:52'0      ~~~~~~~~~~~~~~~~~~
# |            37:  ret 
# | next:52'0      ~~~~~
# |             .
# |             .
# |             .
# |            40:  // -- End function 
# | next:52'0      ~~~~~~~~~~~~~~~~~~~~
# |            41:  .globl uaddo_v4i32 // -- Begin function uaddo_v4i32 
# | next:52'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            42:  .p2align 2 
# | next:52'0      ~~~~~~~~~~~~
# |            43:  .type uaddo_v4i32,@function 
# | next:52'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            44: uaddo_v4i32: // @uaddo_v4i32 
# | next:52'0      ~~~~~~~~~~~~
# |            45: // %bb.0: 
# | next:69'0               X error: no match found
# |            46:  add v2.4s, v0.4s, v1.4s 
# | next:69'0      ~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:69'1       ?                        possible intended match
# |            47:  cmhi v0.4s, v1.4s, v2.4s 
# | next:69'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            48:  str q2, [x0] 
# | next:69'0      ~~~~~~~~~~~~~~
# |            49:  ret 
# | next:69'0      ~~~~~
# |            50: .Lfunc_end3: 
# | next:69'0      ~~~~~~~~~~~~~
# |            51:  .size uaddo_v4i32, .Lfunc_end3-uaddo_v4i32 
# | next:69'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |            65:  mov v1.s[1], w7 
# |            66:  ld1 { v2.s }[1], [x9] 
# |            67:  mov v3.s[1], w5 
# |            68:  mov v0.s[2], w2 
# |            69:  ld1 { v1.s }[2], [x8] 
# |            70:  add x8, sp, #8 
# | next:97'0                     X error: no match found
# |            71:  add v3.4s, v3.4s, v2.4s 
# | next:97'0      ~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:97'1       ?                        possible intended match
# |            72:  ld1 { v1.s }[3], [x8] 
# | next:97'0      ~~~~~~~~~~~~~~~~~~~~~~~
# |            73:  ldr x8, [sp, #32] 
# | next:97'0      ~~~~~~~~~~~~~~~~~~~
# |            74:  mov v0.s[3], w3 
# | next:97'0      ~~~~~~~~~~~~~~~~~
# |            75:  cmhi v2.4s, v2.4s, v3.4s 
# | next:97'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            76:  str d3, [x8, #16] 
# | next:97'0      ~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |            89:  // -- End function 
# | next:97'0      ~~~~~~~~~~~~~~~~~~~~
# |            90:  .globl uaddo_v8i32 // -- Begin function uaddo_v8i32 
# | next:97'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            91:  .p2align 2 
# | next:97'0      ~~~~~~~~~~~~
# |            92:  .type uaddo_v8i32,@function 
# | next:97'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            93: uaddo_v8i32: // @uaddo_v8i32 
# | next:97'0      ~~~~~~~~~~~~
# |            94: // %bb.0: 
# | next:124'0              X error: no match found
# |            95:  add v4.4s, v0.4s, v2.4s 
# | next:124'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:124'1      ?                        possible intended match
# |            96:  add v5.4s, v1.4s, v3.4s 
# | next:124'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# |            97:  cmhi v0.4s, v2.4s, v4.4s 
# | next:124'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            98:  cmhi v1.4s, v3.4s, v5.4s 
# | next:124'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            99:  stp q4, q5, [x0] 
# | next:124'0     ~~~~~~~~~~~~~~~~~~
# |           100:  ret 
# | next:124'0     ~~~~~
# |             .
# |             .
# |             .
# |           104:  .globl uaddo_v16i8 // -- Begin function uaddo_v16i8 
# | next:124'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           105:  .p2align 2 
# | next:124'0     ~~~~~~~~~~~~
# |           106:  .type uaddo_v16i8,@function 
# | next:124'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           107: uaddo_v16i8: // @uaddo_v16i8 
# | next:124'0     ~~~~~~~~~~~~
# |           108: // %bb.0: 
# |           109:  add v4.16b, v0.16b, v1.16b 
# | next:142'0                                X error: no match found
# |           110:  cmhi v0.16b, v1.16b, v4.16b 
# | next:142'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:142'1      ?                            possible intended match
# |           111:  str q4, [x0] 
# | next:142'0     ~~~~~~~~~~~~~~
# |           112:  ext v1.16b, v0.16b, v0.16b, #8 
# | next:142'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           113:  zip1 v2.8b, v0.8b, v0.8b 
# | next:142'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           114:  zip2 v0.8b, v0.8b, v0.8b 
# | next:142'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           115:  zip1 v3.8b, v1.8b, v0.8b 
# | next:142'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           133:  .globl uaddo_v8i16 // -- Begin function uaddo_v8i16 
# | next:142'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           134:  .p2align 2 
# | next:142'0     ~~~~~~~~~~~~
# |           135:  .type uaddo_v8i16,@function 
# | next:142'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           136: uaddo_v8i16: // @uaddo_v8i16 
# | next:142'0     ~~~~~~~~~~~~
# |           137: // %bb.0: 
# |           138:  add v2.8h, v0.8h, v1.8h 
# | next:174'0                             X error: no match found
# |           139:  cmhi v0.8h, v1.8h, v2.8h 
# | next:174'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:174'1      ?                         possible intended match
# |           140:  str q2, [x0] 
# | next:174'0     ~~~~~~~~~~~~~~
# |           141:  xtn v0.8b, v0.8h 
# | next:174'0     ~~~~~~~~~~~~~~~~~~
# |           142:  zip1 v1.8b, v0.8b, v0.8b 
# | next:174'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           143:  zip2 v0.8b, v0.8b, v0.8b 
# | next:174'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           144:  ushll v1.4s, v1.4h, #0 
# | next:174'0     ~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           153:  // -- End function 
# | next:174'0     ~~~~~~~~~~~~~~~~~~~~
# |           154:  .globl uaddo_v2i64 // -- Begin function uaddo_v2i64 
# | next:174'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           155:  .p2align 2 
# | next:174'0     ~~~~~~~~~~~~
# |           156:  .type uaddo_v2i64,@function 
# | next:174'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           157: uaddo_v2i64: // @uaddo_v2i64 
# | next:174'0     ~~~~~~~~~~~~
# |           158: // %bb.0: 
# | next:197'0              X error: no match found
# |           159:  add v2.2d, v0.2d, v1.2d 
# | next:197'0     ~~~~~~~~~~~~~~~~~~~~~~~~~
# | next:197'1      ?                        possible intended match
# |           160:  cmhi v0.2d, v1.2d, v2.2d 
# | next:197'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           161:  str q2, [x0] 
# | next:197'0     ~~~~~~~~~~~~~~
# |           162:  xtn v0.2s, v0.2d 
# | next:197'0     ~~~~~~~~~~~~~~~~~~
# |           163:  ret 
# | next:197'0     ~~~~~
# |           164: .Lfunc_end8: 
# | next:197'0     ~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/AMDGPU/carryout-selection.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=amdgcn -stop-after=amdgpu-isel < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/carryout-selection.ll | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -enable-var-scope -check-prefixes=GCN-ISEL                /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/carryout-selection.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=amdgcn -stop-after=amdgpu-isel
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -enable-var-scope -check-prefixes=GCN-ISEL /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/carryout-selection.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/carryout-selection.ll:131:19: error: GCN-ISEL-LABEL: expected string not found in input
# | ; GCN-ISEL-LABEL: name: sadd64rr
# |                   ^
# | <stdin>:459:13: note: scanning from here
# |  bb.0.entry:
# |             ^
# | <stdin>:485:1: note: possible intended match here
# | name: sadd64ri
# | ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/carryout-selection.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |            454:  dynamicVGPRBlockSize: 0 
# |            455:  scratchReservedForDynamicVGPRs: 0 
# |            456:  numKernargPreloadSGPRs: 0 
# |            457:  isWholeWaveFunction: false 
# |            458: body: | 
# |            459:  bb.0.entry: 
# | label:131'0                 X error: no match found
# |            460:  liveins: $sgpr4_sgpr5 
# | label:131'0     ~~~~~~~~~~~~~~~~~~~~~~~
# |            461:   
# | label:131'0     ~~
# |            462:  %5:sgpr_64(p4) = COPY $sgpr4_sgpr5 
# | label:131'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            463:  %11:sgpr_128 = S_LOAD_DWORDX4_IMM %5(p4), 9, 0 :: (dereferenceable invariant load (s128) from %ir.out.kernarg.offset, align 4, addrspace 4) 
# | label:131'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            464:  %12:sreg_64_xexec = S_LOAD_DWORDX2_IMM %5(p4), 13, 0 :: (dereferenceable invariant load (s64) from %ir.out.kernarg.offset + 16, align 4, addrspace 4) 
# | label:131'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            480:  %28:vreg_64 = COPY %27 
# | label:131'0     ~~~~~~~~~~~~~~~~~~~~~~~~
# |            481:  BUFFER_STORE_DWORDX2_OFFSET killed %28, killed %24, 0, 0, 0, 0, implicit $exec :: (store (s64) into %ir.1, addrspace 1) 
# | label:131'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            482:  S_ENDPGM 0 
# | label:131'0     ~~~~~~~~~~~~
# |            483: ... 
# | label:131'0     ~~~~
# |            484: --- 
# | label:131'0     ~~~~
# |            485: name: sadd64ri 
# | label:131'0     ~~~~~~~~~~~~~~~
# | label:131'1     ?               possible intended match
# |            486: alignment: 1 
# | label:131'0     ~~~~~~~~~~~~~
# |            487: exposesReturnsTwice: false 
# | label:131'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            488: legalized: false 
# | label:131'0     ~~~~~~~~~~~~~~~~~
# |            489: regBankSelected: false 
# | label:131'0     ~~~~~~~~~~~~~~~~~~~~~~~
# |            490: selected: false 
# | label:131'0     ~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/AMDGPU/uaddo.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/uaddo.ll -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=tahiti | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/uaddo.ll --check-prefix=SI
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=tahiti
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/uaddo.ll --check-prefix=SI
# note: command had no output on stdout or stderr
# RUN: at line 3
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/uaddo.ll -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=tonga | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/uaddo.ll --check-prefix=VI
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=tonga
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/uaddo.ll --check-prefix=VI
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/uaddo.ll:668:12: error: VI-NEXT: is not on the line after the previous match
# | ; VI-NEXT: v_mov_b32_e32 v0, s4
# |            ^
# | <stdin>:441:2: note: 'next' match was here
# |  v_mov_b32_e32 v0, s4
# |  ^
# | <stdin>:438:22: note: previous match ended here
# |  s_waitcnt lgkmcnt(0)
# |                      ^
# | <stdin>:439:1: note: non-matching line after previous match is here
# |  v_mov_b32_e32 v2, s6
# | ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/AMDGPU/uaddo.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |           .
# |           .
# |           .
# |         436: ; %bb.0: 
# |         437:  s_load_dwordx8 s[0:7], s[4:5], 0x24 
# |         438:  s_waitcnt lgkmcnt(0) 
# |         439:  v_mov_b32_e32 v2, s6 
# |         440:  v_mov_b32_e32 v3, s7 
# |         441:  v_mov_b32_e32 v0, s4 
# | next:668      !~~~~~~~~~~~~~~~~~~~  error: match on wrong line
# |         442:  v_mov_b32_e32 v1, s5 
# |         443:  flat_load_ushort v4, v[2:3] 
# |         444:  flat_load_ushort v5, v[0:1] 
# |         445:  v_mov_b32_e32 v0, s0 
# |         446:  v_mov_b32_e32 v1, s1 
# |           .
# |           .
# |           .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/ARM/addsubo-legalization.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/ARM/addsubo-legalization.ll -mtriple=thumbv7k-linux-gnu | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/ARM/addsubo-legalization.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=thumbv7k-linux-gnu
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/ARM/addsubo-legalization.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/ARM/addsubo-legalization.ll:13:15: error: CHECK-NEXT: is not on the line after the previous match
# | ; CHECK-NEXT: vld1.64 {d18, d19}, [r0]
# |               ^
# | <stdin>:30:2: note: 'next' match was here
# |  vld1.64 {d18, d19}, [r0]
# |  ^
# | <stdin>:27:27: note: previous match ended here
# |  push {r4, r5, r6, r7, lr}
# |                           ^
# | <stdin>:28:1: note: non-matching line after previous match is here
# |  vld1.64 {d16, d17}, [r1]
# | ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/ARM/addsubo-legalization.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |          .
# |          .
# |          .
# |         25:  .fnstart 
# |         26: @ %bb.0: 
# |         27:  push {r4, r5, r6, r7, lr} 
# |         28:  vld1.64 {d16, d17}, [r1] 
# |         29:  movs r1, #0 
# |         30:  vld1.64 {d18, d19}, [r0] 
# | next:13      !~~~~~~~~~~~~~~~~~~~~~~~  error: match on wrong line
# |         31:  vmov r3, r2, d16 
# |         32:  vadd.i64 q9, q9, q8 
# |         33:  vmov r6, r7, d17 
# |         34:  vmov lr, r12, d18 
# |         35:  vmov r4, r5, d19 
# |          .
# |          .
# |          .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/PowerPC/sat-add.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/PowerPC/sat-add.ll -mtriple=powerpc64le-- -verify-machineinstrs | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/PowerPC/sat-add.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=powerpc64le-- -verify-machineinstrs
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/PowerPC/sat-add.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/PowerPC/sat-add.ll:116:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: addi 4, 3, 42
# |               ^
# | <stdin>:142:9: note: scanning from here
# | # %bb.0:
# |         ^
# | <stdin>:143:2: note: possible intended match here
# |  addi 3, 3, 42
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/PowerPC/sat-add.ll:306:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: add 4, 3, 4
# |               ^
# | <stdin>:375:9: note: scanning from here
# | # %bb.0:
# |         ^
# | <stdin>:376:2: note: possible intended match here
# |  add 3, 3, 4
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/PowerPC/sat-add.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |           137:  .p2align 4 
# |           138:  .type unsigned_sat_constant_i32_using_cmp_sum,@function 
# |           139: unsigned_sat_constant_i32_using_cmp_sum: # @unsigned_sat_constant_i32_using_cmp_sum 
# |           140: .Lfunc_begin7: 
# |           141:  .cfi_startproc 
# |           142: # %bb.0: 
# | next:116'0             X error: no match found
# |           143:  addi 3, 3, 42 
# | next:116'0     ~~~~~~~~~~~~~~~
# | next:116'1      ?              possible intended match
# |           144:  li 4, -1 
# | next:116'0     ~~~~~~~~~~
# |           145:  cmplwi 3, 42 
# | next:116'0     ~~~~~~~~~~~~~~
# |           146:  isellt 3, 4, 3 
# | next:116'0     ~~~~~~~~~~~~~~~~
# |           147:  blr 
# | next:116'0     ~~~~~
# |           148:  .long 0 
# | next:116'0     ~~~~~~~~~
# |             .
# |             .
# |             .
# |           370:  .p2align 4 
# |           371:  .type unsigned_sat_variable_i32_using_cmp_sum,@function 
# |           372: unsigned_sat_variable_i32_using_cmp_sum: # @unsigned_sat_variable_i32_using_cmp_sum 
# |           373: .Lfunc_begin19: 
# |           374:  .cfi_startproc 
# |           375: # %bb.0: 
# | next:306'0             X error: no match found
# |           376:  add 3, 3, 4 
# | next:306'0     ~~~~~~~~~~~~~
# | next:306'1      ?            possible intended match
# |           377:  cmplw 3, 4 
# | next:306'0     ~~~~~~~~~~~~
# |           378:  li 4, -1 
# | next:306'0     ~~~~~~~~~~
# |           379:  isellt 3, 4, 3 
# | next:306'0     ~~~~~~~~~~~~~~~~
# |           380:  blr 
# | next:306'0     ~~~~~
# |           381:  .long 0 
# | next:306'0     ~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/RISCV/addcarry.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/addcarry.ll -mtriple=riscv32 -mattr=+m | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/addcarry.ll --check-prefix=RISCV32
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv32 -mattr=+m
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/addcarry.ll --check-prefix=RISCV32
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/addcarry.ll:19:17: error: RISCV32-NEXT: expected string not found in input
# | ; RISCV32-NEXT: sltu a6, a4, t1
# |                 ^
# | <stdin>:18:17: note: scanning from here
# |  sltu a5, t1, a5
# |                 ^
# | <stdin>:19:2: note: possible intended match here
# |  sltu a6, a4, a6
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/addcarry.ll:48:17: error: RISCV32-NEXT: expected string not found in input
# | ; RISCV32-NEXT: add a3, a1, a3
# |                 ^
# | <stdin>:47:9: note: scanning from here
# | # %bb.0:
# |         ^
# | <stdin>:48:2: note: possible intended match here
# |  add a1, a1, a3
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/addcarry.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |           13:  mulhu a7, a0, a3 
# |           14:  mulhu t0, a1, a2 
# |           15:  add t1, a5, a4 
# |           16:  add a7, a7, t0 
# |           17:  add a4, t1, a6 
# |           18:  sltu a5, t1, a5 
# | next:19'0                     X error: no match found
# |           19:  sltu a6, a4, a6 
# | next:19'0     ~~~~~~~~~~~~~~~~~
# | next:19'1      ?                possible intended match
# |           20:  add a5, a7, a5 
# | next:19'0     ~~~~~~~~~~~~~~~~
# |           21:  add a5, a5, a6 
# | next:19'0     ~~~~~~~~~~~~~~~~
# |           22:  mul a6, a1, a3 
# | next:19'0     ~~~~~~~~~~~~~~~~
# |           23:  add a5, a5, a6 
# | next:19'0     ~~~~~~~~~~~~~~~~
# |           24:  bgez a1, .LBB0_2 
# | next:19'0     ~~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# |           42:  # -- End function 
# | next:19'0     ~~~~~~~~~~~~~~~~~~~
# |           43:  .globl addcarry_2x32 # -- Begin function addcarry_2x32 
# | next:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           44:  .p2align 2 
# | next:19'0     ~~~~~~~~~~~~
# |           45:  .type addcarry_2x32,@function 
# | next:19'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           46: addcarry_2x32: # @addcarry_2x32 
# | next:19'0     ~~~~~~~~~~~~~~
# |           47: # %bb.0: 
# | next:48'0             X error: no match found
# |           48:  add a1, a1, a3 
# | next:48'0     ~~~~~~~~~~~~~~~~
# | next:48'1      ?               possible intended match
# |           49:  add a2, a2, a4 
# | next:48'0     ~~~~~~~~~~~~~~~~
# |           50:  sltu a3, a1, a3 
# | next:48'0     ~~~~~~~~~~~~~~~~~
# |           51:  sltu a4, a2, a4 
# | next:48'0     ~~~~~~~~~~~~~~~~~
# |           52:  add a2, a2, a3 
# | next:48'0     ~~~~~~~~~~~~~~~~
# |           53:  sltu a3, a2, a3 
# | next:48'0     ~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/RISCV/arith-with-overflow.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv32 -verify-machineinstrs < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/arith-with-overflow.ll    | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefix=RV32I /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/arith-with-overflow.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv32 -verify-machineinstrs
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck -check-prefix=RV32I /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/arith-with-overflow.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/arith-with-overflow.ll:42:15: error: RV32I-NEXT: expected string not found in input
# | ; RV32I-NEXT: add a1, a0, a1
# |               ^
# | <stdin>:37:18: note: scanning from here
# | # %bb.0: # %entry
# |                  ^
# | <stdin>:38:2: note: possible intended match here
# |  add a3, a0, a1
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/arith-with-overflow.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |           32:  # -- End function 
# |           33:  .globl uadd # -- Begin function uadd 
# |           34:  .p2align 2 
# |           35:  .type uadd,@function 
# |           36: uadd: # @uadd 
# |           37: # %bb.0: # %entry 
# | next:42'0                      X error: no match found
# |           38:  add a3, a0, a1 
# | next:42'0     ~~~~~~~~~~~~~~~~
# | next:42'1      ?               possible intended match
# |           39:  sltu a0, a3, a1 
# | next:42'0     ~~~~~~~~~~~~~~~~~
# |           40:  sw a3, 0(a2) 
# | next:42'0     ~~~~~~~~~~~~~~
# |           41:  ret 
# | next:42'0     ~~~~~
# |           42: .Lfunc_end2: 
# | next:42'0     ~~~~~~~~~~~~~
# |           43:  .size uadd, .Lfunc_end2-uadd 
# | next:42'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/RISCV/overflow-intrinsics.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv32 -verify-machineinstrs < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/overflow-intrinsics.ll    | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/overflow-intrinsics.ll -check-prefixes=RV32
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv32 -verify-machineinstrs
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/overflow-intrinsics.ll -check-prefixes=RV32
# note: command had no output on stdout or stderr
# RUN: at line 4
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv64 -verify-machineinstrs < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/overflow-intrinsics.ll    | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/overflow-intrinsics.ll -check-prefixes=RV64
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv64 -verify-machineinstrs
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/overflow-intrinsics.ll -check-prefixes=RV64
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/overflow-intrinsics.ll:72:14: error: RV64-NEXT: expected string not found in input
# | ; RV64-NEXT: add a0, a1, a0
# |              ^
# | <stdin>:24:9: note: scanning from here
# | # %bb.0:
# |         ^
# | <stdin>:25:2: note: possible intended match here
# |  add a3, a1, a0
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/overflow-intrinsics.ll:146:14: error: RV64-NEXT: expected string not found in input
# | ; RV64-NEXT: add a0, a1, a0
# |              ^
# | <stdin>:55:9: note: scanning from here
# | # %bb.0:
# |         ^
# | <stdin>:56:2: note: possible intended match here
# |  add a3, a1, a0
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/overflow-intrinsics.ll:220:14: error: RV64-NEXT: expected string not found in input
# | ; RV64-NEXT: add a0, a1, a0
# |              ^
# | <stdin>:86:9: note: scanning from here
# | # %bb.0:
# |         ^
# | <stdin>:87:2: note: possible intended match here
# |  add a3, a1, a0
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/overflow-intrinsics.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |            19:  # -- End function 
# |            20:  .globl uaddo1_math_overflow_used # -- Begin function uaddo1_math_overflow_used 
# |            21:  .p2align 2 
# |            22:  .type uaddo1_math_overflow_used,@function 
# |            23: uaddo1_math_overflow_used: # @uaddo1_math_overflow_used 
# |            24: # %bb.0: 
# | next:72'0              X error: no match found
# |            25:  add a3, a1, a0 
# | next:72'0      ~~~~~~~~~~~~~~~~
# | next:72'1       ?               possible intended match
# |            26:  bltu a3, a0, .LBB1_2 
# | next:72'0      ~~~~~~~~~~~~~~~~~~~~~~
# |            27: # %bb.1: 
# | next:72'0      ~~~~~~~~~
# |            28:  li a1, 42 
# | next:72'0      ~~~~~~~~~~~
# |            29: .LBB1_2: 
# | next:72'0      ~~~~~~~~~
# |            30:  sd a3, 0(a2) 
# | next:72'0      ~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |            50:  # -- End function 
# |            51:  .globl uaddo2_math_overflow_used # -- Begin function uaddo2_math_overflow_used 
# |            52:  .p2align 2 
# |            53:  .type uaddo2_math_overflow_used,@function 
# |            54: uaddo2_math_overflow_used: # @uaddo2_math_overflow_used 
# |            55: # %bb.0: 
# | next:146'0             X error: no match found
# |            56:  add a3, a1, a0 
# | next:146'0     ~~~~~~~~~~~~~~~~
# | next:146'1      ?               possible intended match
# |            57:  bltu a3, a0, .LBB3_2 
# | next:146'0     ~~~~~~~~~~~~~~~~~~~~~~
# |            58: # %bb.1: 
# | next:146'0     ~~~~~~~~~
# |            59:  li a1, 42 
# | next:146'0     ~~~~~~~~~~~
# |            60: .LBB3_2: 
# | next:146'0     ~~~~~~~~~
# |            61:  sd a3, 0(a2) 
# | next:146'0     ~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |            81:  # -- End function 
# |            82:  .globl uaddo3_math_overflow_used # -- Begin function uaddo3_math_overflow_used 
# |            83:  .p2align 2 
# |            84:  .type uaddo3_math_overflow_used,@function 
# |            85: uaddo3_math_overflow_used: # @uaddo3_math_overflow_used 
# |            86: # %bb.0: 
# | next:220'0             X error: no match found
# |            87:  add a3, a1, a0 
# | next:220'0     ~~~~~~~~~~~~~~~~
# | next:220'1      ?               possible intended match
# |            88:  bltu a3, a0, .LBB5_2 
# | next:220'0     ~~~~~~~~~~~~~~~~~~~~~~
# |            89: # %bb.1: 
# | next:220'0     ~~~~~~~~~
# |            90:  li a1, 42 
# | next:220'0     ~~~~~~~~~~~
# |            91: .LBB5_2: 
# | next:220'0     ~~~~~~~~~
# |            92:  sd a3, 0(a2) 
# | next:220'0     ~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/RISCV/uadd_sat.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/uadd_sat.ll -mtriple=riscv32 -mattr=+m | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/uadd_sat.ll --check-prefix=RV32I
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv32 -mattr=+m
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/uadd_sat.ll --check-prefix=RV32I
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/uadd_sat.ll:10:15: error: RV32I-NEXT: expected string not found in input
# | ; RV32I-NEXT: add a1, a0, a1
# |               ^
# | <stdin>:9:9: note: scanning from here
# | # %bb.0:
# |         ^
# | <stdin>:10:2: note: possible intended match here
# |  add a0, a0, a1
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/uadd_sat.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            1:  .attribute 4, 16 
# |            2:  .attribute 5, "rv32i2p1_m2p0_zmmul1p0" 
# |            3:  .file "<stdin>" 
# |            4:  .text 
# |            5:  .globl func # -- Begin function func 
# |            6:  .p2align 2 
# |            7:  .type func,@function 
# |            8: func: # @func 
# |            9: # %bb.0: 
# | next:10'0             X error: no match found
# |           10:  add a0, a0, a1 
# | next:10'0     ~~~~~~~~~~~~~~~~
# | next:10'1      ?               possible intended match
# |           11:  sltu a1, a0, a1 
# | next:10'0     ~~~~~~~~~~~~~~~~~
# |           12:  neg a1, a1 
# | next:10'0     ~~~~~~~~~~~~
# |           13:  or a0, a1, a0 
# | next:10'0     ~~~~~~~~~~~~~~~
# |           14:  ret 
# | next:10'0     ~~~~~
# |           15: .Lfunc_end0: 
# | next:10'0     ~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/RISCV/uadd_sat_plus.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/uadd_sat_plus.ll -mtriple=riscv32 -mattr=+m | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/uadd_sat_plus.ll --check-prefix=RV32I
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv32 -mattr=+m
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/uadd_sat_plus.ll --check-prefix=RV32I
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/uadd_sat_plus.ll:11:15: error: RV32I-NEXT: expected string not found in input
# | ; RV32I-NEXT: add a1, a0, a1
# |               ^
# | <stdin>:10:16: note: scanning from here
# |  mul a1, a1, a2
# |                ^
# | <stdin>:11:2: note: possible intended match here
# |  add a0, a0, a1
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/uadd_sat_plus.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |            5:  .globl func32 # -- Begin function func32 
# |            6:  .p2align 2 
# |            7:  .type func32,@function 
# |            8: func32: # @func32 
# |            9: # %bb.0: 
# |           10:  mul a1, a1, a2 
# | next:11'0                    X error: no match found
# |           11:  add a0, a0, a1 
# | next:11'0     ~~~~~~~~~~~~~~~~
# | next:11'1      ?               possible intended match
# |           12:  sltu a1, a0, a1 
# | next:11'0     ~~~~~~~~~~~~~~~~~
# |           13:  neg a1, a1 
# | next:11'0     ~~~~~~~~~~~~
# |           14:  or a0, a1, a0 
# | next:11'0     ~~~~~~~~~~~~~~~
# |           15:  ret 
# | next:11'0     ~~~~~
# |           16: .Lfunc_end0: 
# | next:11'0     ~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/RISCV/umulo-128-legalisation-lowering.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/umulo-128-legalisation-lowering.ll -mtriple=riscv32 -mattr=+m | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/umulo-128-legalisation-lowering.ll --check-prefixes=RISCV32
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv32 -mattr=+m
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/umulo-128-legalisation-lowering.ll --check-prefixes=RISCV32
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/umulo-128-legalisation-lowering.ll:26:17: error: RISCV32-NEXT: expected string not found in input
# | ; RISCV32-NEXT: mulhu t5, a4, a5
# |                 ^
# | <stdin>:28:16: note: scanning from here
# |  mul t4, a4, a5
# |                ^
# | <stdin>:29:2: note: possible intended match here
# |  mulhu s0, a4, a5
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/umulo-128-legalisation-lowering.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |           23:  lw a7, 8(a2) 
# |           24:  lw a2, 12(a2) 
# |           25:  mulhu t1, a4, a6 
# |           26:  mul t2, t0, a6 
# |           27:  mulhu t3, t0, a6 
# |           28:  mul t4, a4, a5 
# | next:26'0                    X error: no match found
# |           29:  mulhu s0, a4, a5 
# | next:26'0     ~~~~~~~~~~~~~~~~~~
# | next:26'1      ?                 possible intended match
# |           30:  mul s2, t0, a5 
# | next:26'0     ~~~~~~~~~~~~~~~~
# |           31:  mul s1, a7, a4 
# | next:26'0     ~~~~~~~~~~~~~~~~
# |           32:  mul s3, a3, a6 
# | next:26'0     ~~~~~~~~~~~~~~~~
# |           33:  mul t6, t0, a7 
# | next:26'0     ~~~~~~~~~~~~~~~~
# |           34:  mul t5, a2, a4 
# | next:26'0     ~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/RISCV/xaluo.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll -mtriple=riscv32 -mattr=+m -verify-machineinstrs | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll --check-prefix=RV32
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv32 -mattr=+m -verify-machineinstrs
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll --check-prefix=RV32
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll:467:14: error: RV32-NEXT: expected string not found in input
# | ; RV32-NEXT: add a1, a0, a1
# |              ^
# | <stdin>:133:18: note: scanning from here
# | # %bb.0: # %entry
# |                  ^
# | <stdin>:134:2: note: possible intended match here
# |  add a3, a0, a1
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll:518:14: error: RV32-NEXT: expected string not found in input
# | ; RV32-NEXT: sltu a0, a2, a0
# |              ^
# | <stdin>:148:17: note: scanning from here
# |  addi a2, a0, -2
# |                 ^
# | <stdin>:149:2: note: possible intended match here
# |  sltiu a0, a2, -2
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll:1791:14: error: RV32-NEXT: expected string not found in input
# | ; RV32-NEXT: add a5, a7, a5
# |              ^
# | <stdin>:500:13: note: scanning from here
# |  snez a2, a3
# |             ^
# | <stdin>:501:2: note: possible intended match here
# |  add a7, a7, a5
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll:1887:14: error: RV32-NEXT: expected string not found in input
# | ; RV32-NEXT: add a4, a5, a4
# |              ^
# | <stdin>:523:16: note: scanning from here
# |  mul a3, a0, a3
# |                ^
# | <stdin>:524:2: note: possible intended match here
# |  add a5, a5, a4
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll:2269:14: error: RV32-NEXT: expected string not found in input
# | ; RV32-NEXT: bltu a2, a0, .LBB32_2
# |              ^
# | <stdin>:620:16: note: scanning from here
# |  add a2, a0, a1
# |                ^
# | <stdin>:621:2: note: possible intended match here
# |  bltu a2, a1, .LBB32_2
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll:2329:14: error: RV32-NEXT: expected string not found in input
# | ; RV32-NEXT: add a1, a0, a1
# |              ^
# | <stdin>:635:18: note: scanning from here
# | # %bb.0: # %entry
# |                  ^
# | <stdin>:636:2: note: possible intended match here
# |  add a0, a0, a1
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll:3626:14: error: RV32-NEXT: expected string not found in input
# | ; RV32-NEXT: add a4, a6, a4
# |              ^
# | <stdin>:1003:18: note: scanning from here
# |  mulhu a6, a0, a2
# |                  ^
# | <stdin>:1004:2: note: possible intended match here
# |  add a6, a6, a4
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll:3735:14: error: RV32-NEXT: expected string not found in input
# | ; RV32-NEXT: add a4, a6, a4
# |              ^
# | <stdin>:1036:13: note: scanning from here
# |  snez a0, a0
# |             ^
# | <stdin>:1037:2: note: possible intended match here
# |  add a6, a6, a4
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll:4008:14: error: RV32-NEXT: expected string not found in input
# | ; RV32-NEXT: add a1, a0, a1
# |              ^
# | <stdin>:1098:18: note: scanning from here
# | # %bb.0: # %entry
# |                  ^
# | <stdin>:1099:2: note: possible intended match here
# |  add a0, a0, a1
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll:5080:14: error: RV32-NEXT: expected string not found in input
# | ; RV32-NEXT: add a4, a6, a4
# |              ^
# | <stdin>:1367:13: note: scanning from here
# |  snez a0, a0
# |             ^
# | <stdin>:1368:2: note: possible intended match here
# |  add a6, a6, a4
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xaluo.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |            128:  .globl uaddo.i32 # -- Begin function uaddo.i32 
# |            129:  .p2align 2 
# |            130:  .type uaddo.i32,@function 
# |            131: uaddo.i32: # @uaddo.i32 
# |            132:  .cfi_startproc 
# |            133: # %bb.0: # %entry 
# | next:467'0                       X error: no match found
# |            134:  add a3, a0, a1 
# | next:467'0      ~~~~~~~~~~~~~~~~
# | next:467'1       ?               possible intended match
# |            135:  sltu a0, a3, a1 
# | next:467'0      ~~~~~~~~~~~~~~~~~
# |            136:  sw a3, 0(a2) 
# | next:467'0      ~~~~~~~~~~~~~~
# |            137:  ret 
# | next:467'0      ~~~~~
# |            138: .Lfunc_end7: 
# | next:467'0      ~~~~~~~~~~~~~
# |            139:  .size uaddo.i32, .Lfunc_end7-uaddo.i32 
# | next:467'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            143:  .p2align 2 
# | next:467'0      ~~~~~~~~~~~~
# |            144:  .type uaddo.i32.constant,@function 
# | next:467'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            145: uaddo.i32.constant: # @uaddo.i32.constant 
# | next:467'0      ~~~~~~~~~~~~~~~~~~~
# |            146:  .cfi_startproc 
# |            147: # %bb.0: # %entry 
# |            148:  addi a2, a0, -2 
# | next:518'0                      X error: no match found
# |            149:  sltiu a0, a2, -2 
# | next:518'0      ~~~~~~~~~~~~~~~~~~
# | next:518'1       ?                 possible intended match
# |            150:  sw a2, 0(a1) 
# | next:518'0      ~~~~~~~~~~~~~~
# |            151:  ret 
# | next:518'0      ~~~~~
# |            152: .Lfunc_end8: 
# | next:518'0      ~~~~~~~~~~~~~
# |            153:  .size uaddo.i32.constant, .Lfunc_end8-uaddo.i32.constant 
# | next:518'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            154:  .cfi_endproc 
# | next:518'0      ~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            495:  mulhu a0, a1, a2 
# |            496:  snez a1, a1 
# |            497:  add a5, a6, a5 
# |            498:  and a1, a1, t0 
# |            499:  snez a0, a0 
# |            500:  snez a2, a3 
# | next:1791'0                 X error: no match found
# |            501:  add a7, a7, a5 
# | next:1791'0     ~~~~~~~~~~~~~~~~
# | next:1791'1      ?               possible intended match
# |            502:  or a0, a1, a0 
# | next:1791'0     ~~~~~~~~~~~~~~~
# |            503:  sltu a1, a7, a5 
# | next:1791'0     ~~~~~~~~~~~~~~~~~
# |            504:  or a0, a0, a2 
# | next:1791'0     ~~~~~~~~~~~~~~~
# |            505:  or a0, a0, a1 
# | next:1791'0     ~~~~~~~~~~~~~~~
# |            506:  sw t1, 0(a4) 
# | next:1791'0     ~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            518: # %bb.0: # %entry 
# |            519:  li a3, 13 
# |            520:  mul a4, a1, a3 
# |            521:  mulhu a5, a0, a3 
# |            522:  mulhu a1, a1, a3 
# |            523:  mul a3, a0, a3 
# | next:1887'0                    X error: no match found
# |            524:  add a5, a5, a4 
# | next:1887'0     ~~~~~~~~~~~~~~~~
# | next:1887'1      ?               possible intended match
# |            525:  snez a0, a1 
# | next:1887'0     ~~~~~~~~~~~~~
# |            526:  sltu a1, a5, a4 
# | next:1887'0     ~~~~~~~~~~~~~~~~~
# |            527:  or a0, a0, a1 
# | next:1887'0     ~~~~~~~~~~~~~~~
# |            528:  sw a3, 0(a2) 
# | next:1887'0     ~~~~~~~~~~~~~~
# |            529:  sw a5, 4(a2) 
# | next:1887'0     ~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            615:  .p2align 2 
# |            616:  .type uaddo.select.i32,@function 
# |            617: uaddo.select.i32: # @uaddo.select.i32 
# |            618:  .cfi_startproc 
# |            619: # %bb.0: # %entry 
# |            620:  add a2, a0, a1 
# | next:2269'0                    X error: no match found
# |            621:  bltu a2, a1, .LBB32_2 
# | next:2269'0     ~~~~~~~~~~~~~~~~~~~~~~~
# | next:2269'1      ?                      possible intended match
# |            622: # %bb.1: # %entry 
# | next:2269'0     ~~~~~~~~~~~~~~~~~~
# |            623:  mv a0, a1 
# | next:2269'0     ~~~~~~~~~~~
# |            624: .LBB32_2: # %entry 
# | next:2269'0     ~~~~~~~~~~~~~~~~~~~
# |            625:  ret 
# | next:2269'0     ~~~~~
# |            626: .Lfunc_end32: 
# | next:2269'0     ~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            630:  .globl uaddo.not.i32 # -- Begin function uaddo.not.i32 
# | next:2269'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            631:  .p2align 2 
# | next:2269'0     ~~~~~~~~~~~~
# |            632:  .type uaddo.not.i32,@function 
# | next:2269'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            633: uaddo.not.i32: # @uaddo.not.i32 
# | next:2269'0     ~~~~~~~~~~~~~~
# |            634:  .cfi_startproc 
# |            635: # %bb.0: # %entry 
# | next:2329'0                      X error: no match found
# |            636:  add a0, a0, a1 
# | next:2329'0     ~~~~~~~~~~~~~~~~
# | next:2329'1      ?               possible intended match
# |            637:  sltu a0, a0, a1 
# | next:2329'0     ~~~~~~~~~~~~~~~~~
# |            638:  xori a0, a0, 1 
# | next:2329'0     ~~~~~~~~~~~~~~~~
# |            639:  ret 
# | next:2329'0     ~~~~~
# |            640: .Lfunc_end33: 
# | next:2329'0     ~~~~~~~~~~~~~~
# |            641:  .size uaddo.not.i32, .Lfunc_end33-uaddo.not.i32 
# | next:2329'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |            998:  snez a5, a1 
# |            999:  and a5, a5, a6 
# |           1000:  mulhu a6, a1, a2 
# |           1001:  snez a6, a6 
# |           1002:  or a5, a5, a6 
# |           1003:  mulhu a6, a0, a2 
# | next:3626'0                      X error: no match found
# |           1004:  add a6, a6, a4 
# | next:3626'0     ~~~~~~~~~~~~~~~~
# | next:3626'1      ?               possible intended match
# |           1005:  sltu a4, a6, a4 
# | next:3626'0     ~~~~~~~~~~~~~~~~~
# |           1006:  mulhu a6, a3, a0 
# | next:3626'0     ~~~~~~~~~~~~~~~~~~
# |           1007:  snez a6, a6 
# | next:3626'0     ~~~~~~~~~~~~~
# |           1008:  or a5, a5, a6 
# | next:3626'0     ~~~~~~~~~~~~~~~
# |           1009:  or a4, a5, a4 
# | next:3626'0     ~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |           1031:  mulhu a2, a1, a2 
# |           1032:  snez a1, a1 
# |           1033:  add a4, a5, a4 
# |           1034:  and a1, a1, a3 
# |           1035:  snez a2, a2 
# |           1036:  snez a0, a0 
# | next:3735'0                 X error: no match found
# |           1037:  add a6, a6, a4 
# | next:3735'0     ~~~~~~~~~~~~~~~~
# | next:3735'1      ?               possible intended match
# |           1038:  or a1, a1, a2 
# | next:3735'0     ~~~~~~~~~~~~~~~
# |           1039:  sltu a2, a6, a4 
# | next:3735'0     ~~~~~~~~~~~~~~~~~
# |           1040:  or a0, a1, a0 
# | next:3735'0     ~~~~~~~~~~~~~~~
# |           1041:  or a0, a0, a2 
# | next:3735'0     ~~~~~~~~~~~~~~~
# |           1042:  xori a0, a0, 1 
# | next:3735'0     ~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |           1093:  .globl uaddo.br.i32 # -- Begin function uaddo.br.i32 
# |           1094:  .p2align 2 
# |           1095:  .type uaddo.br.i32,@function 
# |           1096: uaddo.br.i32: # @uaddo.br.i32 
# |           1097:  .cfi_startproc 
# |           1098: # %bb.0: # %entry 
# | next:4008'0                      X error: no match found
# |           1099:  add a0, a0, a1 
# | next:4008'0     ~~~~~~~~~~~~~~~~
# | next:4008'1      ?               possible intended match
# |           1100:  bgeu a0, a1, .LBB54_2 
# | next:4008'0     ~~~~~~~~~~~~~~~~~~~~~~~
# |           1101: # %bb.1: # %overflow 
# | next:4008'0     ~~~~~~~~~~~~~~~~~~~~~
# |           1102:  li a0, 0 
# | next:4008'0     ~~~~~~~~~~
# |           1103:  ret 
# | next:4008'0     ~~~~~
# |           1104: .LBB54_2: # %continue 
# | next:4008'0     ~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# |           1362:  mulhu a2, a1, a2 
# |           1363:  snez a1, a1 
# |           1364:  add a4, a5, a4 
# |           1365:  and a1, a1, a3 
# |           1366:  snez a2, a2 
# |           1367:  snez a0, a0 
# | next:5080'0                 X error: no match found
# |           1368:  add a6, a6, a4 
# | next:5080'0     ~~~~~~~~~~~~~~~~
# | next:5080'1      ?               possible intended match
# |           1369:  or a1, a1, a2 
# | next:5080'0     ~~~~~~~~~~~~~~~
# |           1370:  sltu a2, a6, a4 
# | next:5080'0     ~~~~~~~~~~~~~~~~~
# |           1371:  or a0, a1, a0 
# | next:5080'0     ~~~~~~~~~~~~~~~
# |           1372:  or a0, a0, a2 
# | next:5080'0     ~~~~~~~~~~~~~~~
# |           1373:  beqz a0, .LBB64_2 
# | next:5080'0     ~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/RISCV/xqcia.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 3
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv32 -verify-machineinstrs < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xqcia.ll    | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xqcia.ll --check-prefixes=RV32I
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=riscv32 -verify-machineinstrs
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xqcia.ll --check-prefixes=RV32I
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xqcia.ll:34:15: error: RV32I-NEXT: expected string not found in input
# | ; RV32I-NEXT: add a1, a0, a1
# |               ^
# | <stdin>:31:9: note: scanning from here
# | # %bb.0:
# |         ^
# | <stdin>:32:2: note: possible intended match here
# |  add a0, a0, a1
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/RISCV/xqcia.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |           26:  .globl addusat # -- Begin function addusat 
# |           27:  .p2align 2 
# |           28:  .type addusat,@function 
# |           29: addusat: # @addusat 
# |           30:  .cfi_startproc 
# |           31: # %bb.0: 
# | next:34'0             X error: no match found
# |           32:  add a0, a0, a1 
# | next:34'0     ~~~~~~~~~~~~~~~~
# | next:34'1      ?               possible intended match
# |           33:  sltu a1, a0, a1 
# | next:34'0     ~~~~~~~~~~~~~~~~~
# |           34:  neg a1, a1 
# | next:34'0     ~~~~~~~~~~~~
# |           35:  or a0, a1, a0 
# | next:34'0     ~~~~~~~~~~~~~~~
# |           36:  ret 
# | next:34'0     ~~~~~
# |           37: .Lfunc_end1: 
# | next:34'0     ~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/SPARC/umulo-128-legalisation-lowering.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/SPARC/umulo-128-legalisation-lowering.ll -mtriple=sparc-unknown-linux-gnu | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/SPARC/umulo-128-legalisation-lowering.ll --check-prefixes=SPARC
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=sparc-unknown-linux-gnu
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/SPARC/umulo-128-legalisation-lowering.ll --check-prefixes=SPARC
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/SPARC/umulo-128-legalisation-lowering.ll:13:15: error: SPARC-NEXT: expected string not found in input
# | ; SPARC-NEXT: rd %y, %l7
# |               ^
# | <stdin>:11:20: note: scanning from here
# |  umul %i2, %i5, %i2
# |                    ^
# | <stdin>:12:2: note: possible intended match here
# |  rd %y, %l5
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/SPARC/umulo-128-legalisation-lowering.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |            .
# |            .
# |            .
# |            6: muloti_test: ! @muloti_test 
# |            7: ! %bb.0: ! %start 
# |            8:  save %sp, -96, %sp 
# |            9:  mov %i3, %g2 
# |           10:  mov %i2, %g4 
# |           11:  umul %i2, %i5, %i2 
# | next:13'0                        X error: no match found
# |           12:  rd %y, %l5 
# | next:13'0     ~~~~~~~~~~~~
# | next:13'1      ?           possible intended match
# |           13:  ld [%fp+92], %l1 
# | next:13'0     ~~~~~~~~~~~~~~~~~~
# |           14:  umul %i4, %i3, %i3 
# | next:13'0     ~~~~~~~~~~~~~~~~~~~~
# |           15:  rd %y, %l6 
# | next:13'0     ~~~~~~~~~~~~
# |           16:  ld [%fp+96], %g3 
# | next:13'0     ~~~~~~~~~~~~~~~~~~
# |           17:  umul %i5, %g2, %l3 
# | next:13'0     ~~~~~~~~~~~~~~~~~~~~
# |            .
# |            .
# |            .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/Thumb2/mve-saturating-arith.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve -verify-machineinstrs /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/Thumb2/mve-saturating-arith.ll -o - | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/Thumb2/mve-saturating-arith.ll
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve -verify-machineinstrs /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/Thumb2/mve-saturating-arith.ll -o -
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/Thumb2/mve-saturating-arith.ll
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/Thumb2/mve-saturating-arith.ll:121:15: error: CHECK-NEXT: expected string not found in input
# | ; CHECK-NEXT: .save {r4, r5, r7, lr}
# |               ^
# | <stdin>:169:18: note: scanning from here
# | @ %bb.0: @ %entry
# |                  ^
# | <stdin>:170:2: note: possible intended match here
# |  .save {r4, lr}
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/Thumb2/mve-saturating-arith.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |           164:  .type uadd_int64_t,%function 
# |           165:  .code 16 
# |           166:  .thumb_func 
# |           167: uadd_int64_t: @ @uadd_int64_t 
# |           168:  .fnstart 
# |           169: @ %bb.0: @ %entry 
# | next:121'0                      X error: no match found
# |           170:  .save {r4, lr} 
# | next:121'0     ~~~~~~~~~~~~~~~~
# | next:121'1      ?               possible intended match
# |           171:  push {r4, lr} 
# | next:121'0     ~~~~~~~~~~~~~~~
# |           172:  vmov r0, r1, d3 
# | next:121'0     ~~~~~~~~~~~~~~~~~
# |           173:  vmov r2, r3, d1 
# | next:121'0     ~~~~~~~~~~~~~~~~~
# |           174:  adds.w lr, r2, r0 
# | next:121'0     ~~~~~~~~~~~~~~~~~~~
# |           175:  vmov r2, r4, d0 
# | next:121'0     ~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/WebAssembly/umulo-128-legalisation-lowering.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 1
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/WebAssembly/umulo-128-legalisation-lowering.ll -mtriple=wasm32 -wasm-keep-registers | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/WebAssembly/umulo-128-legalisation-lowering.ll --check-prefixes=WASM32
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=wasm32 -wasm-keep-registers
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/WebAssembly/umulo-128-legalisation-lowering.ll --check-prefixes=WASM32
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/WebAssembly/umulo-128-legalisation-lowering.ll:39:11: error: WASM32: expected string not found in input
# | ; WASM32: i64.load $push31=, 40($pop50)
# |           ^
# | <stdin>:44:23: note: scanning from here
# |  local.get $push50=, 5
# |                       ^
# | <stdin>:45:2: note: possible intended match here
# |  i64.load $push4=, 40($pop50)
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/WebAssembly/umulo-128-legalisation-lowering.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |            39:  local.get $push49=, 0 
# |            40:  local.get $push48=, 5 
# |            41:  i64.load $push1=, 32($pop48) 
# |            42:  i64.store 0($pop49), $pop1 
# |            43:  local.get $push53=, 0 
# |            44:  local.get $push50=, 5 
# | check:39'0                           X error: no match found
# |            45:  i64.load $push4=, 40($pop50) 
# | check:39'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# | check:39'1      ?                             possible intended match
# |            46:  local.get $push51=, 5 
# | check:39'0     ~~~~~~~~~~~~~~~~~~~~~~~
# |            47:  i64.load $push3=, 0($pop51) 
# | check:39'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            48:  local.get $push52=, 5 
# | check:39'0     ~~~~~~~~~~~~~~~~~~~~~~~
# |            49:  i64.load $push2=, 16($pop52) 
# | check:39'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            50:  i64.add $push31=, $pop3, $pop2 
# | check:39'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/X86/expand-vp-int-intrinsics.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/expand-vp-int-intrinsics.ll -mtriple=i686-unknown-unknown -mattr=+avx        | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/expand-vp-int-intrinsics.ll --check-prefixes=X86
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=i686-unknown-unknown -mattr=+avx
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/expand-vp-int-intrinsics.ll --check-prefixes=X86
# note: command had no output on stdout or stderr
# RUN: at line 3
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/expand-vp-int-intrinsics.ll -mtriple=x86_64-unknown-unknown                  | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/expand-vp-int-intrinsics.ll --check-prefixes=SSE
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=x86_64-unknown-unknown
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/expand-vp-int-intrinsics.ll --check-prefixes=SSE
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/expand-vp-int-intrinsics.ll:1785:13: error: SSE-NEXT: expected string not found in input
# | ; SSE-NEXT: movdqa %xmm0, %xmm3
# |             ^
# | <stdin>:746:86: note: scanning from here
# |  movdqa .LCPI24_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648]
# |                                                                                      ^
# | <stdin>:749:3: note: possible intended match here
# |  pxor %xmm0, %xmm2
# |   ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/expand-vp-int-intrinsics.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |            741:  .p2align 4 
# |            742:  .type vp_uadd_sat_v4i32,@function 
# |            743: vp_uadd_sat_v4i32: # @vp_uadd_sat_v4i32 
# |            744:  .cfi_startproc 
# |            745: # %bb.0: 
# |            746:  movdqa .LCPI24_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648] 
# | next:1785'0                                                                                          X error: no match found
# |            747:  paddd %xmm1, %xmm0 
# | next:1785'0     ~~~~~~~~~~~~~~~~~~~~
# |            748:  pxor %xmm2, %xmm1 
# | next:1785'0     ~~~~~~~~~~~~~~~~~~~
# |            749:  pxor %xmm0, %xmm2 
# | next:1785'0     ~~~~~~~~~~~~~~~~~~~
# | next:1785'1       ?                 possible intended match
# |            750:  pcmpgtd %xmm2, %xmm1 
# | next:1785'0     ~~~~~~~~~~~~~~~~~~~~~~
# |            751:  por %xmm1, %xmm0 
# | next:1785'0     ~~~~~~~~~~~~~~~~~~
# |            752:  retq 
# | next:1785'0     ~~~~~~
# |            753: .Lfunc_end24: 
# | next:1785'0     ~~~~~~~~~~~~~~
# |            754:  .size vp_uadd_sat_v4i32, .Lfunc_end24-vp_uadd_sat_v4i32 
# | next:1785'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |              .
# |              .
# |              .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/X86/sat-add.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll -mtriple=x86_64-- -mattr=+sse2   | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll --check-prefixes=ANY,SSE,SSE2
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=x86_64-- -mattr=+sse2
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll --check-prefixes=ANY,SSE,SSE2
# note: command had no output on stdout or stderr
# RUN: at line 3
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll -mtriple=x86_64-- -mattr=+sse4.1 | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll --check-prefixes=ANY,SSE,SSE4,SSE41
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=x86_64-- -mattr=+sse4.1
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll --check-prefixes=ANY,SSE,SSE4,SSE41
# note: command had no output on stdout or stderr
# RUN: at line 4
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll -mtriple=x86_64-- -mattr=+sse4.2 | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll --check-prefixes=ANY,SSE,SSE4,SSE42
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=x86_64-- -mattr=+sse4.2
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll --check-prefixes=ANY,SSE,SSE4,SSE42
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll:714:15: error: SSE42-NEXT: is not on the line after the previous match
# | ; SSE42-NEXT: movdqa {{.*#+}} xmm1 = [9223372036854775808,9223372036854775808]
# |               ^
# | <stdin>:660:2: note: 'next' match was here
# |  movdqa .LCPI35_1(%rip), %xmm1 # xmm1 = [9223372036854775808,9223372036854775808]
# |  ^
# | <stdin>:658:9: note: previous match ended here
# | # %bb.0:
# |         ^
# | <stdin>:659:1: note: non-matching line after previous match is here
# |  paddq .LCPI35_0(%rip), %xmm0
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll:773:15: error: SSE42-NEXT: is not on the line after the previous match
# | ; SSE42-NEXT: movdqa {{.*#+}} xmm1 = [9223372036854775808,9223372036854775808]
# |               ^
# | <stdin>:689:2: note: 'next' match was here
# |  movdqa .LCPI36_1(%rip), %xmm1 # xmm1 = [9223372036854775808,9223372036854775808]
# |  ^
# | <stdin>:687:9: note: previous match ended here
# | # %bb.0:
# |         ^
# | <stdin>:688:1: note: non-matching line after previous match is here
# |  paddq .LCPI36_0(%rip), %xmm0
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll:1254:15: error: SSE42-NEXT: expected string not found in input
# | ; SSE42-NEXT: movdqa %xmm0, %xmm3
# |               ^
# | <stdin>:883:82: note: scanning from here
# |  movdqa .LCPI47_0(%rip), %xmm2 # xmm2 = [9223372036854775808,9223372036854775808]
# |                                                                                  ^
# | <stdin>:884:2: note: possible intended match here
# |  paddq %xmm1, %xmm0
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/sat-add.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |              .
# |              .
# |              .
# |            655:  .type unsigned_sat_constant_v2i64_using_cmp_sum,@function 
# |            656: unsigned_sat_constant_v2i64_using_cmp_sum: # @unsigned_sat_constant_v2i64_using_cmp_sum 
# |            657:  .cfi_startproc 
# |            658: # %bb.0: 
# |            659:  paddq .LCPI35_0(%rip), %xmm0 
# |            660:  movdqa .LCPI35_1(%rip), %xmm1 # xmm1 = [9223372036854775808,9223372036854775808] 
# | next:714         !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  error: match on wrong line
# |            661:  pxor %xmm0, %xmm1 
# |            662:  movdqa .LCPI35_2(%rip), %xmm2 # xmm2 = [9223372036854775850,9223372036854775850] 
# |            663:  pcmpgtq %xmm1, %xmm2 
# |            664:  por %xmm2, %xmm0 
# |            665:  retq 
# |              .
# |              .
# |              .
# |            684:  .type unsigned_sat_constant_v2i64_using_cmp_notval,@function 
# |            685: unsigned_sat_constant_v2i64_using_cmp_notval: # @unsigned_sat_constant_v2i64_using_cmp_notval 
# |            686:  .cfi_startproc 
# |            687: # %bb.0: 
# |            688:  paddq .LCPI36_0(%rip), %xmm0 
# |            689:  movdqa .LCPI36_1(%rip), %xmm1 # xmm1 = [9223372036854775808,9223372036854775808] 
# | next:773         !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  error: match on wrong line
# |            690:  pxor %xmm0, %xmm1 
# |            691:  movdqa .LCPI36_2(%rip), %xmm2 # xmm2 = [9223372036854775850,9223372036854775850] 
# |            692:  pcmpgtq %xmm1, %xmm2 
# |            693:  por %xmm2, %xmm0 
# |            694:  retq 
# |              .
# |              .
# |              .
# |            878:  .p2align 4 
# |            879:  .type unsigned_sat_variable_v2i64_using_cmp_sum,@function 
# |            880: unsigned_sat_variable_v2i64_using_cmp_sum: # @unsigned_sat_variable_v2i64_using_cmp_sum 
# |            881:  .cfi_startproc 
# |            882: # %bb.0: 
# |            883:  movdqa .LCPI47_0(%rip), %xmm2 # xmm2 = [9223372036854775808,9223372036854775808] 
# | next:1254'0                                                                                      X error: no match found
# |            884:  paddq %xmm1, %xmm0 
# | next:1254'0     ~~~~~~~~~~~~~~~~~~~~
# | next:1254'1      ?                   possible intended match
# |            885:  pxor %xmm2, %xmm1 
# | next:1254'0     ~~~~~~~~~~~~~~~~~~~
# |            886:  pxor %xmm0, %xmm2 
# | next:1254'0     ~~~~~~~~~~~~~~~~~~~
# |            887:  pcmpgtq %xmm2, %xmm1 
# | next:1254'0     ~~~~~~~~~~~~~~~~~~~~~~
# |            888:  por %xmm1, %xmm0 
# | next:1254'0     ~~~~~~~~~~~~~~~~~~
# |            889:  retq 
# | next:1254'0     ~~~~~~
# |              .
# |              .
# |              .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/X86/uadd_sat.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat.ll -mtriple=i686 -mattr=cmov | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat.ll --check-prefix=X86
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=i686 -mattr=cmov
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat.ll --check-prefix=X86
# note: command had no output on stdout or stderr
# RUN: at line 3
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat.ll -mtriple=x86_64-linux | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat.ll --check-prefix=X64
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=x86_64-linux
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat.ll --check-prefix=X64
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat.ll:154:13: error: X64-NEXT: expected string not found in input
# | ; X64-NEXT: movdqa %xmm0, %xmm3
# |             ^
# | <stdin>:82:85: note: scanning from here
# |  movdqa .LCPI5_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648]
# |                                                                                     ^
# | <stdin>:85:3: note: possible intended match here
# |  pxor %xmm0, %xmm2
# |   ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |            77:  .globl vec 
# |            78:  .p2align 4 
# |            79:  .type vec,@function 
# |            80: vec: # @vec 
# |            81: # %bb.0: 
# |            82:  movdqa .LCPI5_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648] 
# | next:154'0                                                                                         X error: no match found
# |            83:  paddd %xmm1, %xmm0 
# | next:154'0     ~~~~~~~~~~~~~~~~~~~~
# |            84:  pxor %xmm2, %xmm1 
# | next:154'0     ~~~~~~~~~~~~~~~~~~~
# |            85:  pxor %xmm0, %xmm2 
# | next:154'0     ~~~~~~~~~~~~~~~~~~~
# | next:154'1       ?                 possible intended match
# |            86:  pcmpgtd %xmm2, %xmm1 
# | next:154'0     ~~~~~~~~~~~~~~~~~~~~~~
# |            87:  por %xmm1, %xmm0 
# | next:154'0     ~~~~~~~~~~~~~~~~~~
# |            88:  retq 
# | next:154'0     ~~~~~~
# |            89: .Lfunc_end5: 
# | next:154'0     ~~~~~~~~~~~~~
# |            90:  .size vec, .Lfunc_end5-vec 
# | next:154'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/X86/uadd_sat_vec.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat_vec.ll -mtriple=x86_64-unknown-unknown -mattr=+sse2 | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat_vec.ll --check-prefixes=SSE,SSE2
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=x86_64-unknown-unknown -mattr=+sse2
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat_vec.ll --check-prefixes=SSE,SSE2
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat_vec.ll:543:14: error: SSE2-NEXT: expected string not found in input
# | ; SSE2-NEXT: movdqa %xmm0, %xmm3
# |              ^
# | <stdin>:235:86: note: scanning from here
# |  movdqa .LCPI17_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648]
# |                                                                                      ^
# | <stdin>:238:3: note: possible intended match here
# |  pxor %xmm0, %xmm2
# |   ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat_vec.ll:611:14: error: SSE2-NEXT: expected string not found in input
# | ; SSE2-NEXT: movdqa %xmm0, %xmm3
# |              ^
# | <stdin>:258:86: note: scanning from here
# |  movdqa .LCPI18_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648]
# |                                                                                      ^
# | <stdin>:261:3: note: possible intended match here
# |  pxor %xmm0, %xmm2
# |   ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat_vec.ll:679:14: error: SSE2-NEXT: is not on the line after the previous match
# | ; SSE2-NEXT: movdqa %xmm0, %xmm5
# |              ^
# | <stdin>:284:2: note: 'next' match was here
# |  movdqa %xmm0, %xmm5
# |  ^
# | <stdin>:281:86: note: previous match ended here
# |  movdqa .LCPI19_0(%rip), %xmm4 # xmm4 = [2147483648,2147483648,2147483648,2147483648]
# |                                                                                      ^
# | <stdin>:282:1: note: non-matching line after previous match is here
# |  paddd %xmm2, %xmm0
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat_vec.ll:770:14: error: SSE2-NEXT: is not on the line after the previous match
# | ; SSE2-NEXT: movdqa %xmm0, %xmm9
# |              ^
# | <stdin>:313:2: note: 'next' match was here
# |  movdqa %xmm0, %xmm9
# |  ^
# | <stdin>:310:86: note: previous match ended here
# |  movdqa .LCPI20_0(%rip), %xmm8 # xmm8 = [2147483648,2147483648,2147483648,2147483648]
# |                                                                                      ^
# | <stdin>:311:1: note: non-matching line after previous match is here
# |  paddd %xmm4, %xmm0
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat_vec.ll:900:13: error: SSE-NEXT: expected string not found in input
# | ; SSE-NEXT: movdqa %xmm0, %xmm3
# |             ^
# | <stdin>:349:82: note: scanning from here
# |  movdqa .LCPI21_0(%rip), %xmm2 # xmm2 = [9223372039002259456,9223372039002259456]
# |                                                                                  ^
# | <stdin>:353:2: note: possible intended match here
# |  movdqa %xmm1, %xmm3
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat_vec.ll:962:13: error: SSE-NEXT: is not on the line after the previous match
# | ; SSE-NEXT: movdqa %xmm0, %xmm5
# |             ^
# | <stdin>:380:2: note: 'next' match was here
# |  movdqa %xmm0, %xmm5
# |  ^
# | <stdin>:377:82: note: previous match ended here
# |  movdqa .LCPI22_0(%rip), %xmm4 # xmm4 = [9223372039002259456,9223372039002259456]
# |                                                                                  ^
# | <stdin>:378:1: note: non-matching line after previous match is here
# |  paddq %xmm2, %xmm0
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat_vec.ll:1045:13: error: SSE-NEXT: is not on the line after the previous match
# | ; SSE-NEXT: movdqa %xmm0, %xmm9
# |             ^
# | <stdin>:421:2: note: 'next' match was here
# |  movdqa %xmm0, %xmm9
# |  ^
# | <stdin>:418:82: note: previous match ended here
# |  movdqa .LCPI23_0(%rip), %xmm8 # xmm8 = [9223372039002259456,9223372039002259456]
# |                                                                                  ^
# | <stdin>:419:1: note: non-matching line after previous match is here
# |  paddq %xmm4, %xmm0
# | ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/uadd_sat_vec.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |           230:  .globl v2i32 
# |           231:  .p2align 4 
# |           232:  .type v2i32,@function 
# |           233: v2i32: # @v2i32 
# |           234: # %bb.0: 
# |           235:  movdqa .LCPI17_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648] 
# | next:543'0                                                                                          X error: no match found
# |           236:  paddd %xmm1, %xmm0 
# | next:543'0     ~~~~~~~~~~~~~~~~~~~~
# |           237:  pxor %xmm2, %xmm1 
# | next:543'0     ~~~~~~~~~~~~~~~~~~~
# |           238:  pxor %xmm0, %xmm2 
# | next:543'0     ~~~~~~~~~~~~~~~~~~~
# | next:543'1       ?                 possible intended match
# |           239:  pcmpgtd %xmm2, %xmm1 
# | next:543'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           240:  por %xmm1, %xmm0 
# | next:543'0     ~~~~~~~~~~~~~~~~~~
# |           241:  retq 
# | next:543'0     ~~~~~~
# |           242: .Lfunc_end17: 
# | next:543'0     ~~~~~~~~~~~~~~
# |           243:  .size v2i32, .Lfunc_end17-v2i32 
# | next:543'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           253:  .globl v4i32 
# | next:543'0     ~~~~~~~~~~~~~~
# |           254:  .p2align 4 
# | next:543'0     ~~~~~~~~~~~~
# |           255:  .type v4i32,@function 
# | next:543'0     ~~~~~~~~~~~~~~~~~~~~~~~
# |           256: v4i32: # @v4i32 
# | next:543'0     ~~~~~~
# |           257: # %bb.0: 
# |           258:  movdqa .LCPI18_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648] 
# | next:611'0                                                                                          X error: no match found
# |           259:  paddd %xmm1, %xmm0 
# | next:611'0     ~~~~~~~~~~~~~~~~~~~~
# |           260:  pxor %xmm2, %xmm1 
# | next:611'0     ~~~~~~~~~~~~~~~~~~~
# |           261:  pxor %xmm0, %xmm2 
# | next:611'0     ~~~~~~~~~~~~~~~~~~~
# | next:611'1       ?                 possible intended match
# |           262:  pcmpgtd %xmm2, %xmm1 
# | next:611'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           263:  por %xmm1, %xmm0 
# | next:611'0     ~~~~~~~~~~~~~~~~~~
# |           264:  retq 
# | next:611'0     ~~~~~~
# |           265: .Lfunc_end18: 
# | next:611'0     ~~~~~~~~~~~~~~
# |           266:  .size v4i32, .Lfunc_end18-v4i32 
# | next:611'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           279: v8i32: # @v8i32 
# | next:611'0     ~~~~~~
# |           280: # %bb.0: 
# |           281:  movdqa .LCPI19_0(%rip), %xmm4 # xmm4 = [2147483648,2147483648,2147483648,2147483648] 
# |           282:  paddd %xmm2, %xmm0 
# |           283:  pxor %xmm4, %xmm2 
# |           284:  movdqa %xmm0, %xmm5 
# | next:679        !~~~~~~~~~~~~~~~~~~  error: match on wrong line
# |           285:  pxor %xmm4, %xmm5 
# |           286:  pcmpgtd %xmm5, %xmm2 
# |           287:  por %xmm2, %xmm0 
# |           288:  paddd %xmm3, %xmm1 
# |           289:  pxor %xmm4, %xmm3 
# |             .
# |             .
# |             .
# |           308: v16i32: # @v16i32 
# |           309: # %bb.0: 
# |           310:  movdqa .LCPI20_0(%rip), %xmm8 # xmm8 = [2147483648,2147483648,2147483648,2147483648] 
# |           311:  paddd %xmm4, %xmm0 
# |           312:  pxor %xmm8, %xmm4 
# |           313:  movdqa %xmm0, %xmm9 
# | next:770        !~~~~~~~~~~~~~~~~~~  error: match on wrong line
# |           314:  pxor %xmm8, %xmm9 
# |           315:  pcmpgtd %xmm9, %xmm4 
# |           316:  por %xmm4, %xmm0 
# |           317:  paddd %xmm5, %xmm1 
# |           318:  pxor %xmm8, %xmm5 
# |             .
# |             .
# |             .
# |           344:  .globl v2i64 
# |           345:  .p2align 4 
# |           346:  .type v2i64,@function 
# |           347: v2i64: # @v2i64 
# |           348: # %bb.0: 
# |           349:  movdqa .LCPI21_0(%rip), %xmm2 # xmm2 = [9223372039002259456,9223372039002259456] 
# | next:900'0                                                                                      X error: no match found
# |           350:  paddq %xmm1, %xmm0 
# | next:900'0     ~~~~~~~~~~~~~~~~~~~~
# |           351:  pxor %xmm2, %xmm1 
# | next:900'0     ~~~~~~~~~~~~~~~~~~~
# |           352:  pxor %xmm0, %xmm2 
# | next:900'0     ~~~~~~~~~~~~~~~~~~~
# |           353:  movdqa %xmm1, %xmm3 
# | next:900'0     ~~~~~~~~~~~~~~~~~~~~~
# | next:900'1      ?                    possible intended match
# |           354:  pcmpgtd %xmm2, %xmm3 
# | next:900'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           355:  pshufd $160, %xmm3, %xmm4 # xmm4 = xmm3[0,0,2,2] 
# | next:900'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           356:  pcmpeqd %xmm1, %xmm2 
# | next:900'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           357:  pshufd $245, %xmm2, %xmm1 # xmm1 = xmm2[1,1,3,3] 
# | next:900'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           358:  pand %xmm4, %xmm1 
# | next:900'0     ~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           375: v4i64: # @v4i64 
# | next:900'0     ~~~~~~
# |           376: # %bb.0: 
# |           377:  movdqa .LCPI22_0(%rip), %xmm4 # xmm4 = [9223372039002259456,9223372039002259456] 
# |           378:  paddq %xmm2, %xmm0 
# |           379:  pxor %xmm4, %xmm2 
# |           380:  movdqa %xmm0, %xmm5 
# | next:962        !~~~~~~~~~~~~~~~~~~  error: match on wrong line
# |           381:  pxor %xmm4, %xmm5 
# |           382:  movdqa %xmm2, %xmm6 
# |           383:  pcmpgtd %xmm5, %xmm6 
# |           384:  pshufd $160, %xmm6, %xmm7 # xmm7 = xmm6[0,0,2,2] 
# |           385:  pcmpeqd %xmm2, %xmm5 
# |             .
# |             .
# |             .
# |           416: v8i64: # @v8i64 
# |           417: # %bb.0: 
# |           418:  movdqa .LCPI23_0(%rip), %xmm8 # xmm8 = [9223372039002259456,9223372039002259456] 
# |           419:  paddq %xmm4, %xmm0 
# |           420:  pxor %xmm8, %xmm4 
# |           421:  movdqa %xmm0, %xmm9 
# | next:1045       !~~~~~~~~~~~~~~~~~~  error: match on wrong line
# |           422:  pxor %xmm8, %xmm9 
# |           423:  movdqa %xmm4, %xmm10 
# |           424:  pcmpgtd %xmm9, %xmm10 
# |           425:  pshufd $160, %xmm10, %xmm11 # xmm11 = xmm10[0,0,2,2] 
# |           426:  pcmpeqd %xmm4, %xmm9 
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

LLVM.CodeGen/X86/vec_uaddo.ll
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc < /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll -mtriple=x86_64-unknown-unknown -mattr=+sse2 | /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll --check-prefixes=CHECK,SSE,SSE2
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/llc -mtriple=x86_64-unknown-unknown -mattr=+sse2
# note: command had no output on stdout or stderr
# executed command: /home/gha/actions-runner/_work/llvm-project/llvm-project/build/bin/FileCheck /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll --check-prefixes=CHECK,SSE,SSE2
# .---command stderr------------
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll:46:14: error: SSE2-NEXT: expected string not found in input
# | ; SSE2-NEXT: paddd %xmm0, %xmm1
# |              ^
# | <stdin>:29:85: note: scanning from here
# |  movdqa .LCPI1_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648]
# |                                                                                     ^
# | <stdin>:30:2: note: possible intended match here
# |  paddd %xmm1, %xmm0
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll:103:14: error: SSE2-NEXT: expected string not found in input
# | ; SSE2-NEXT: paddd %xmm0, %xmm1
# |              ^
# | <stdin>:53:85: note: scanning from here
# |  movdqa .LCPI2_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648]
# |                                                                                     ^
# | <stdin>:54:2: note: possible intended match here
# |  paddd %xmm1, %xmm0
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll:167:14: error: SSE2-NEXT: expected string not found in input
# | ; SSE2-NEXT: paddd %xmm0, %xmm1
# |              ^
# | <stdin>:79:85: note: scanning from here
# |  movdqa .LCPI3_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648]
# |                                                                                     ^
# | <stdin>:80:2: note: possible intended match here
# |  paddd %xmm1, %xmm0
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll:225:14: error: SSE2-NEXT: is not on the line after the previous match
# | ; SSE2-NEXT: movd {{.*#+}} xmm2 = mem[0],zero,zero,zero
# |              ^
# | <stdin>:107:2: note: 'next' match was here
# |  movd 24(%rsp), %xmm2 # xmm2 = mem[0],zero,zero,zero
# |  ^
# | <stdin>:104:53: note: previous match ended here
# |  movd 40(%rsp), %xmm0 # xmm0 = mem[0],zero,zero,zero
# |                                                     ^
# | <stdin>:105:1: note: non-matching line after previous match is here
# |  movd 32(%rsp), %xmm1 # xmm1 = mem[0],zero,zero,zero
# | ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll:382:14: error: SSE2-NEXT: expected string not found in input
# | ; SSE2-NEXT: paddd %xmm0, %xmm2
# |              ^
# | <stdin>:155:85: note: scanning from here
# |  movdqa .LCPI5_0(%rip), %xmm4 # xmm4 = [2147483648,2147483648,2147483648,2147483648]
# |                                                                                     ^
# | <stdin>:156:2: note: possible intended match here
# |  paddd %xmm2, %xmm0
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll:472:14: error: SSE2-NEXT: expected string not found in input
# | ; SSE2-NEXT: paddd %xmm0, %xmm4
# |              ^
# | <stdin>:185:85: note: scanning from here
# |  movdqa .LCPI6_0(%rip), %xmm8 # xmm8 = [2147483648,2147483648,2147483648,2147483648]
# |                                                                                     ^
# | <stdin>:186:2: note: possible intended match here
# |  paddd %xmm4, %xmm0
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll:621:14: error: SSE2-NEXT: expected string not found in input
# | ; SSE2-NEXT: paddb %xmm0, %xmm1
# |              ^
# | <stdin>:218:9: note: scanning from here
# | # %bb.0:
# |         ^
# | <stdin>:219:2: note: possible intended match here
# |  paddb %xmm1, %xmm0
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll:747:14: error: SSE2-NEXT: expected string not found in input
# | ; SSE2-NEXT: movdqa %xmm0, %xmm2
# |              ^
# | <stdin>:262:9: note: scanning from here
# | # %bb.0:
# |         ^
# | <stdin>:268:2: note: possible intended match here
# |  movdqa %xmm1, %xmm2
# |  ^
# | /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll:838:13: error: SSE-NEXT: expected string not found in input
# | ; SSE-NEXT: paddq %xmm0, %xmm1
# |             ^
# | <stdin>:290:81: note: scanning from here
# |  movdqa .LCPI9_0(%rip), %xmm2 # xmm2 = [9223372039002259456,9223372039002259456]
# |                                                                                 ^
# | <stdin>:291:2: note: possible intended match here
# |  paddq %xmm1, %xmm0
# |  ^
# | 
# | Input file: <stdin>
# | Check file: /home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/test/CodeGen/X86/vec_uaddo.ll
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |             .
# |             .
# |             .
# |            24:  .globl uaddo_v2i32 
# |            25:  .p2align 4 
# |            26:  .type uaddo_v2i32,@function 
# |            27: uaddo_v2i32: # @uaddo_v2i32 
# |            28: # %bb.0: 
# |            29:  movdqa .LCPI1_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648] 
# | next:46'0                                                                                          X error: no match found
# |            30:  paddd %xmm1, %xmm0 
# | next:46'0      ~~~~~~~~~~~~~~~~~~~~
# | next:46'1       ?                   possible intended match
# |            31:  pxor %xmm2, %xmm1 
# | next:46'0      ~~~~~~~~~~~~~~~~~~~
# |            32:  pxor %xmm0, %xmm2 
# | next:46'0      ~~~~~~~~~~~~~~~~~~~
# |            33:  pcmpgtd %xmm2, %xmm1 
# | next:46'0      ~~~~~~~~~~~~~~~~~~~~~~
# |            34:  movq %xmm0, (%rdi) 
# | next:46'0      ~~~~~~~~~~~~~~~~~~~~
# |            35:  movdqa %xmm1, %xmm0 
# | next:46'0      ~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |            48:  .globl uaddo_v3i32 
# | next:46'0      ~~~~~~~~~~~~~~~~~~~~
# |            49:  .p2align 4 
# | next:46'0      ~~~~~~~~~~~~
# |            50:  .type uaddo_v3i32,@function 
# | next:46'0      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            51: uaddo_v3i32: # @uaddo_v3i32 
# | next:46'0      ~~~~~~~~~~~~
# |            52: # %bb.0: 
# |            53:  movdqa .LCPI2_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648] 
# | next:103'0                                                                                         X error: no match found
# |            54:  paddd %xmm1, %xmm0 
# | next:103'0     ~~~~~~~~~~~~~~~~~~~~
# | next:103'1      ?                   possible intended match
# |            55:  pxor %xmm2, %xmm1 
# | next:103'0     ~~~~~~~~~~~~~~~~~~~
# |            56:  pxor %xmm0, %xmm2 
# | next:103'0     ~~~~~~~~~~~~~~~~~~~
# |            57:  pcmpgtd %xmm2, %xmm1 
# | next:103'0     ~~~~~~~~~~~~~~~~~~~~~~
# |            58:  movq %xmm0, (%rdi) 
# | next:103'0     ~~~~~~~~~~~~~~~~~~~~
# |            59:  pshufd $238, %xmm0, %xmm0 # xmm0 = xmm0[2,3,2,3] 
# | next:103'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |            74:  .globl uaddo_v4i32 
# | next:103'0     ~~~~~~~~~~~~~~~~~~~~
# |            75:  .p2align 4 
# | next:103'0     ~~~~~~~~~~~~
# |            76:  .type uaddo_v4i32,@function 
# | next:103'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |            77: uaddo_v4i32: # @uaddo_v4i32 
# | next:103'0     ~~~~~~~~~~~~
# |            78: # %bb.0: 
# |            79:  movdqa .LCPI3_0(%rip), %xmm2 # xmm2 = [2147483648,2147483648,2147483648,2147483648] 
# | next:167'0                                                                                         X error: no match found
# |            80:  paddd %xmm1, %xmm0 
# | next:167'0     ~~~~~~~~~~~~~~~~~~~~
# | next:167'1      ?                   possible intended match
# |            81:  pxor %xmm2, %xmm1 
# | next:167'0     ~~~~~~~~~~~~~~~~~~~
# |            82:  pxor %xmm0, %xmm2 
# | next:167'0     ~~~~~~~~~~~~~~~~~~~
# |            83:  pcmpgtd %xmm2, %xmm1 
# | next:167'0     ~~~~~~~~~~~~~~~~~~~~~~
# |            84:  movdqa %xmm0, (%rdi) 
# | next:167'0     ~~~~~~~~~~~~~~~~~~~~~~
# |            85:  movdqa %xmm1, %xmm0 
# | next:167'0     ~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           102: # %bb.0: 
# |           103:  movq %rdi, %rax 
# |           104:  movd 40(%rsp), %xmm0 # xmm0 = mem[0],zero,zero,zero 
# |           105:  movd 32(%rsp), %xmm1 # xmm1 = mem[0],zero,zero,zero 
# |           106:  punpckldq %xmm0, %xmm1 # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 
# |           107:  movd 24(%rsp), %xmm2 # xmm2 = mem[0],zero,zero,zero 
# | next:225        !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  error: match on wrong line
# |           108:  movd 16(%rsp), %xmm0 # xmm0 = mem[0],zero,zero,zero 
# |           109:  punpckldq %xmm2, %xmm0 # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1] 
# |           110:  punpcklqdq %xmm1, %xmm0 # xmm0 = xmm0[0],xmm1[0] 
# |           111:  movd %r8d, %xmm1 
# |           112:  movd %ecx, %xmm3 
# |             .
# |             .
# |             .
# |           150:  .globl uaddo_v8i32 
# |           151:  .p2align 4 
# |           152:  .type uaddo_v8i32,@function 
# |           153: uaddo_v8i32: # @uaddo_v8i32 
# |           154: # %bb.0: 
# |           155:  movdqa .LCPI5_0(%rip), %xmm4 # xmm4 = [2147483648,2147483648,2147483648,2147483648] 
# | next:382'0                                                                                         X error: no match found
# |           156:  paddd %xmm2, %xmm0 
# | next:382'0     ~~~~~~~~~~~~~~~~~~~~
# | next:382'1      ?                   possible intended match
# |           157:  pxor %xmm4, %xmm2 
# | next:382'0     ~~~~~~~~~~~~~~~~~~~
# |           158:  movdqa %xmm0, (%rdi) 
# | next:382'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           159:  pxor %xmm4, %xmm0 
# | next:382'0     ~~~~~~~~~~~~~~~~~~~
# |           160:  pcmpgtd %xmm0, %xmm2 
# | next:382'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           161:  paddd %xmm3, %xmm1 
# | next:382'0     ~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           180:  .globl uaddo_v16i32 
# | next:382'0     ~~~~~~~~~~~~~~~~~~~~~
# |           181:  .p2align 4 
# | next:382'0     ~~~~~~~~~~~~
# |           182:  .type uaddo_v16i32,@function 
# | next:382'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           183: uaddo_v16i32: # @uaddo_v16i32 
# | next:382'0     ~~~~~~~~~~~~~
# |           184: # %bb.0: 
# |           185:  movdqa .LCPI6_0(%rip), %xmm8 # xmm8 = [2147483648,2147483648,2147483648,2147483648] 
# | next:472'0                                                                                         X error: no match found
# |           186:  paddd %xmm4, %xmm0 
# | next:472'0     ~~~~~~~~~~~~~~~~~~~~
# | next:472'1      ?                   possible intended match
# |           187:  pxor %xmm8, %xmm4 
# | next:472'0     ~~~~~~~~~~~~~~~~~~~
# |           188:  movdqa %xmm0, (%rdi) 
# | next:472'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           189:  pxor %xmm8, %xmm0 
# | next:472'0     ~~~~~~~~~~~~~~~~~~~
# |           190:  pcmpgtd %xmm0, %xmm4 
# | next:472'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           191:  paddd %xmm5, %xmm1 
# | next:472'0     ~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           213:  # -- End function 
# | next:472'0     ~~~~~~~~~~~~~~~~~~~
# |           214:  .globl uaddo_v16i8 # -- Begin function uaddo_v16i8 
# | next:472'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           215:  .p2align 4 
# | next:472'0     ~~~~~~~~~~~~
# |           216:  .type uaddo_v16i8,@function 
# | next:472'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           217: uaddo_v16i8: # @uaddo_v16i8 
# | next:472'0     ~~~~~~~~~~~~
# |           218: # %bb.0: 
# | next:621'0             X error: no match found
# |           219:  paddb %xmm1, %xmm0 
# | next:621'0     ~~~~~~~~~~~~~~~~~~~~
# | next:621'1      ?                   possible intended match
# |           220:  pmaxub %xmm0, %xmm1 
# | next:621'0     ~~~~~~~~~~~~~~~~~~~~~
# |           221:  pcmpeqb %xmm0, %xmm1 
# | next:621'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           222:  pcmpeqd %xmm3, %xmm3 
# | next:621'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           223:  pxor %xmm1, %xmm3 
# | next:621'0     ~~~~~~~~~~~~~~~~~~~
# |           224:  movdqa %xmm3, %xmm4 
# | next:621'0     ~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           257:  .text 
# | next:621'0     ~~~~~~~
# |           258:  .globl uaddo_v8i16 
# | next:621'0     ~~~~~~~~~~~~~~~~~~~~
# |           259:  .p2align 4 
# | next:621'0     ~~~~~~~~~~~~
# |           260:  .type uaddo_v8i16,@function 
# | next:621'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           261: uaddo_v8i16: # @uaddo_v8i16 
# | next:621'0     ~~~~~~~~~~~~
# |           262: # %bb.0: 
# | next:747'0             X error: no match found
# |           263:  movdqa .LCPI8_0(%rip), %xmm2 # xmm2 = [32768,32768,32768,32768,32768,32768,32768,32768] 
# | next:747'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           264:  paddw %xmm1, %xmm0 
# | next:747'0     ~~~~~~~~~~~~~~~~~~~~
# |           265:  pxor %xmm2, %xmm1 
# | next:747'0     ~~~~~~~~~~~~~~~~~~~
# |           266:  pxor %xmm0, %xmm2 
# | next:747'0     ~~~~~~~~~~~~~~~~~~~
# |           267:  pcmpgtw %xmm2, %xmm1 
# | next:747'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           268:  movdqa %xmm1, %xmm2 
# | next:747'0     ~~~~~~~~~~~~~~~~~~~~~
# | next:747'1      ?                    possible intended match
# |           269:  punpcklwd %xmm1, %xmm2 # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3] 
# | next:747'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           270:  punpckhwd %xmm1, %xmm1 # xmm1 = xmm1[4,4,5,5,6,6,7,7] 
# | next:747'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           271:  pslld $31, %xmm1 
# | next:747'0     ~~~~~~~~~~~~~~~~~~
# |           272:  psrad $31, %xmm1 
# | next:747'0     ~~~~~~~~~~~~~~~~~~
# |           273:  movdqa %xmm0, (%rdi) 
# | next:747'0     ~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# |           285:  .globl uaddo_v2i64 
# | next:747'0     ~~~~~~~~~~~~~~~~~~~~
# |           286:  .p2align 4 
# | next:747'0     ~~~~~~~~~~~~
# |           287:  .type uaddo_v2i64,@function 
# | next:747'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           288: uaddo_v2i64: # @uaddo_v2i64 
# | next:747'0     ~~~~~~~~~~~~
# |           289: # %bb.0: 
# |           290:  movdqa .LCPI9_0(%rip), %xmm2 # xmm2 = [9223372039002259456,9223372039002259456] 
# | next:838'0                                                                                     X error: no match found
# |           291:  paddq %xmm1, %xmm0 
# | next:838'0     ~~~~~~~~~~~~~~~~~~~~
# | next:838'1      ?                   possible intended match
# |           292:  pxor %xmm2, %xmm1 
# | next:838'0     ~~~~~~~~~~~~~~~~~~~
# |           293:  pxor %xmm0, %xmm2 
# | next:838'0     ~~~~~~~~~~~~~~~~~~~
# |           294:  movdqa %xmm1, %xmm3 
# | next:838'0     ~~~~~~~~~~~~~~~~~~~~~
# |           295:  pcmpeqd %xmm2, %xmm3 
# | next:838'0     ~~~~~~~~~~~~~~~~~~~~~~
# |           296:  pcmpgtd %xmm2, %xmm1 
# | next:838'0     ~~~~~~~~~~~~~~~~~~~~~~
# |             .
# |             .
# |             .
# | >>>>>>
# `-----------------------------
# error: command failed with exit status: 1

--

If these failures are unrelated to your changes (for example tests are broken or flaky at HEAD), please open an issue at https://github.com/llvm/llvm-project/issues and add the infrastructure label.

Copy link
Contributor

@nikic nikic left a comment

Choose a reason for hiding this comment

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

We do consider usub.with.overflow non-canonical, so in principle this is fine (if we're willing to overlook the multi-use undef). I'm a bit concerned that we may not always recover this in the backend, which is more problematic when we originally started from an overflow builtin.

}

Instruction *
InstCombinerImpl::foldIntrinsicWithOverflowCommon(IntrinsicInst *II) {
Copy link
Contributor

Choose a reason for hiding this comment

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

This code should not be inside foldIntrinsicWithOverflowCommon(), as this is not actually a common transform, it applies to only a single intrinsic.

@aabhinavg1
Copy link
Contributor Author

We do consider usub.with.overflow non-canonical, so in principle this is fine (if we're willing to overlook the multi-use undef). I'm a bit concerned that we may not always recover this in the backend, which is more problematic when we originally started from an overflow builtin.

I understand your concern about the backend possibly not recovering this transformation when starting from an overflow builtin.

Do you have a suggestion for how we could handle this safely, or a better place to implement this transform so it only affects usub.with.overflow without introducing issues in the backend?

@dtcxzyw
Copy link
Member

dtcxzyw commented Dec 6, 2025

We try to recover this pattern into usubo in CodeGenPrepare. So usubo should be canonical in the middle-end.

// A - B, A u< B --> usubo(A, B)
if (match(U, m_Sub(m_Specific(A), m_Specific(B)))) {
Sub = cast<BinaryOperator>(U);
break;
}

The root cause is the inefficient lowering of usubo. Currently we lower the overflow bit of usubo into x - y u> x in TargetLowering::expandUADDSUBO:

} else {
ISD::CondCode CC = IsAdd ? ISD::SETULT : ISD::SETUGT;
SetCC = DAG.getSetCC(dl, SetCCType, Result, LHS, CC);
}
Overflow = DAG.getBoolExtOrTrunc(SetCC, dl, ResultType, ResultType);

If it causes some regressions after we change it into x u> y, at least we can implement a custom lowering for the RISC-V backend.

@llvmbot llvmbot added backend:RISC-V llvm:SelectionDAG SelectionDAGISel as well labels Dec 6, 2025
@@ -0,0 +1,34 @@
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
Copy link
Member

Choose a reason for hiding this comment

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

Unused test. Please also add a RISC-V codegen test demonstrating the issue.

@dtcxzyw
Copy link
Member

dtcxzyw commented Dec 6, 2025

Please also update the PR title/description.

@aabhinavg1 aabhinavg1 changed the title [Instcombine] Lower to explicit subtraction + unsigned comparison [SelectionDAG] Fix condition used for unsigned subtraction overflow Dec 6, 2025
; AVX-NEXT: vpcmpeqd %xmm2, %xmm0, %xmm2
; AVX-NEXT: vblendvps %xmm2, %xmm0, %xmm1, %xmm0
; AVX-NEXT: vmovaps %xmm1, %xmm0
; AVX-NEXT: retq
Copy link
Collaborator

Choose a reason for hiding this comment

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

what's going on here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The first two instructions (vpcmpeqd + vblendvps) were doing a compare and conditional blend of vectors, while now it’s replaced by vmovaps, which just moves the vector directly. So effectively, the result is the same, but the code is simpler and shorter.

Copy link
Collaborator

Choose a reason for hiding this comment

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

can you test that in alive please? I'm not convinced that the IR for uaddo(not(x),1) should simplify to always overflow

; CHECK-NEXT: flat_store_dwordx2 v[4:5], v[0:1]
; CHECK-NEXT: v_add_co_u32_e32 v2, vcc, -1, v0
; CHECK-NEXT: v_addc_co_u32_e32 v3, vcc, -1, v1, vcc
; CHECK-NEXT: v_cmp_lt_u64_e32 vcc, 1, v[0:1]
Copy link
Contributor

Choose a reason for hiding this comment

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

Although the sub → add substitution is functionally identical, the additional v_cmp_lt_u64_e32 instruction should not be emitted, see #155255

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for pointing out
I’ll investigate why this extra v_cmp_lt_u64_e32 emitted for the sub → add substitution and see whether we can avoid it (or add a backend fix), and report back

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.

RISC-V optimization: builtin_sub_overflow(unsigned) can make sub-optimal code

7 participants