blob: 02519ac0c6dd17085468c1a3a79fa430eda94aec [file] [edit]
// RUN: mlir-opt %s --convert-amdgpu-to-rocdl=chipset=gfx906 --split-input-file -verify-diagnostics
// RUN: mlir-opt %s --convert-amdgpu-to-rocdl=chipset=gfx942 --split-input-file -verify-diagnostics
// fp8 dot4 is only available on gfx12+.
func.func @dot_fp8_requires_gfx12(%a: vector<4xf8E4M3FN>, %b: vector<4xf8E4M3FN>, %c: f32) -> f32 {
// expected-error@below {{'amdgpu.dot' op no intrinsic matching dot on the given chipset}}
// expected-error@below {{failed to legalize operation 'amdgpu.dot'}}
%r = amdgpu.dot %a * %b + %c : vector<4xf8E4M3FN>, vector<4xf8E4M3FN>, f32
func.return %r : f32
}
// -----
// fdot2.f16.f16 (f16 accumulator for f16 x f16) requires gfx11+.
func.func @dot_f16_f16_requires_gfx11(%a: vector<2xf16>, %b: vector<2xf16>, %c: f16) -> f16 {
// expected-error@below {{'amdgpu.dot' op no intrinsic matching dot on the given chipset}}
// expected-error@below {{failed to legalize operation 'amdgpu.dot'}}
%r = amdgpu.dot %a * %b + %c : vector<2xf16>, vector<2xf16>, f16
func.return %r : f16
}
// -----
// fdot2.f32.bf16 is available on gfx11+ and gfx950+.
func.func @dot_f32_bf16_requires_gfx11_or_gfx950(%a: vector<2xbf16>, %b: vector<2xbf16>, %c: f32) -> f32 {
// expected-error@below {{'amdgpu.dot' op no intrinsic matching dot on the given chipset}}
// expected-error@below {{failed to legalize operation 'amdgpu.dot'}}
%r = amdgpu.dot %a * %b + %c : vector<2xbf16>, vector<2xbf16>, f32
func.return %r : f32
}
// -----
// Mixed-sign integer dot (sudot) requires gfx11+.
func.func @dot_mixed_sign_requires_gfx11(%a: vector<4xi8>, %b: vector<4xi8>, %c: i32) -> i32 {
// expected-error@below {{'amdgpu.dot' op no intrinsic matching dot on the given chipset}}
// expected-error@below {{failed to legalize operation 'amdgpu.dot'}}
%r = amdgpu.dot %a * %b + %c {unsignedB} : vector<4xi8>, vector<4xi8>, i32
func.return %r : i32
}