On ISelDAG level, if there are multiple uses of lsl, the ldr/str, which are uses of the lsl, are not folded.
Additionaly, if the lsl is not in same block with ldr/str, they are not folded too.
ldr/str can be folded with lsl 2 for 32 bit and lsl 3 for 64 bit as below.
%7:gpr64 = UBFMXri killed %6:gpr64, 62, 61 %8:gpr32 = LDRWroX %1:gpr64common, %7:gpr64, 0, 0 STRWroX killed %9:gpr32, %1:gpr64common, %7:gpr64, 0, 0 ==> %8:gpr32 = LDRWroX %1:gpr64common, %6:gpr64, 0, 1 STRWroX killed %9:gpr32, %1:gpr64common, %6:gpr64, 0, 1