brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · 2e2fb1a Raw
140 lines · plain
1// RUN: mlir-opt -split-input-file -verify-diagnostics %s | FileCheck %s2 3//===----------------------------------------------------------------------===//4// spirv.INTEL.ConvertFToBF165//===----------------------------------------------------------------------===//6 7spirv.func @f32_to_bf16(%arg0 : f32) "None" {8  // CHECK: {{%.*}} = spirv.INTEL.ConvertFToBF16 {{%.*}} : f32 to i169  %0 = spirv.INTEL.ConvertFToBF16 %arg0 : f32 to i1610  spirv.Return11}12 13// -----14 15spirv.func @f32_to_bf16_vec(%arg0 : vector<2xf32>) "None" {16  // CHECK: {{%.*}} = spirv.INTEL.ConvertFToBF16 {{%.*}} : vector<2xf32> to vector<2xi16>17  %0 = spirv.INTEL.ConvertFToBF16 %arg0 : vector<2xf32> to vector<2xi16>18  spirv.Return19}20 21// -----22 23spirv.func @f32_to_bf16_unsupported(%arg0 : f64) "None" {24  // expected-error @+1 {{operand #0 must be Float32 or fixed-length vector of Float32 values of length 2/3/4/8/16, but got}}25  %0 = spirv.INTEL.ConvertFToBF16 %arg0 : f64 to i1626  spirv.Return27}28 29// -----30 31spirv.func @f32_to_bf16_vec_unsupported(%arg0 : vector<2xf32>) "None" {32  // expected-error @+1 {{op requires the same shape for all operands and results}}33  %0 = spirv.INTEL.ConvertFToBF16 %arg0 : vector<2xf32> to vector<4xi16>34  spirv.Return35}36 37// -----38 39//===----------------------------------------------------------------------===//40// spirv.INTEL.ConvertBF16ToF41//===----------------------------------------------------------------------===//42 43spirv.func @bf16_to_f32(%arg0 : i16) "None" {44  // CHECK: {{%.*}} = spirv.INTEL.ConvertBF16ToF {{%.*}} : i16 to f3245  %0 = spirv.INTEL.ConvertBF16ToF %arg0 : i16 to f3246  spirv.Return47}48 49// -----50 51spirv.func @bf16_to_f32_vec(%arg0 : vector<2xi16>) "None" {52    // CHECK: {{%.*}} = spirv.INTEL.ConvertBF16ToF {{%.*}} : vector<2xi16> to vector<2xf32>53    %0 = spirv.INTEL.ConvertBF16ToF %arg0 : vector<2xi16> to vector<2xf32>54    spirv.Return55}56 57// -----58 59spirv.func @bf16_to_f32_unsupported(%arg0 : i16) "None" {60  // expected-error @+1 {{result #0 must be Float32 or fixed-length vector of Float32 values of length 2/3/4/8/16, but got}}61  %0 = spirv.INTEL.ConvertBF16ToF %arg0 : i16 to f1662  spirv.Return63}64 65// -----66 67spirv.func @bf16_to_f32_vec_unsupported(%arg0 : vector<2xi16>) "None" {68  // expected-error @+1 {{op requires the same shape for all operands and results}}69  %0 = spirv.INTEL.ConvertBF16ToF %arg0 : vector<2xi16> to vector<3xf32>70  spirv.Return71}72 73// -----74 75//===----------------------------------------------------------------------===//76// spirv.INTEL.RoundFToTF3277//===----------------------------------------------------------------------===//78 79spirv.func @f32_to_tf32(%arg0 : f32) "None" {80  // CHECK: {{%.*}} = spirv.INTEL.RoundFToTF32 {{%.*}} : f32 to f3281  %0 = spirv.INTEL.RoundFToTF32 %arg0 : f32 to f3282  spirv.Return83}84 85// -----86 87spirv.func @f32_to_tf32_vec(%arg0 : vector<2xf32>) "None" {88  // CHECK: {{%.*}} = spirv.INTEL.RoundFToTF32 {{%.*}} : vector<2xf32> to vector<2xf32>89  %0 = spirv.INTEL.RoundFToTF32 %arg0 : vector<2xf32> to vector<2xf32>90  spirv.Return91}92 93// -----94 95spirv.func @f32_to_tf32_unsupported(%arg0 : f64) "None" {96  // expected-error @+1 {{op operand #0 must be Float32 or fixed-length vector of Float32 values of length 2/3/4/8/16, but got 'f64'}}97  %0 = spirv.INTEL.RoundFToTF32 %arg0 : f64 to f3298  spirv.Return99}100 101// -----102 103spirv.func @f32_to_tf32_vec_unsupported(%arg0 : vector<2xf32>) "None" {104  // expected-error @+1 {{op requires the same shape for all operands and results}}105  %0 = spirv.INTEL.RoundFToTF32 %arg0 : vector<2xf32> to vector<4xf32>106  spirv.Return107}108 109// -----110 111//===----------------------------------------------------------------------===//112// spirv.INTEL.SplitBarrier113//===----------------------------------------------------------------------===//114 115spirv.func @split_barrier() "None" {116  // CHECK: spirv.INTEL.ControlBarrierArrive <Workgroup> <Device> <Acquire|UniformMemory>117  spirv.INTEL.ControlBarrierArrive <Workgroup> <Device> <Acquire|UniformMemory>118  // CHECK: spirv.INTEL.ControlBarrierWait <Workgroup> <Device> <Acquire|UniformMemory>119  spirv.INTEL.ControlBarrierWait <Workgroup> <Device> <Acquire|UniformMemory>120  spirv.Return121}122 123// -----124 125//===----------------------------------------------------------------------===//126// spirv.INTEL.CacheControls127//===----------------------------------------------------------------------===//128 129spirv.module Logical GLSL450 requires #spirv.vce<v1.0, [CacheControlsINTEL], [SPV_INTEL_cache_controls]> {130  spirv.func @foo() "None" {131    // CHECK: spirv.Variable {cache_control_load_intel = [#spirv.cache_control_load_intel<cache_level = 0, load_cache_control = Uncached>, #spirv.cache_control_load_intel<cache_level = 1, load_cache_control = Cached>, #spirv.cache_control_load_intel<cache_level = 2, load_cache_control = InvalidateAfterR>]} : !spirv.ptr<f32, Function>132    %0 = spirv.Variable {cache_control_load_intel = [#spirv.cache_control_load_intel<cache_level = 0, load_cache_control = Uncached>, #spirv.cache_control_load_intel<cache_level = 1, load_cache_control = Cached>, #spirv.cache_control_load_intel<cache_level = 2, load_cache_control = InvalidateAfterR>]} : !spirv.ptr<f32, Function>133    // CHECK: spirv.Variable {cache_control_store_intel = [#spirv.cache_control_store_intel<cache_level = 0, store_cache_control = Uncached>, #spirv.cache_control_store_intel<cache_level = 1, store_cache_control = WriteThrough>, #spirv.cache_control_store_intel<cache_level = 2, store_cache_control = WriteBack>]} : !spirv.ptr<f32, Function>134    %1 = spirv.Variable {cache_control_store_intel = [#spirv.cache_control_store_intel<cache_level = 0, store_cache_control = Uncached>, #spirv.cache_control_store_intel<cache_level = 1, store_cache_control = WriteThrough>, #spirv.cache_control_store_intel<cache_level = 2, store_cache_control = WriteBack>]} : !spirv.ptr<f32, Function>135    spirv.Return136  }137}138 139// -----140