[llvm] [X86] Add missing VPSRAQ broadcast-from-mem patterns for non-VLX targets (PR #186654)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Sun Mar 15 03:22:43 PDT 2026
https://github.com/RKSimon created https://github.com/llvm/llvm-project/pull/186654
None
>From 563881811eb2b6ab4bbe44d16052a0d7da7400fc Mon Sep 17 00:00:00 2001
From: Simon Pilgrim <llvm-dev at redking.me.uk>
Date: Sun, 15 Mar 2026 10:21:36 +0000
Subject: [PATCH] [X86] Add missing VPSRAQ broadcast-from-mem patterns for
non-VLX targets
---
llvm/lib/Target/X86/X86InstrAVX512.td | 6 ++++++
llvm/test/CodeGen/X86/shift-i512.ll | 3 +--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td
index aafc5cb3c7ee5..400cdcb9251de 100644
--- a/llvm/lib/Target/X86/X86InstrAVX512.td
+++ b/llvm/lib/Target/X86/X86InstrAVX512.td
@@ -6145,11 +6145,17 @@ let Predicates = [HasAVX512, NoVLX] in {
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src1, sub_ymm)),
timm:$src2)), sub_ymm)>;
+ def : Pat<(v4i64 (X86vsrai (v4i64 (X86VBroadcastld64 addr:$src1)), (i8 timm:$src2))),
+ (EXTRACT_SUBREG (v8i64 (VPSRAQZmbi addr:$src1, timm:$src2)), sub_ymm)>;
+
def : Pat<(v2i64 (X86vsrai (v2i64 VR128X:$src1), (i8 timm:$src2))),
(EXTRACT_SUBREG (v8i64
(VPSRAQZri
(v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src1, sub_xmm)),
timm:$src2)), sub_xmm)>;
+
+ def : Pat<(v2i64 (X86vsrai (v2i64 (X86VBroadcastld64 addr:$src1)), (i8 timm:$src2))),
+ (EXTRACT_SUBREG (v8i64 (VPSRAQZmbi addr:$src1, timm:$src2)), sub_xmm)>;
}
//===-------------------------------------------------------------------===//
diff --git a/llvm/test/CodeGen/X86/shift-i512.ll b/llvm/test/CodeGen/X86/shift-i512.ll
index fa854663d38f9..ee75aa7a77a1d 100644
--- a/llvm/test/CodeGen/X86/shift-i512.ll
+++ b/llvm/test/CodeGen/X86/shift-i512.ll
@@ -604,8 +604,7 @@ define i512 @ashr_i512(i512 %a0, i512 %a1) nounwind {
; AVX512F-NEXT: andl $56, %eax
; AVX512F-NEXT: vmovdqu64 -128(%rsp,%rax), %zmm1
; AVX512F-NEXT: vpsrlq %xmm0, %zmm1, %zmm2
-; AVX512F-NEXT: vpbroadcastq -72(%rsp,%rax), %xmm3
-; AVX512F-NEXT: vpsraq $63, %zmm3, %zmm3
+; AVX512F-NEXT: vpsraq $63, -72(%rsp,%rax){1to8}, %zmm3
; AVX512F-NEXT: valignq {{.*#+}} zmm1 = zmm1[1,2,3,4,5,6,7],zmm3[0]
; AVX512F-NEXT: vpaddq %zmm1, %zmm1, %zmm1
; AVX512F-NEXT: vpandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
More information about the llvm-commits
mailing list