Skip to content

Commit c71f914

Browse files
committed
[AArch64] Add a phase-ordering test for dividing vscale. NFC
See #126411 / #127055, the test isn't expected to fold in a single instcombine iteration, needing instcombine->cse->instcombine.
1 parent 6646b65 commit c71f914

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

llvm/test/Transforms/InstCombine/AArch64/sve-intrinsic-opts-counting-elems.ll

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,23 @@ define i64 @cntd_all() {
240240
}
241241

242242

243+
define i64 @udiv() vscale_range(1, 16) {
244+
; CHECK-LABEL: @udiv(
245+
; CHECK-NEXT: [[TMP1:%.*]] = call i64 @llvm.vscale.i64()
246+
; CHECK-NEXT: [[A:%.*]] = shl nuw nsw i64 [[TMP1]], 4
247+
; CHECK-NEXT: [[TMP2:%.*]] = call i64 @llvm.vscale.i64()
248+
; CHECK-NEXT: [[B:%.*]] = shl nuw nsw i64 [[TMP2]], 2
249+
; CHECK-NEXT: [[TMP3:%.*]] = call range(i64 2, 65) i64 @llvm.cttz.i64(i64 [[B]], i1 true)
250+
; CHECK-NEXT: [[C1:%.*]] = lshr i64 [[A]], [[TMP3]]
251+
; CHECK-NEXT: ret i64 [[C1]]
252+
;
253+
%a = call i64 @llvm.aarch64.sve.cntb(i32 31)
254+
%b = call i64 @llvm.aarch64.sve.cntw(i32 31)
255+
%c = udiv i64 %a, %b
256+
ret i64 %c
257+
}
258+
259+
243260
declare i64 @llvm.aarch64.sve.cntb(i32 %pattern)
244261
declare i64 @llvm.aarch64.sve.cnth(i32 %pattern)
245262
declare i64 @llvm.aarch64.sve.cntw(i32 %pattern)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2+
; RUN: opt -passes="default<O1>" -mattr=+sve -S -o - %s | FileCheck %s
3+
4+
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
5+
target triple = "aarch64"
6+
7+
define i64 @udiv() vscale_range(1, 16) {
8+
; CHECK-LABEL: @udiv(
9+
; CHECK-NEXT: ret i64 4
10+
;
11+
%a = call i64 @llvm.aarch64.sve.cntb(i32 31)
12+
%b = call i64 @llvm.aarch64.sve.cntw(i32 31)
13+
%c = udiv i64 %a, %b
14+
ret i64 %c
15+
}

0 commit comments

Comments
 (0)