xref: /llvm-project/mlir/test/Dialect/Polynomial/attributes.mlir (revision 4425dfba6a1f394e958e94aa471a07bcf707136a)
155b6f170SJeremy Kun// RUN: mlir-opt %s --split-input-file --verify-diagnostics
255b6f170SJeremy Kun
32ff43ce8SJeremy Kun#my_poly = #polynomial.int_polynomial<y + x**1024>
455b6f170SJeremy Kun// expected-error@below {{polynomials must have one indeterminate, but there were multiple: x, y}}
555b6f170SJeremy Kun#ring1 = #polynomial.ring<coefficientType=i32, coefficientModulus=2837465, polynomialModulus=#my_poly>
655b6f170SJeremy Kun
755b6f170SJeremy Kun// -----
855b6f170SJeremy Kun
955b6f170SJeremy Kun// expected-error@below {{expected integer value}}
1055b6f170SJeremy Kun// expected-error@below {{expected a monomial}}
1155b6f170SJeremy Kun// expected-error@below {{found invalid integer exponent}}
122ff43ce8SJeremy Kun#my_poly = #polynomial.int_polynomial<5 + x**f>
1355b6f170SJeremy Kun#ring1 = #polynomial.ring<coefficientType=i32, coefficientModulus=2837465, polynomialModulus=#my_poly>
1455b6f170SJeremy Kun
1555b6f170SJeremy Kun// -----
1655b6f170SJeremy Kun
172ff43ce8SJeremy Kun#my_poly = #polynomial.int_polynomial<5 + x**2 + 3x**2>
1855b6f170SJeremy Kun// expected-error@below {{parsed polynomial must have unique exponents among monomials}}
1955b6f170SJeremy Kun#ring1 = #polynomial.ring<coefficientType=i32, coefficientModulus=2837465, polynomialModulus=#my_poly>
2055b6f170SJeremy Kun
2155b6f170SJeremy Kun// -----
2255b6f170SJeremy Kun
2355b6f170SJeremy Kun// expected-error@below {{expected + and more monomials, or > to end polynomial attribute}}
242ff43ce8SJeremy Kun#my_poly = #polynomial.int_polynomial<5 + x**2 7>
2555b6f170SJeremy Kun#ring1 = #polynomial.ring<coefficientType=i32, coefficientModulus=2837465, polynomialModulus=#my_poly>
2655b6f170SJeremy Kun
2755b6f170SJeremy Kun// -----
2855b6f170SJeremy Kun
2955b6f170SJeremy Kun// expected-error@below {{expected a monomial}}
302ff43ce8SJeremy Kun#my_poly = #polynomial.int_polynomial<5 + x**2 +>
3155b6f170SJeremy Kun#ring1 = #polynomial.ring<coefficientType=i32, coefficientModulus=2837465, polynomialModulus=#my_poly>
3255b6f170SJeremy Kun
3355b6f170SJeremy Kun
3455b6f170SJeremy Kun// -----
3555b6f170SJeremy Kun
362ff43ce8SJeremy Kun#my_poly = #polynomial.int_polynomial<5 + x**2>
372ff43ce8SJeremy Kun// expected-error@below {{failed to parse Polynomial_RingAttr parameter 'coefficientModulus' which is to be a `::mlir::IntegerAttr`}}
382ff43ce8SJeremy Kun// expected-error@below {{expected attribute value}}
3955b6f170SJeremy Kun#ring1 = #polynomial.ring<coefficientType=i32, coefficientModulus=x, polynomialModulus=#my_poly>
40*4425dfbaSHongren Zheng
41*4425dfbaSHongren Zheng// -----
42*4425dfbaSHongren Zheng
43*4425dfbaSHongren Zheng// expected-error@below {{coefficientModulus specified but coefficientType is not integral}}
44*4425dfbaSHongren Zheng#ring1 = #polynomial.ring<coefficientType=f32, coefficientModulus=17>
45*4425dfbaSHongren Zheng
46*4425dfbaSHongren Zheng// -----
47*4425dfbaSHongren Zheng
48*4425dfbaSHongren Zheng// expected-error@below {{coefficientModulus should not be 0}}
49*4425dfbaSHongren Zheng#ring1 = #polynomial.ring<coefficientType=i32, coefficientModulus=0>
50*4425dfbaSHongren Zheng
51*4425dfbaSHongren Zheng// -----
52*4425dfbaSHongren Zheng
53*4425dfbaSHongren Zheng// expected-error@below {{coefficientModulus should be positive}}
54*4425dfbaSHongren Zheng#ring1 = #polynomial.ring<coefficientType=i32, coefficientModulus=-1>
55*4425dfbaSHongren Zheng
56*4425dfbaSHongren Zheng// -----
57*4425dfbaSHongren Zheng
58*4425dfbaSHongren Zheng// expected-error@below {{coefficientModulus needs bit width of 33 but coefficientType can only contain 32 bits}}
59*4425dfbaSHongren Zheng#ring1 = #polynomial.ring<coefficientType=i32, coefficientModulus=4294967297>
60*4425dfbaSHongren Zheng
61*4425dfbaSHongren Zheng// -----
62*4425dfbaSHongren Zheng
63*4425dfbaSHongren Zheng#ring1 = #polynomial.ring<coefficientType=i32, coefficientModulus=4294967296>
64*4425dfbaSHongren Zheng
65*4425dfbaSHongren Zheng// -----
66*4425dfbaSHongren Zheng
67*4425dfbaSHongren Zheng// expected-error@below {{coefficientModulus should be positive}}
68*4425dfbaSHongren Zheng#ring1 = #polynomial.ring<coefficientType=i64, coefficientModulus=18446744073709551615>
69*4425dfbaSHongren Zheng
70*4425dfbaSHongren Zheng// -----
71*4425dfbaSHongren Zheng
72*4425dfbaSHongren Zheng// unfortunately, coefficientModulus of 64bit should be contained in larger type
73*4425dfbaSHongren Zheng#ring1 = #polynomial.ring<coefficientType=i64, coefficientModulus=18446744073709551615 : i128>
74