@@ -32,152 +32,37 @@ func @printF32(%arg0: f32)
32
32
func @printComma ()
33
33
func @printNewline ()
34
34
35
- // TODO: 'main' function currently has to be provided in LLVM dialect since
36
- // 'call' op is not yet supported by the bare pointer calling convention. The
37
- // LLVM dialect version was generated using the following loop/std dialect
38
- // version and minor changes around the 'simple_add1_add2_test' call.
35
+ func @main ()
36
+ {
37
+ %c2 = constant 2 : index
38
+ %c0 = constant 0 : index
39
+ %c1 = constant 1 : index
40
+ %cst = constant 1.000000e+00 : f32
41
+ %cst_0 = constant 2.000000e+00 : f32
42
+ %a = alloc () : memref <2 xf32 >
43
+ %b = alloc () : memref <2 xf32 >
44
+ scf.for %i = %c0 to %c2 step %c1 {
45
+ store %cst , %a [%i ] : memref <2 xf32 >
46
+ store %cst , %b [%i ] : memref <2 xf32 >
47
+ }
48
+
49
+ call @simple_add1_add2_test (%a , %b ) : (memref <2 xf32 >, memref <2 xf32 >) -> ()
39
50
40
- //func @main()
41
- //{
42
- // %c2 = constant 2 : index
43
- // %c0 = constant 0 : index
44
- // %c1 = constant 1 : index
45
- // %cst = constant 1.000000e+00 : f32
46
- // %cst_0 = constant 2.000000e+00 : f32
47
- // %a = alloc() : memref<2xf32>
48
- // %b = alloc() : memref<2xf32>
49
- // scf.for %i = %c0 to %c2 step %c1 {
50
- // store %cst, %a[%i] : memref<2xf32>
51
- // store %cst, %b[%i] : memref<2xf32>
52
- // }
53
- //
54
- // call @simple_add1_add2_test(%a, %b) : (memref<2xf32>, memref<2xf32>) -> ()
55
- //
56
- // %l0 = load %a[%c0] : memref<2xf32>
57
- // call @printF32(%l0) : (f32) -> ()
58
- // call @printComma() : () -> ()
59
- // %l1 = load %a[%c1] : memref<2xf32>
60
- // call @printF32(%l1) : (f32) -> ()
61
- // call @printNewline() : () -> ()
62
- //
63
- // %l2 = load %b[%c0] : memref<2xf32>
64
- // call @printF32(%l2) : (f32) -> ()
65
- // call @printComma() : () -> ()
66
- // %l3 = load %b[%c1] : memref<2xf32>
67
- // call @printF32(%l3) : (f32) -> ()
68
- // call @printNewline() : () -> ()
69
- //
70
- // dealloc %a : memref<2xf32>
71
- // dealloc %b : memref<2xf32>
72
- // return
73
- //}
51
+ %l0 = load %a [%c0 ] : memref <2 xf32 >
52
+ call @printF32 (%l0 ) : (f32 ) -> ()
53
+ call @printComma () : () -> ()
54
+ %l1 = load %a [%c1 ] : memref <2 xf32 >
55
+ call @printF32 (%l1 ) : (f32 ) -> ()
56
+ call @printNewline () : () -> ()
74
57
75
- llvm.func @main () {
76
- %0 = llvm.mlir.constant (2 : index ) : !llvm.i64
77
- %1 = llvm.mlir.constant (0 : index ) : !llvm.i64
78
- %2 = llvm.mlir.constant (1 : index ) : !llvm.i64
79
- %3 = llvm.mlir.constant (1.000000e+00 : f32 ) : !llvm.float
80
- %4 = llvm.mlir.constant (2.000000e+00 : f32 ) : !llvm.float
81
- %5 = llvm.mlir.constant (2 : index ) : !llvm.i64
82
- %6 = llvm.mlir.null : !llvm.ptr <float >
83
- %7 = llvm.mlir.constant (1 : index ) : !llvm.i64
84
- %8 = llvm.getelementptr %6 [%7 ] : (!llvm.ptr <float >, !llvm.i64 ) -> !llvm.ptr <float >
85
- %9 = llvm.ptrtoint %8 : !llvm.ptr <float > to !llvm.i64
86
- %10 = llvm.mul %5 , %9 : !llvm.i64
87
- %11 = llvm.call @malloc (%10 ) : (!llvm.i64 ) -> !llvm.ptr <i8 >
88
- %12 = llvm.bitcast %11 : !llvm.ptr <i8 > to !llvm.ptr <float >
89
- %13 = llvm.mlir.undef : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
90
- %14 = llvm.insertvalue %12 , %13 [0 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
91
- %15 = llvm.insertvalue %12 , %14 [1 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
92
- %16 = llvm.mlir.constant (0 : index ) : !llvm.i64
93
- %17 = llvm.insertvalue %16 , %15 [2 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
94
- %18 = llvm.mlir.constant (1 : index ) : !llvm.i64
95
- %19 = llvm.insertvalue %5 , %17 [3 , 0 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
96
- %20 = llvm.insertvalue %18 , %19 [4 , 0 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
97
- %21 = llvm.mlir.constant (2 : index ) : !llvm.i64
98
- %22 = llvm.mlir.null : !llvm.ptr <float >
99
- %23 = llvm.mlir.constant (1 : index ) : !llvm.i64
100
- %24 = llvm.getelementptr %22 [%23 ] : (!llvm.ptr <float >, !llvm.i64 ) -> !llvm.ptr <float >
101
- %25 = llvm.ptrtoint %24 : !llvm.ptr <float > to !llvm.i64
102
- %26 = llvm.mul %21 , %25 : !llvm.i64
103
- %27 = llvm.call @malloc (%26 ) : (!llvm.i64 ) -> !llvm.ptr <i8 >
104
- %28 = llvm.bitcast %27 : !llvm.ptr <i8 > to !llvm.ptr <float >
105
- %29 = llvm.mlir.undef : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
106
- %30 = llvm.insertvalue %28 , %29 [0 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
107
- %31 = llvm.insertvalue %28 , %30 [1 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
108
- %32 = llvm.mlir.constant (0 : index ) : !llvm.i64
109
- %33 = llvm.insertvalue %32 , %31 [2 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
110
- %34 = llvm.mlir.constant (1 : index ) : !llvm.i64
111
- %35 = llvm.insertvalue %21 , %33 [3 , 0 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
112
- %36 = llvm.insertvalue %34 , %35 [4 , 0 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
113
- llvm.br ^bb1 (%1 : !llvm.i64 )
114
- ^bb1 (%37: !llvm.i64 ): // 2 preds: ^bb0, ^bb2
115
- %38 = llvm.icmp " slt" %37 , %0 : !llvm.i64
116
- llvm.cond_br %38 , ^bb2 , ^bb3
117
- ^bb2 : // pred: ^bb1
118
- %39 = llvm.extractvalue %20 [1 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
119
- %40 = llvm.mlir.constant (0 : index ) : !llvm.i64
120
- %41 = llvm.mlir.constant (1 : index ) : !llvm.i64
121
- %42 = llvm.mul %37 , %41 : !llvm.i64
122
- %43 = llvm.add %40 , %42 : !llvm.i64
123
- %44 = llvm.getelementptr %39 [%43 ] : (!llvm.ptr <float >, !llvm.i64 ) -> !llvm.ptr <float >
124
- llvm.store %3 , %44 : !llvm.ptr <float >
125
- %45 = llvm.extractvalue %36 [1 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
126
- %46 = llvm.mlir.constant (0 : index ) : !llvm.i64
127
- %47 = llvm.mlir.constant (1 : index ) : !llvm.i64
128
- %48 = llvm.mul %37 , %47 : !llvm.i64
129
- %49 = llvm.add %46 , %48 : !llvm.i64
130
- %50 = llvm.getelementptr %45 [%49 ] : (!llvm.ptr <float >, !llvm.i64 ) -> !llvm.ptr <float >
131
- llvm.store %3 , %50 : !llvm.ptr <float >
132
- %51 = llvm.add %37 , %2 : !llvm.i64
133
- llvm.br ^bb1 (%51 : !llvm.i64 )
134
- ^bb3 : // pred: ^bb1
135
- %52 = llvm.mlir.constant (1 : index ) : !llvm.i64
136
- %53 = llvm.mlir.constant (1 : index ) : !llvm.i64
137
- %54 = llvm.extractvalue %20 [1 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
138
- %55 = llvm.extractvalue %36 [1 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
139
- llvm.call @simple_add1_add2_test (%54 , %55 ) : (!llvm.ptr <float >, !llvm.ptr <float >) -> ()
140
- %56 = llvm.extractvalue %20 [1 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
141
- %57 = llvm.mlir.constant (0 : index ) : !llvm.i64
142
- %58 = llvm.mlir.constant (1 : index ) : !llvm.i64
143
- %59 = llvm.mul %1 , %58 : !llvm.i64
144
- %60 = llvm.add %57 , %59 : !llvm.i64
145
- %61 = llvm.getelementptr %56 [%60 ] : (!llvm.ptr <float >, !llvm.i64 ) -> !llvm.ptr <float >
146
- %62 = llvm.load %61 : !llvm.ptr <float >
147
- llvm.call @printF32 (%62 ) : (!llvm.float ) -> ()
148
- llvm.call @printComma () : () -> ()
149
- %63 = llvm.extractvalue %20 [1 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
150
- %64 = llvm.mlir.constant (0 : index ) : !llvm.i64
151
- %65 = llvm.mlir.constant (1 : index ) : !llvm.i64
152
- %66 = llvm.mul %2 , %65 : !llvm.i64
153
- %67 = llvm.add %64 , %66 : !llvm.i64
154
- %68 = llvm.getelementptr %63 [%67 ] : (!llvm.ptr <float >, !llvm.i64 ) -> !llvm.ptr <float >
155
- %69 = llvm.load %68 : !llvm.ptr <float >
156
- llvm.call @printF32 (%69 ) : (!llvm.float ) -> ()
157
- llvm.call @printNewline () : () -> ()
158
- %70 = llvm.extractvalue %36 [1 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
159
- %71 = llvm.mlir.constant (0 : index ) : !llvm.i64
160
- %72 = llvm.mlir.constant (1 : index ) : !llvm.i64
161
- %73 = llvm.mul %1 , %72 : !llvm.i64
162
- %74 = llvm.add %71 , %73 : !llvm.i64
163
- %75 = llvm.getelementptr %70 [%74 ] : (!llvm.ptr <float >, !llvm.i64 ) -> !llvm.ptr <float >
164
- %76 = llvm.load %75 : !llvm.ptr <float >
165
- llvm.call @printF32 (%76 ) : (!llvm.float ) -> ()
166
- llvm.call @printComma () : () -> ()
167
- %77 = llvm.extractvalue %36 [1 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
168
- %78 = llvm.mlir.constant (0 : index ) : !llvm.i64
169
- %79 = llvm.mlir.constant (1 : index ) : !llvm.i64
170
- %80 = llvm.mul %2 , %79 : !llvm.i64
171
- %81 = llvm.add %78 , %80 : !llvm.i64
172
- %82 = llvm.getelementptr %77 [%81 ] : (!llvm.ptr <float >, !llvm.i64 ) -> !llvm.ptr <float >
173
- %83 = llvm.load %82 : !llvm.ptr <float >
174
- llvm.call @printF32 (%83 ) : (!llvm.float ) -> ()
175
- llvm.call @printNewline () : () -> ()
176
- %84 = llvm.extractvalue %20 [0 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
177
- %85 = llvm.bitcast %84 : !llvm.ptr <float > to !llvm.ptr <i8 >
178
- llvm.call @free (%85 ) : (!llvm.ptr <i8 >) -> ()
179
- %86 = llvm.extractvalue %36 [0 ] : !llvm.struct <(ptr <float >, ptr <float >, i64 , array <1 x i64 >, array <1 x i64 >)>
180
- %87 = llvm.bitcast %86 : !llvm.ptr <float > to !llvm.ptr <i8 >
181
- llvm.call @free (%87 ) : (!llvm.ptr <i8 >) -> ()
182
- llvm.return
58
+ %l2 = load %b [%c0 ] : memref <2 xf32 >
59
+ call @printF32 (%l2 ) : (f32 ) -> ()
60
+ call @printComma () : () -> ()
61
+ %l3 = load %b [%c1 ] : memref <2 xf32 >
62
+ call @printF32 (%l3 ) : (f32 ) -> ()
63
+ call @printNewline () : () -> ()
64
+
65
+ dealloc %a : memref <2 xf32 >
66
+ dealloc %b : memref <2 xf32 >
67
+ return
183
68
}
0 commit comments