Skip to content

Commit 253ee85

Browse files
committed
[CVP] Add pre-commit cttz/ctpop tests. NFC.
1 parent 2fab15d commit 253ee85

File tree

1 file changed

+94
-0
lines changed
  • llvm/test/Transforms/CorrelatedValuePropagation

1 file changed

+94
-0
lines changed

llvm/test/Transforms/CorrelatedValuePropagation/range.ll

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,6 +1010,100 @@ else:
10101010
ret i1 %res2
10111011
}
10121012

1013+
define i1 @cttz_fold(i16 %x) {
1014+
; CHECK-LABEL: @cttz_fold(
1015+
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i16 [[X:%.*]], 256
1016+
; CHECK-NEXT: br i1 [[CMP]], label [[IF:%.*]], label [[ELSE:%.*]]
1017+
; CHECK: if:
1018+
; CHECK-NEXT: [[CTTZ:%.*]] = call i16 @llvm.cttz.i16(i16 [[X]], i1 true)
1019+
; CHECK-NEXT: [[RES:%.*]] = icmp uge i16 [[CTTZ]], 8
1020+
; CHECK-NEXT: ret i1 [[RES]]
1021+
; CHECK: else:
1022+
; CHECK-NEXT: ret i1 false
1023+
;
1024+
%cmp = icmp ult i16 %x, 256
1025+
br i1 %cmp, label %if, label %else
1026+
1027+
if:
1028+
%cttz = call i16 @llvm.cttz.i16(i16 %x, i1 true)
1029+
%res = icmp uge i16 %cttz, 8
1030+
ret i1 %res
1031+
1032+
else:
1033+
ret i1 false
1034+
}
1035+
1036+
define i1 @cttz_nofold(i16 %x) {
1037+
; CHECK-LABEL: @cttz_nofold(
1038+
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i16 [[X:%.*]], 256
1039+
; CHECK-NEXT: br i1 [[CMP]], label [[IF:%.*]], label [[ELSE:%.*]]
1040+
; CHECK: if:
1041+
; CHECK-NEXT: [[CTTZ:%.*]] = call i16 @llvm.cttz.i16(i16 [[X]], i1 true)
1042+
; CHECK-NEXT: [[RES:%.*]] = icmp uge i16 [[CTTZ]], 9
1043+
; CHECK-NEXT: ret i1 [[RES]]
1044+
; CHECK: else:
1045+
; CHECK-NEXT: ret i1 false
1046+
;
1047+
%cmp = icmp ult i16 %x, 256
1048+
br i1 %cmp, label %if, label %else
1049+
1050+
if:
1051+
%cttz = call i16 @llvm.cttz.i16(i16 %x, i1 true)
1052+
%res = icmp uge i16 %cttz, 9
1053+
ret i1 %res
1054+
1055+
else:
1056+
ret i1 false
1057+
}
1058+
1059+
define i1 @ctpop_fold(i16 %x) {
1060+
; CHECK-LABEL: @ctpop_fold(
1061+
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i16 [[X:%.*]], 256
1062+
; CHECK-NEXT: br i1 [[CMP]], label [[IF:%.*]], label [[ELSE:%.*]]
1063+
; CHECK: if:
1064+
; CHECK-NEXT: [[CTPOP:%.*]] = call i16 @llvm.ctpop.i16(i16 [[X]])
1065+
; CHECK-NEXT: [[RES:%.*]] = icmp ule i16 [[CTPOP]], 8
1066+
; CHECK-NEXT: ret i1 [[RES]]
1067+
; CHECK: else:
1068+
; CHECK-NEXT: ret i1 true
1069+
;
1070+
%cmp = icmp ult i16 %x, 256
1071+
br i1 %cmp, label %if, label %else
1072+
1073+
if:
1074+
%ctpop = call i16 @llvm.ctpop.i16(i16 %x)
1075+
%res = icmp ule i16 %ctpop, 8
1076+
ret i1 %res
1077+
1078+
else:
1079+
ret i1 true
1080+
}
1081+
1082+
define i1 @ctpop_nofold(i16 %x) {
1083+
; CHECK-LABEL: @ctpop_nofold(
1084+
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i16 [[X:%.*]], 256
1085+
; CHECK-NEXT: br i1 [[CMP]], label [[IF:%.*]], label [[ELSE:%.*]]
1086+
; CHECK: if:
1087+
; CHECK-NEXT: [[CTPOP:%.*]] = call i16 @llvm.ctpop.i16(i16 [[X]])
1088+
; CHECK-NEXT: [[RES:%.*]] = icmp ule i16 [[CTPOP]], 7
1089+
; CHECK-NEXT: ret i1 [[RES]]
1090+
; CHECK: else:
1091+
; CHECK-NEXT: ret i1 true
1092+
;
1093+
%cmp = icmp ult i16 %x, 256
1094+
br i1 %cmp, label %if, label %else
1095+
1096+
if:
1097+
%ctpop = call i16 @llvm.ctpop.i16(i16 %x)
1098+
%res = icmp ule i16 %ctpop, 7
1099+
ret i1 %res
1100+
1101+
else:
1102+
ret i1 true
1103+
}
1104+
10131105
declare i16 @llvm.ctlz.i16(i16, i1)
1106+
declare i16 @llvm.cttz.i16(i16, i1)
1107+
declare i16 @llvm.ctpop.i16(i16)
10141108
declare i16 @llvm.abs.i16(i16, i1)
10151109
declare void @llvm.assume(i1)

0 commit comments

Comments
 (0)