1// RUN: mlir-opt %s | mlir-opt | FileCheck %s
2// RUN: mlir-opt %s --mlir-print-op-generic | mlir-opt | FileCheck %s
3
4
5// CHECK-LABEL: func @ops(
6// CHECK-SAME:            %[[F:.*]]: f32) {
7func.func @ops(%f: f32) {
8  // CHECK: complex.constant [1.{{.*}}, -1.{{.*}}] : complex<f64>
9  %cst_f64 = complex.constant [0.1, -1.0] : complex<f64>
10
11  // CHECK: complex.constant [1.{{.*}} : f32, -1.{{.*}} : f32] : complex<f32>
12  %cst_f32 = complex.constant [0.1 : f32, -1.0 : f32] : complex<f32>
13
14  // CHECK: %[[C:.*]] = complex.create %[[F]], %[[F]] : complex<f32>
15  %complex = complex.create %f, %f : complex<f32>
16
17  // CHECK: complex.re %[[C]] : complex<f32>
18  %real = complex.re %complex : complex<f32>
19
20  // CHECK: complex.im %[[C]] : complex<f32>
21  %imag = complex.im %complex : complex<f32>
22
23  // CHECK: complex.abs %[[C]] : complex<f32>
24  %abs = complex.abs %complex : complex<f32>
25
26  // CHECK: complex.add %[[C]], %[[C]] : complex<f32>
27  %sum = complex.add %complex, %complex : complex<f32>
28
29  // CHECK: complex.div %[[C]], %[[C]] : complex<f32>
30  %div = complex.div %complex, %complex : complex<f32>
31
32  // CHECK: complex.eq %[[C]], %[[C]] : complex<f32>
33  %eq = complex.eq %complex, %complex : complex<f32>
34
35  // CHECK: complex.exp %[[C]] : complex<f32>
36  %exp = complex.exp %complex : complex<f32>
37
38  // CHECK: complex.log %[[C]] : complex<f32>
39  %log = complex.log %complex : complex<f32>
40
41  // CHECK: complex.log1p %[[C]] : complex<f32>
42  %log1p = complex.log1p %complex : complex<f32>
43
44  // CHECK: complex.mul %[[C]], %[[C]] : complex<f32>
45  %prod = complex.mul %complex, %complex : complex<f32>
46
47  // CHECK: complex.neg %[[C]] : complex<f32>
48  %neg = complex.neg %complex : complex<f32>
49
50  // CHECK: complex.neq %[[C]], %[[C]] : complex<f32>
51  %neq = complex.neq %complex, %complex : complex<f32>
52
53  // CHECK: complex.sign %[[C]] : complex<f32>
54  %sign = complex.sign %complex : complex<f32>
55
56  // CHECK: complex.sub %[[C]], %[[C]] : complex<f32>
57  %diff = complex.sub %complex, %complex : complex<f32>
58  return
59}
60