Skip to content

Commit a03c040

Browse files
committed
Update ISel and codegen test too
1 parent e72d339 commit a03c040

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
@@ -30002,7 +30002,8 @@ SDValue AArch64TargetLowering::LowerFixedLengthVECTOR_SHUFFLEToSVE(
3000230002
DAG, VT, DAG.getNode(Opc, DL, ContainerVT, Op1, Op1));
3000330003
}
3000430004

30005-
if (Subtarget->hasSVE2p1() || Subtarget->hasSME2p1()) {
30005+
if (Subtarget->hasSVE2p1() ||
30006+
(Subtarget->hasSME2p1() && Subtarget->isSVEorStreamingSVEAvailable())) {
3000630007
assert(VT.getFixedSizeInBits() % AArch64::SVEBitsPerBlock == 0 &&
3000730008
"Unsupported SVE vector size");
3000830009

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)