One biggest difference is that for complex, there are multiple ops generated, and the ops are not inlined into the top level function with iree.hal.buffer. iree.abi.output is not honored during the private function lowering. For example, IPO removes the operand.
What happened?
Input
module.mlir
:compile command:
dump: https://gist.github.com/okkwon/a072d670831ba80580481db9aece2184
The same op with a different type, e.g., f16 works as expected. (No
stream.resource.alloca
.)dump for f16: https://gist.github.com/okkwon/389e2dda53cc4bd69c0a51b0e53c68a6
One biggest difference is that for complex, there are multiple ops generated, and the ops are not inlined into the top level function with iree.hal.buffer.
iree.abi.output
is not honored during the private function lowering. For example, IPO removes the operand.