Skip to content
  1. Sep 30, 2013
    • Arnold Schwaighofer's avatar
      IfConverter: Use TargetSchedule for instruction latencies · d2f96b91
      Arnold Schwaighofer authored
      For targets that have instruction itineraries this means no change. Targets
      that move over to the new schedule model will use be able the new schedule
      module for instruction latencies in the if-converter (the logic is such that if
      there is no itineary we will use the new sched model for the latencies).
      
      Before, we queried "TTI->getInstructionLatency()" for the instruction latency
      and the extra prediction cost. Now, we query the TargetSchedule abstraction for
      the instruction latency and TargetInstrInfo for the extra predictation cost. The
      TargetSchedule abstraction will internally call "TTI->getInstructionLatency" if
      an itinerary exists, otherwise it will use the new schedule model.
      
      ATTENTION: Out of tree targets!
      
      (I will also send out an email later to LLVMDev)
      
      This means, if your target implements
      
       unsigned getInstrLatency(const InstrItineraryData *ItinData,
                                const MachineInstr *MI,
                                unsigned *PredCost);
      
      and returns a value for "PredCost", you now also need to implement
      
       unsigned getPredictationCost(const MachineInstr *MI);
      
      (if your target uses the IfConversion.cpp pass)
      
      radar://15077010
      
      llvm-svn: 191671
      d2f96b91
    • Joey Gouly's avatar
      Fix a bug in InstCombine where it attempted to cast a Value* to an Instruction* · d51a35c6
      Joey Gouly authored
      when it was actually a Constant*.
      
      There are quite a few other casts to Instruction that might have the same problem,
      but this is the only one I have a test case for.
      
      llvm-svn: 191668
      d51a35c6
    • Richard Sandiford's avatar
      [SystemZ] Revert r191661: Add definitions of LFH and STFH · a25f268c
      Richard Sandiford authored
      For some reason, adding definitions for these load and store
      instructions changed whether some of the build bots matched
      comparisons as signed or unsigned.
      
      llvm-svn: 191663
      a25f268c
    • Richard Sandiford's avatar
      [SystemZ] Add definitions of LFH and STFH · d30ac3a1
      Richard Sandiford authored
      llvm-svn: 191661
      d30ac3a1
    • Richard Sandiford's avatar
      [SystemZ] Add GRH32 for the high word of a GR64 · f9496060
      Richard Sandiford authored
      The only thing this does on its own is make the definitions of RISB[HL]G
      a bit more precise.  Those instructions are only used by the MC layer at
      the moment, so no behavioral change is intended.  The class is needed by
      later patches though.
      
      llvm-svn: 191660
      f9496060
    • Richard Sandiford's avatar
      [SystemZ] Rename subregs and add subreg_h32 · 87a44364
      Richard Sandiford authored
      Use subreg_hNN and subreg_lNN for the high and low NN bits of a register.
      List the low registers first, so that subreg_l32 also means the low 32
      bits of a 128-bit register.
      
      Floats are stored in the upper 32 bits of a 64-bit register, so they
      should use subreg_h32 rather than subreg_l32.
      
      No behavioral change intended.
      
      llvm-svn: 191659
      87a44364
    • Richard Sandiford's avatar
      [SystemZ] Add change missing from previous commit · ddec3e42
      Richard Sandiford authored
      llvm-svn: 191656
      ddec3e42
    • Richard Sandiford's avatar
      [SystemZ] Rename 32-bit GPR registers · 7789b082
      Richard Sandiford authored
      I'm about to add support for high-word operations, so it seemed better
      for the low-word registers to have names like R0L rather than R0W.
      No behavioral change intended.
      
      llvm-svn: 191655
      7789b082
    • Craig Topper's avatar
      Various x86 disassembler fixes. · ed59dd34
      Craig Topper authored
      Add VEX_LIG to scalar FMA4 instructions.
      Use VEX_LIG in some of the inheriting checks in disassembler table generator.
      Make use of VEX_L_W, VEX_L_W_XS, VEX_L_W_XD contexts.
      Don't let VEX_L_W, VEX_L_W_XS, VEX_L_W_XD, VEX_L_W_OPSIZE inherit from their non-L forms unless VEX_LIG is set.
      Let VEX_L_W, VEX_L_W_XS, VEX_L_W_XD, VEX_L_W_OPSIZE inherit from all of their non-L or non-W cases.
      Increase ranking on VEX_L_W, VEX_L_W_XS, VEX_L_W_XD, VEX_L_W_OPSIZE so they get chosen over non-L/non-W forms.
      
      llvm-svn: 191649
      ed59dd34
  2. Sep 29, 2013
  3. Sep 28, 2013
  4. Sep 27, 2013
Loading