Question about dag-combine pass


I’m trying to write an backend for some VM,
and started from copying Mips backend.

That VM has no i8 register as MIPS.

When I use truncate operation, it’s converted to store/load(sext) during dag-combining,
not legalization. and also, I found that the dag-combining is different for each architecture.

Q1. where is the correct place in the source code that the truncate operation is gone during the dag combining pass.
Q2. Why that the dag-combinig is different for each architecture.
Q3. I don’t want to use that kind of store/load techiniq to mimic truncation, but just replace to some instruction such as ‘CONVERT_i32_to_i8’. What is good way to do?