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