OSDN Git Service

The divide unit is not pipeline, but it is still buffered.
authorAndrew Trick <atrick@apple.com>
Tue, 2 Apr 2013 01:58:47 +0000 (01:58 +0000)
committerAndrew Trick <atrick@apple.com>
Tue, 2 Apr 2013 01:58:47 +0000 (01:58 +0000)
commit92142b327598822fdbeb386e5a5b68ec963be4ad
tree09c98f467ab3ed3a53502cc43b242d6493ad4ee6
parent080e3c523e87ec68ca1ea5db4cd49816028dd8bd
The divide unit is not pipeline, but it is still buffered.

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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178519 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86SchedHaswell.td
lib/Target/X86/X86SchedSandyBridge.td