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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
// RUN: mlir-opt -test-spirv-module-combiner -split-input-file -verify-diagnostics %s | FileCheck %s
// Combine modules without the same symbols
// CHECK: module {
// CHECK-NEXT: spirv.module Logical GLSL450 {
// CHECK-NEXT: spirv.SpecConstant @m1_sc
// CHECK-NEXT: spirv.GlobalVariable @m1_gv bind(1, 0)
// CHECK-NEXT: spirv.func @no_op
// CHECK-NEXT: spirv.Return
// CHECK-NEXT: }
// CHECK-NEXT: spirv.EntryPoint "GLCompute" @no_op
// CHECK-NEXT: spirv.ExecutionMode @no_op "LocalSize", 32, 1, 1
// CHECK-NEXT: spirv.SpecConstant @m2_sc
// CHECK-NEXT: spirv.GlobalVariable @m2_gv bind(0, 1)
// CHECK-NEXT: spirv.func @variable_init_spec_constant
// CHECK-NEXT: spirv.mlir.referenceof @m2_sc
// CHECK-NEXT: spirv.Variable init
// CHECK-NEXT: spirv.Return
// CHECK-NEXT: }
// CHECK-NEXT: }
// CHECK-NEXT: }
module {
spirv.module Logical GLSL450 {
spirv.SpecConstant @m1_sc = 42.42 : f32
spirv.GlobalVariable @m1_gv bind(1, 0): !spirv.ptr<f32, Input>
spirv.func @no_op() -> () "None" {
spirv.Return
}
spirv.EntryPoint "GLCompute" @no_op
spirv.ExecutionMode @no_op "LocalSize", 32, 1, 1
}
spirv.module Logical GLSL450 {
spirv.SpecConstant @m2_sc = 42 : i32
spirv.GlobalVariable @m2_gv bind(0, 1): !spirv.ptr<f32, Input>
spirv.func @variable_init_spec_constant() -> () "None" {
%0 = spirv.mlir.referenceof @m2_sc : i32
%1 = spirv.Variable init(%0) : !spirv.ptr<i32, Function>
spirv.Return
}
}
}
// -----
module {
spirv.module Physical64 GLSL450 {
}
// expected-error @+1 {{input modules differ in addressing model, memory model, and/or VCE triple}}
spirv.module Logical GLSL450 {
}
}
// -----
module {
spirv.module Logical Simple {
}
// expected-error @+1 {{input modules differ in addressing model, memory model, and/or VCE triple}}
spirv.module Logical GLSL450 {
}
}
// -----
module {
spirv.module Logical GLSL450 {
}
// expected-error @+1 {{input modules differ in addressing model, memory model, and/or VCE triple}}
spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader], [SPV_KHR_storage_buffer_storage_class]> {
}
}
// -----
// No spir-v modules to combine.
module {
func.func @foo(%arg0: i32) -> i32 {
return %arg0 : i32
}
}
|