Files
TheRock/compiler/amd-llvm/mlir/test/Target/SPIRV/intel-ext-ops.mlir
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

137 lines
5.8 KiB
MLIR

// RUN: mlir-translate -no-implicit-module -test-spirv-roundtrip -split-input-file %s | FileCheck %s
// RUN: %if spirv-tools %{ rm -rf %t %}
// RUN: %if spirv-tools %{ mkdir %t %}
// RUN: %if spirv-tools %{ mlir-translate --no-implicit-module --serialize-spirv --split-input-file --spirv-save-validation-files-with-prefix=%t/module %s %}
// RUN: %if spirv-tools %{ spirv-val %t %}
spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader, Linkage, Bfloat16ConversionINTEL, Int16], [SPV_INTEL_bfloat16_conversion]> {
// CHECK-LABEL: @f32_to_bf16
spirv.func @f32_to_bf16(%arg0 : f32) "None" {
// CHECK: {{%.*}} = spirv.INTEL.ConvertFToBF16 {{%.*}} : f32 to i16
%0 = spirv.INTEL.ConvertFToBF16 %arg0 : f32 to i16
spirv.Return
}
// CHECK-LABEL: @f32_to_bf16_vec
spirv.func @f32_to_bf16_vec(%arg0 : vector<2xf32>) "None" {
// CHECK: {{%.*}} = spirv.INTEL.ConvertFToBF16 {{%.*}} : vector<2xf32> to vector<2xi16>
%0 = spirv.INTEL.ConvertFToBF16 %arg0 : vector<2xf32> to vector<2xi16>
spirv.Return
}
// CHECK-LABEL: @bf16_to_f32
spirv.func @bf16_to_f32(%arg0 : i16) "None" {
// CHECK: {{%.*}} = spirv.INTEL.ConvertBF16ToF {{%.*}} : i16 to f32
%0 = spirv.INTEL.ConvertBF16ToF %arg0 : i16 to f32
spirv.Return
}
// CHECK-LABEL: @bf16_to_f32_vec
spirv.func @bf16_to_f32_vec(%arg0 : vector<2xi16>) "None" {
// CHECK: {{%.*}} = spirv.INTEL.ConvertBF16ToF {{%.*}} : vector<2xi16> to vector<2xf32>
%0 = spirv.INTEL.ConvertBF16ToF %arg0 : vector<2xi16> to vector<2xf32>
spirv.Return
}
}
// -----
//===----------------------------------------------------------------------===//
// spirv.INTEL.RoundFToTF32
//===----------------------------------------------------------------------===//
spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader, Linkage, TensorFloat32RoundingINTEL], [SPV_INTEL_tensor_float32_conversion]> {
// CHECK-LABEL: @f32_to_tf32
spirv.func @f32_to_tf32(%arg0 : f32) "None" {
// CHECK: {{%.*}} = spirv.INTEL.RoundFToTF32 {{%.*}} : f32 to f32
%1 = spirv.INTEL.RoundFToTF32 %arg0 : f32 to f32
spirv.Return
}
// CHECK-LABEL: @f32_to_tf32_vec
spirv.func @f32_to_tf32_vec(%arg0 : vector<2xf32>) "None" {
// CHECK: {{%.*}} = spirv.INTEL.RoundFToTF32 {{%.*}} : vector<2xf32> to vector<2xf32>
%1 = spirv.INTEL.RoundFToTF32 %arg0 : vector<2xf32> to vector<2xf32>
spirv.Return
}
}
// -----
//===----------------------------------------------------------------------===//
// spirv.INTEL.MaskedGather / MaskedScatter
//===----------------------------------------------------------------------===//
spirv.module Physical64 OpenCL requires #spirv.vce<v1.0, [Kernel, Addresses, Linkage, MaskedGatherScatterINTEL], [SPV_INTEL_masked_gather_scatter]> {
// CHECK-LABEL: @masked_gather_f32
spirv.func @masked_gather_f32(
%ptrs : vector<4x!spirv.ptr<f32, CrossWorkgroup>>,
%alignment : i32,
%mask : vector<4xi1>,
%fill : vector<4xf32>) "None" {
// CHECK: {{%.*}} = spirv.INTEL.MaskedGather {{%.*}}, {{%.*}}, {{%.*}}, {{%.*}} : vector<4x!spirv.ptr<f32, CrossWorkgroup>>, i32, vector<4xi1>, vector<4xf32> -> vector<4xf32>
%0 = spirv.INTEL.MaskedGather %ptrs, %alignment, %mask, %fill
: vector<4x!spirv.ptr<f32, CrossWorkgroup>>, i32,
vector<4xi1>, vector<4xf32> -> vector<4xf32>
spirv.Return
}
// CHECK-LABEL: @masked_gather_i32
spirv.func @masked_gather_i32(
%ptrs : vector<4x!spirv.ptr<i32, CrossWorkgroup>>,
%alignment : i32,
%mask : vector<4xi1>,
%fill : vector<4xi32>) "None" {
// CHECK: {{%.*}} = spirv.INTEL.MaskedGather {{%.*}}, {{%.*}}, {{%.*}}, {{%.*}} : vector<4x!spirv.ptr<i32, CrossWorkgroup>>, i32, vector<4xi1>, vector<4xi32> -> vector<4xi32>
%0 = spirv.INTEL.MaskedGather %ptrs, %alignment, %mask, %fill
: vector<4x!spirv.ptr<i32, CrossWorkgroup>>, i32,
vector<4xi1>, vector<4xi32> -> vector<4xi32>
spirv.Return
}
// CHECK-LABEL: @masked_scatter_f32
spirv.func @masked_scatter_f32(
%ptrs : vector<4x!spirv.ptr<f32, CrossWorkgroup>>,
%alignment : i32,
%mask : vector<4xi1>,
%values : vector<4xf32>) "None" {
// CHECK: spirv.INTEL.MaskedScatter {{%.*}}, {{%.*}}, {{%.*}}, {{%.*}} : vector<4x!spirv.ptr<f32, CrossWorkgroup>>, i32, vector<4xi1>, vector<4xf32>
spirv.INTEL.MaskedScatter %ptrs, %alignment, %mask, %values
: vector<4x!spirv.ptr<f32, CrossWorkgroup>>, i32,
vector<4xi1>, vector<4xf32>
spirv.Return
}
// CHECK-LABEL: @masked_scatter_i32
spirv.func @masked_scatter_i32(
%ptrs : vector<4x!spirv.ptr<i32, CrossWorkgroup>>,
%alignment : i32,
%mask : vector<4xi1>,
%values : vector<4xi32>) "None" {
// CHECK: spirv.INTEL.MaskedScatter {{%.*}}, {{%.*}}, {{%.*}}, {{%.*}} : vector<4x!spirv.ptr<i32, CrossWorkgroup>>, i32, vector<4xi1>, vector<4xi32>
spirv.INTEL.MaskedScatter %ptrs, %alignment, %mask, %values
: vector<4x!spirv.ptr<i32, CrossWorkgroup>>, i32,
vector<4xi1>, vector<4xi32>
spirv.Return
}
}
// -----
//===----------------------------------------------------------------------===//
// spirv.INTEL.SplitBarrier
//===----------------------------------------------------------------------===//
// CHECK: spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader, Linkage, SplitBarrierINTEL], [SPV_INTEL_split_barrier]>
spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [Shader, Linkage, SplitBarrierINTEL], [SPV_INTEL_split_barrier]> {
// CHECK-LABEL: @split_barrier
spirv.func @split_barrier() "None" {
// CHECK: spirv.INTEL.ControlBarrierArrive <Workgroup> <Device> <Acquire|UniformMemory>
spirv.INTEL.ControlBarrierArrive <Workgroup> <Device> <Acquire|UniformMemory>
// CHECK: spirv.INTEL.ControlBarrierWait <Workgroup> <Device> <Acquire|UniformMemory>
spirv.INTEL.ControlBarrierWait <Workgroup> <Device> <Acquire|UniformMemory>
spirv.Return
}
}