[clang] [llvm] [LLVM][AArch64] Add "u" variants of sve.[s,u]hsub intrinsics (PR #170894)
llvm-ci wrote: LLVM Buildbot has detected a new failure on builder `arc-builder` running on `arc-worker` while building `clang,llvm` at step 6 "test-build-unified-tree-check-all". Full details are available at: https://lab.llvm.org/buildbot/#/builders/3/builds/26161 Here is the relevant piece of the build log for the reference ``` Step 6 (test-build-unified-tree-check-all) failure: test (failure) TEST 'LLVM :: CodeGen/X86/sse2-intrinsics-fast-isel.ll' FAILED Exit Code: 1 Command Output (stdout): -- # RUN: at line 2 /buildbot/worker/arc-folder/build/bin/llc < /buildbot/worker/arc-folder/llvm-project/llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll -show-mc-encoding -fast-isel -mtriple=i386-unknown-unknown -mattr=+sse2 | /buildbot/worker/arc-folder/build/bin/FileCheck /buildbot/worker/arc-folder/llvm-project/llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll --check-prefixes=CHECK,X86,SSE,X86-SSE # executed command: /buildbot/worker/arc-folder/build/bin/llc -show-mc-encoding -fast-isel -mtriple=i386-unknown-unknown -mattr=+sse2 # .---command stderr # | LLVM ERROR: Cannot select: intrinsic %llvm.x86.sse2.clflush # | PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug. # | Stack dump: # | 0. Program arguments: /buildbot/worker/arc-folder/build/bin/llc -show-mc-encoding -fast-isel -mtriple=i386-unknown-unknown -mattr=+sse2 # | 1. Running pass 'Function Pass Manager' on module ''. # | 2. Running pass 'X86 DAG->DAG Instruction Selection' on function '@test_mm_clflush' # | #0 0x023b52a8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/buildbot/worker/arc-folder/build/bin/llc+0x23b52a8) # | #1 0x023b21b5 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0 # | #2 0x7ffb28e58630 __restore_rt sigaction.c:0:0 # | #3 0x7ffb27ba83d7 raise (/usr/lib64/libc.so.6+0x363d7) # | #4 0x7ffb27ba9ac8 abort (/usr/lib64/libc.so.6+0x37ac8) # | #5 0x0072e059 llvm::json::operator==(llvm::json::Value const&, llvm::json::Value const&) (.cold) JSON.cpp:0:0 # | #6 0x021351f9 llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) (/buildbot/worker/arc-folder/build/bin/llc+0x21351f9) # | #7 0x02139eb1 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/buildbot/worker/arc-folder/build/bin/llc+0x2139eb1) # | #8 0x00971da7 (anonymous namespace)::X86DAGToDAGISel::Select(llvm::SDNode*) X86ISelDAGToDAG.cpp:0:0 # | #9 0x0213098f llvm::SelectionDAGISel::DoInstructionSelection() (/buildbot/worker/arc-folder/build/bin/llc+0x213098f) # | #10 0x02141348 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/buildbot/worker/arc-folder/build/bin/llc+0x2141348) # | #11 0x021455f3 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/buildbot/worker/arc-folder/build/bin/llc+0x21455f3) # | #12 0x021460ec llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/buildbot/worker/arc-folder/build/bin/llc+0x21460ec) # | #13 0x0213019f llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (/buildbot/worker/arc-folder/build/bin/llc+0x213019f) # | #14 0x0122db97 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0 # | #15 0x018b5a8b llvm::FPPassManager::runOnFunction(llvm::Function&) (/buildbot/worker/arc-folder/build/bin/llc+0x18b5a8b) # | #16 0x018b5e31 llvm::FPPassManager::runOnModule(llvm::Module&) (/buildbot/worker/arc-folder/build/bin/llc+0x18b5e31) # | #17 0x018b6a45 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/buildbot/worker/arc-folder/build/bin/llc+0x18b6a45) # | #18 0x00811d60 compileModule(char**, llvm::LLVMContext&, std::__cxx11::basic_string, std::allocator>&) llc.cpp:0:0 # | #19 0x007365c9 main (/buildbot/worker/arc-folder/build/bin/llc+0x7365c9) # | #20 0x7ffb27b94555 __libc_start_main (/usr/lib64/libc.so.6+0x22555) # | #21 0x00806d96 _start (/buildbot/worker/arc-folder/build/bin/llc+0x806d96) # `- # error: command failed with exit status: -6 # executed command: /buildbot/worker/arc-folder/build/bin/FileCheck /buildbot/worker/arc-folder/llvm-project/llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll --check-prefixes=CHECK,X86,SSE,X86-SSE # .---command stderr # | /buildbot/worker/arc-folder/llvm-project/llvm/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll:399:14: error: SSE-LABEL: expected string not found in input # | ; SSE-LABEL: test_mm_bsrli_si128: # | ^ # | :170:21: note: scanning from here # | test_mm_bslli_si128: # @test_mm_bslli_si128 # | ^ # | :178:9: note: possible intended match here # | .globl test_mm_bsrli_si128 # # | ^ ... ``` https://github.com/llvm/l
[clang] [llvm] [LLVM][AArch64] Add "u" variants of sve.[s,u]hsub intrinsics (PR #170894)
https://github.com/paulwalker-arm closed https://github.com/llvm/llvm-project/pull/170894 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [LLVM][AArch64] Add "u" variants of sve.[s,u]hsub intrinsics (PR #170894)
https://github.com/paulwalker-arm updated https://github.com/llvm/llvm-project/pull/170894 >From bec731b7ea9a85b28ccae0cb6ec9b754b23000fe Mon Sep 17 00:00:00 2001 From: Paul Walker Date: Tue, 2 Dec 2025 12:33:17 + Subject: [PATCH] [LLVM][AArch64] Add "u" variants of sve.[s,u]hsub intrinsics --- clang/include/clang/Basic/arm_sve.td | 8 +- .../AArch64/sve2-intrinsics/acle_sve2_hsub.c | 64 ++-- .../AArch64/sve2-intrinsics/acle_sve2_hsubr.c | 64 ++-- llvm/include/llvm/IR/IntrinsicsAArch64.td | 2 + .../lib/Target/AArch64/AArch64SVEInstrInfo.td | 11 +- llvm/lib/Target/AArch64/AArch64SchedA320.td | 2 +- llvm/lib/Target/AArch64/AArch64SchedA510.td | 2 +- .../Target/AArch64/AArch64SchedNeoverseN2.td | 2 +- .../Target/AArch64/AArch64SchedNeoverseN3.td | 2 +- .../Target/AArch64/AArch64SchedNeoverseV2.td | 2 +- .../Target/AArch64/AArch64SchedNeoverseV3.td | 2 +- .../AArch64/AArch64SchedNeoverseV3AE.td | 2 +- .../AArch64/AArch64TargetTransformInfo.cpp| 8 + .../sve2-intrinsics-uniform-dsp-undef.ll | 296 ++ .../sve-intrinsic-comb-no-active-lanes.ll | 12 +- .../sve-intrinsic-simplify-to-u-form.ll | 44 +++ 16 files changed, 436 insertions(+), 87 deletions(-) diff --git a/clang/include/clang/Basic/arm_sve.td b/clang/include/clang/Basic/arm_sve.td index ed41b43162109..a4a0ee7ed5f5f 100644 --- a/clang/include/clang/Basic/arm_sve.td +++ b/clang/include/clang/Basic/arm_sve.td @@ -1292,10 +1292,10 @@ defm SVQSUB_S : SInstZPZZ<"svqsub", "csli", "aarch64_sve_sqsub", "aarch64 defm SVQSUB_U : SInstZPZZ<"svqsub", "UcUsUiUl", "aarch64_sve_uqsub", "aarch64_sve_uqsub_u">; defm SVQSUBR_S : SInstZPZZ<"svqsubr", "csli", "aarch64_sve_sqsubr", "aarch64_sve_sqsub_u", [ReverseMergeAnyBinOp]>; defm SVQSUBR_U : SInstZPZZ<"svqsubr", "UcUsUiUl", "aarch64_sve_uqsubr", "aarch64_sve_uqsub_u", [ReverseMergeAnyBinOp]>; -defm SVHSUB_S : SInstZPZZ<"svhsub", "csli", "aarch64_sve_shsub", "aarch64_sve_shsub">; -defm SVHSUB_U : SInstZPZZ<"svhsub", "UcUsUiUl", "aarch64_sve_uhsub", "aarch64_sve_uhsub">; -defm SVHSUBR_S : SInstZPZZ<"svhsubr", "csli", "aarch64_sve_shsubr", "aarch64_sve_shsubr">; -defm SVHSUBR_U : SInstZPZZ<"svhsubr", "UcUsUiUl", "aarch64_sve_uhsubr", "aarch64_sve_uhsubr">; +defm SVHSUB_S : SInstZPZZ<"svhsub", "csli", "aarch64_sve_shsub", "aarch64_sve_shsub_u">; +defm SVHSUB_U : SInstZPZZ<"svhsub", "UcUsUiUl", "aarch64_sve_uhsub", "aarch64_sve_uhsub_u">; +defm SVHSUBR_S : SInstZPZZ<"svhsubr", "csli", "aarch64_sve_shsubr", "aarch64_sve_shsub_u", [ReverseMergeAnyBinOp]>; +defm SVHSUBR_U : SInstZPZZ<"svhsubr", "UcUsUiUl", "aarch64_sve_uhsubr", "aarch64_sve_uhsub_u", [ReverseMergeAnyBinOp]>; defm SVQABS : SInstZPZ<"svqabs", "csil", "aarch64_sve_sqabs">; defm SVQNEG : SInstZPZ<"svqneg", "csil", "aarch64_sve_sqneg">; diff --git a/clang/test/CodeGen/AArch64/sve2-intrinsics/acle_sve2_hsub.c b/clang/test/CodeGen/AArch64/sve2-intrinsics/acle_sve2_hsub.c index 22c11466a7288..e101dd2fe3399 100644 --- a/clang/test/CodeGen/AArch64/sve2-intrinsics/acle_sve2_hsub.c +++ b/clang/test/CodeGen/AArch64/sve2-intrinsics/acle_sve2_hsub.c @@ -297,12 +297,12 @@ svuint64_t test_svhsub_u64_m(svbool_t pg, svuint64_t op1, svuint64_t op2) // CHECK-LABEL: @test_svhsub_s8_x( // CHECK-NEXT: entry: -// CHECK-NEXT:[[TMP0:%.*]] = tail call @llvm.aarch64.sve.shsub.nxv16i8( [[PG:%.*]], [[OP1:%.*]], [[OP2:%.*]]) +// CHECK-NEXT:[[TMP0:%.*]] = tail call @llvm.aarch64.sve.shsub.u.nxv16i8( [[PG:%.*]], [[OP1:%.*]], [[OP2:%.*]]) // CHECK-NEXT:ret [[TMP0]] // // CPP-CHECK-LABEL: @_Z16test_svhsub_s8_xu10__SVBool_tu10__SVInt8_tS0_( // CPP-CHECK-NEXT: entry: -// CPP-CHECK-NEXT:[[TMP0:%.*]] = tail call @llvm.aarch64.sve.shsub.nxv16i8( [[PG:%.*]], [[OP1:%.*]], [[OP2:%.*]]) +// CPP-CHECK-NEXT:[[TMP0:%.*]] = tail call @llvm.aarch64.sve.shsub.u.nxv16i8( [[PG:%.*]], [[OP1:%.*]], [[OP2:%.*]]) // CPP-CHECK-NEXT:ret [[TMP0]] // svint8_t test_svhsub_s8_x(svbool_t pg, svint8_t op1, svint8_t op2) @@ -313,13 +313,13 @@ svint8_t test_svhsub_s8_x(svbool_t pg, svint8_t op1, svint8_t op2) // CHECK-LABEL: @test_svhsub_s16_x( // CHECK-NEXT: entry: // CHECK-NEXT:[[TMP0:%.*]] = tail call @llvm.aarch64.sve.convert.from.svbool.nxv8i1( [[PG:%.*]]) -// CHECK-NEXT:[[TMP1:%.*]] = tail call @llvm.aarch64.sve.shsub.nxv8i16( [[TMP0]], [[OP1:%.*]], [[OP2:%.*]]) +// CHECK-NEXT:[[TMP1:%.*]] = tail call @llvm.aarch64.sve.shsub.u.nxv8i16( [[TMP0]], [[OP1:%.*]], [[OP2:%.*]]) // CHECK-NEXT:ret [[TMP1]] // // CPP-CHECK-LABEL: @_Z17test_svhsub_s16_xu10__SVBool_tu11__SVInt16_tS0_( // CPP-CHECK-NEXT: entry: // CPP-CHECK-NEXT:[[TMP0:%.*]] = tail call @llvm.aarch64.sve.convert.from.svbool.nxv8i1( [[PG:%.*]]) -// CPP-CHECK-NEXT:[[TMP1:%.*]] = tail call @llvm.aarch64.sve.shsub.nxv8i16( [[TMP0]], [[OP1:%.*]], [[OP2:%.*]]) +// CPP-CHECK-NEXT:[[TMP
[clang] [llvm] [LLVM][AArch64] Add "u" variants of sve.[s,u]hsub intrinsics (PR #170894)
@@ -2125,7 +2125,7 @@ def : InstRW<[V2Write_2c_1V], "^ADR_LSL_ZZZ_[SD]_[0123]", "^[SU](ADD|SUB)[LW][BT]_ZZZ_[HSD]", "^SADDLBT_ZZZ_[HSD]", -"^[SU]H(ADD|SUB|SUBR)_ZPmZ_[BHSD]", +"^[SU]H(ADD|SUB|SUBR)_(ZPmZ|ZPZZ)_[BHSD]", paulwalker-arm wrote: Sounds like a fantastic idea to me. I've done this under https://github.com/llvm/llvm-project/pull/171487 and will update this PR once I'm confident there's no fallout. https://github.com/llvm/llvm-project/pull/170894 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [LLVM][AArch64] Add "u" variants of sve.[s,u]hsub intrinsics (PR #170894)
https://github.com/paulwalker-arm edited https://github.com/llvm/llvm-project/pull/170894 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
