1. Jun 07, 2020
  2. Jun 06, 2020
    • Matt Arsenault's avatar
      AMDGPU/GlobalISel: Fix test failure in release build · 38fb446f
      Matt Arsenault authored
      The annoying behavior where the output is different due to the
      legality check struck again, plus the subtarget predicate wasn't
      really correctly set for DS FP atomics.
      
      Some of the FP min/max instructions seem to be in the gfx6/gfx7
      manuals, but IIRC this might have been one of the cases where the
      manual got ahead of the actual hardware support, but I've left these
      as-is for now since the assembler tests seem to expect them.
      38fb446f
    • Simon Pilgrim's avatar
      EHPersonalities.h - reduce Triple.h include to forward declaration. NFC. · f14d4c9c
      Simon Pilgrim authored
      Move implicit include dependencies down to source files.
      f14d4c9c
    • Sanjay Patel's avatar
      [DAGCombiner] clean-up FMA+FMUL folds; NFC · 302cc8a1
      Sanjay Patel authored
      D80801 suggests some readability improvements before mocing this block.
      302cc8a1
    • Simon Pilgrim's avatar
      CFG.h - add missing GraphTraits.h include. NFC. · eaf1ea10
      Simon Pilgrim authored
      MSVC doesn't care that this isn't declared for default template args but gcc (sometimes) does.
      eaf1ea10
    • Simon Pilgrim's avatar
      CFG.h - reduce includes to forward declarations. NFC. · e5e33f23
      Simon Pilgrim authored
      Remove unnecessary includes from CFG.cpp.
      
      Fix implicit include dependency in X86WinEHState.cpp.
      e5e33f23
    • Matt Arsenault's avatar
      AMDGPU/GlobalISel: Start rewriting load/store legality rules · bc20bdb9
      Matt Arsenault authored
      The current set is an incomprehensible mess riddled with ordering
      hacks for various limitations in the legalizer at the time of writing,
      many of which have been fixed. This takes a very small step in
      correcting this.
      
      The core first change is to start checking for fully legal cases
      first, rather than trying to figure out all of the actions that could
      need to be performed. It's recommended to check the legal cases first
      for faster legality checks in the common case. This still has a table
      listing some common cases, but it needs measuring whether this really
      helps or not.
      
      More significantly, stop trying to allow any arbitrary type with a
      legal bitwidth as a legal memory type, and start using the bitcast
      legalize action for them. Allowing loads of these weird vector types
      produced new burdens we don't need for handling all of the
      legalization artifacts. Unlike the SelectionDAG handling, this is
      still not casting 64 or 16-bit element vectors to 32-bit
      vectors. These cases should still be handled by increasing/decreasing
      the number of 16-bit elements. This is primarily to fix 8-bit element
      vectors.
      
      Another change is to stop trying to handle the load-widening based on
      a higher alignment. We should still do this, but the way it was
      handled wasn't really correct. We really need to modify the MMO's size
      at the same time, and not just increase the result type. The
      LegalizerHelper does not do this, and I think this would really
      require a separate WidenMemory action (or to add a memory action
      payload to the LegalizeMutation). These will now fail to legalize.
      
      The structure of the legalizer rules makes writing concise rules here
      difficult. It would be easier if the same function could answer the
      query the query, and report the action to perform at the same
      time. Instead these two are split into distinct predicate and action
      functions. This is mostly tolerable for other cases, but the
      load/store rules get pretty complicated so it's difficult to keep two
      versions of these functions in sync.
      bc20bdb9