xref: /llvm-project/mlir/test/Dialect/Polynomial/types.mlir (revision 2ff43ce87e66d9324370e35ea6743ef57400c76e)
1// RUN: mlir-opt %s | FileCheck %s
2
3// CHECK-LABEL: func @test_types
4// CHECK-SAME:  !polynomial.polynomial<
5// CHECK-SAME:    ring = <
6// CHECK-SAME:       coefficientType = i32,
7// CHECK-SAME:       coefficientModulus = 2837465 : i32,
8// CHECK-SAME:       polynomialModulus = <1 + x**1024>>>
9#my_poly = #polynomial.int_polynomial<1 + x**1024>
10#ring1 = #polynomial.ring<coefficientType = i32, coefficientModulus = 2837465 : i32, polynomialModulus=#my_poly>
11!ty = !polynomial.polynomial<ring=#ring1>
12func.func @test_types(%0: !ty) -> !ty {
13  return %0 : !ty
14}
15
16
17// CHECK-LABEL: func @test_non_x_variable_64_bit
18// CHECK-SAME:  !polynomial.polynomial<
19// CHECK-SAME:    ring = <
20// CHECK-SAME:       coefficientType = i64,
21// CHECK-SAME:       coefficientModulus = 2837465 : i64,
22// CHECK-SAME:       polynomialModulus = <2 + 4x + x**3>>>
23#my_poly_2 = #polynomial.int_polynomial<t**3 + 4t + 2>
24#ring2 = #polynomial.ring<coefficientType = i64, coefficientModulus = 2837465 : i64, polynomialModulus=#my_poly_2>
25!ty2 = !polynomial.polynomial<ring=#ring2>
26func.func @test_non_x_variable_64_bit(%0: !ty2) -> !ty2 {
27  return %0 : !ty2
28}
29
30
31// CHECK-LABEL: func @test_linear_poly
32// CHECK-SAME:  !polynomial.polynomial<
33// CHECK-SAME:    ring = <
34// CHECK-SAME:       coefficientType = i32,
35// CHECK-SAME:       coefficientModulus = 12 : i32,
36// CHECK-SAME:       polynomialModulus = <4x>>
37#my_poly_3 = #polynomial.int_polynomial<4x>
38#ring3 = #polynomial.ring<coefficientType = i32, coefficientModulus=12 : i32, polynomialModulus=#my_poly_3>
39!ty3 = !polynomial.polynomial<ring=#ring3>
40func.func @test_linear_poly(%0: !ty3) -> !ty3 {
41  return %0 : !ty3
42}
43
44// CHECK-LABEL: func @test_negative_leading_1
45// CHECK-SAME:  !polynomial.polynomial<
46// CHECK-SAME:    ring = <
47// CHECK-SAME:       coefficientType = i32,
48// CHECK-SAME:       coefficientModulus = 2837465 : i32,
49// CHECK-SAME:       polynomialModulus = <-1 + x**1024>>>
50#my_poly_4 = #polynomial.int_polynomial<-1 + x**1024>
51#ring4 = #polynomial.ring<coefficientType = i32, coefficientModulus = 2837465 : i32, polynomialModulus=#my_poly_4>
52!ty4 = !polynomial.polynomial<ring=#ring4>
53func.func @test_negative_leading_1(%0: !ty4) -> !ty4 {
54  return %0 : !ty4
55}
56
57// CHECK-LABEL: func @test_float_coefficients
58// CHECK-SAME:  !polynomial.polynomial<ring = <coefficientType = f32>>
59#my_poly_5 = #polynomial.float_polynomial<0.5 + 1.6e03 x**1024>
60#ring5 = #polynomial.ring<coefficientType=f32>
61!ty5 = !polynomial.polynomial<ring=#ring5>
62func.func @test_float_coefficients(%0: !ty5) -> !ty5 {
63  return %0 : !ty5
64}
65
66