Update LLVMOps for CreateShuffleVector deprecation and rework
authorEric Christopher <echristo@gmail.com>
Mon, 20 Apr 2020 22:25:47 +0000 (15:25 -0700)
committerEric Christopher <echristo@gmail.com>
Mon, 20 Apr 2020 22:50:29 +0000 (15:50 -0700)
creation string.

Differential Revision: https://reviews.llvm.org/D78519

mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td

index eac6637..c9ee88c 100644 (file)
@@ -410,9 +410,12 @@ def LLVM_InsertValueOp : LLVM_OneResultOp<"insertvalue", [NoSideEffect]>,
 }
 def LLVM_ShuffleVectorOp
     : LLVM_OneResultOp<"shufflevector", [NoSideEffect]>,
-      Arguments<(ins LLVM_Type:$v1, LLVM_Type:$v2, ArrayAttr:$mask)>,
-      LLVM_Builder<
-      "$res = builder.CreateShuffleVector($v1, $v2, extractPosition($mask));"> {
+      Arguments<(ins LLVM_Type:$v1, LLVM_Type:$v2, ArrayAttr:$mask)> {
+  string llvmBuilder = [{
+      SmallVector<unsigned, 4> position = extractPosition($mask);
+      SmallVector<int, 4> mask(position.begin(), position.end());
+      $res = builder.CreateShuffleVector($v1, $v2, mask);
+  }];
   let builders = [OpBuilder<
     "Builder *b, OperationState &result, Value v1, Value v2, "
     "ArrayAttr mask, ArrayRef<NamedAttribute> attrs = {}">];