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
212 lines
5.6 KiB
MLIR
212 lines
5.6 KiB
MLIR
// RUN: mlir-opt -split-input-file -convert-arith-to-spirv -verify-diagnostics %s
|
|
|
|
///===----------------------------------------------------------------------===//
|
|
// Cast ops
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
module attributes {
|
|
spirv.target_env = #spirv.target_env<
|
|
#spirv.vce<v1.0, [Float16, Kernel], []>, #spirv.resource_limits<>>
|
|
} {
|
|
|
|
func.func @experimental_constrained_fptrunc(%arg0 : f32) {
|
|
// expected-error@+1 {{failed to legalize operation 'arith.truncf'}}
|
|
%3 = arith.truncf %arg0 to_nearest_away : f32 to f16
|
|
return
|
|
}
|
|
|
|
} // end module
|
|
|
|
///===----------------------------------------------------------------------===//
|
|
// Binary ops
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// -----
|
|
|
|
module attributes {
|
|
spirv.target_env = #spirv.target_env<
|
|
#spirv.vce<v1.0, [Int8, Int16, Int64, Float16, Float64, Shader], []>, #spirv.resource_limits<>>
|
|
} {
|
|
|
|
func.func @unsupported_5elem_vector(%arg0: vector<5xi32>) {
|
|
// expected-error@+1 {{failed to legalize operation 'arith.subi'}}
|
|
%1 = arith.subi %arg0, %arg0: vector<5xi32>
|
|
return
|
|
}
|
|
|
|
} // end module
|
|
|
|
// -----
|
|
|
|
module attributes {
|
|
spirv.target_env = #spirv.target_env<
|
|
#spirv.vce<v1.0, [Int8, Int16, Int64, Float16, Float64, Shader], []>, #spirv.resource_limits<>>
|
|
} {
|
|
|
|
func.func @unsupported_2x2elem_vector(%arg0: vector<2x2xi32>) {
|
|
// expected-error@+1 {{failed to legalize operation 'arith.muli'}}
|
|
%2 = arith.muli %arg0, %arg0: vector<2x2xi32>
|
|
return
|
|
}
|
|
|
|
} // end module
|
|
|
|
// -----
|
|
|
|
func.func @int_vector4_invalid(%arg0: vector<2xi16>) {
|
|
// expected-error @+2 {{failed to legalize operation 'arith.divui'}}
|
|
// expected-error @+1 {{bitwidth emulation is not implemented yet on unsigned op}}
|
|
%0 = arith.divui %arg0, %arg0: vector<2xi16>
|
|
return
|
|
}
|
|
|
|
// -----
|
|
|
|
func.func @int_vector_invalid_bitwidth(%arg0: vector<2xi12>) {
|
|
// expected-error @+1 {{failed to legalize operation 'arith.addi'}}
|
|
%0 = arith.addi %arg0, %arg0: vector<2xi12>
|
|
return
|
|
}
|
|
|
|
///===----------------------------------------------------------------------===//
|
|
// Constant ops
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// -----
|
|
|
|
func.func @unsupported_constant_i64_0() {
|
|
// expected-error @+1 {{failed to legalize operation 'arith.constant'}}
|
|
%0 = arith.constant 0 : i64
|
|
return
|
|
}
|
|
|
|
// -----
|
|
|
|
func.func @unsupported_constant_i64_1() {
|
|
// expected-error @+1 {{failed to legalize operation 'arith.constant'}}
|
|
%0 = arith.constant 4294967296 : i64 // 2^32
|
|
return
|
|
}
|
|
|
|
// -----
|
|
|
|
func.func @unsupported_constant_vector_2xi64_0() {
|
|
// expected-error @+1 {{failed to legalize operation 'arith.constant'}}
|
|
%1 = arith.constant dense<0> : vector<2xi64>
|
|
return
|
|
}
|
|
|
|
// -----
|
|
|
|
func.func @unsupported_constant_f64_0() {
|
|
// expected-error @+1 {{failed to legalize operation 'arith.constant'}}
|
|
%1 = arith.constant 0.0 : f64
|
|
return
|
|
}
|
|
|
|
// -----
|
|
|
|
func.func @unsupported_constant_vector_2xf64_0() {
|
|
// expected-error @+1 {{failed to legalize operation 'arith.constant'}}
|
|
%1 = arith.constant dense<0.0> : vector<2xf64>
|
|
return
|
|
}
|
|
|
|
// -----
|
|
|
|
func.func @unsupported_constant_tensor_2xf64_0() {
|
|
// expected-error @+1 {{failed to legalize operation 'arith.constant'}}
|
|
%1 = arith.constant dense<0.0> : tensor<2xf64>
|
|
return
|
|
}
|
|
|
|
// -----
|
|
|
|
// Regression test: arith.trunci on tensor types should not crash
|
|
// (https://github.com/llvm/llvm-project/issues/178214).
|
|
func.func @trunci_tensor_no_crash(%arg0: tensor<1xi32>) -> tensor<1xi16> {
|
|
// expected-error @+1 {{failed to legalize operation 'arith.trunci'}}
|
|
%0 = arith.trunci %arg0 : tensor<1xi32> to tensor<1xi16>
|
|
return %0 : tensor<1xi16>
|
|
}
|
|
|
|
// -----
|
|
|
|
func.func @constant_dense_resource_non_existant() {
|
|
// expected-error @+2 {{failed to legalize operation 'arith.constant'}}
|
|
// expected-error @+1 {{could not find resource blob}}
|
|
%0 = arith.constant dense_resource<non_existant> : tensor<5xf32>
|
|
return
|
|
}
|
|
|
|
// -----
|
|
|
|
module {
|
|
func.func @constant_dense_resource_invalid_buffer() {
|
|
// expected-error @+2 {{failed to legalize operation 'arith.constant'}}
|
|
// expected-error @+1 {{resource is not a valid buffer}}
|
|
%0 = arith.constant dense_resource<dense_resource_test_2xi32> : vector<2xi32>
|
|
return
|
|
}
|
|
}
|
|
// This is a buffer of wrong type and shape
|
|
{-#
|
|
dialect_resources: {
|
|
builtin: {
|
|
dense_resource_test_2xi32: "0x0800000054A3B53ED6C0B33E55D1A2BDE5D2BB3E"
|
|
}
|
|
}
|
|
#-}
|
|
|
|
///===----------------------------------------------------------------------===//
|
|
// Type emulation
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// -----
|
|
|
|
module attributes {
|
|
spirv.target_env = #spirv.target_env<
|
|
#spirv.vce<v1.0, [], []>, #spirv.resource_limits<>>
|
|
} {
|
|
|
|
// Check that we do not emualte i64 by truncating to i32.
|
|
func.func @unsupported_i64(%arg0: i64) {
|
|
// expected-error@+1 {{failed to legalize operation 'arith.addi'}}
|
|
%2 = arith.addi %arg0, %arg0: i64
|
|
return
|
|
}
|
|
|
|
} // end module
|
|
|
|
// -----
|
|
|
|
module attributes {
|
|
spirv.target_env = #spirv.target_env<
|
|
#spirv.vce<v1.0, [], []>, #spirv.resource_limits<>>
|
|
} {
|
|
|
|
// Check that we do not emualte f64 by truncating to i32.
|
|
func.func @unsupported_f64(%arg0: f64) {
|
|
// expected-error@+1 {{failed to legalize operation 'arith.addf'}}
|
|
%2 = arith.addf %arg0, %arg0: f64
|
|
return
|
|
}
|
|
|
|
} // end module
|
|
|
|
// -----
|
|
|
|
module attributes {
|
|
spirv.target_env = #spirv.target_env<
|
|
#spirv.vce<v1.0, [], []>, #spirv.resource_limits<>>
|
|
} {
|
|
|
|
// i64 is not a valid result type in this target env.
|
|
func.func @type_conversion_failure(%arg0: i32) {
|
|
// expected-error@+1 {{failed to legalize operation 'arith.extsi'}}
|
|
%2 = arith.extsi %arg0 : i32 to i64
|
|
return
|
|
}
|
|
|
|
} // end module
|