blob: 8b6ed7a72a6654b3a375e86d3ab93c4f9c37717c [file] [log] [blame]
Simon Atanasyanfb0d4e42018-07-13 15:03:24 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
Akira Hatanaka68710312013-05-21 17:13:47 +00002
Simon Atanasyanfb0d4e42018-07-13 15:03:24 +00003; Test that blez/ bgez are selected.
4; RUN: llc -mtriple=mipsel-mti-linux-gnu < %s | FileCheck %s --check-prefix=MIPS32
5; RUN: llc -mtriple=mips64el-mti-linux-gnu < %s | FileCheck %s --check-prefix=MIPS64
6; RUN: llc -mtriple=mipsel-mti-linux-gnu -mattr=+micromips < %s | FileCheck %s --check-prefix=MM
Akira Hatanaka68710312013-05-21 17:13:47 +00007
8define void @test_blez(i32 %a) {
Simon Atanasyanfb0d4e42018-07-13 15:03:24 +00009; MIPS32-LABEL: test_blez:
10; MIPS32: # %bb.0: # %entry
11; MIPS32-NEXT: blez $4, $BB0_2
12; MIPS32-NEXT: nop
13; MIPS32-NEXT: # %bb.1: # %if.then
14; MIPS32-NEXT: addiu $sp, $sp, -24
15; MIPS32-NEXT: .cfi_def_cfa_offset 24
16; MIPS32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill
17; MIPS32-NEXT: .cfi_offset 31, -4
18; MIPS32-NEXT: jal foo1
19; MIPS32-NEXT: nop
20; MIPS32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload
21; MIPS32-NEXT: addiu $sp, $sp, 24
22; MIPS32-NEXT: $BB0_2: # %if.end
23; MIPS32-NEXT: jr $ra
24; MIPS32-NEXT: nop
25;
26; MIPS64-LABEL: test_blez:
27; MIPS64: # %bb.0: # %entry
28; MIPS64-NEXT: sll $1, $4, 0
29; MIPS64-NEXT: blez $1, .LBB0_2
30; MIPS64-NEXT: nop
31; MIPS64-NEXT: # %bb.1: # %if.then
32; MIPS64-NEXT: daddiu $sp, $sp, -16
33; MIPS64-NEXT: .cfi_def_cfa_offset 16
34; MIPS64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill
35; MIPS64-NEXT: .cfi_offset 31, -8
36; MIPS64-NEXT: jal foo1
37; MIPS64-NEXT: nop
38; MIPS64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload
39; MIPS64-NEXT: daddiu $sp, $sp, 16
40; MIPS64-NEXT: .LBB0_2: # %if.end
41; MIPS64-NEXT: jr $ra
42; MIPS64-NEXT: nop
43;
44; MM-LABEL: test_blez:
45; MM: # %bb.0: # %entry
46; MM-NEXT: blez $4, $BB0_3
47; MM-NEXT: nop
48; MM-NEXT: # %bb.1: # %entry
49; MM-NEXT: j $BB0_2
50; MM-NEXT: nop
51; MM-NEXT: $BB0_2: # %if.then
52; MM-NEXT: addiu $sp, $sp, -24
53; MM-NEXT: .cfi_def_cfa_offset 24
54; MM-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill
55; MM-NEXT: .cfi_offset 31, -4
56; MM-NEXT: jal foo1
57; MM-NEXT: nop
58; MM-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload
59; MM-NEXT: addiu $sp, $sp, 24
60; MM-NEXT: $BB0_3: # %if.end
61; MM-NEXT: jrc $ra
Akira Hatanaka68710312013-05-21 17:13:47 +000062entry:
63 %cmp = icmp sgt i32 %a, 0
64 br i1 %cmp, label %if.then, label %if.end
65
66if.then:
67 tail call void @foo1()
68 br label %if.end
69
70if.end:
71 ret void
72}
73
Vasileios Kalintiris36901dd2016-03-01 20:25:43 +000074declare void @foo1()
75
Akira Hatanaka68710312013-05-21 17:13:47 +000076define void @test_bgez(i32 %a) {
Simon Atanasyanfb0d4e42018-07-13 15:03:24 +000077; MIPS32-LABEL: test_bgez:
78; MIPS32: # %bb.0: # %entry
79; MIPS32-NEXT: bltz $4, $BB1_2
80; MIPS32-NEXT: nop
81; MIPS32-NEXT: # %bb.1: # %if.end
82; MIPS32-NEXT: jr $ra
83; MIPS32-NEXT: nop
84; MIPS32-NEXT: $BB1_2: # %if.then
85; MIPS32-NEXT: addiu $sp, $sp, -24
86; MIPS32-NEXT: .cfi_def_cfa_offset 24
87; MIPS32-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill
88; MIPS32-NEXT: .cfi_offset 31, -4
89; MIPS32-NEXT: jal foo1
90; MIPS32-NEXT: nop
91; MIPS32-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload
92; MIPS32-NEXT: jr $ra
93; MIPS32-NEXT: addiu $sp, $sp, 24
94;
95; MIPS64-LABEL: test_bgez:
96; MIPS64: # %bb.0: # %entry
97; MIPS64-NEXT: sll $1, $4, 0
98; MIPS64-NEXT: bltz $1, .LBB1_2
99; MIPS64-NEXT: nop
100; MIPS64-NEXT: # %bb.1: # %if.end
101; MIPS64-NEXT: jr $ra
102; MIPS64-NEXT: nop
103; MIPS64-NEXT: .LBB1_2: # %if.then
104; MIPS64-NEXT: daddiu $sp, $sp, -16
105; MIPS64-NEXT: .cfi_def_cfa_offset 16
106; MIPS64-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill
107; MIPS64-NEXT: .cfi_offset 31, -8
108; MIPS64-NEXT: jal foo1
109; MIPS64-NEXT: nop
110; MIPS64-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload
111; MIPS64-NEXT: jr $ra
112; MIPS64-NEXT: daddiu $sp, $sp, 16
113;
114; MM-LABEL: test_bgez:
115; MM: # %bb.0: # %entry
116; MM-NEXT: bgez $4, $BB1_2
117; MM-NEXT: nop
118; MM-NEXT: # %bb.1: # %entry
119; MM-NEXT: j $BB1_3
120; MM-NEXT: nop
121; MM-NEXT: $BB1_2: # %if.end
122; MM-NEXT: jrc $ra
123; MM-NEXT: $BB1_3: # %if.then
124; MM-NEXT: addiu $sp, $sp, -24
125; MM-NEXT: .cfi_def_cfa_offset 24
126; MM-NEXT: sw $ra, 20($sp) # 4-byte Folded Spill
127; MM-NEXT: .cfi_offset 31, -4
128; MM-NEXT: jal foo1
129; MM-NEXT: nop
130; MM-NEXT: lw $ra, 20($sp) # 4-byte Folded Reload
131; MM-NEXT: jr $ra
132; MM-NEXT: addiu $sp, $sp, 24
Akira Hatanaka68710312013-05-21 17:13:47 +0000133entry:
134 %cmp = icmp slt i32 %a, 0
135 br i1 %cmp, label %if.then, label %if.end
136
137if.then:
138 tail call void @foo1()
139 br label %if.end
140
141if.end:
142 ret void
143}