brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · 5a7ed19 Raw
150 lines · plain
1// RUN: mlir-translate -no-implicit-module -test-spirv-roundtrip-debug -mlir-print-debuginfo -mlir-print-local-scope %s | FileCheck %s2// RUN: %if spirv-tools %{ mlir-translate --no-implicit-module --serialize-spirv %s | spirv-val %}3 4spirv.module Logical GLSL450 requires #spirv.vce<v1.3, [Shader, GroupNonUniformArithmetic], [SPV_KHR_non_semantic_info, SPV_KHR_storage_buffer_storage_class]> attributes {spirv.target_env = #spirv.target_env<#spirv.vce<v1.3, [Shader, GroupNonUniformArithmetic], [SPV_KHR_non_semantic_info, SPV_KHR_storage_buffer_storage_class]>, #spirv.resource_limits<>>} {5  // CHECK: loc({{".*debug.mlir"}}:6:3)6  spirv.GlobalVariable @var0 bind(0, 1) : !spirv.ptr<f32, Input>7  spirv.func @arithmetic(%arg0 : vector<4xf32>, %arg1 : vector<4xf32>) "None" {8    // CHECK: loc({{".*debug.mlir"}}:9:10)9    %0 = spirv.FAdd %arg0, %arg1 : vector<4xf32>10    // CHECK: loc({{".*debug.mlir"}}:11:10)11    %1 = spirv.FNegate %arg0 : vector<4xf32>12    spirv.Return13  }14 15  spirv.func @atomic(%ptr: !spirv.ptr<i32, Workgroup>, %value: i32, %comparator: i32) "None" {16    // CHECK: loc({{".*debug.mlir"}}:17:10)17    %1 = spirv.AtomicAnd <Device> <None> %ptr, %value : !spirv.ptr<i32, Workgroup>18    spirv.Return19  }20 21  spirv.func @bitwiser(%arg0 : i32, %arg1 : i32) "None" {22    // CHECK: loc({{".*debug.mlir"}}:23:10)23    %0 = spirv.BitwiseAnd %arg0, %arg1 : i3224    spirv.Return25  }26 27  spirv.func @convert(%arg0 : f32) "None" {28    // CHECK: loc({{".*debug.mlir"}}:29:10)29    %0 = spirv.ConvertFToU %arg0 : f32 to i3230    spirv.Return31  }32 33  spirv.func @composite(%arg0 : !spirv.struct<(f32, !spirv.struct<(!spirv.array<4xf32>, f32)>)>, %arg1: !spirv.array<4xf32>, %arg2 : f32, %arg3 : f32) "None" {34    // CHECK: loc({{".*debug.mlir"}}:35:10)35    %0 = spirv.CompositeInsert %arg1, %arg0[1 : i32, 0 : i32] : !spirv.array<4xf32> into !spirv.struct<(f32, !spirv.struct<(!spirv.array<4xf32>, f32)>)>36    // CHECK: loc({{".*debug.mlir"}}:37:10)37    %1 = spirv.CompositeConstruct %arg2, %arg3 : (f32, f32) -> vector<2xf32>38    spirv.Return39  }40 41  spirv.func @group_non_uniform(%val: f32) "None" {42    // CHECK: loc({{".*debug.mlir"}}:43:10)43    %0 = spirv.GroupNonUniformFAdd <Workgroup> <Reduce> %val : f32 -> f3244    spirv.Return45  }46 47  spirv.func @local_var() "None" {48    %zero = spirv.Constant 0: i3249    // CHECK: loc({{".*debug.mlir"}}:50:12)50    %var = spirv.Variable init(%zero) : !spirv.ptr<i32, Function>51    spirv.Return52  }53 54  spirv.func @logical(%arg0: i32, %arg1: i32) "None" {55    // CHECK: loc({{".*debug.mlir"}}:56:10)56    %0 = spirv.IEqual %arg0, %arg1 : i3257    spirv.Return58  }59 60  spirv.func @memory_accesses(%arg0 : !spirv.ptr<!spirv.array<4x!spirv.array<4xf32>>, StorageBuffer>, %arg1 : i32, %arg2 : i32) "None" {61    // CHECK: loc({{".*debug.mlir"}}:62:10)62    %2 = spirv.AccessChain %arg0[%arg1, %arg2] : !spirv.ptr<!spirv.array<4x!spirv.array<4xf32>>, StorageBuffer>, i32, i32 -> !spirv.ptr<f32, StorageBuffer>63    // CHECK: loc({{".*debug.mlir"}}:64:10)64    %3 = spirv.Load "StorageBuffer" %2 : f3265    // CHECK: loc({{.*debug.mlir"}}:66:5)66    spirv.Store "StorageBuffer" %2, %3 : f3267    // CHECK: loc({{".*debug.mlir"}}:68:5)68    spirv.Return69  }70 71  spirv.func @loop(%count : i32) -> () "None" {72    %zero = spirv.Constant 0: i3273    %one = spirv.Constant 1: i3274    %ivar = spirv.Variable init(%zero) : !spirv.ptr<i32, Function>75    %jvar = spirv.Variable init(%zero) : !spirv.ptr<i32, Function>76    spirv.mlir.loop {77      // CHECK: loc({{".*debug.mlir"}}:76:5)78      spirv.Branch ^header79    ^header:80      %ival0 = spirv.Load "Function" %ivar : i3281      %icmp = spirv.SLessThan %ival0, %count : i3282      // CHECK: loc({{".*debug.mlir"}}:76:5)83      spirv.BranchConditional %icmp, ^body, ^merge84    ^body:85      spirv.Store "Function" %jvar, %zero : i3286      spirv.mlir.loop {87        // CHECK: loc({{".*debug.mlir"}}:86:7)88        spirv.Branch ^header89      ^header:90        %jval0 = spirv.Load "Function" %jvar : i3291        %jcmp = spirv.SLessThan %jval0, %count : i3292        // CHECK: loc({{".*debug.mlir"}}:86:7)93        spirv.BranchConditional %jcmp, ^body, ^merge94      ^body:95        // CHECK: loc({{".*debug.mlir"}}:96:9)96        spirv.Branch ^continue97      ^continue:98        %jval1 = spirv.Load "Function" %jvar : i3299        %add = spirv.IAdd %jval1, %one : i32100        spirv.Store "Function" %jvar, %add : i32101        // CHECK: loc({{".*debug.mlir"}}:102:9)102        spirv.Branch ^header103      ^merge:104        // CHECK: loc({{".*debug.mlir"}}:86:7)105        spirv.mlir.merge106        // CHECK: loc({{".*debug.mlir"}}:86:7)107      }108      // CHECK: loc({{".*debug.mlir"}}:109:7)109      spirv.Branch ^continue110    ^continue:111      %ival1 = spirv.Load "Function" %ivar : i32112      %add = spirv.IAdd %ival1, %one : i32113      spirv.Store "Function" %ivar, %add : i32114      // CHECK: loc({{".*debug.mlir"}}:115:7)115      spirv.Branch ^header116    ^merge:117      // CHECK: loc({{".*debug.mlir"}}:76:5)118      spirv.mlir.merge119    // CHECK: loc({{".*debug.mlir"}}:76:5)120    }121    spirv.Return122  }123 124  spirv.func @selection(%cond: i1) -> () "None" {125    %zero = spirv.Constant 0: i32126    %one = spirv.Constant 1: i32127    %two = spirv.Constant 2: i32128    %var = spirv.Variable init(%zero) : !spirv.ptr<i32, Function>129    spirv.mlir.selection {130      // CHECK: loc({{".*debug.mlir"}}:129:5)131      spirv.BranchConditional %cond [5, 10], ^then, ^else132    ^then:133      spirv.Store "Function" %var, %one : i32134      // CHECK: loc({{".*debug.mlir"}}:135:7)135      spirv.Branch ^merge136    ^else:137      spirv.Store "Function" %var, %two : i32138      // CHECK: loc({{".*debug.mlir"}}:139:7)139      spirv.Branch ^merge140    ^merge:141      // CHECK: loc({{".*debug.mlir"}}:129:5)142      spirv.mlir.merge143    // CHECK: loc({{".*debug.mlir"}}:129:5)144    }145    spirv.Return146  }147 148  spirv.EntryPoint "GLCompute" @local_var149}150