@@ -83,26 +83,20 @@ define i8 @smini8_zero(i8 %a) {
8383; ARM-LABEL: smini8_zero:
8484; ARM: @ %bb.0:
8585; ARM-NEXT: sxtb r0, r0
86- ; ARM-NEXT: cmp r0, #0
87- ; ARM-NEXT: movpl r0, #0
86+ ; ARM-NEXT: and r0, r0, r0, asr #31
8887; ARM-NEXT: bx lr
8988;
9089; THUMB-LABEL: smini8_zero:
9190; THUMB: @ %bb.0:
92- ; THUMB-NEXT: sxtb r0, r0
93- ; THUMB-NEXT: cmp r0, #0
94- ; THUMB-NEXT: bmi .LBB3_2
95- ; THUMB-NEXT: @ %bb.1:
96- ; THUMB-NEXT: movs r0, #0
97- ; THUMB-NEXT: .LBB3_2:
91+ ; THUMB-NEXT: sxtb r1, r0
92+ ; THUMB-NEXT: asrs r0, r1, #31
93+ ; THUMB-NEXT: ands r0, r1
9894; THUMB-NEXT: bx lr
9995;
10096; THUMB2-LABEL: smini8_zero:
10197; THUMB2: @ %bb.0:
10298; THUMB2-NEXT: sxtb r0, r0
103- ; THUMB2-NEXT: cmp r0, #0
104- ; THUMB2-NEXT: it pl
105- ; THUMB2-NEXT: movpl r0, #0
99+ ; THUMB2-NEXT: and.w r0, r0, r0, asr #31
106100; THUMB2-NEXT: bx lr
107101 %c = call i8 @llvm.smin.i8 (i8 %a , i8 0 )
108102 ret i8 %c
@@ -114,26 +108,20 @@ define i16 @smini16_zero(i16 %a) {
114108; ARM-LABEL: smini16_zero:
115109; ARM: @ %bb.0:
116110; ARM-NEXT: sxth r0, r0
117- ; ARM-NEXT: cmp r0, #0
118- ; ARM-NEXT: movpl r0, #0
111+ ; ARM-NEXT: and r0, r0, r0, asr #31
119112; ARM-NEXT: bx lr
120113;
121114; THUMB-LABEL: smini16_zero:
122115; THUMB: @ %bb.0:
123- ; THUMB-NEXT: sxth r0, r0
124- ; THUMB-NEXT: cmp r0, #0
125- ; THUMB-NEXT: bmi .LBB4_2
126- ; THUMB-NEXT: @ %bb.1:
127- ; THUMB-NEXT: movs r0, #0
128- ; THUMB-NEXT: .LBB4_2:
116+ ; THUMB-NEXT: sxth r1, r0
117+ ; THUMB-NEXT: asrs r0, r1, #31
118+ ; THUMB-NEXT: ands r0, r1
129119; THUMB-NEXT: bx lr
130120;
131121; THUMB2-LABEL: smini16_zero:
132122; THUMB2: @ %bb.0:
133123; THUMB2-NEXT: sxth r0, r0
134- ; THUMB2-NEXT: cmp r0, #0
135- ; THUMB2-NEXT: it pl
136- ; THUMB2-NEXT: movpl r0, #0
124+ ; THUMB2-NEXT: and.w r0, r0, r0, asr #31
137125; THUMB2-NEXT: bx lr
138126 %c = call i16 @llvm.smin.i16 (i16 %a , i16 0 )
139127 ret i16 %c
@@ -144,24 +132,18 @@ declare i32 @llvm.smin.i32(i32 %a, i32 %b) readnone
144132define i32 @smini32_zero (i32 %a ) {
145133; ARM-LABEL: smini32_zero:
146134; ARM: @ %bb.0:
147- ; ARM-NEXT: cmp r0, #0
148- ; ARM-NEXT: movpl r0, #0
135+ ; ARM-NEXT: and r0, r0, r0, asr #31
149136; ARM-NEXT: bx lr
150137;
151138; THUMB-LABEL: smini32_zero:
152139; THUMB: @ %bb.0:
153- ; THUMB-NEXT: cmp r0, #0
154- ; THUMB-NEXT: bmi .LBB5_2
155- ; THUMB-NEXT: @ %bb.1:
156- ; THUMB-NEXT: movs r0, #0
157- ; THUMB-NEXT: .LBB5_2:
140+ ; THUMB-NEXT: asrs r1, r0, #31
141+ ; THUMB-NEXT: ands r0, r1
158142; THUMB-NEXT: bx lr
159143;
160144; THUMB2-LABEL: smini32_zero:
161145; THUMB2: @ %bb.0:
162- ; THUMB2-NEXT: cmp r0, #0
163- ; THUMB2-NEXT: it pl
164- ; THUMB2-NEXT: movpl r0, #0
146+ ; THUMB2-NEXT: and.w r0, r0, r0, asr #31
165147; THUMB2-NEXT: bx lr
166148 %c = call i32 @llvm.smin.i32 (i32 %a , i32 0 )
167149 ret i32 %c
0 commit comments