xref: /llvm-project/llvm/test/CodeGen/LoongArch/bnez-beqz.ll (revision 9d4f7f44b64d87d1068859906f43b7ce03a7388b)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck %s --check-prefix=LA32
3; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA64
4
5declare void @bar()
6
7define void @bnez_i32(i32 signext %0) nounwind {
8; LA32-LABEL: bnez_i32:
9; LA32:       # %bb.0: # %start
10; LA32-NEXT:    beqz $a0, .LBB0_2
11; LA32-NEXT:  # %bb.1: # %f
12; LA32-NEXT:    ret
13; LA32-NEXT:  .LBB0_2: # %t
14; LA32-NEXT:    b %plt(bar)
15;
16; LA64-LABEL: bnez_i32:
17; LA64:       # %bb.0: # %start
18; LA64-NEXT:    beqz $a0, .LBB0_2
19; LA64-NEXT:  # %bb.1: # %f
20; LA64-NEXT:    ret
21; LA64-NEXT:  .LBB0_2: # %t
22; LA64-NEXT:    b %plt(bar)
23start:
24  %1 = icmp eq i32 %0, 0
25  br i1 %1, label %t, label %f
26
27t:
28  tail call void @bar()
29  br label %f
30
31f:
32  ret void
33}
34
35define void @beqz_i32(i32 signext %0) nounwind {
36; LA32-LABEL: beqz_i32:
37; LA32:       # %bb.0: # %start
38; LA32-NEXT:    beqz $a0, .LBB1_2
39; LA32-NEXT:  # %bb.1: # %t
40; LA32-NEXT:    b %plt(bar)
41; LA32-NEXT:  .LBB1_2: # %f
42; LA32-NEXT:    ret
43;
44; LA64-LABEL: beqz_i32:
45; LA64:       # %bb.0: # %start
46; LA64-NEXT:    beqz $a0, .LBB1_2
47; LA64-NEXT:  # %bb.1: # %t
48; LA64-NEXT:    b %plt(bar)
49; LA64-NEXT:  .LBB1_2: # %f
50; LA64-NEXT:    ret
51start:
52  %1 = icmp ne i32 %0, 0
53  br i1 %1, label %t, label %f
54
55t:
56  tail call void @bar()
57  br label %f
58
59f:
60  ret void
61}
62
63define void @bnez_i64(i64 %0) nounwind {
64; LA32-LABEL: bnez_i64:
65; LA32:       # %bb.0: # %start
66; LA32-NEXT:    or $a0, $a0, $a1
67; LA32-NEXT:    beqz $a0, .LBB2_2
68; LA32-NEXT:  # %bb.1: # %f
69; LA32-NEXT:    ret
70; LA32-NEXT:  .LBB2_2: # %t
71; LA32-NEXT:    b %plt(bar)
72;
73; LA64-LABEL: bnez_i64:
74; LA64:       # %bb.0: # %start
75; LA64-NEXT:    beqz $a0, .LBB2_2
76; LA64-NEXT:  # %bb.1: # %f
77; LA64-NEXT:    ret
78; LA64-NEXT:  .LBB2_2: # %t
79; LA64-NEXT:    b %plt(bar)
80start:
81  %1 = icmp eq i64 %0, 0
82  br i1 %1, label %t, label %f
83
84t:
85  tail call void @bar()
86  br label %f
87
88f:
89  ret void
90}
91
92define void @beqz_i64(i64 %0) nounwind {
93; LA32-LABEL: beqz_i64:
94; LA32:       # %bb.0: # %start
95; LA32-NEXT:    or $a0, $a0, $a1
96; LA32-NEXT:    beqz $a0, .LBB3_2
97; LA32-NEXT:  # %bb.1: # %t
98; LA32-NEXT:    b %plt(bar)
99; LA32-NEXT:  .LBB3_2: # %f
100; LA32-NEXT:    ret
101;
102; LA64-LABEL: beqz_i64:
103; LA64:       # %bb.0: # %start
104; LA64-NEXT:    beqz $a0, .LBB3_2
105; LA64-NEXT:  # %bb.1: # %t
106; LA64-NEXT:    b %plt(bar)
107; LA64-NEXT:  .LBB3_2: # %f
108; LA64-NEXT:    ret
109start:
110  %1 = icmp ne i64 %0, 0
111  br i1 %1, label %t, label %f
112
113t:
114  tail call void @bar()
115  br label %f
116
117f:
118  ret void
119}
120