From: William S. Moses Date: Sun, 2 May 2021 04:58:06 +0000 (-0400) Subject: [MLIR] Handle llvm.icmp of pointers X-Git-Tag: llvmorg-14-init~7852 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a2b5314cbc10500da0e583e82827255dcd898d34;p=platform%2Fupstream%2Fllvm.git [MLIR] Handle llvm.icmp of pointers Differential Revision: https://reviews.llvm.org/D101712 --- diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td index c379dc7..592bd77 100644 --- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td +++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td @@ -190,8 +190,8 @@ def ICmpPredicate : I64EnumAttr< // Other integer operations. def LLVM_ICmpOp : LLVM_Op<"icmp", [NoSideEffect]> { let arguments = (ins ICmpPredicate:$predicate, - LLVM_ScalarOrVectorOf:$lhs, - LLVM_ScalarOrVectorOf:$rhs); + AnyTypeOf<[LLVM_ScalarOrVectorOf, LLVM_ScalarOrVectorOf]>:$lhs, + AnyTypeOf<[LLVM_ScalarOrVectorOf, LLVM_ScalarOrVectorOf]>:$rhs); let results = (outs LLVM_ScalarOrVectorOf:$res); let llvmBuilder = [{ $res = builder.CreateICmp(getLLVMCmpPredicate($predicate), $lhs, $rhs); diff --git a/mlir/test/Dialect/LLVMIR/roundtrip.mlir b/mlir/test/Dialect/LLVMIR/roundtrip.mlir index 7722c2c..8efd14e 100644 --- a/mlir/test/Dialect/LLVMIR/roundtrip.mlir +++ b/mlir/test/Dialect/LLVMIR/roundtrip.mlir @@ -1,10 +1,10 @@ // RUN: mlir-opt %s | mlir-opt | FileCheck %s // CHECK-LABEL: func @ops -// CHECK-SAME: (%[[I32:.*]]: i32, %[[FLOAT:.*]]: f32, %[[I8PTR1:.*]]: !llvm.ptr, %[[I8PTR2:.*]]: !llvm.ptr, %[[BOOL:.*]]: i1) +// CHECK-SAME: (%[[I32:.*]]: i32, %[[FLOAT:.*]]: f32, %[[I8PTR1:.*]]: !llvm.ptr, %[[I8PTR2:.*]]: !llvm.ptr, %[[BOOL:.*]]: i1, %[[VI8PTR1:.*]]: !llvm.vec<2 x ptr>) func @ops(%arg0: i32, %arg1: f32, %arg2: !llvm.ptr, %arg3: !llvm.ptr, - %arg4: i1) { + %arg4: i1, %arg5 : !llvm.vec<2x!llvm.ptr>) { // Integer arithmetic binary operations. // // CHECK: {{.*}} = llvm.add %[[I32]], %[[I32]] : i32 @@ -15,6 +15,8 @@ func @ops(%arg0: i32, %arg1: f32, // CHECK: {{.*}} = llvm.urem %[[I32]], %[[I32]] : i32 // CHECK: {{.*}} = llvm.srem %[[I32]], %[[I32]] : i32 // CHECK: {{.*}} = llvm.icmp "ne" %[[I32]], %[[I32]] : i32 +// CHECK: {{.*}} = llvm.icmp "ne" %[[I8PTR1]], %[[I8PTR1]] : !llvm.ptr +// CHECK: {{.*}} = llvm.icmp "ne" %[[VI8PTR1]], %[[VI8PTR1]] : !llvm.vec<2 x ptr> %0 = llvm.add %arg0, %arg0 : i32 %1 = llvm.sub %arg0, %arg0 : i32 %2 = llvm.mul %arg0, %arg0 : i32 @@ -23,6 +25,8 @@ func @ops(%arg0: i32, %arg1: f32, %5 = llvm.urem %arg0, %arg0 : i32 %6 = llvm.srem %arg0, %arg0 : i32 %7 = llvm.icmp "ne" %arg0, %arg0 : i32 + %ptrcmp = llvm.icmp "ne" %arg2, %arg2 : !llvm.ptr + %vptrcmp = llvm.icmp "ne" %arg5, %arg5 : !llvm.vec<2 x ptr> // Floating point binary operations. //