File: test-nvvm-pipeline.mlir

package info (click to toggle)
swiftlang 6.1.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,791,604 kB
  • sloc: cpp: 9,901,740; ansic: 2,201,431; asm: 1,091,827; python: 308,252; objc: 82,166; f90: 80,126; lisp: 38,358; pascal: 25,559; sh: 20,429; ml: 5,058; perl: 4,745; makefile: 4,484; awk: 3,535; javascript: 3,018; xml: 918; fortran: 664; cs: 573; ruby: 396
file content (30 lines) | stat: -rw-r--r-- 1,109 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// REQUIRES: host-supports-nvptx
// RUN: mlir-opt %s \
// RUN:  | mlir-opt -gpu-lower-to-nvvm-pipeline="cubin-format=isa" \
// RUN:   | FileCheck %s

// RUN: mlir-opt %s \
// RUN:  | mlir-opt -gpu-lower-to-nvvm-pipeline="cubin-format=isa" \
// RUN:    --mlir-print-ir-after=convert-gpu-to-nvvm 2>&1 \
// RUN:  | FileCheck %s --check-prefixes=CHECK-NVVM

// This test checks whether the GPU region is compiled correctly to PTX by 
// pipeline. It doesn't test IR for GPU side, but it can test Host IR and 
// generated PTX.

// CHECK-LABEL: llvm.func @test_math(%arg0: f32) {
func.func @test_math(%arg0 : f32) {
    %c2 = arith.constant 2 : index
    %c1 = arith.constant 1 : index
    // CHECK: gpu.launch_func  @test_math_kernel::@test_math_kernel
    // CHECK: gpu.binary @test_math_kernel  [#gpu.object<#nvvm.target
    gpu.launch 
        blocks(%0, %1, %2) in (%3 = %c1, %4 = %c1, %5 = %c1) 
        threads(%6, %7, %8) in (%9 = %c2, %10 = %c1, %11 = %c1) { 
        // CHECK-NVVM: __nv_expf 
        %s1 = math.exp %arg0 : f32
        gpu.printf "%f" %s1 : f32
        gpu.terminator
    }
    return
}