[all-commits] [llvm/llvm-project] 580552: [ARM] Simplify VMOVRRD from extracts of buildvectors

David Green via All-commits all-commits at lists.llvm.org
Mon Feb 1 08:09:55 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 5805521207852b859090c274a69fd51618b68b69
      https://github.com/llvm/llvm-project/commit/5805521207852b859090c274a69fd51618b68b69
  Author: David Green <david.green at arm.com>
  Date:   2021-02-01 (Mon, 01 Feb 2021)

  Changed paths:
    M llvm/lib/Target/ARM/ARMISelLowering.cpp
    M llvm/test/CodeGen/ARM/func-argpassing-endian.ll
    M llvm/test/CodeGen/ARM/vcvt.ll
    M llvm/test/CodeGen/Thumb2/mve-soft-float-abi.ll
    M llvm/test/CodeGen/Thumb2/mve-vcreate.ll

  Log Message:
  -----------
  [ARM] Simplify VMOVRRD from extracts of buildvectors

Under the softfp calling convention, we are often left with
VMOVRRD(extract(bitcast(build_vector(a, b, c, d)))) for the return value
of the function. These can be simplified to a,b or c,d directly,
depending on the value of the extract.

Big endian is a little different because the bitcast switches the lanes
around, meaning we end up with b,a or d,c.

Differential Revision: https://reviews.llvm.org/D94989




More information about the All-commits mailing list