brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 739b7bb Raw
42 lines · plain
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv-vulkan-unknown %s -o - | FileCheck %s2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-vulkan-unknown %s -o - -filetype=obj | spirv-val %}3 4; Test lowering to spir-v backend for various types and scalar/vector5 6; CHECK-DAG:   %[[#f16:]] = OpTypeFloat 167; CHECK-DAG:   %[[#f32:]] = OpTypeFloat 328; CHECK-DAG:   %[[#uint:]] = OpTypeInt 32 09; CHECK-DAG:   %[[#v4_half:]] = OpTypeVector %[[#f16]] 410; CHECK-DAG:   %[[#scope:]] = OpConstant %[[#uint]] 311 12; CHECK-LABEL: Begin function test_float13; CHECK:   %[[#fexpr:]] = OpFunctionParameter %[[#f32]]14define float @test_float(float %fexpr) {15entry:16; CHECK:   %[[#fret:]] = OpGroupNonUniformFAdd %[[#f32]] %[[#scope]] Reduce %[[#fexpr]]17  %0 = call float @llvm.spv.wave.reduce.sum.f32(float %fexpr)18  ret float %019}20 21; CHECK-LABEL: Begin function test_int22; CHECK:   %[[#iexpr:]] = OpFunctionParameter %[[#uint]]23define i32 @test_int(i32 %iexpr) {24entry:25; CHECK:   %[[#iret:]] = OpGroupNonUniformIAdd %[[#uint]] %[[#scope]] Reduce %[[#iexpr]]26  %0 = call i32 @llvm.spv.wave.reduce.sum.i32(i32 %iexpr)27  ret i32 %028}29 30; CHECK-LABEL: Begin function test_vhalf31; CHECK:   %[[#vbexpr:]] = OpFunctionParameter %[[#v4_half]]32define <4 x half> @test_vhalf(<4 x half> %vbexpr) {33entry:34; CHECK:   %[[#vhalfret:]] = OpGroupNonUniformFAdd %[[#v4_half]] %[[#scope]] Reduce %[[#vbexpr]]35  %0 = call <4 x half> @llvm.spv.wave.reduce.sum.v4half(<4 x half> %vbexpr)36  ret <4 x half> %037}38 39declare float @llvm.spv.wave.reduce.sum.f32(float)40declare i32 @llvm.spv.wave.reduce.sum.i32(i32)41declare <4 x half> @llvm.spv.wave.reduce.sum.v4half(<4 x half>)42