How can I control FP_EXTEND's combine?

Hi, I’m trouble in f32->f64.

My backend doesn’t support " load<(dereferenceable load 4 from %ir.a), anyext from f32>",
It comes from “fp_extend 's conbine” . I didn’t find method to control fp_extend 's conbine.
It’s called in “DAGCombiner::visit(SDNode *N)”.

------------code------------

double a = 2.7;
float b = 1.2;
a = b;


----------------log------------

Combining: t13: ch = store<(store 8 into %ir.b)> t11:1, t12, FrameIndex:i32<2>, undef:i32, …\testcase_8slots\input.c:10:4
Combining: t12: f64 = fp_extend t11, …\testcase_8slots\input.c:10:6
Creating new node: t25: f64,ch = load<(dereferenceable load 4 from %ir.a), anyext from f32> t10, FrameIndex:i32<1>, undef:i32, …\testcase_8slots\input.c:10:6
Replacing.1 t12: f64 = fp_extend t11, …\testcase_8slots\input.c:10:6


so my question is:
How to stop FP_EXTEND’s combine.
Or I need write a load<(dereferenceable load 4 from %ir.a), anyext from f32> pattern?

You need to specify the legality for your extending loads (e.g. setLoadExtAction(ISD::EXTLOAD, MVT::f64, MVT::f32, Expand)). The combiner may still choose to introduce the FP extload as a canonicalization early, but the legalizer would still pull it apart again later.

It works, Thanks.