[PATCH] D127871: [RISCV] Optimize 2x SELECT for floating-point types

Liao Chunyu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 15 19:48:34 PDT 2022


liaolucy added a comment.

The asm of testcase before this patch:

          auipc   a0, %pcrel_hi(.LCPI0_0)
          addi    a0, a0, %pcrel_lo(.LBB0_5)
          flw     ft0, 0(a0)
          fmv.w.x ft1, zero
          flt.s   a1, fa0, ft1
          flt.s   a0, ft0, fa0
          beqz    a1, .LBB0_3
  # %bb.1:                                # %entry
          beqz    a0, .LBB0_4
  .LBB0_2:                                # %entry
          fmv.s   fa0, ft0
          ret
  .LBB0_3:                                # %entry
          fmv.s   ft1, fa0
          bnez    a0, .LBB0_2
  .LBB0_4:                                # %entry
          fmv.s   ft0, ft1
          fmv.s   fa0, ft0
          ret

after this patch :

  # %bb.0:                                # %entry
          fmv.w.x ft0, zero
          flt.s   a0, fa0, ft0
          bnez    a0, .LBB0_3
  # %bb.1:                                # %entry
  .LBB0_4:                                # %entry
                                          # Label of block must be emitted
          auipc   a0, %pcrel_hi(.LCPI0_0)
          addi    a0, a0, %pcrel_lo(.LBB0_4)
          flw     ft0, 0(a0)
          flt.s   a0, ft0, fa0
          bnez    a0, .LBB0_3
  # %bb.2:                                # %entry
          fmv.s   ft0, fa0
  .LBB0_3:                                # %entry
          fmv.s   fa0, ft0
          ret


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127871/new/

https://reviews.llvm.org/D127871



More information about the llvm-commits mailing list