[llvm] c8322ad - [CVP] Add test for xor (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Tue May 17 01:19:27 PDT 2022


Author: Nikita Popov
Date: 2022-05-17T10:17:34+02:00
New Revision: c8322adfcf8a1e8959b0e4b95ec821aac915dc58

URL: https://github.com/llvm/llvm-project/commit/c8322adfcf8a1e8959b0e4b95ec821aac915dc58
DIFF: https://github.com/llvm/llvm-project/commit/c8322adfcf8a1e8959b0e4b95ec821aac915dc58.diff

LOG: [CVP] Add test for xor (NFC)

Added: 
    

Modified: 
    llvm/test/Transforms/CorrelatedValuePropagation/basic.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/CorrelatedValuePropagation/basic.ll b/llvm/test/Transforms/CorrelatedValuePropagation/basic.ll
index 55ae559eabb6d..d7730fc29ecc2 100644
--- a/llvm/test/Transforms/CorrelatedValuePropagation/basic.ll
+++ b/llvm/test/Transforms/CorrelatedValuePropagation/basic.ll
@@ -148,7 +148,7 @@ define void @loop1(i32* %x, i32* %y) {
 ; CHECK-LABEL: @loop1(
 ; CHECK-NEXT:  entry:
 ; CHECK-NEXT:    br label [[LOOP:%.*]]
-; CHECK:  loop:
+; CHECK:       loop:
 ; CHECK-NEXT:    [[PHI:%.*]] = phi i32* [ [[F:%.*]], [[LOOP]] ], [ [[X:%.*]], [[ENTRY:%.*]] ]
 ; CHECK-NEXT:    [[F]] = tail call i32* @f(i32* [[PHI]])
 ; CHECK-NEXT:    [[CMP1:%.*]] = icmp ne i32* [[F]], [[Y:%.*]]
@@ -162,12 +162,12 @@ entry:
   br label %loop
 
 loop:
-	%phi = phi i32* [ %sel, %loop ], [ %x, %entry ]
-	%f = tail call i32* @f(i32* %phi)
-	%cmp1 = icmp ne i32* %f, %y
-	%sel = select i1 %cmp1, i32* %f, i32* null
-	%cmp2 = icmp eq i32* %sel, null
-	br i1 %cmp2, label %return, label %loop
+  %phi = phi i32* [ %sel, %loop ], [ %x, %entry ]
+  %f = tail call i32* @f(i32* %phi)
+  %cmp1 = icmp ne i32* %f, %y
+  %sel = select i1 %cmp1, i32* %f, i32* null
+  %cmp2 = icmp eq i32* %sel, null
+  br i1 %cmp2, label %return, label %loop
 
 return:
   ret void
@@ -192,12 +192,12 @@ entry:
   br label %loop
 
 loop:
-	%phi = phi i32* [ %sel, %loop ], [ %x, %entry ]
-	%f = tail call i32* @f(i32* %phi)
-	%cmp1 = icmp eq i32* %f, %y
-	%sel = select i1 %cmp1, i32* null, i32* %f
-	%cmp2 = icmp eq i32* %sel, null
-	br i1 %cmp2, label %return, label %loop
+  %phi = phi i32* [ %sel, %loop ], [ %x, %entry ]
+  %f = tail call i32* @f(i32* %phi)
+  %cmp1 = icmp eq i32* %f, %y
+  %sel = select i1 %cmp1, i32* null, i32* %f
+  %cmp2 = icmp eq i32* %sel, null
+  br i1 %cmp2, label %return, label %loop
 
 return:
   ret void
@@ -1828,6 +1828,32 @@ define void @select_assume(i32 %a, i32 %b, i1 %c, i1* %p) {
   ret void
 }
 
+define void @xor(i8 %a, i1* %p) {
+; CHECK-LABEL: @xor(
+; CHECK-NEXT:    [[A_MASK:%.*]] = and i8 [[A:%.*]], 15
+; CHECK-NEXT:    [[XOR:%.*]] = xor i8 [[A_MASK]], -86
+; CHECK-NEXT:    [[C1:%.*]] = icmp uge i8 [[XOR]], -96
+; CHECK-NEXT:    store i1 [[C1]], i1* [[P:%.*]], align 1
+; CHECK-NEXT:    [[C2:%.*]] = icmp ugt i8 [[XOR]], -96
+; CHECK-NEXT:    store i1 [[C2]], i1* [[P]], align 1
+; CHECK-NEXT:    [[C3:%.*]] = icmp ule i8 [[XOR]], -81
+; CHECK-NEXT:    store i1 [[C3]], i1* [[P]], align 1
+; CHECK-NEXT:    [[C4:%.*]] = icmp ult i8 [[XOR]], -81
+; CHECK-NEXT:    store i1 [[C4]], i1* [[P]], align 1
+; CHECK-NEXT:    ret void
+;
+  %a.mask = and i8 %a, 15 ; 0b0000????
+  %xor = xor i8 %a.mask, 170 ; ^ 0b10101010 == 0b1010????
+  %c1 = icmp uge i8 %xor, 160
+  store i1 %c1, i1* %p
+  %c2 = icmp ugt i8 %xor, 160
+  store i1 %c2, i1* %p
+  %c3 = icmp ule i8 %xor, 175
+  store i1 %c3, i1* %p
+  %c4 = icmp ult i8 %xor, 175
+  store i1 %c4, i1* %p
+  ret void
+}
 
 declare i32 @llvm.uadd.sat.i32(i32, i32)
 declare i32 @llvm.usub.sat.i32(i32, i32)


        


More information about the llvm-commits mailing list