Skip to content

Commit c145572

Browse files
committed
Add test case for AArch64
1 parent 09fd96c commit c145572

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
2+
; RUN: llc -O3 < %s -mtriple=aarch64 | FileCheck %s
3+
4+
; The seemingly redundant mov where src_reg == dst_reg shouldn't be removed,
5+
; because it has the effect of zeroing the upper bits in x8.
6+
7+
define i32 @ham(i32 %arg, i1 %arg1, i1 %arg2, ptr %arg3) nounwind {
8+
; CHECK-LABEL: ham:
9+
; CHECK: // %bb.0: // %bb
10+
; CHECK-NEXT: stp x30, x21, [sp, #-32]! // 16-byte Folded Spill
11+
; CHECK-NEXT: stp x20, x19, [sp, #16] // 16-byte Folded Spill
12+
; CHECK-NEXT: tbnz w1, #0, .LBB0_3
13+
; CHECK-NEXT: // %bb.1: // %bb4
14+
; CHECK-NEXT: tbnz w2, #0, .LBB0_3
15+
; CHECK-NEXT: // %bb.2: // %bb5
16+
; CHECK-NEXT: mov x19, x3
17+
; CHECK-NEXT: mov w21, w1
18+
; CHECK-NEXT: mov w20, w0
19+
; CHECK-NEXT: bl zot
20+
; CHECK-NEXT: tbz w21, #0, .LBB0_4
21+
; CHECK-NEXT: .LBB0_3: // %bb6
22+
; CHECK-NEXT: ldp x20, x19, [sp, #16] // 16-byte Folded Reload
23+
; CHECK-NEXT: mov w0, wzr
24+
; CHECK-NEXT: ldp x30, x21, [sp], #32 // 16-byte Folded Reload
25+
; CHECK-NEXT: ret
26+
; CHECK-NEXT: .LBB0_4:
27+
; CHECK-NEXT: mov w8, w20
28+
; CHECK-NEXT: mov w20, wzr
29+
; CHECK-NEXT: mov w8, w8
30+
; CHECK-NEXT: mov w21, w8
31+
; CHECK-NEXT: .LBB0_5: // %bb7
32+
; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
33+
; CHECK-NEXT: strb w20, [x19]
34+
; CHECK-NEXT: cbnz x21, .LBB0_5
35+
; CHECK-NEXT: // %bb.6: // %bb8
36+
; CHECK-NEXT: // in Loop: Header=BB0_5 Depth=1
37+
; CHECK-NEXT: bl quux
38+
; CHECK-NEXT: b .LBB0_5
39+
bb:
40+
br i1 %arg1, label %bb6, label %bb4
41+
42+
bb4:
43+
%load = load ptr, ptr null, align 8
44+
br i1 %arg2, label %bb6, label %bb5
45+
46+
bb5:
47+
%call = call i32 @zot() #0
48+
%zext = zext i32 %arg to i64
49+
br i1 %arg1, label %bb6, label %bb7
50+
51+
bb6:
52+
ret i32 0
53+
54+
bb7:
55+
store i8 0, ptr %arg3, align 1
56+
%icmp = icmp eq i64 %zext, 0
57+
br i1 %icmp, label %bb8, label %bb7
58+
59+
bb8:
60+
call void @quux()
61+
br label %bb7
62+
}
63+
64+
declare i32 @zot()
65+
66+
declare void @quux()
67+
68+
attributes #0 = { returns_twice }

0 commit comments

Comments
 (0)