brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · a47b39b Raw
97 lines · plain
1// RUN: mlir-translate --no-implicit-module --test-spirv-roundtrip --split-input-file %s | FileCheck %s2 3// RUN: %if spirv-tools %{ rm -rf %t %}4// RUN: %if spirv-tools %{ mkdir %t %}5// RUN: %if spirv-tools %{ mlir-translate --no-implicit-module --serialize-spirv --split-input-file --spirv-save-validation-files-with-prefix=%t/module %s %}6// RUN: %if spirv-tools %{ spirv-val %t %}7 8spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader, Linkage, Int8, Int16], []> {9    // CHECK: spirv.func @outside.func.with.linkage(i8) "Pure" attributes10    // CHECK: linkage_attributes = #spirv.linkage_attributes<linkage_name = "outside.func", linkage_type = <Import>>11    // CHECK: spirv.func @linkage_attr_test_kernel() "DontInline" {12    // CHECK: spirv.func @inside.func() "Pure" {13    spirv.func @linkage_attr_test_kernel()  "DontInline"  attributes {}  {14        %uchar_0 = spirv.Constant 0 : i815        %ushort_1 = spirv.Constant 1 : i1616        %uint_0 = spirv.Constant 0 : i3217        spirv.FunctionCall @outside.func.with.linkage(%uchar_0):(i8) -> ()18        spirv.Return19    }20    spirv.func @outside.func.with.linkage(%arg0 : i8) -> () "Pure" attributes {21      linkage_attributes=#spirv.linkage_attributes<22        linkage_name="outside.func",23        linkage_type=<Import>24      >25    }26    spirv.func @inside.func() -> () "Pure" attributes {} {spirv.Return}27}28 29// -----30 31spirv.module PhysicalStorageBuffer64 GLSL450 requires #spirv.vce<v1.0,32    [Shader, PhysicalStorageBufferAddresses, Linkage], [SPV_KHR_physical_storage_buffer]> {33  // CHECK-LABEL: spirv.func @func_arg_decoration_aliased(%{{.*}}: !spirv.ptr<i32, PhysicalStorageBuffer> {spirv.decoration = #spirv.decoration<Aliased>})34  spirv.func @func_arg_decoration_aliased(35      %arg0 : !spirv.ptr<i32, PhysicalStorageBuffer> { spirv.decoration = #spirv.decoration<Aliased> }36  ) "None" {37    spirv.Return38  }39}40 41// -----42 43spirv.module PhysicalStorageBuffer64 GLSL450 requires #spirv.vce<v1.0,44    [Shader, PhysicalStorageBufferAddresses, Linkage], [SPV_KHR_physical_storage_buffer]> {45  // CHECK-LABEL: spirv.func @func_arg_decoration_restrict(%{{.*}}: !spirv.ptr<i32, PhysicalStorageBuffer> {spirv.decoration = #spirv.decoration<Restrict>})46  spirv.func @func_arg_decoration_restrict(47      %arg0 : !spirv.ptr<i32,PhysicalStorageBuffer> { spirv.decoration = #spirv.decoration<Restrict> }48  ) "None" {49    spirv.Return50  }51}52 53// -----54 55spirv.module PhysicalStorageBuffer64 GLSL450 requires #spirv.vce<v1.0,56    [Shader, PhysicalStorageBufferAddresses, Linkage, GenericPointer], [SPV_KHR_physical_storage_buffer]> {57  // CHECK-LABEL: spirv.func @func_arg_decoration_aliased_pointer(%{{.*}}: !spirv.ptr<!spirv.ptr<i32, PhysicalStorageBuffer>, Generic> {spirv.decoration = #spirv.decoration<AliasedPointer>})58  spirv.func @func_arg_decoration_aliased_pointer(59      %arg0 : !spirv.ptr<!spirv.ptr<i32,PhysicalStorageBuffer>, Generic> { spirv.decoration = #spirv.decoration<AliasedPointer> }60  ) "None" {61    spirv.Return62  }63}64 65// -----66 67spirv.module PhysicalStorageBuffer64 GLSL450 requires #spirv.vce<v1.0,68    [Shader, PhysicalStorageBufferAddresses, Linkage, GenericPointer], [SPV_KHR_physical_storage_buffer]> {69  // CHECK-LABEL: spirv.func @func_arg_decoration_restrict_pointer(%{{.*}}: !spirv.ptr<!spirv.ptr<i32, PhysicalStorageBuffer>, Generic> {spirv.decoration = #spirv.decoration<RestrictPointer>})70  spirv.func @func_arg_decoration_restrict_pointer(71      %arg0 : !spirv.ptr<!spirv.ptr<i32,PhysicalStorageBuffer>, Generic> { spirv.decoration = #spirv.decoration<RestrictPointer> }72  ) "None" {73    spirv.Return74  }75}76 77// -----78 79spirv.module PhysicalStorageBuffer64 GLSL450 requires #spirv.vce<v1.0,80    [Shader, PhysicalStorageBufferAddresses, Linkage], [SPV_KHR_physical_storage_buffer]> {81  // CHECK-LABEL: spirv.func @fn1(%{{.*}}: i32, %{{.*}}: !spirv.ptr<i32, PhysicalStorageBuffer> {spirv.decoration = #spirv.decoration<Aliased>})82  spirv.func @fn1(83      %arg0: i32,84      %arg1: !spirv.ptr<i32, PhysicalStorageBuffer> { spirv.decoration = #spirv.decoration<Aliased> }85  ) "None" {86    spirv.Return87  }88 89  // CHECK-LABEL: spirv.func @fn2(%{{.*}}: !spirv.ptr<i32, PhysicalStorageBuffer> {spirv.decoration = #spirv.decoration<Aliased>}, %{{.*}}: !spirv.ptr<i32, PhysicalStorageBuffer> {spirv.decoration = #spirv.decoration<Restrict>})90  spirv.func @fn2(91      %arg0: !spirv.ptr<i32, PhysicalStorageBuffer> { spirv.decoration = #spirv.decoration<Aliased> },92      %arg1: !spirv.ptr<i32, PhysicalStorageBuffer> { spirv.decoration = #spirv.decoration<Restrict>}93  ) "None" {94    spirv.Return95  }96}97