You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
3.7 KiB
148 lines
3.7 KiB
4 months ago
|
// RUN: mlir-opt -allow-unregistered-dialect %s -split-input-file | FileCheck %s
|
||
|
|
||
|
// -----
|
||
|
// All per-layer params specified:
|
||
|
// [signed] storageType, storageTypeMin, storageTypeMax, expressedType, scale, zeroPoint
|
||
|
// CHECK: !quant.uniform<i8<-8:7>:f32, 9.987200e-01:127>
|
||
|
!qalias = type !quant.uniform<i8<-8:7>:f32, 0.99872:127>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Trailing whitespace.
|
||
|
// CHECK: !quant.uniform<i8<-8:7>:f32, 9.987200e-01:127>
|
||
|
!qalias = type !quant.uniform<i8<-8:7>:f32, 0.99872:127 >
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Required per-layer params specified:
|
||
|
// [unsigned] storageType, expressedType, scale
|
||
|
// CHECK: !quant.uniform<u8:f32, 9.987200e-01>
|
||
|
!qalias = type !quant.uniform<u8:f32, 0.99872>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Exponential scale (-)
|
||
|
// CHECK: !quant.uniform<u8:f32, 2.000000e-02>
|
||
|
!qalias = type !quant.uniform<u8:f32, 2.0e-2>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Exponential scale (+)
|
||
|
// CHECK: !quant.uniform<u8:f32, 2.000000e+02>
|
||
|
!qalias = type !quant.uniform<u8:f32, 2.0e+2>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Storage type: i16
|
||
|
// CHECK: !quant.uniform<i16:f32, 2.000000e+02>
|
||
|
!qalias = type !quant.uniform<i16:f32, 2.0e+2>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Storage type: u16
|
||
|
// CHECK: !quant.uniform<u16:f32, 2.000000e+02>
|
||
|
!qalias = type !quant.uniform<u16:f32, 2.0e+2>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Storage type: i32
|
||
|
// CHECK: !quant.uniform<i32:f32, 2.000000e+02>
|
||
|
!qalias = type !quant.uniform<i32:f32, 2.0e+2>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Storage type: u32
|
||
|
// CHECK: !quant.uniform<u32:f32, 2.000000e+02>
|
||
|
!qalias = type !quant.uniform<u32:f32, 2.0e+2>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Expressed type: f32
|
||
|
// CHECK: !quant.uniform<u8:f32, 2.000000e+02>
|
||
|
!qalias = type !quant.uniform<u8:f32, 2.0e+2>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Expressed type: f16
|
||
|
// CHECK: !quant.uniform<u8:f16, 2.000000e+02>
|
||
|
!qalias = type !quant.uniform<u8:f16, 2.0e+2>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Expressed type: f64
|
||
|
// CHECK: !quant.uniform<u8:f64, 2.000000e+02>
|
||
|
!qalias = type !quant.uniform<u8:f64, 2.0e+2>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Expressed type: bf16
|
||
|
// CHECK: !quant.uniform<u8:bf16, 2.000000e+02>
|
||
|
!qalias = type !quant.uniform<u8:bf16, 2.0e+2>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Per-axis scales and zero points (affine)
|
||
|
// CHECK: !quant.uniform<u8:f32:1, {2.000000e+02:-120,9.987200e-01:127}>
|
||
|
!qalias = type !quant.uniform<u8:f32:1, {2.0e+2:-120,0.99872:127}>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Per-axis scales and no zero points (fixedpoint)
|
||
|
// CHECK: !quant.uniform<i8:f32:1, {2.000000e+02,9.987200e-01}>
|
||
|
!qalias = type !quant.uniform<i8:f32:1, {2.0e+2,0.99872}>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|
||
|
|
||
|
// -----
|
||
|
// Per-axis scales and zero points (mixed affine and fixedpoint)
|
||
|
// CHECK: !quant.uniform<i8:f32:1, {2.000000e+02,9.987200e-01:120}>
|
||
|
!qalias = type !quant.uniform<i8:f32:1, {2.0e+2,0.99872:120}>
|
||
|
func @parse() -> !qalias {
|
||
|
%0 = "foo"() : () -> !qalias
|
||
|
return %0 : !qalias
|
||
|
}
|