Skip to content

Commit 875963b

Browse files
committed
[LVI] Add test for range attributes
1 parent e9639e9 commit 875963b

File tree

1 file changed

+78
-11
lines changed
  • llvm/test/Transforms/CorrelatedValuePropagation

1 file changed

+78
-11
lines changed

llvm/test/Transforms/CorrelatedValuePropagation/range.ll

Lines changed: 78 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,9 @@ if.end8:
102102
define i32 @test4(i32 %c) nounwind {
103103
; CHECK-LABEL: @test4(
104104
; CHECK-NEXT: switch i32 [[C:%.*]], label [[SW_DEFAULT:%.*]] [
105-
; CHECK-NEXT: i32 1, label [[SW_BB:%.*]]
106-
; CHECK-NEXT: i32 2, label [[SW_BB]]
107-
; CHECK-NEXT: i32 4, label [[SW_BB]]
105+
; CHECK-NEXT: i32 1, label [[SW_BB:%.*]]
106+
; CHECK-NEXT: i32 2, label [[SW_BB]]
107+
; CHECK-NEXT: i32 4, label [[SW_BB]]
108108
; CHECK-NEXT: ]
109109
; CHECK: sw.bb:
110110
; CHECK-NEXT: br i1 true, label [[IF_THEN:%.*]], label [[IF_END:%.*]]
@@ -207,8 +207,8 @@ define i1 @test7(i32 %c) nounwind {
207207
; CHECK-LABEL: @test7(
208208
; CHECK-NEXT: entry:
209209
; CHECK-NEXT: switch i32 [[C:%.*]], label [[SW_DEFAULT:%.*]] [
210-
; CHECK-NEXT: i32 6, label [[SW_BB:%.*]]
211-
; CHECK-NEXT: i32 7, label [[SW_BB]]
210+
; CHECK-NEXT: i32 6, label [[SW_BB:%.*]]
211+
; CHECK-NEXT: i32 7, label [[SW_BB]]
212212
; CHECK-NEXT: ]
213213
; CHECK: sw.bb:
214214
; CHECK-NEXT: ret i1 true
@@ -790,8 +790,8 @@ define i32 @test18(i8 %a) {
790790
; CHECK-NEXT: br label [[DISPATCH:%.*]]
791791
; CHECK: dispatch:
792792
; CHECK-NEXT: switch i8 [[A]], label [[DISPATCH]] [
793-
; CHECK-NEXT: i8 93, label [[TARGET93:%.*]]
794-
; CHECK-NEXT: i8 -111, label [[DISPATCH]]
793+
; CHECK-NEXT: i8 93, label [[TARGET93:%.*]]
794+
; CHECK-NEXT: i8 -111, label [[DISPATCH]]
795795
; CHECK-NEXT: ]
796796
; CHECK: target93:
797797
; CHECK-NEXT: ret i32 93
@@ -817,8 +817,8 @@ define i8 @test19(i8 %a) {
817817
; CHECK-NEXT: br label [[DISPATCH:%.*]]
818818
; CHECK: dispatch:
819819
; CHECK-NEXT: switch i8 [[A]], label [[DISPATCH]] [
820-
; CHECK-NEXT: i8 93, label [[TARGET93:%.*]]
821-
; CHECK-NEXT: i8 -111, label [[DISPATCH]]
820+
; CHECK-NEXT: i8 93, label [[TARGET93:%.*]]
821+
; CHECK-NEXT: i8 -111, label [[DISPATCH]]
822822
; CHECK-NEXT: ]
823823
; CHECK: target93:
824824
; CHECK-NEXT: ret i8 96
@@ -846,8 +846,8 @@ define i1 @test20(i64 %a) {
846846
; CHECK-NEXT: br label [[DISPATCH:%.*]]
847847
; CHECK: dispatch:
848848
; CHECK-NEXT: switch i64 [[A]], label [[DEFAULT:%.*]] [
849-
; CHECK-NEXT: i64 0, label [[EXIT2:%.*]]
850-
; CHECK-NEXT: i64 -2147483647, label [[EXIT2]]
849+
; CHECK-NEXT: i64 0, label [[EXIT2:%.*]]
850+
; CHECK-NEXT: i64 -2147483647, label [[EXIT2]]
851851
; CHECK-NEXT: ]
852852
; CHECK: default:
853853
; CHECK-NEXT: [[C:%.*]] = icmp eq i64 [[B]], 0
@@ -1123,6 +1123,73 @@ else:
11231123
ret i1 true
11241124
}
11251125

1126+
define i1 @icmp_eq_range_attr(i8 range(i8 1, 0) %i) {
1127+
; CHECK-LABEL: @icmp_eq_range_attr(
1128+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[I:%.*]], 0
1129+
; CHECK-NEXT: ret i1 [[CMP]]
1130+
;
1131+
%cmp = icmp eq i8 %i, 0
1132+
ret i1 %cmp
1133+
}
1134+
1135+
define i1 @neg_icmp_eq_range_attr(i8 range(i8 -1, 1) %i) {
1136+
; CHECK-LABEL: @neg_icmp_eq_range_attr(
1137+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[I:%.*]], 0
1138+
; CHECK-NEXT: ret i1 [[CMP]]
1139+
;
1140+
%cmp = icmp eq i8 %i, 0
1141+
ret i1 %cmp
1142+
}
1143+
1144+
declare range(i8 1, 0) i8 @returns_non_zero_range_helper()
1145+
declare range(i8 -1, 1) i8 @returns_contain_zero_range_helper()
1146+
1147+
define i1 @icmp_eq_range_return() {
1148+
; CHECK-LABEL: @icmp_eq_range_return(
1149+
; CHECK-NEXT: [[I:%.*]] = call i8 @returns_non_zero_range_helper()
1150+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[I]], 0
1151+
; CHECK-NEXT: ret i1 [[CMP]]
1152+
;
1153+
%i = call i8 @returns_non_zero_range_helper()
1154+
%cmp = icmp eq i8 %i, 0
1155+
ret i1 %cmp
1156+
}
1157+
1158+
define i1 @neg_icmp_eq_range_return() {
1159+
; CHECK-LABEL: @neg_icmp_eq_range_return(
1160+
; CHECK-NEXT: [[I:%.*]] = call i8 @returns_contain_zero_range_helper()
1161+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[I]], 0
1162+
; CHECK-NEXT: ret i1 [[CMP]]
1163+
;
1164+
%i = call i8 @returns_contain_zero_range_helper()
1165+
%cmp = icmp eq i8 %i, 0
1166+
ret i1 %cmp
1167+
}
1168+
1169+
declare i8 @returns_i8_helper()
1170+
1171+
define i1 @icmp_eq_range_call() {
1172+
; CHECK-LABEL: @icmp_eq_range_call(
1173+
; CHECK-NEXT: [[I:%.*]] = call range(i8 1, 0) i8 @returns_i8_helper()
1174+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[I]], 0
1175+
; CHECK-NEXT: ret i1 [[CMP]]
1176+
;
1177+
%i = call range(i8 1, 0) i8 @returns_i8_helper()
1178+
%cmp = icmp eq i8 %i, 0
1179+
ret i1 %cmp
1180+
}
1181+
1182+
define i1 @neg_icmp_eq_range_call() {
1183+
; CHECK-LABEL: @neg_icmp_eq_range_call(
1184+
; CHECK-NEXT: [[I:%.*]] = call range(i8 0, 11) i8 @returns_i8_helper()
1185+
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[I]], 0
1186+
; CHECK-NEXT: ret i1 [[CMP]]
1187+
;
1188+
%i = call range(i8 0, 11) i8 @returns_i8_helper()
1189+
%cmp = icmp eq i8 %i, 0
1190+
ret i1 %cmp
1191+
}
1192+
11261193
declare i16 @llvm.ctlz.i16(i16, i1)
11271194
declare i16 @llvm.cttz.i16(i16, i1)
11281195
declare i16 @llvm.ctpop.i16(i16)

0 commit comments

Comments
 (0)