[PATCH] D72805: [X86] Remove X86ISD::FILD_FLAG and stop gluing nodes together.

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Jan 18 06:57:38 PST 2020


RKSimon accepted this revision.
RKSimon added subscribers: scanon, andrew.w.kaylor.
RKSimon added a comment.
This revision is now accepted and ready to land.

Cheers Craig, TBH I'm left wondering whether we should tweak the update script to always keep stack arithmetic for x86 - do you think they'd be too much churn?

Anyway, LGTM as a first step, but it highlights a number of topics for further possible work (nothing new there......).



================
Comment at: llvm/test/CodeGen/X86/vec-strict-inttofp-256.ll:636
 ; AVX-32:       # %bb.0:
 ; AVX-32-NEXT:    pushl %ebp
 ; AVX-32-NEXT:    .cfi_def_cfa_offset 8
----------------
craig.topper wrote:
> I wonder if it would make sense to parallelize this. I think we can shift the v4i64 right by 32, trunc to v4i32 use sitofp to convert that part to double. Multiply that by 2^32 in double. That should all be lossless.
> 
> Then for the bottom 32 bits we can mask with 0xffffffff. OR with the double representation for 2^52. Then subtract 2^52 from it. This should also be lossless.
> 
> Then we just add the two double vectors together which should be the only part that does any rounding.
@scanon or @andrew.w.kaylor should be able to confirm but that sounds alright to me


================
Comment at: llvm/test/CodeGen/X86/vec-strict-inttofp-512.ll:434
+; NODQ-32-NEXT:    fstps (%esp)
 ; NODQ-32-NEXT:    wait
 ; NODQ-32-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
----------------
Its a pity this doesn't spill to stack in order, which would've allowed us to load ymm0 with a single vmovups - lack of scalar/vector stack aliasing awareness has come up in some other bugs IIRC


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D72805





More information about the llvm-commits mailing list