@@ -52,8 +52,8 @@ def Polynomial_AddOp : Polynomial_BinaryOp<"add", [Commutative]> {
52
52
// add two polynomials modulo x^1024 - 1
53
53
#poly = #polynomial.int_polynomial<x**1024 - 1>
54
54
#ring = #polynomial.ring<coefficientType=i32, coefficientModulus=65536:i32, polynomialModulus=#poly>
55
- %0 = polynomial.constant #polynomial.int_polynomial <1 + x**2> : !polynomial.polynomial<#ring>
56
- %1 = polynomial.constant #polynomial.int_polynomial <x**5 - x + 1> : !polynomial.polynomial<#ring>
55
+ %0 = polynomial.constant int <1 + x**2> : !polynomial.polynomial<#ring>
56
+ %1 = polynomial.constant int <x**5 - x + 1> : !polynomial.polynomial<#ring>
57
57
%2 = polynomial.add %0, %1 : !polynomial.polynomial<#ring>
58
58
```
59
59
}];
@@ -76,8 +76,8 @@ def Polynomial_SubOp : Polynomial_BinaryOp<"sub"> {
76
76
// subtract two polynomials modulo x^1024 - 1
77
77
#poly = #polynomial.int_polynomial<x**1024 - 1>
78
78
#ring = #polynomial.ring<coefficientType=i32, coefficientModulus=65536:i32, polynomialModulus=#poly>
79
- %0 = polynomial.constant #polynomial.int_polynomial <1 + x**2> : !polynomial.polynomial<#ring>
80
- %1 = polynomial.constant #polynomial.int_polynomial <x**5 - x + 1> : !polynomial.polynomial<#ring>
79
+ %0 = polynomial.constant int <1 + x**2> : !polynomial.polynomial<#ring>
80
+ %1 = polynomial.constant int <x**5 - x + 1> : !polynomial.polynomial<#ring>
81
81
%2 = polynomial.sub %0, %1 : !polynomial.polynomial<#ring>
82
82
```
83
83
}];
@@ -101,8 +101,8 @@ def Polynomial_MulOp : Polynomial_BinaryOp<"mul", [Commutative]> {
101
101
// multiply two polynomials modulo x^1024 - 1
102
102
#poly = #polynomial.int_polynomial<x**1024 - 1>
103
103
#ring = #polynomial.ring<coefficientType=i32, coefficientModulus=65536:i32, polynomialModulus=#poly>
104
- %0 = polynomial.constant #polynomial.int_polynomial <1 + x**2> : !polynomial.polynomial<#ring>
105
- %1 = polynomial.constant #polynomial.int_polynomial <x**5 - x + 1> : !polynomial.polynomial<#ring>
104
+ %0 = polynomial.constant int <1 + x**2> : !polynomial.polynomial<#ring>
105
+ %1 = polynomial.constant int <x**5 - x + 1> : !polynomial.polynomial<#ring>
106
106
%2 = polynomial.mul %0, %1 : !polynomial.polynomial<#ring>
107
107
```
108
108
}];
@@ -126,7 +126,7 @@ def Polynomial_MulScalarOp : Polynomial_Op<"mul_scalar", [
126
126
// multiply two polynomials modulo x^1024 - 1
127
127
#poly = #polynomial.int_polynomial<x**1024 - 1>
128
128
#ring = #polynomial.ring<coefficientType=i32, coefficientModulus=65536:i32, polynomialModulus=#poly>
129
- %0 = polynomial.constant #polynomial.int_polynomial <1 + x**2> : !polynomial.polynomial<#ring>
129
+ %0 = polynomial.constant int <1 + x**2> : !polynomial.polynomial<#ring>
130
130
%1 = arith.constant 3 : i32
131
131
%2 = polynomial.mul_scalar %0, %1 : !polynomial.polynomial<#ring>, i32
132
132
```
@@ -157,7 +157,7 @@ def Polynomial_LeadingTermOp: Polynomial_Op<"leading_term"> {
157
157
```mlir
158
158
#poly = #polynomial.int_polynomial<x**1024 - 1>
159
159
#ring = #polynomial.ring<coefficientType=i32, coefficientModulus=65536:i32, polynomialModulus=#poly>
160
- %0 = polynomial.constant #polynomial.int_polynomial <1 + x**2> : !polynomial.polynomial<#ring>
160
+ %0 = polynomial.constant int <1 + x**2> : !polynomial.polynomial<#ring>
161
161
%1, %2 = polynomial.leading_term %0 : !polynomial.polynomial<#ring> -> (index, i32)
162
162
```
163
163
}];
@@ -272,29 +272,29 @@ def Polynomial_ToTensorOp : Polynomial_Op<"to_tensor", [Pure]> {
272
272
let hasVerifier = 1;
273
273
}
274
274
275
- def Polynomial_AnyPolynomialAttr : AnyAttrOf<[
276
- Polynomial_FloatPolynomialAttr ,
277
- Polynomial_IntPolynomialAttr
275
+ def Polynomial_AnyTypedPolynomialAttr : AnyAttrOf<[
276
+ Polynomial_TypedFloatPolynomialAttr ,
277
+ Polynomial_TypedIntPolynomialAttr
278
278
]>;
279
279
280
280
// Not deriving from Polynomial_Op due to need for custom assembly format
281
- def Polynomial_ConstantOp : Op<Polynomial_Dialect, "constant", [Pure]> {
281
+ def Polynomial_ConstantOp : Op<Polynomial_Dialect, "constant",
282
+ [Pure, InferTypeOpAdaptor]> {
282
283
let summary = "Define a constant polynomial via an attribute.";
283
284
let description = [{
284
285
Example:
285
286
286
287
```mlir
287
- #poly = #polynomial.int_polynomial<x**1024 - 1>
288
- #ring = #polynomial.ring<coefficientType=i32, coefficientModulus=65536:i32, polynomialModulus=#poly>
289
- %0 = polynomial.constant #polynomial.int_polynomial<1 + x**2> : !polynomial.polynomial<#ring>
288
+ !int_poly_ty = !polynomial.polynomial<ring=<coefficientType=i32>>
289
+ %0 = polynomial.constant int<1 + x**2> : !int_poly_ty
290
290
291
- #float_ring = # polynomial.ring<coefficientType=f32>
292
- %0 = polynomial.constant #polynomial.float_polynomial <0.5 + 1.3e06 x**2> : !polynomial.polynomial<#float_ring>
291
+ !float_poly_ty = ! polynomial.polynomial< ring= <coefficientType=f32> >
292
+ %1 = polynomial.constant float <0.5 + 1.3e06 x**2> : !float_poly_ty
293
293
```
294
294
}];
295
- let arguments = (ins Polynomial_AnyPolynomialAttr :$value);
295
+ let arguments = (ins Polynomial_AnyTypedPolynomialAttr :$value);
296
296
let results = (outs Polynomial_PolynomialType:$output);
297
- let assemblyFormat = "attr-dict `:` type($output)" ;
297
+ let hasCustomAssemblyFormat = 1 ;
298
298
}
299
299
300
300
def Polynomial_NTTOp : Polynomial_Op<"ntt", [Pure]> {
0 commit comments