@@ -870,6 +870,34 @@ out:
870
870
ret i1 false
871
871
}
872
872
873
+ define i1 @clamp_high1_or (i32 noundef %a ) {
874
+ ; CHECK-LABEL: @clamp_high1_or(
875
+ ; CHECK-NEXT: entry:
876
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp sle i32 [[A:%.*]], 5
877
+ ; CHECK-NEXT: br i1 [[CMP]], label [[A_GUARD:%.*]], label [[OUT:%.*]]
878
+ ; CHECK: a_guard:
879
+ ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp eq i32 [[A]], 5
880
+ ; CHECK-NEXT: [[ADD:%.*]] = or disjoint i32 [[A]], 1
881
+ ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[SEL_CMP]], i32 5, i32 [[ADD]]
882
+ ; CHECK-NEXT: [[RES:%.*]] = icmp eq i32 [[SEL]], 6
883
+ ; CHECK-NEXT: ret i1 [[RES]]
884
+ ; CHECK: out:
885
+ ; CHECK-NEXT: ret i1 false
886
+ ;
887
+ entry:
888
+ %cmp = icmp sle i32 %a , 5
889
+ br i1 %cmp , label %a_guard , label %out
890
+
891
+ a_guard:
892
+ %sel_cmp = icmp eq i32 %a , 5
893
+ %add = or disjoint i32 %a , 1
894
+ %sel = select i1 %sel_cmp , i32 5 , i32 %add
895
+ %res = icmp eq i32 %sel , 6
896
+ ret i1 %res
897
+ out:
898
+ ret i1 false
899
+ }
900
+
873
901
define i1 @clamp_high2 (i32 noundef %a ) {
874
902
; CHECK-LABEL: @clamp_high2(
875
903
; CHECK-NEXT: entry:
@@ -897,6 +925,36 @@ out:
897
925
ret i1 false
898
926
}
899
927
928
+
929
+ define i1 @clamp_high2_or_disjoint (i32 noundef %a ) {
930
+ ; CHECK-LABEL: @clamp_high2_or_disjoint(
931
+ ; CHECK-NEXT: entry:
932
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp sle i32 [[A:%.*]], 5
933
+ ; CHECK-NEXT: br i1 [[CMP]], label [[A_GUARD:%.*]], label [[OUT:%.*]]
934
+ ; CHECK: a_guard:
935
+ ; CHECK-NEXT: [[SEL_CMP:%.*]] = icmp ne i32 [[A]], 5
936
+ ; CHECK-NEXT: [[ADD:%.*]] = or disjoint i32 [[A]], 1
937
+ ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[SEL_CMP]], i32 [[ADD]], i32 5
938
+ ; CHECK-NEXT: [[RES:%.*]] = icmp eq i32 [[SEL]], 6
939
+ ; CHECK-NEXT: ret i1 [[RES]]
940
+ ; CHECK: out:
941
+ ; CHECK-NEXT: ret i1 false
942
+ ;
943
+ entry:
944
+ %cmp = icmp sle i32 %a , 5
945
+ br i1 %cmp , label %a_guard , label %out
946
+
947
+ a_guard:
948
+ %sel_cmp = icmp ne i32 %a , 5
949
+ %add = or disjoint i32 %a , 1
950
+ %sel = select i1 %sel_cmp , i32 %add , i32 5
951
+ %res = icmp eq i32 %sel , 6
952
+ ret i1 %res
953
+ out:
954
+ ret i1 false
955
+ }
956
+
957
+
900
958
define i1 @clamp_high3 (i32 noundef %a ) {
901
959
; CHECK-LABEL: @clamp_high3(
902
960
; CHECK-NEXT: entry:
0 commit comments