17 | module Compiler.Stablehlo.Dialect.ChloOps
20 | import Compiler.MLIR.IR.BuiltinAttributes
21 | import Compiler.MLIR.IR.Builders
22 | import Compiler.MLIR.IR.Location
23 | import Compiler.MLIR.IR.MLIRContext
24 | import Compiler.MLIR.IR.OpDefinition
25 | import Compiler.MLIR.IR.Operation
26 | import Compiler.MLIR.IR.Region
27 | import Compiler.MLIR.IR.Types
28 | import Compiler.MLIR.IR.Value
29 | import Compiler.MLIR.IR.ValueRange
30 | import Compiler.Stablehlo.Dialect.StablehloOps
32 | ffi : String -> String
33 | ffi = libxla "c/stablehlo/dialect/ChloOps.h"
35 | %foreign (ffi "MLIRContext_loadDialect_ChloDialect")
36 | prim__loadDialectChloDialect : AnyPtr -> PrimIO ()
39 | loadDialectChloDialect : HasIO io => MLIRContext -> io ()
40 | loadDialectChloDialect (MkMLIRContext ctx) = primIO $
prim__loadDialectChloDialect ctx
42 | %foreign (ffi "AcosOp_delete")
43 | prim__deleteAcosOp : AnyPtr -> PrimIO ()
46 | data AcosOp = MkAcosOp GCAnyPtr
48 | %foreign (ffi "AcosOp_create")
49 | prim__acosOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
53 | create : HasIO io => OpBuilder -> Location -> Value -> io AcosOp
54 | create = UnaryElementwiseOp.create MkAcosOp prim__acosOpCreate prim__deleteAcosOp
56 | %foreign (ffi "AcosOp_getOperation")
57 | prim__acosOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
61 | getOperation (MkAcosOp op) = getOperationAux op prim__acosOpGetOperation
63 | %foreign (ffi "AcoshOp_delete")
64 | prim__deleteAcoshOp : AnyPtr -> PrimIO ()
67 | data AcoshOp = MkAcoshOp GCAnyPtr
69 | %foreign (ffi "AcoshOp_create")
70 | prim__acoshOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
74 | create : HasIO io => OpBuilder -> Location -> Value -> io AcoshOp
75 | create = UnaryElementwiseOp.create MkAcoshOp prim__acoshOpCreate prim__deleteAcoshOp
77 | %foreign (ffi "AcoshOp_getOperation")
78 | prim__acoshOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
82 | getOperation (MkAcoshOp op) = getOperationAux op prim__acoshOpGetOperation
84 | %foreign (ffi "AsinOp_delete")
85 | prim__deleteAsinOp : AnyPtr -> PrimIO ()
88 | data AsinOp = MkAsinOp GCAnyPtr
90 | %foreign (ffi "AsinOp_create")
91 | prim__asinOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
95 | create : HasIO io => OpBuilder -> Location -> Value -> io AsinOp
96 | create = UnaryElementwiseOp.create MkAsinOp prim__asinOpCreate prim__deleteAsinOp
98 | %foreign (ffi "AsinOp_getOperation")
99 | prim__asinOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
103 | getOperation (MkAsinOp op) = getOperationAux op prim__asinOpGetOperation
105 | %foreign (ffi "AsinhOp_delete")
106 | prim__deleteAsinhOp : AnyPtr -> PrimIO ()
109 | data AsinhOp = MkAsinhOp GCAnyPtr
111 | %foreign (ffi "AsinhOp_create")
112 | prim__asinhOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
116 | create : HasIO io => OpBuilder -> Location -> Value -> io AsinhOp
117 | create = UnaryElementwiseOp.create MkAsinhOp prim__asinhOpCreate prim__deleteAsinhOp
119 | %foreign (ffi "AsinhOp_getOperation")
120 | prim__asinhOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
124 | getOperation (MkAsinhOp op) = getOperationAux op prim__asinhOpGetOperation
126 | %foreign (ffi "AtanOp_delete")
127 | prim__deleteAtanOp : AnyPtr -> PrimIO ()
130 | data AtanOp = MkAtanOp GCAnyPtr
132 | %foreign (ffi "AtanOp_create")
133 | prim__atanOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
137 | create : HasIO io => OpBuilder -> Location -> Value -> io AtanOp
138 | create = UnaryElementwiseOp.create MkAtanOp prim__atanOpCreate prim__deleteAtanOp
140 | %foreign (ffi "AtanOp_getOperation")
141 | prim__atanOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
145 | getOperation (MkAtanOp op) = getOperationAux op prim__atanOpGetOperation
147 | %foreign (ffi "AtanhOp_delete")
148 | prim__deleteAtanhOp : AnyPtr -> PrimIO ()
151 | data AtanhOp = MkAtanhOp GCAnyPtr
153 | %foreign (ffi "AtanhOp_create")
154 | prim__atanhOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
158 | create : HasIO io => OpBuilder -> Location -> Value -> io AtanhOp
159 | create = UnaryElementwiseOp.create MkAtanhOp prim__atanhOpCreate prim__deleteAtanhOp
161 | %foreign (ffi "AtanhOp_getOperation")
162 | prim__atanhOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
166 | getOperation (MkAtanhOp op) = getOperationAux op prim__atanhOpGetOperation
168 | %foreign (ffi "CoshOp_delete")
169 | prim__deleteCoshOp : AnyPtr -> PrimIO ()
172 | data CoshOp = MkCoshOp GCAnyPtr
174 | %foreign (ffi "CoshOp_create")
175 | prim__coshOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
179 | create : HasIO io => OpBuilder -> Location -> Value -> io CoshOp
180 | create = UnaryElementwiseOp.create MkCoshOp prim__coshOpCreate prim__deleteCoshOp
182 | %foreign (ffi "CoshOp_getOperation")
183 | prim__coshOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
187 | getOperation (MkCoshOp op) = getOperationAux op prim__coshOpGetOperation
189 | %foreign (ffi "SinhOp_delete")
190 | prim__deleteSinhOp : AnyPtr -> PrimIO ()
193 | data SinhOp = MkSinhOp GCAnyPtr
195 | %foreign (ffi "SinhOp_create")
196 | prim__sinhOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
200 | create : HasIO io => OpBuilder -> Location -> Value -> io SinhOp
201 | create = UnaryElementwiseOp.create MkSinhOp prim__sinhOpCreate prim__deleteSinhOp
203 | %foreign (ffi "SinhOp_getOperation")
204 | prim__sinhOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
208 | getOperation (MkSinhOp op) = getOperationAux op prim__sinhOpGetOperation
210 | %foreign (ffi "ErfOp_delete")
211 | prim__deleteErfOp : AnyPtr -> PrimIO ()
214 | data ErfOp = MkErfOp GCAnyPtr
216 | %foreign (ffi "ErfOp_create")
217 | prim__erfOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
221 | create : HasIO io => OpBuilder -> Location -> Value -> io ErfOp
222 | create = UnaryElementwiseOp.create MkErfOp prim__erfOpCreate prim__deleteErfOp
224 | %foreign (ffi "ErfOp_getOperation")
225 | prim__erfOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
229 | getOperation (MkErfOp op) = getOperationAux op prim__erfOpGetOperation
231 | %foreign (ffi "ErfInvOp_delete")
232 | prim__deleteErfInvOp : AnyPtr -> PrimIO ()
235 | data ErfInvOp = MkErfInvOp GCAnyPtr
237 | %foreign (ffi "ErfInvOp_create")
238 | prim__erfInvOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
242 | create : HasIO io => OpBuilder -> Location -> Value -> io ErfInvOp
243 | create = UnaryElementwiseOp.create MkErfInvOp prim__erfInvOpCreate prim__deleteErfInvOp
245 | %foreign (ffi "ErfInvOp_getOperation")
246 | prim__erfInvOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
250 | getOperation (MkErfInvOp op) = getOperationAux op prim__erfInvOpGetOperation
252 | %foreign (ffi "SquareOp_delete")
253 | prim__deleteSquareOp : AnyPtr -> PrimIO ()
256 | data SquareOp = MkSquareOp GCAnyPtr
258 | %foreign (ffi "SquareOp_create")
259 | prim__squareOpCreate : GCAnyPtr -> GCAnyPtr -> GCAnyPtr -> PrimIO AnyPtr
263 | create : HasIO io => OpBuilder -> Location -> Value -> io SquareOp
264 | create = UnaryElementwiseOp.create MkSquareOp prim__squareOpCreate prim__deleteSquareOp
266 | %foreign (ffi "SquareOp_getOperation")
267 | prim__squareOpGetOperation : GCAnyPtr -> PrimIO AnyPtr
271 | getOperation (MkSquareOp op) = getOperationAux op prim__squareOpGetOperation