Skip to content

Commit 4690b2b

Browse files
committed
Update ISel and codegen test too
1 parent 32a8bb3 commit 4690b2b

File tree

2 files changed

+42
-10
lines changed

2 files changed

+42
-10
lines changed

llvm/lib/Target/AArch64/AArch64ISelLowering.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29981,7 +29981,8 @@ SDValue AArch64TargetLowering::LowerFixedLengthVECTOR_SHUFFLEToSVE(
2998129981
DAG, VT, DAG.getNode(Opc, DL, ContainerVT, Op1, Op1));
2998229982
}
2998329983

29984-
if (Subtarget->hasSVE2p1() || Subtarget->hasSME2p1()) {
29984+
if (Subtarget->hasSVE2p1() ||
29985+
(Subtarget->hasSME2p1() && Subtarget->isSVEorStreamingSVEAvailable())) {
2998529986
assert(VT.getFixedSizeInBits() % AArch64::SVEBitsPerBlock == 0 &&
2998629987
"Unsupported SVE vector size");
2998729988

llvm/test/CodeGen/AArch64/sve2p1-vector-shuffles.ll

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2-
; RUN: llc -mtriple=aarch64-linux-gnu < %s | FileCheck %s
2+
; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2p1,+bf16 < %s | FileCheck %s --check-prefixes=CHECK,SVE
3+
; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2p1,+bf16 -force-streaming < %s | FileCheck %s --check-prefixes=CHECK,SME
34

45
define void @dupq_i8_256b(ptr %addr) #0 {
56
; CHECK-LABEL: dupq_i8_256b:
@@ -71,13 +72,43 @@ define void @dupq_f16_256b(ptr %addr) #0 {
7172
}
7273

7374
define void @dupq_bf16_256b(ptr %addr) #0 {
74-
; CHECK-LABEL: dupq_bf16_256b:
75-
; CHECK: // %bb.0:
76-
; CHECK-NEXT: ldp q0, q1, [x0]
77-
; CHECK-NEXT: dup v0.8h, v0.h[2]
78-
; CHECK-NEXT: dup v1.8h, v1.h[2]
79-
; CHECK-NEXT: stp q0, q1, [x0]
80-
; CHECK-NEXT: ret
75+
; SVE-LABEL: dupq_bf16_256b:
76+
; SVE: // %bb.0:
77+
; SVE-NEXT: ldp q0, q1, [x0]
78+
; SVE-NEXT: dup v0.8h, v0.h[2]
79+
; SVE-NEXT: dup v1.8h, v1.h[2]
80+
; SVE-NEXT: stp q0, q1, [x0]
81+
; SVE-NEXT: ret
82+
;
83+
; SME-LABEL: dupq_bf16_256b:
84+
; SME: // %bb.0:
85+
; SME-NEXT: ldp q1, q0, [x0]
86+
; SME-NEXT: str q0, [sp, #-64]!
87+
; SME-NEXT: .cfi_def_cfa_offset 64
88+
; SME-NEXT: ldr h0, [sp, #4]
89+
; SME-NEXT: str q1, [sp, #32]
90+
; SME-NEXT: str h0, [sp, #30]
91+
; SME-NEXT: str h0, [sp, #28]
92+
; SME-NEXT: str h0, [sp, #26]
93+
; SME-NEXT: str h0, [sp, #24]
94+
; SME-NEXT: str h0, [sp, #22]
95+
; SME-NEXT: str h0, [sp, #20]
96+
; SME-NEXT: str h0, [sp, #18]
97+
; SME-NEXT: str h0, [sp, #16]
98+
; SME-NEXT: ldr h0, [sp, #36]
99+
; SME-NEXT: ldr q1, [sp, #16]
100+
; SME-NEXT: str h0, [sp, #62]
101+
; SME-NEXT: str h0, [sp, #60]
102+
; SME-NEXT: str h0, [sp, #58]
103+
; SME-NEXT: str h0, [sp, #56]
104+
; SME-NEXT: str h0, [sp, #54]
105+
; SME-NEXT: str h0, [sp, #52]
106+
; SME-NEXT: str h0, [sp, #50]
107+
; SME-NEXT: str h0, [sp, #48]
108+
; SME-NEXT: ldr q0, [sp, #48]
109+
; SME-NEXT: stp q0, q1, [x0]
110+
; SME-NEXT: add sp, sp, #64
111+
; SME-NEXT: ret
81112
%load = load <16 x bfloat>, ptr %addr
82113
%splat.lanes = shufflevector <16 x bfloat> %load, <16 x bfloat> poison, <16 x i32> <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2,
83114
i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10>
@@ -112,4 +143,4 @@ define void @dupq_f64_256b(ptr %addr) #0 {
112143
ret void
113144
}
114145

115-
attributes #0 = { noinline vscale_range(2,2) "target-features"="+sve2p1,+bf16" }
146+
attributes #0 = { noinline vscale_range(2,2) }

0 commit comments

Comments
 (0)