Skip to content

Commit ef258e1

Browse files
committed
Pre-commit test (NFC)
1 parent f210fc1 commit ef258e1

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -mtriple=aarch64 -mattr=+sve2 -verify-machineinstrs -stop-after=finalize-isel %s -o - | FileCheck %s
3+
4+
; Regression test for a bug where getTargetConstant(0) was used instead of
5+
; getConstant(0) in ScalarizeVecRes_LOOP_DEPENDENCE_MASK, causing instruction
6+
; selection to incorrectly generate CCMPXr (register form) with an immediate
7+
; operand instead of CCMPXi (immediate form).
8+
;
9+
10+
define <1 x i1> @test_war_mask_ccmp(ptr %a, ptr %b) {
11+
; CHECK-LABEL: name: test_war_mask_ccmp
12+
; CHECK: bb.0.entry:
13+
; CHECK-NEXT: liveins: $x0, $x1
14+
; CHECK-NEXT: {{ $}}
15+
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x1
16+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x0
17+
; CHECK-NEXT: [[SUBSXrr:%[0-9]+]]:gpr64common = SUBSXrr [[COPY]], [[COPY1]], implicit-def dead $nzcv
18+
; CHECK-NEXT: [[SUBSXri:%[0-9]+]]:gpr64 = SUBSXri [[SUBSXrr]], 0, 0, implicit-def $nzcv
19+
; CHECK-NEXT: CCMPXr [[SUBSXrr]], 0, 4, 13, implicit-def $nzcv, implicit $nzcv
20+
; CHECK-NEXT: [[CSINCWr:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 1, implicit $nzcv
21+
; CHECK-NEXT: $w0 = COPY [[CSINCWr]]
22+
; CHECK-NEXT: RET_ReallyLR implicit $w0
23+
entry:
24+
%0 = call <1 x i1> @llvm.loop.dependence.war.mask.v1i1(ptr %a, ptr %b, i64 1)
25+
ret <1 x i1> %0
26+
}
27+
28+
define <1 x i1> @test_raw_mask_ccmp(ptr %a, ptr %b) {
29+
; CHECK-LABEL: name: test_raw_mask_ccmp
30+
; CHECK: bb.0.entry:
31+
; CHECK-NEXT: liveins: $x0, $x1
32+
; CHECK-NEXT: {{ $}}
33+
; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x1
34+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x0
35+
; CHECK-NEXT: [[SUBSXrr:%[0-9]+]]:gpr64common = SUBSXrr [[COPY]], [[COPY1]], implicit-def dead $nzcv
36+
; CHECK-NEXT: [[SUBSXri:%[0-9]+]]:gpr64 = SUBSXri [[SUBSXrr]], 0, 0, implicit-def $nzcv
37+
; CHECK-NEXT: CCMPXr [[SUBSXrr]], 0, 4, 13, implicit-def $nzcv, implicit $nzcv
38+
; CHECK-NEXT: [[CSINCWr:%[0-9]+]]:gpr32 = CSINCWr $wzr, $wzr, 1, implicit $nzcv
39+
; CHECK-NEXT: $w0 = COPY [[CSINCWr]]
40+
; CHECK-NEXT: RET_ReallyLR implicit $w0
41+
entry:
42+
%0 = call <1 x i1> @llvm.loop.dependence.raw.mask.v1i1(ptr %a, ptr %b, i64 1)
43+
ret <1 x i1> %0
44+
}
45+
46+
declare <1 x i1> @llvm.loop.dependence.war.mask.v1i1(ptr, ptr, i64)
47+
declare <1 x i1> @llvm.loop.dependence.raw.mask.v1i1(ptr, ptr, i64)

0 commit comments

Comments
 (0)