[all-commits] [llvm/llvm-project] bff9f8: [X86] Add 32-bit mode sse1 command line to scalar-...

topperc via All-commits all-commits at lists.llvm.org
Wed Jan 15 18:27:09 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: bff9f84dc85b2b4ef0d5efe2691d3411d2abcb60
      https://github.com/llvm/llvm-project/commit/bff9f84dc85b2b4ef0d5efe2691d3411d2abcb60
  Author: Craig Topper <craig.topper at intel.com>
  Date:   2020-01-15 (Wed, 15 Jan 2020)

  Changed paths:
    M llvm/test/CodeGen/X86/scalar-int-to-fp.ll

  Log Message:
  -----------
  [X86] Add 32-bit mode sse1 command line to scalar-int-to-fp.ll. NFC


  Commit: e4454479212b28532909e0a0782b0102e9bcd1c4
      https://github.com/llvm/llvm-project/commit/e4454479212b28532909e0a0782b0102e9bcd1c4
  Author: Craig Topper <craig.topper at intel.com>
  Date:   2020-01-15 (Wed, 15 Jan 2020)

  Changed paths:
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/test/CodeGen/X86/scalar-int-to-fp.ll

  Log Message:
  -----------
  [X86] When handling i64->f32 sint_to_fp on 32-bit targets only bitcast to f64 if sse2 is enabled.

The code is trying to copy the i64 value to an xmm register to
use a 64-bit store so that the 64-bit fild can benefit from
store forwarding.

But this trick only works if f64 is going to be stored in an
XMM register. If we only have SSE1 then only float is in xmm
register. So this trick just causes 2 stores i32 stores, an f64
load into the x87, an f64 from x87, and a 64-bit fild. So we end
up with an extra stack temporary and still didn't get store forwarding.

We might be able to use v2f32 here instead, but I didn't check. I
just wanted the code to make sense.

Found by inspection as I continue to stare too hard at our
int_to_fp conversions.


Compare: https://github.com/llvm/llvm-project/compare/cd9e5c32302c...e4454479212b


More information about the All-commits mailing list