diff --git a/llvm/lib/Target/BPF/BPFInstrInfo.td b/llvm/lib/Target/BPF/BPFInstrInfo.td --- a/llvm/lib/Target/BPF/BPFInstrInfo.td +++ b/llvm/lib/Target/BPF/BPFInstrInfo.td @@ -392,6 +392,28 @@ let BPFClass = BPF_LD; } +class LOADU32 Pattern> + : TYPE_LD_ST { + bits<4> src; + bits<4> dst; + bits<16> off; + + let Inst{51-48} = dst; + let Inst{55-52} = src; + let Inst{47-32} = off; + let BPFClass = BPF_LDX; +} + +// LOAD_U32_TO_PTR => LDW +let isCodeGenOnly = 1 in { + def LOAD_U32_TO_PTR : LOADU32<[(set GPR:$dst, + (int_bpf_load_u32_to_ptr GPR:$src, imm:$off))]>; +} + // STORE instructions class STORE Pattern> : TYPE_LD_ST