Merge pull request #146 from ziliangzl/double-operation

[Ventus][fix] Fix flw/fsw instruction codegen pattern
This commit is contained in:
ZhouJing(周晶) 2024-08-21 08:58:11 +08:00 committed by GitHub
commit 0a82f17b0c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 8 deletions

View File

@ -656,13 +656,14 @@ defm Select_FPR32 : SelectCC_GPR_rrirr<GPRF32>;
def PseudoVFROUND_S : PseudoVFROUND<VGPR>;
def PseudoFROUND_S : PseudoFROUND<GPRF32>;
// /// Loads
/// Loads
defm : UniformLdPat<load, PseudoFLW, f32>;
def : Pat<(f32 (load (AddrRegImm (XLenVT GPR:$rs1), simm12:$imm12))),
(COPY_TO_REGCLASS (LW GPR:$rs1, simm12:$imm12), GPRF32)>;
// /// Stores
defm : UniformStPat<store, PseudoFSW, GPRF32, f32>;
/// Stores
def : Pat<(store (f32 FPR32INX:$rs2), (AddrRegImm (XLenVT GPR:$rs1), simm12:$imm12)),
(SW (COPY_TO_REGCLASS FPR32INX:$rs2, GPR), GPR:$rs1, simm12:$imm12)>;
} // Predicates = [HasStdExtZfinx]

View File

@ -29,12 +29,12 @@ define dso_local ventus_kernel void @float_add(ptr addrspace(1) nocapture nounde
; VENTUS-LABEL: float_add:
; VENTUS: # %bb.0: # %entry
; VENTUS-NEXT: lw t0, 4(a0)
; VENTUS-NEXT: flw t0, 0(t0)
; VENTUS-NEXT: lw t0, 0(t0)
; VENTUS-NEXT: lui t1, %hi(.LCPI1_0)
; VENTUS-NEXT: flw t1, %lo(.LCPI1_0)(t1)
; VENTUS-NEXT: lw t1, %lo(.LCPI1_0)(t1)
; VENTUS-NEXT: fadd.s t0, t0, t1
; VENTUS-NEXT: lw t1, 0(a0)
; VENTUS-NEXT: fsw t0, 0(t1)
; VENTUS-NEXT: sw t0, 0(t1)
; VENTUS-OBJ: lw t1, 0(t1)
; VENTUS-OBJ: fadd.s t0, t0, t1
; VENTUS-NEXT: ret