Skip to content
  1. Jun 21, 2013
  2. Jun 15, 2013
  3. Apr 13, 2013
    • Andrew Trick's avatar
      X86 machine model: reduce SandyBridge and Haswell ILPWindow. · f7fd6b9e
      Andrew Trick authored
      The initial values were arbitrary. I want them to be more
      conservative. This represents the number of latency cycles hidden by
      OOO execution. In practice, I think it should be within a small factor
      of the complex floating point operation latency so the scheduler can
      make some attempt to hide latency even for smallish blocks.
      
      These are by no means the best values, just a starting point for
      tuning heuristics. Some benchmarks such as TSVC run faster with this
      lower value for SandyBridge. I haven't run anything on Haswell, but
      it's shouldn't be 2x SB.
      
      llvm-svn: 179450
      f7fd6b9e
  4. Apr 02, 2013
    • Andrew Trick's avatar
      The divide unit is not pipeline, but it is still buffered. · e1d88cfb
      Andrew Trick authored
      Buffered means a later divide may be executed out-of-order while a
      prior divide is sitting (buffered) in a reservation station.
      
      You can tell it's not pipelined, because operations that use it
      reserve it for more than one cycle:
      
      def : WriteRes<WriteIDiv, [HWPort0, HWDivider]> {
        let Latency = 25;
        let ResourceCycles = [1, 10];
      }
      
      We don't currently distinguish between an unpipeline operation and one
      that is split into multiple micro-ops requiring the same unit. Except
      that the later may have NumMicroOps > 1 if they also consume
      issue/dispatch resources.
      
      llvm-svn: 178519
      e1d88cfb
  5. Mar 28, 2013
  6. Mar 26, 2013
Loading