[InstCombine] add test for logical-ands to select; NFC
authorSanjay Patel <spatel@rotateright.com>
Sat, 22 Oct 2022 13:07:21 +0000 (09:07 -0400)
committerSanjay Patel <spatel@rotateright.com>
Sat, 22 Oct 2022 14:42:14 +0000 (10:42 -0400)
llvm/test/Transforms/InstCombine/select-safe-transforms.ll

index 4ac1bd5..3eedfc0 100644 (file)
@@ -546,6 +546,18 @@ define i1 @bools2_logical_commute3(i1 %a, i1 %b, i1 %c) {
   ret i1 %or
 }
 
+define i1 @bools2_logical_commute3_nopoison(i1 %a, i1 %b, i1 noundef %c) {
+; CHECK-LABEL: @bools2_logical_commute3_nopoison(
+; CHECK-NEXT:    [[OR:%.*]] = select i1 [[C:%.*]], i1 [[A:%.*]], i1 [[B:%.*]]
+; CHECK-NEXT:    ret i1 [[OR]]
+;
+  %not = xor i1 %c, -1
+  %and1 = select i1 %a, i1 %c, i1 false
+  %and2 = select i1 %b, i1 %not, i1 false
+  %or = select i1 %and1, i1 true, i1 %and2
+  ret i1 %or
+}
+
 define i1 @bools2_logical_commute3_and1(i1 %a, i1 %b, i1 %c) {
 ; CHECK-LABEL: @bools2_logical_commute3_and1(
 ; CHECK-NEXT:    [[OR:%.*]] = select i1 [[C:%.*]], i1 [[A:%.*]], i1 [[B:%.*]]