Index: lib/Target/RISCV/RISCVInstrInfo.td =================================================================== --- lib/Target/RISCV/RISCVInstrInfo.td +++ lib/Target/RISCV/RISCVInstrInfo.td @@ -521,10 +521,24 @@ def PseudoSH : PseudoStore<"sh">; def PseudoSW : PseudoStore<"sw">; +def : InstAlias<"lb $rd, (${rs1})", (LB GPR:$rd, GPR:$rs1, 0), 0>; +def : InstAlias<"lbu $rd, (${rs1})", (LBU GPR:$rd, GPR:$rs1, 0), 0>; +def : InstAlias<"lh $rd, (${rs1})", (LH GPR:$rd, GPR:$rs1, 0), 0>; +def : InstAlias<"lhu $rd, (${rs1})", (LHU GPR:$rd, GPR:$rs1, 0), 0>; + +def : InstAlias<"sb $rs2, (${rs1})", (SB GPR:$rs2, GPR:$rs1, 0), 0>; +def : InstAlias<"sh $rs2, (${rs1})", (SH GPR:$rs2, GPR:$rs1, 0), 0>; +def : InstAlias<"sw $rs2, (${rs1})", (SW GPR:$rs2, GPR:$rs1, 0), 0>; + let Predicates = [IsRV64] in { def PseudoLWU : PseudoLoad<"lwu">; def PseudoLD : PseudoLoad<"ld">; def PseudoSD : PseudoStore<"sd">; + +def : InstAlias<"lw $rd, (${rs1})", (LW GPR:$rd, GPR:$rs1, 0), 0>; +def : InstAlias<"lwu $rd, (${rs1})", (LWU GPR:$rd, GPR:$rs1, 0), 0>; +def : InstAlias<"sd $rs2, (${rs1})", (SD GPR:$rs2, GPR:$rs1, 0), 0>; + } // Predicates = [IsRV64] def : InstAlias<"mv $rd, $rs", (ADDI GPR:$rd, GPR:$rs, 0)>;