brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · 80a6621 Raw
175 lines · plain
1// RUN: mlir-opt -allow-unregistered-dialect %s -split-input-file | FileCheck %s2 3// -----4// All per-layer params specified:5//   [signed] storageType, storageTypeMin, storageTypeMax, expressedType, scale, zeroPoint6// CHECK: !quant.uniform<i8<-8:7>:f32, 9.987200e-01:127>7!qalias = !quant.uniform<i8<-8:7>:f32, 0.99872:127>8func.func @parse() -> !qalias {9  %0 = "foo"() : () -> !qalias10  return %0 : !qalias11}12 13// -----14// Trailing whitespace.15// CHECK: !quant.uniform<i8<-8:7>:f32, 9.987200e-01:127>16!qalias = !quant.uniform<i8<-8:7>:f32, 0.99872:127  >17func.func @parse() -> !qalias {18  %0 = "foo"() : () -> !qalias19  return %0 : !qalias20}21 22// -----23// Required per-layer params specified:24//   [unsigned] storageType, expressedType, scale25// CHECK: !quant.uniform<u8:f32, 9.987200e-01>26!qalias = !quant.uniform<u8:f32, 0.99872>27func.func @parse() -> !qalias {28  %0 = "foo"() : () -> !qalias29  return %0 : !qalias30}31 32// -----33// Exponential scale (-)34// CHECK: !quant.uniform<u8:f32, 2.000000e-02>35!qalias = !quant.uniform<u8:f32, 2.0e-2>36func.func @parse() -> !qalias {37  %0 = "foo"() : () -> !qalias38  return %0 : !qalias39}40 41// -----42// Exponential scale (+)43// CHECK: !quant.uniform<u8:f32, 2.000000e+02>44!qalias = !quant.uniform<u8:f32, 2.0e+2>45func.func @parse() -> !qalias {46  %0 = "foo"() : () -> !qalias47  return %0 : !qalias48}49 50// -----51// Storage type: i1652// CHECK: !quant.uniform<i16:f32, 2.000000e+02>53!qalias = !quant.uniform<i16:f32, 2.0e+2>54func.func @parse() -> !qalias {55  %0 = "foo"() : () -> !qalias56  return %0 : !qalias57}58 59// -----60// Storage type: u1661// CHECK: !quant.uniform<u16:f32, 2.000000e+02>62!qalias = !quant.uniform<u16:f32, 2.0e+2>63func.func @parse() -> !qalias {64  %0 = "foo"() : () -> !qalias65  return %0 : !qalias66}67 68// -----69// Storage type: i3270// CHECK: !quant.uniform<i32:f32, 2.000000e+02>71!qalias = !quant.uniform<i32:f32, 2.0e+2>72func.func @parse() -> !qalias {73  %0 = "foo"() : () -> !qalias74  return %0 : !qalias75}76 77// -----78// Storage type: u3279// CHECK: !quant.uniform<u32:f32, 2.000000e+02>80!qalias = !quant.uniform<u32:f32, 2.0e+2>81func.func @parse() -> !qalias {82  %0 = "foo"() : () -> !qalias83  return %0 : !qalias84}85 86// -----87// Expressed type: f3288// CHECK: !quant.uniform<u8:f32, 2.000000e+02>89!qalias = !quant.uniform<u8:f32, 2.0e+2>90func.func @parse() -> !qalias {91  %0 = "foo"() : () -> !qalias92  return %0 : !qalias93}94 95// -----96// Expressed type: f3297// CHECK: !quant.uniform<u8:f32, 0x41646ABBA0000000:128>98!qalias = !quant.uniform<u8:f32, 0x41646ABBA0000000:128>99func.func @parse() -> !qalias {100  %0 = "foo"() : () -> !qalias101  return %0 : !qalias102}103 104// -----105// Expressed type: f16106// CHECK: !quant.uniform<u8:f16, 2.000000e+02>107!qalias = !quant.uniform<u8:f16, 2.0e+2>108func.func @parse() -> !qalias {109  %0 = "foo"() : () -> !qalias110  return %0 : !qalias111}112 113// -----114// Expressed type: f64115// CHECK: !quant.uniform<u8:f64, 2.000000e+02>116!qalias = !quant.uniform<u8:f64, 2.0e+2>117func.func @parse() -> !qalias {118  %0 = "foo"() : () -> !qalias119  return %0 : !qalias120}121 122// -----123// Expressed type: bf16124// CHECK: !quant.uniform<u8:bf16, 2.000000e+02>125!qalias = !quant.uniform<u8:bf16, 2.0e+2>126func.func @parse() -> !qalias {127  %0 = "foo"() : () -> !qalias128  return %0 : !qalias129}130 131// -----132// Per-axis scales and zero points (affine)133// CHECK: !quant.uniform<u8:f32:1, {2.000000e+02:-120,9.987200e-01:127}>134!qalias = !quant.uniform<u8:f32:1, {2.0e+2:-120,0.99872:127}>135func.func @parse() -> !qalias {136  %0 = "foo"() : () -> !qalias137  return %0 : !qalias138}139 140// -----141// Per-axis scales and no zero points (fixedpoint)142// CHECK: !quant.uniform<i8:f32:1, {2.000000e+02,9.987200e-01}>143!qalias = !quant.uniform<i8:f32:1, {2.0e+2,0.99872}>144func.func @parse() -> !qalias {145  %0 = "foo"() : () -> !qalias146  return %0 : !qalias147}148 149// -----150// Per-axis scales and zero points (mixed affine and fixedpoint)151// CHECK: !quant.uniform<i8:f32:1, {2.000000e+02,9.987200e-01:120}>152!qalias = !quant.uniform<i8:f32:1, {2.0e+2,0.99872:120}>153func.func @parse() -> !qalias {154  %0 = "foo"() : () -> !qalias155  return %0 : !qalias156}157 158// -----159// Sub-channel scales and zero points (mixed affine and fixedpoint)160// CHECK: !quant.uniform<u8:f32:{0:1, 1:2}, {{\{}}{2.000000e+00:120, 3.000000e+00:127}, {4.000000e+00, 5.000000e+00}}>161!qalias = !quant.uniform<u8:f32:{0:1, 1:2}, {{2.0:120,3.0:127}, {4.0,5.0}}>162func.func @parse() -> !qalias {163  %0 = "foo"() : () -> !qalias164  return %0 : !qalias165}166 167// -----168// Empty block-size information in sub-channel quantization169// CHECK: !quant.uniform<u8:f32:{}, {{\{}}{2.000000e+00:120, 3.000000e+00:127}, {4.000000e+00, 5.000000e+00}}>170!qalias = !quant.uniform<u8:f32:{}, {{2.0:120,3.0:127}, {4.0,5.0}}>171func.func @parse() -> !qalias {172  %0 = "foo"() : () -> !qalias173  return %0 : !qalias174}175