28 lines · plain
1// RUN: mlir-translate -mlir-to-llvmir %s | FileCheck %s --check-prefix=LLVM2// RUN: mlir-opt %s | mlir-opt | FileCheck %s3 4// LLVM-LABEL: @llvm_nvvm_barrier(5// LLVM-SAME: i32 %[[barId:.*]], i32 %[[numThreads:.*]], i32 %[[redOperand:.*]])6llvm.func @llvm_nvvm_barrier(%barID : i32, %numberOfThreads : i32, %redOperand : i32) {7 // LLVM: call void @llvm.nvvm.barrier.cta.sync.aligned.all(i32 0)8 // CHECK: nvvm.barrier9 nvvm.barrier10 // LLVM: call void @llvm.nvvm.barrier.cta.sync.aligned.all(i32 %[[barId]])11 // CHECK: nvvm.barrier id = %{{.*}}12 nvvm.barrier id = %barID13 // LLVM: call void @llvm.nvvm.barrier.cta.sync.aligned.count(i32 %[[barId]], i32 %[[numThreads]])14 // CHECK: nvvm.barrier id = %{{.*}} number_of_threads = %{{.*}}15 nvvm.barrier id = %barID number_of_threads = %numberOfThreads16 // LLVM: %{{.*}} = call i32 @llvm.nvvm.barrier0.and(i32 %[[redOperand]])17 // CHECK: %{{.*}} = nvvm.barrier #nvvm.reduction<and> %{{.*}} -> i3218 %0 = nvvm.barrier #nvvm.reduction<and> %redOperand -> i3219 // LLVM: %{{.*}} = call i32 @llvm.nvvm.barrier0.or(i32 %[[redOperand]])20 // CHECK: %{{.*}} = nvvm.barrier #nvvm.reduction<or> %{{.*}} -> i3221 %1 = nvvm.barrier #nvvm.reduction<or> %redOperand -> i3222 // LLVM: %{{.*}} = call i32 @llvm.nvvm.barrier0.popc(i32 %[[redOperand]])23 // CHECK: %{{.*}} = nvvm.barrier #nvvm.reduction<popc> %{{.*}} -> i3224 %2 = nvvm.barrier #nvvm.reduction<popc> %redOperand -> i3225 26 llvm.return27}28