================ @@ -0,0 +1,28 @@ +; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32v1.3-vulkan-unknown %s -o - | FileCheck %s +; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-vulkan-unknown %s -o - -filetype=obj | spirv-val %} + +; Test lowering to spir-v backend + +; CHECK-DAG: %[[#uint:]] = OpTypeInt 32 0 +; CHECK-DAG: %[[#scope:]] = OpConstant %[[#uint]] 3 +; CHECK-DAG: %[[#f32:]] = OpTypeFloat 32 +; CHECK-DAG: %[[#expr:]] = OpFunctionParameter %[[#f32]] +; CHECK-DAG: %[[#idx:]] = OpFunctionParameter %[[#uint]] + +define spir_func void @test_1(float %expr, i32 %idx) #0 { +entry: + %0 = call token @llvm.experimental.convergence.entry() +; CHECK: %[[#ret:]] = OpGroupNonUniformShuffle %[[#f32]] %[[#expr]] %[[#idx]] %[[#scope]] + %1 = call float @llvm.spv.wave.read.lane.at(float %expr, i32 %idx) [ "convergencectrl"(token %0) ] ---------------- s-perron wrote:
Could you add tests that check a few different expression/return types? It would be good to make sure that ti does not always return a float. It does not have to be as extensive as the DX test. Maybe just an 32-bit int and a vector of some sort. https://github.com/llvm/llvm-project/pull/111010 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits