#include "X86GenRegisterInfo.inc"
#define GET_INSTRINFO_MC_DESC
+#define GET_GENINSTRINFO_MC_HELPERS
#include "X86GenInstrInfo.inc"
#define GET_SUBTARGETINFO_MC_DESC
// Defines symbolic names for the X86 instructions.
//
#define GET_INSTRINFO_ENUM
+#define GET_GENINSTRINFO_MC_DECL
#include "X86GenInstrInfo.inc"
#define GET_SUBTARGETINFO_ENUM
include "X86Schedule.td"
include "X86InstrInfo.td"
+include "X86SchedPredicates.td"
def X86InstrInfo : InstrInfo;
}
/// hasIneffecientLEARegs - LEA that uses base and index registers
/// where the base is EBP, RBP, or R13
+// TODO: use a variant scheduling class to model the latency profile
+// of LEA instructions, and implement this logic as a scheduling predicate.
static inline bool hasInefficientLEABaseReg(const MachineOperand &Base,
const MachineOperand &Index) {
return Base.isReg() && isInefficientLEAReg(Base.getReg()) &&
return (Offset.isImm() && Offset.getImm() != 0) || Offset.isGlobal();
}
-// LEA instruction that has all three operands: offset, base and index
-static inline bool isThreeOperandsLEA(const MachineOperand &Base,
- const MachineOperand &Index,
- const MachineOperand &Offset) {
- return isRegOperand(Base) && isRegOperand(Index) && hasLEAOffset(Offset);
-}
-
static inline int getADDrrFromLEA(int LEAOpcode) {
switch (LEAOpcode) {
default:
const MachineOperand &Offset = MI.getOperand(4);
const MachineOperand &Segment = MI.getOperand(5);
- if (!(isThreeOperandsLEA(Base, Index, Offset) ||
+ if (!(TII->isThreeOperandsLEA(MI) ||
hasInefficientLEABaseReg(Base, Index)) ||
!TII->isSafeToClobberEFLAGS(*MFI, MI) ||
Segment.getReg() != X86::NoRegister)
--- /dev/null
+//===-- X86SchedPredicates.td - X86 Scheduling Predicates --*- tablegen -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines scheduling predicate definitions that are common to
+// all X86 subtargets.
+//
+//===----------------------------------------------------------------------===//
+
+// A predicate used to identify dependency-breaking instructions that clear the
+// content of the destination register. Note that this predicate only checks if
+// input registers are the same. This predicate doesn't make any assumptions on
+// the expected instruction opcodes, because different processors may implement
+// different zero-idioms.
+def ZeroIdiomPredicate : CheckSameRegOperand<1, 2>;
+
+// A predicate used to check if an instruction is a LEA, and if it uses all
+// three source operands: base, index, and offset.
+def IsThreeOperandsLEAPredicate: CheckAll<[
+ CheckOpcode<[LEA32r, LEA64r, LEA64_32r, LEA16r]>,
+
+ // isRegOperand(Base)
+ CheckIsRegOperand<1>,
+ CheckNot<CheckInvalidRegOperand<1>>,
+
+ // isRegOperand(Index)
+ CheckIsRegOperand<3>,
+ CheckNot<CheckInvalidRegOperand<3>>,
+
+ // hasLEAOffset(Offset)
+ CheckAny<[
+ CheckAll<[
+ CheckIsImmOperand<4>,
+ CheckNot<CheckZeroOperand<4>>
+ ]>,
+ CheckNonPortable<"MI.getOperand(4).isGlobal()">
+ ]>
+]>;
+
+// This predicate evaluates to true only if the input machine instruction is a
+// 3-operands LEA. Tablegen automatically generates a new method for it in
+// X86GenInstrInfo.
+def IsThreeOperandsLEAFn :
+ TIIPredicate<"X86", "isThreeOperandsLEA", IsThreeOperandsLEAPredicate>;
def SchedWriteFShuffleSizes
: X86SchedWriteSizes<SchedWriteFShuffle, SchedWriteFShuffle>;
-//===----------------------------------------------------------------------===//
-// Common MCInstPredicate definitions used by variant scheduling classes.
-
-def ZeroIdiomPredicate : CheckSameRegOperand<1, 2>;
-
//===----------------------------------------------------------------------===//
// Generic Processor Scheduler Models.
def : WriteRes<WriteLAHFSAHF, [JALU01]>;
// This is for simple LEAs with one or two input operands.
-// FIXME: SAGU 3-operand LEA
def : WriteRes<WriteLEA, [JALU01]>;
// Bit counts.
PCMPGTDrr, VPCMPGTDrr,
PCMPGTQrr, VPCMPGTQrr,
PCMPGTWrr, VPCMPGTWrr)>;
+
+// This write is used for slow LEA instructions.
+def JWrite3OpsLEA : SchedWriteRes<[JALU1, JSAGU]> {
+ let Latency = 2;
+}
+
+// On Jaguar, a slow LEA is either a 3Ops LEA (base, index, offset), or an LEA
+// with a `Scale` value different than 1.
+def JSlowLEAPredicate : MCSchedPredicate<
+ CheckAny<[
+ // A 3-operand LEA (base, index, offset).
+ IsThreeOperandsLEAFn,
+ // An LEA with a "Scale" different than 1.
+ CheckAll<[
+ CheckIsImmOperand<2>,
+ CheckNot<CheckImmOperand<2, 1>>
+ ]>
+ ]>
+>;
+
+def JWriteLEA : SchedWriteVariant<[
+ SchedVar<JSlowLEAPredicate, [JWrite3OpsLEA]>,
+ SchedVar<MCSchedPredicate<TruePred>, [WriteLEA]>
+]>;
+
+def : InstRW<[JWriteLEA], (instrs LEA32r, LEA64r, LEA64_32r)>;
+
+def JSlowLEA16r : SchedWriteRes<[JALU01]> {
+ let Latency = 3;
+ let ResourceCycles = [4];
+}
+
+def : InstRW<[JSlowLEA16r], (instrs LEA16r)>;
+
} // SchedModel
; BTVER2: # %bb.0:
; BTVER2-NEXT: # kill: def $esi killed $esi def $rsi
; BTVER2-NEXT: # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT: leal 16(%rdi,%rsi), %eax # sched: [1:0.50]
+; BTVER2-NEXT: leal 16(%rdi,%rsi), %eax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_add_offset:
; BTVER2: # %bb.0:
; BTVER2-NEXT: # kill: def $esi killed $esi def $rsi
; BTVER2-NEXT: # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT: leal -4096(%rdi,%rsi), %eax # sched: [1:0.50]
+; BTVER2-NEXT: leal -4096(%rdi,%rsi), %eax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_add_offset_big:
; BTVER2-LABEL: test_lea_mul:
; BTVER2: # %bb.0:
; BTVER2-NEXT: # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
+; BTVER2-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_mul:
; BTVER2-LABEL: test_lea_mul_offset:
; BTVER2: # %bb.0:
; BTVER2-NEXT: # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT: leal -32(%rdi,%rdi,2), %eax # sched: [1:0.50]
+; BTVER2-NEXT: leal -32(%rdi,%rdi,2), %eax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_mul_offset:
; BTVER2-LABEL: test_lea_mul_offset_big:
; BTVER2: # %bb.0:
; BTVER2-NEXT: # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT: leal 10000(%rdi,%rdi,8), %eax # sched: [1:0.50]
+; BTVER2-NEXT: leal 10000(%rdi,%rdi,8), %eax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_mul_offset_big:
; BTVER2: # %bb.0:
; BTVER2-NEXT: # kill: def $esi killed $esi def $rsi
; BTVER2-NEXT: # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT: leal (%rdi,%rsi,2), %eax # sched: [1:0.50]
+; BTVER2-NEXT: leal (%rdi,%rsi,2), %eax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_add_scale:
; BTVER2: # %bb.0:
; BTVER2-NEXT: # kill: def $esi killed $esi def $rsi
; BTVER2-NEXT: # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT: leal 96(%rdi,%rsi,4), %eax # sched: [1:0.50]
+; BTVER2-NEXT: leal 96(%rdi,%rsi,4), %eax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_add_scale_offset:
; BTVER2: # %bb.0:
; BTVER2-NEXT: # kill: def $esi killed $esi def $rsi
; BTVER2-NEXT: # kill: def $edi killed $edi def $rdi
-; BTVER2-NEXT: leal -1200(%rdi,%rsi,8), %eax # sched: [1:0.50]
+; BTVER2-NEXT: leal -1200(%rdi,%rsi,8), %eax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_add_scale_offset_big:
;
; BTVER2-LABEL: test_lea_add_offset:
; BTVER2: # %bb.0:
-; BTVER2-NEXT: leaq 16(%rdi,%rsi), %rax # sched: [1:0.50]
+; BTVER2-NEXT: leaq 16(%rdi,%rsi), %rax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_add_offset:
;
; BTVER2-LABEL: test_lea_add_offset_big:
; BTVER2: # %bb.0:
-; BTVER2-NEXT: leaq -4096(%rdi,%rsi), %rax # sched: [1:0.50]
+; BTVER2-NEXT: leaq -4096(%rdi,%rsi), %rax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_add_offset_big:
;
; BTVER2-LABEL: test_lea_mul:
; BTVER2: # %bb.0:
-; BTVER2-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
+; BTVER2-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_mul:
;
; BTVER2-LABEL: test_lea_mul_offset:
; BTVER2: # %bb.0:
-; BTVER2-NEXT: leaq -32(%rdi,%rdi,2), %rax # sched: [1:0.50]
+; BTVER2-NEXT: leaq -32(%rdi,%rdi,2), %rax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_mul_offset:
;
; BTVER2-LABEL: test_lea_mul_offset_big:
; BTVER2: # %bb.0:
-; BTVER2-NEXT: leaq 10000(%rdi,%rdi,8), %rax # sched: [1:0.50]
+; BTVER2-NEXT: leaq 10000(%rdi,%rdi,8), %rax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_mul_offset_big:
;
; BTVER2-LABEL: test_lea_add_scale:
; BTVER2: # %bb.0:
-; BTVER2-NEXT: leaq (%rdi,%rsi,2), %rax # sched: [1:0.50]
+; BTVER2-NEXT: leaq (%rdi,%rsi,2), %rax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_add_scale:
;
; BTVER2-LABEL: test_lea_add_scale_offset:
; BTVER2: # %bb.0:
-; BTVER2-NEXT: leaq 96(%rdi,%rsi,4), %rax # sched: [1:0.50]
+; BTVER2-NEXT: leaq 96(%rdi,%rsi,4), %rax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_add_scale_offset:
;
; BTVER2-LABEL: test_lea_add_scale_offset_big:
; BTVER2: # %bb.0:
-; BTVER2-NEXT: leaq -1200(%rdi,%rsi,8), %rax # sched: [1:0.50]
+; BTVER2-NEXT: leaq -1200(%rdi,%rsi,8), %rax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; ZNVER1-LABEL: test_lea_add_scale_offset_big:
; X64-JAG-LABEL: test_mul_by_3:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_3:
; JAG-NOOPT-LABEL: test_mul_by_3:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
+; JAG-NOOPT-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_3:
; X64-JAG-LABEL: test_mul_by_4:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (,%rdi,4), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_4:
; JAG-NOOPT-LABEL: test_mul_by_4:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT: leal (,%rdi,4), %eax # sched: [1:0.50]
+; JAG-NOOPT-NEXT: leal (,%rdi,4), %eax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_4:
; X64-JAG-LABEL: test_mul_by_5:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_5:
; JAG-NOOPT-LABEL: test_mul_by_5:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
+; JAG-NOOPT-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_5:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: addl %edi, %edi # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_6:
; X64-JAG-LABEL: test_mul_by_7:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (,%rdi,8), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X64-JAG-LABEL: test_mul_by_8:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (,%rdi,8), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_8:
; JAG-NOOPT-LABEL: test_mul_by_8:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT: leal (,%rdi,8), %eax # sched: [1:0.50]
+; JAG-NOOPT-NEXT: leal (,%rdi,8), %eax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_8:
; X64-JAG-LABEL: test_mul_by_9:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_9:
; JAG-NOOPT-LABEL: test_mul_by_9:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
+; JAG-NOOPT-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_9:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: addl %edi, %edi # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_10:
; X64-JAG-LABEL: test_mul_by_11:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rdi,%rax,2), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
+; X64-JAG-NEXT: leal (%rdi,%rax,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_11:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: shll $2, %edi # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_12:
; X64-JAG-LABEL: test_mul_by_13:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rdi,%rax,4), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
+; X64-JAG-NEXT: leal (%rdi,%rax,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_13:
; X64-JAG-LABEL: test_mul_by_14:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rdi,%rax,4), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
+; X64-JAG-NEXT: leal (%rdi,%rax,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: addl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X64-JAG-LABEL: test_mul_by_15:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
+; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_15:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: addl %edi, %edi # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_18:
; X64-JAG-LABEL: test_mul_by_19:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: shll $2, %eax # sched: [1:0.50]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: shll $2, %edi # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_20:
; X64-JAG-LABEL: test_mul_by_21:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rdi,%rax,4), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
+; X64-JAG-NEXT: leal (%rdi,%rax,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_21:
; X64-JAG-LABEL: test_mul_by_22:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rdi,%rax,4), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
+; X64-JAG-NEXT: leal (%rdi,%rax,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: addl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X64-JAG-LABEL: test_mul_by_23:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: shll $3, %eax # sched: [1:0.50]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
; X64-JAG-NEXT: shll $3, %edi # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_24:
; X64-JAG-LABEL: test_mul_by_25:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rax,%rax,4), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,4), %eax # sched: [2:1.00]
+; X64-JAG-NEXT: leal (%rax,%rax,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_25:
; X64-JAG-LABEL: test_mul_by_26:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
+; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: subl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X64-JAG-LABEL: test_mul_by_27:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
+; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_27:
; X64-JAG-LABEL: test_mul_by_28:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
+; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: addl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X64-JAG-LABEL: test_mul_by_29:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [1:0.50]
-; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal (%rdi,%rdi,8), %eax # sched: [2:1.00]
+; X64-JAG-NEXT: leal (%rax,%rax,2), %eax # sched: [2:1.00]
; X64-JAG-NEXT: addl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: addl %edi, %eax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
; X64-JAG-LABEL: test_mul_spec:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: # kill: def $edi killed $edi def $rdi
-; X64-JAG-NEXT: leal 42(%rdi,%rdi,8), %ecx # sched: [1:0.50]
-; X64-JAG-NEXT: leal 2(%rdi,%rdi,4), %eax # sched: [1:0.50]
+; X64-JAG-NEXT: leal 42(%rdi,%rdi,8), %ecx # sched: [2:1.00]
+; X64-JAG-NEXT: leal 2(%rdi,%rdi,4), %eax # sched: [2:1.00]
; X64-JAG-NEXT: imull %ecx, %eax # sched: [3:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; JAG-NOOPT-LABEL: test_mul_spec:
; JAG-NOOPT: # %bb.0:
; JAG-NOOPT-NEXT: # kill: def $edi killed $edi def $rdi
-; JAG-NOOPT-NEXT: leal 42(%rdi,%rdi,8), %ecx # sched: [1:0.50]
-; JAG-NOOPT-NEXT: leal 2(%rdi,%rdi,4), %eax # sched: [1:0.50]
+; JAG-NOOPT-NEXT: leal 42(%rdi,%rdi,8), %ecx # sched: [2:1.00]
+; JAG-NOOPT-NEXT: leal 2(%rdi,%rdi,4), %eax # sched: [2:1.00]
; JAG-NOOPT-NEXT: imull %ecx, %eax # sched: [3:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
;
; X64-JAG-LABEL: test_mul_by_3:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_3:
;
; JAG-NOOPT-LABEL: test_mul_by_3:
; JAG-NOOPT: # %bb.0:
-; JAG-NOOPT-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
+; JAG-NOOPT-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_3:
;
; X64-JAG-LABEL: test_mul_by_4:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (,%rdi,4), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (,%rdi,4), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_4:
;
; JAG-NOOPT-LABEL: test_mul_by_4:
; JAG-NOOPT: # %bb.0:
-; JAG-NOOPT-NEXT: leaq (,%rdi,4), %rax # sched: [1:0.50]
+; JAG-NOOPT-NEXT: leaq (,%rdi,4), %rax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_4:
;
; X64-JAG-LABEL: test_mul_by_5:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_5:
;
; JAG-NOOPT-LABEL: test_mul_by_5:
; JAG-NOOPT: # %bb.0:
-; JAG-NOOPT-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
+; JAG-NOOPT-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_5:
; X64-JAG-LABEL: test_mul_by_6:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: addq %rdi, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_6:
;
; X64-JAG-LABEL: test_mul_by_7:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (,%rdi,8), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (,%rdi,8), %rax # sched: [2:1.00]
; X64-JAG-NEXT: subq %rdi, %rax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
;
; X64-JAG-LABEL: test_mul_by_8:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (,%rdi,8), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (,%rdi,8), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_8:
;
; JAG-NOOPT-LABEL: test_mul_by_8:
; JAG-NOOPT: # %bb.0:
-; JAG-NOOPT-NEXT: leaq (,%rdi,8), %rax # sched: [1:0.50]
+; JAG-NOOPT-NEXT: leaq (,%rdi,8), %rax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_8:
;
; X64-JAG-LABEL: test_mul_by_9:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_9:
;
; JAG-NOOPT-LABEL: test_mul_by_9:
; JAG-NOOPT: # %bb.0:
-; JAG-NOOPT-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
+; JAG-NOOPT-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; X64-SLM-LABEL: test_mul_by_9:
; X64-JAG-LABEL: test_mul_by_10:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: addq %rdi, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_10:
;
; X64-JAG-LABEL: test_mul_by_11:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rdi,%rax,2), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
+; X64-JAG-NEXT: leaq (%rdi,%rax,2), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_11:
; X64-JAG-LABEL: test_mul_by_12:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: shlq $2, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_12:
;
; X64-JAG-LABEL: test_mul_by_13:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rdi,%rax,4), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
+; X64-JAG-NEXT: leaq (%rdi,%rax,4), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_13:
;
; X64-JAG-LABEL: test_mul_by_14:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rdi,%rax,4), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
+; X64-JAG-NEXT: leaq (%rdi,%rax,4), %rax # sched: [2:1.00]
; X64-JAG-NEXT: addq %rdi, %rax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
;
; X64-JAG-LABEL: test_mul_by_15:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rax,%rax,2), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
+; X64-JAG-NEXT: leaq (%rax,%rax,2), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_15:
; X64-JAG-LABEL: test_mul_by_18:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: addq %rdi, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_18:
;
; X64-JAG-LABEL: test_mul_by_19:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
; X64-JAG-NEXT: shlq $2, %rax # sched: [1:0.50]
; X64-JAG-NEXT: subq %rdi, %rax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
; X64-JAG-LABEL: test_mul_by_20:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: shlq $2, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_20:
;
; X64-JAG-LABEL: test_mul_by_21:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rdi,%rax,4), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
+; X64-JAG-NEXT: leaq (%rdi,%rax,4), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_21:
;
; X64-JAG-LABEL: test_mul_by_22:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rdi,%rax,4), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
+; X64-JAG-NEXT: leaq (%rdi,%rax,4), %rax # sched: [2:1.00]
; X64-JAG-NEXT: addq %rdi, %rax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
;
; X64-JAG-LABEL: test_mul_by_23:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
; X64-JAG-NEXT: shlq $3, %rax # sched: [1:0.50]
; X64-JAG-NEXT: subq %rdi, %rax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
; X64-JAG-LABEL: test_mul_by_24:
; X64-JAG: # %bb.0:
; X64-JAG-NEXT: shlq $3, %rdi # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,2), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_24:
;
; X64-JAG-LABEL: test_mul_by_25:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rax,%rax,4), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,4), %rax # sched: [2:1.00]
+; X64-JAG-NEXT: leaq (%rax,%rax,4), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_25:
;
; X64-JAG-LABEL: test_mul_by_26:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rax,%rax,2), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
+; X64-JAG-NEXT: leaq (%rax,%rax,2), %rax # sched: [2:1.00]
; X64-JAG-NEXT: subq %rdi, %rax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
;
; X64-JAG-LABEL: test_mul_by_27:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rax,%rax,2), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
+; X64-JAG-NEXT: leaq (%rax,%rax,2), %rax # sched: [2:1.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X86-NOOPT-LABEL: test_mul_by_27:
;
; X64-JAG-LABEL: test_mul_by_28:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rax,%rax,2), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
+; X64-JAG-NEXT: leaq (%rax,%rax,2), %rax # sched: [2:1.00]
; X64-JAG-NEXT: addq %rdi, %rax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
;
; X64-JAG-LABEL: test_mul_by_29:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [1:0.50]
-; X64-JAG-NEXT: leaq (%rax,%rax,2), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq (%rdi,%rdi,8), %rax # sched: [2:1.00]
+; X64-JAG-NEXT: leaq (%rax,%rax,2), %rax # sched: [2:1.00]
; X64-JAG-NEXT: addq %rdi, %rax # sched: [1:0.50]
; X64-JAG-NEXT: addq %rdi, %rax # sched: [1:0.50]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
; X64-JAG-LABEL: test_mul_spec:
; X64-JAG: # %bb.0:
-; X64-JAG-NEXT: leaq 42(%rdi,%rdi,8), %rcx # sched: [1:0.50]
-; X64-JAG-NEXT: leaq 2(%rdi,%rdi,4), %rax # sched: [1:0.50]
+; X64-JAG-NEXT: leaq 42(%rdi,%rdi,8), %rcx # sched: [2:1.00]
+; X64-JAG-NEXT: leaq 2(%rdi,%rdi,4), %rax # sched: [2:1.00]
; X64-JAG-NEXT: imulq %rcx, %rax # sched: [6:4.00]
; X64-JAG-NEXT: retq # sched: [4:1.00]
;
;
; JAG-NOOPT-LABEL: test_mul_spec:
; JAG-NOOPT: # %bb.0:
-; JAG-NOOPT-NEXT: leaq 42(%rdi,%rdi,8), %rcx # sched: [1:0.50]
-; JAG-NOOPT-NEXT: leaq 2(%rdi,%rdi,4), %rax # sched: [1:0.50]
+; JAG-NOOPT-NEXT: leaq 42(%rdi,%rdi,8), %rcx # sched: [2:1.00]
+; JAG-NOOPT-NEXT: leaq 2(%rdi,%rdi,4), %rax # sched: [2:1.00]
; JAG-NOOPT-NEXT: imulq %rcx, %rax # sched: [6:4.00]
; JAG-NOOPT-NEXT: retq # sched: [4:1.00]
;
; BTVER2-LABEL: rshift10:
; BTVER2: # %bb.0: # %entry
; BTVER2-NEXT: shrq $62, %rdi # sched: [1:0.50]
-; BTVER2-NEXT: leaq (%rdi,%rsi,4), %rax # sched: [1:0.50]
+; BTVER2-NEXT: leaq (%rdi,%rsi,4), %rax # sched: [2:1.00]
; BTVER2-NEXT: retq # sched: [4:1.00]
;
; BDVER1-LABEL: rshift10:
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 1 1 0.50 leaw 0, %cx
+# CHECK-NEXT: 1 3 2.00 leaw 0, %cx
# CHECK-NEXT: 1 1 0.50 leal 0, %ecx
# CHECK-NEXT: 1 1 0.50 leaq 0, %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (%eax), %cx
+# CHECK-NEXT: 1 3 2.00 leaw (%eax), %cx
# CHECK-NEXT: 1 1 0.50 leal (%eax), %ecx
# CHECK-NEXT: 1 1 0.50 leaq (%eax), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (%rax), %cx
+# CHECK-NEXT: 1 3 2.00 leaw (%rax), %cx
# CHECK-NEXT: 1 1 0.50 leal (%rax), %ecx
# CHECK-NEXT: 1 1 0.50 leaq (%rax), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw (,%ebx), %cx
# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw (,%rbx), %cx
# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (,%ebx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw (,%ebx), %cx
# CHECK-NEXT: 1 1 0.50 leal (,%ebx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq (,%ebx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (,%rbx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw (,%rbx), %cx
# CHECK-NEXT: 1 1 0.50 leal (,%rbx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq (,%rbx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (,%ebx,2), %cx
-# CHECK-NEXT: 1 1 0.50 leal (,%ebx,2), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq (,%ebx,2), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (,%rbx,2), %cx
-# CHECK-NEXT: 1 1 0.50 leal (,%rbx,2), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq (,%rbx,2), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw (,%ebx,2), %cx
+# CHECK-NEXT: 1 2 1.00 leal (,%ebx,2), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq (,%ebx,2), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw (,%rbx,2), %cx
+# CHECK-NEXT: 1 2 1.00 leal (,%rbx,2), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq (,%rbx,2), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw (%eax,%ebx), %cx
# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw (%rax,%rbx), %cx
# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw (%eax,%ebx), %cx
# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw (%rax,%rbx), %cx
# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (%eax,%ebx,2), %cx
-# CHECK-NEXT: 1 1 0.50 leal (%eax,%ebx,2), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq (%eax,%ebx,2), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw (%rax,%rbx,2), %cx
-# CHECK-NEXT: 1 1 0.50 leal (%rax,%rbx,2), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq (%rax,%rbx,2), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16, %cx
+# CHECK-NEXT: 1 3 2.00 leaw (%eax,%ebx,2), %cx
+# CHECK-NEXT: 1 2 1.00 leal (%eax,%ebx,2), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq (%eax,%ebx,2), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw (%rax,%rbx,2), %cx
+# CHECK-NEXT: 1 2 1.00 leal (%rax,%rbx,2), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq (%rax,%rbx,2), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw -16, %cx
# CHECK-NEXT: 1 1 0.50 leal -16, %ecx
# CHECK-NEXT: 1 1 0.50 leaq -16, %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(%eax), %cx
+# CHECK-NEXT: 1 3 2.00 leaw -16(%eax), %cx
# CHECK-NEXT: 1 1 0.50 leal -16(%eax), %ecx
# CHECK-NEXT: 1 1 0.50 leaq -16(%eax), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(%rax), %cx
+# CHECK-NEXT: 1 3 2.00 leaw -16(%rax), %cx
# CHECK-NEXT: 1 1 0.50 leal -16(%rax), %ecx
# CHECK-NEXT: 1 1 0.50 leaq -16(%rax), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw -16(,%ebx), %cx
# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw -16(,%rbx), %cx
# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw -16(,%ebx), %cx
# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw -16(,%rbx), %cx
# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(,%ebx,2), %cx
-# CHECK-NEXT: 1 1 0.50 leal -16(,%ebx,2), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq -16(,%ebx,2), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(,%rbx,2), %cx
-# CHECK-NEXT: 1 1 0.50 leal -16(,%rbx,2), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq -16(,%rbx,2), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx
-# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx
-# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx), %cx
-# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx), %cx
-# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(%eax,%ebx,2), %cx
-# CHECK-NEXT: 1 1 0.50 leal -16(%eax,%ebx,2), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq -16(%eax,%ebx,2), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw -16(%rax,%rbx,2), %cx
-# CHECK-NEXT: 1 1 0.50 leal -16(%rax,%rbx,2), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq -16(%rax,%rbx,2), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024, %cx
+# CHECK-NEXT: 1 3 2.00 leaw -16(,%ebx,2), %cx
+# CHECK-NEXT: 1 2 1.00 leal -16(,%ebx,2), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq -16(,%ebx,2), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw -16(,%rbx,2), %cx
+# CHECK-NEXT: 1 2 1.00 leal -16(,%rbx,2), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq -16(,%rbx,2), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw -16(%eax,%ebx), %cx
+# CHECK-NEXT: 1 2 1.00 leal -16(%eax,%ebx), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq -16(%eax,%ebx), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw -16(%rax,%rbx), %cx
+# CHECK-NEXT: 1 2 1.00 leal -16(%rax,%rbx), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq -16(%rax,%rbx), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw -16(%eax,%ebx), %cx
+# CHECK-NEXT: 1 2 1.00 leal -16(%eax,%ebx), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq -16(%eax,%ebx), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw -16(%rax,%rbx), %cx
+# CHECK-NEXT: 1 2 1.00 leal -16(%rax,%rbx), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq -16(%rax,%rbx), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw -16(%eax,%ebx,2), %cx
+# CHECK-NEXT: 1 2 1.00 leal -16(%eax,%ebx,2), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq -16(%eax,%ebx,2), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw -16(%rax,%rbx,2), %cx
+# CHECK-NEXT: 1 2 1.00 leal -16(%rax,%rbx,2), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq -16(%rax,%rbx,2), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw 1024, %cx
# CHECK-NEXT: 1 1 0.50 leal 1024, %ecx
# CHECK-NEXT: 1 1 0.50 leaq 1024, %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax), %cx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(%eax), %cx
# CHECK-NEXT: 1 1 0.50 leal 1024(%eax), %ecx
# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax), %cx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(%rax), %cx
# CHECK-NEXT: 1 1 0.50 leal 1024(%rax), %ecx
# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(,%ebx), %cx
# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(,%rbx), %cx
# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(,%ebx), %cx
# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx), %cx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(,%rbx), %cx
# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx), %ecx
# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(,%ebx,2), %cx
-# CHECK-NEXT: 1 1 0.50 leal 1024(,%ebx,2), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq 1024(,%ebx,2), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(,%rbx,2), %cx
-# CHECK-NEXT: 1 1 0.50 leal 1024(,%rbx,2), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq 1024(,%rbx,2), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx
-# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx
-# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx), %cx
-# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx), %cx
-# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(%eax,%ebx,2), %cx
-# CHECK-NEXT: 1 1 0.50 leal 1024(%eax,%ebx,2), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq 1024(%eax,%ebx,2), %rcx
-# CHECK-NEXT: 1 1 0.50 leaw 1024(%rax,%rbx,2), %cx
-# CHECK-NEXT: 1 1 0.50 leal 1024(%rax,%rbx,2), %ecx
-# CHECK-NEXT: 1 1 0.50 leaq 1024(%rax,%rbx,2), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(,%ebx,2), %cx
+# CHECK-NEXT: 1 2 1.00 leal 1024(,%ebx,2), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq 1024(,%ebx,2), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(,%rbx,2), %cx
+# CHECK-NEXT: 1 2 1.00 leal 1024(,%rbx,2), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq 1024(,%rbx,2), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(%eax,%ebx), %cx
+# CHECK-NEXT: 1 2 1.00 leal 1024(%eax,%ebx), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq 1024(%eax,%ebx), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(%rax,%rbx), %cx
+# CHECK-NEXT: 1 2 1.00 leal 1024(%rax,%rbx), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq 1024(%rax,%rbx), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(%eax,%ebx), %cx
+# CHECK-NEXT: 1 2 1.00 leal 1024(%eax,%ebx), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq 1024(%eax,%ebx), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(%rax,%rbx), %cx
+# CHECK-NEXT: 1 2 1.00 leal 1024(%rax,%rbx), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq 1024(%rax,%rbx), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(%eax,%ebx,2), %cx
+# CHECK-NEXT: 1 2 1.00 leal 1024(%eax,%ebx,2), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq 1024(%eax,%ebx,2), %rcx
+# CHECK-NEXT: 1 3 2.00 leaw 1024(%rax,%rbx,2), %cx
+# CHECK-NEXT: 1 2 1.00 leal 1024(%rax,%rbx,2), %ecx
+# CHECK-NEXT: 1 2 1.00 leaq 1024(%rax,%rbx,2), %rcx
# CHECK: Resources:
# CHECK-NEXT: [0] - JALU0
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]
-# CHECK-NEXT: 67.50 67.50 - - - - - - - - - - - -
+# CHECK-NEXT: 115.00 155.00 - - - - - - - 40.00 - - - -
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] Instructions:
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 0, %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 0, %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 0, %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 0, %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (%eax), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (%eax), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (%eax), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (%eax), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (%rax), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (%rax), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (%rax), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (%rax), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (,%ebx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (,%ebx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (,%ebx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (,%ebx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (,%rbx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (,%rbx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (,%rbx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (,%rbx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (,%ebx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (,%ebx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (,%ebx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (,%ebx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (,%rbx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (,%rbx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (,%rbx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (,%rbx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (,%ebx,2), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (,%ebx,2), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (,%ebx,2), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (,%rbx,2), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (,%rbx,2), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (,%rbx,2), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (%eax,%ebx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (,%ebx,2), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal (,%ebx,2), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq (,%ebx,2), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (,%rbx,2), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal (,%rbx,2), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq (,%rbx,2), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (%eax,%ebx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (%eax,%ebx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (%eax,%ebx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (%rax,%rbx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (%rax,%rbx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (%rax,%rbx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (%rax,%rbx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (%eax,%ebx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (%eax,%ebx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (%eax,%ebx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (%eax,%ebx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (%rax,%rbx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (%rax,%rbx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (%rax,%rbx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (%rax,%rbx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (%eax,%ebx,2), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (%eax,%ebx,2), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (%eax,%ebx,2), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw (%rax,%rbx,2), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal (%rax,%rbx,2), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq (%rax,%rbx,2), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16, %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (%eax,%ebx,2), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal (%eax,%ebx,2), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq (%eax,%ebx,2), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw (%rax,%rbx,2), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal (%rax,%rbx,2), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq (%rax,%rbx,2), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16, %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16, %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16, %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(%eax), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(%eax), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(%eax), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(%eax), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(%rax), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(%rax), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(%rax), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(%rax), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(,%ebx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(,%ebx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(,%ebx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(,%ebx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(,%rbx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(,%rbx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(,%rbx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(,%rbx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(,%ebx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(,%ebx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(,%ebx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(,%ebx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(,%rbx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(,%rbx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(,%rbx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(,%rbx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(,%ebx,2), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(,%ebx,2), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(,%ebx,2), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(,%rbx,2), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(,%rbx,2), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(,%rbx,2), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(%eax,%ebx), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(%eax,%ebx), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(%eax,%ebx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(%rax,%rbx), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(%rax,%rbx), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(%rax,%rbx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(%eax,%ebx), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(%eax,%ebx), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(%eax,%ebx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(%rax,%rbx), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(%rax,%rbx), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(%rax,%rbx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(%eax,%ebx,2), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(%eax,%ebx,2), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(%eax,%ebx,2), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw -16(%rax,%rbx,2), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal -16(%rax,%rbx,2), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq -16(%rax,%rbx,2), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024, %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(,%ebx,2), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal -16(,%ebx,2), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq -16(,%ebx,2), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(,%rbx,2), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal -16(,%rbx,2), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq -16(,%rbx,2), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(%eax,%ebx), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal -16(%eax,%ebx), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq -16(%eax,%ebx), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(%rax,%rbx), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal -16(%rax,%rbx), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq -16(%rax,%rbx), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(%eax,%ebx), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal -16(%eax,%ebx), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq -16(%eax,%ebx), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(%rax,%rbx), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal -16(%rax,%rbx), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq -16(%rax,%rbx), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(%eax,%ebx,2), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal -16(%eax,%ebx,2), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq -16(%eax,%ebx,2), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw -16(%rax,%rbx,2), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal -16(%rax,%rbx,2), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq -16(%rax,%rbx,2), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024, %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024, %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024, %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(%eax), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(%eax), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(%eax), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(%eax), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(%rax), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(%rax), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(%rax), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(%rax), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(,%ebx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(,%ebx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(,%ebx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(,%ebx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(,%rbx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(,%rbx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(,%rbx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(,%rbx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(,%ebx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(,%ebx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(,%ebx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(,%ebx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(,%rbx), %cx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(,%rbx), %cx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(,%rbx), %ecx
# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(,%rbx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(,%ebx,2), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(,%ebx,2), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(,%ebx,2), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(,%rbx,2), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(,%rbx,2), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(,%rbx,2), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(%eax,%ebx), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(%eax,%ebx), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(%eax,%ebx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(%rax,%rbx), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(%rax,%rbx), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(%rax,%rbx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(%eax,%ebx), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(%eax,%ebx), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(%eax,%ebx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(%rax,%rbx), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(%rax,%rbx), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(%rax,%rbx), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(%eax,%ebx,2), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(%eax,%ebx,2), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(%eax,%ebx,2), %rcx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaw 1024(%rax,%rbx,2), %cx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leal 1024(%rax,%rbx,2), %ecx
-# CHECK-NEXT: 0.50 0.50 - - - - - - - - - - - - leaq 1024(%rax,%rbx,2), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(,%ebx,2), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal 1024(,%ebx,2), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq 1024(,%ebx,2), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(,%rbx,2), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal 1024(,%rbx,2), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq 1024(,%rbx,2), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(%eax,%ebx), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal 1024(%eax,%ebx), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq 1024(%eax,%ebx), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(%rax,%rbx), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal 1024(%rax,%rbx), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq 1024(%rax,%rbx), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(%eax,%ebx), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal 1024(%eax,%ebx), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq 1024(%eax,%ebx), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(%rax,%rbx), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal 1024(%rax,%rbx), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq 1024(%rax,%rbx), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(%eax,%ebx,2), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal 1024(%eax,%ebx,2), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq 1024(%eax,%ebx,2), %rcx
+# CHECK-NEXT: 2.00 2.00 - - - - - - - - - - - - leaw 1024(%rax,%rbx,2), %cx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leal 1024(%rax,%rbx,2), %ecx
+# CHECK-NEXT: - 1.00 - - - - - - - 1.00 - - - - leaq 1024(%rax,%rbx,2), %rcx