<div dir="ltr">Hello,<div><br></div><div>I am trying to understand the vectorized llvm instruction selection (pattern matching). there i found how </div><div>store<ST64[bitcast (i32* getelementptr inbounds ([34 x i32], [34 x i32]* @a, i64 0, i64 16) to <16 x i32>*)](align=16)(tbaa=<0x2c96d88>)> is mapped to <br></div><div>VMOVDQU32Zmr<Mem:ST64[bitcast (i32* getelementptr inbounds ([34 x i32], [34 x i32]* @a, i64 0, i64 16) to <16 x i32>*)](align=16)(tbaa=<0x2c96d88>)> Register:i64 %RIP, TargetConstant:i8<1>, Register:i64 %noreg, TargetGlobalAddress:i32<[34 x i32]* @a> + 64, Register:i32 %noreg, t16, t18<br></div><div><br></div><div>but when i searched VMOVDQU32Zm instruction i didnt find its definition in .td file rather its mentioned in x86instrinfo.cpp still not defined rather it says    AVX-512 foldable instructions</div><div>it is just called via .inc file. </div><div><br></div><div>{ X86::VMOVDQU32Zrr,    X86::VMOVDQU32Zmr,  TB_FOLDED_STORE },<br></div><div><br></div><div>Please clarify the concept of pattern matching for such instructions. what are foldable instructions?</div><div><br></div><div>Thank You</div></div>