When Opts.NativeHalfType is set to 1, Clang will generate IR for half float. Currently, most CPUs don't support fp16 register, fp16 should be promoted to fp32 for computation, then store back the result to fp16.
This is a module pass to transform operations on fp16 to operations on fp32; different back-end could add this pass as needed.