Skip to content

Commit 57ff233

Browse files
committed
[InstSimplify] Added tests for comparisons that are known to be true/false based on the range of possible values of UCMP/SCMP
1 parent b9c7d60 commit 57ff233

File tree

1 file changed

+24
-0
lines changed
  • llvm/test/Transforms/InstSimplify

1 file changed

+24
-0
lines changed

llvm/test/Transforms/InstSimplify/uscmp.ll

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,30 @@ define <4 x i8> @ucmp_with_addition_vec(<4 x i32> %x) {
229229
ret <4 x i8> %2
230230
}
231231

232+
define i1 @scmp_eq_4(i32 %x, i32 %y) {
233+
; CHECK-LABEL: define i1 @scmp_eq_4(
234+
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
235+
; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.scmp.i8.i32(i32 [[X]], i32 [[Y]])
236+
; CHECK-NEXT: [[TMP2:%.*]] = icmp eq i8 [[TMP1]], 4
237+
; CHECK-NEXT: ret i1 [[TMP2]]
238+
;
239+
%1 = call i8 @llvm.scmp(i32 %x, i32 %y)
240+
%2 = icmp eq i8 %1, 4
241+
ret i1 %2
242+
}
243+
244+
define i1 @ucmp_ne_negative_2(i32 %x, i32 %y) {
245+
; CHECK-LABEL: define i1 @ucmp_ne_negative_2(
246+
; CHECK-SAME: i32 [[X:%.*]], i32 [[Y:%.*]]) {
247+
; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.ucmp.i8.i32(i32 [[X]], i32 [[Y]])
248+
; CHECK-NEXT: [[TMP2:%.*]] = icmp ne i8 [[TMP1]], -2
249+
; CHECK-NEXT: ret i1 [[TMP2]]
250+
;
251+
%1 = call i8 @llvm.ucmp(i32 %x, i32 %y)
252+
%2 = icmp ne i8 %1, -2
253+
ret i1 %2
254+
}
255+
232256
; Negative case: mismatched signedness of predicates
233257
define i8 @scmp_known_ugt(i32 %x, i32 %y) {
234258
; CHECK-LABEL: define i8 @scmp_known_ugt(

0 commit comments

Comments
 (0)