def: InstRW<[SBWriteResGroup4], (instregex "LAHF")>;
def: InstRW<[SBWriteResGroup4], (instregex "SAHF")>;
def: InstRW<[SBWriteResGroup4], (instregex "SAR(8|16|32|64)ri")>;
+def: InstRW<[SBWriteResGroup4], (instregex "SAR(8|16|32|64)r1")>;
def: InstRW<[SBWriteResGroup4], (instregex "SET(AE|B|E|G|GE|L|LE|NE|NO|NP|NS|O|P|S)r")>;
def: InstRW<[SBWriteResGroup4], (instregex "SHL(8|16|32|64)ri")>;
def: InstRW<[SBWriteResGroup4], (instregex "SHL(8|16|32|64)r1")>;
def: InstRW<[SBWriteResGroup4], (instregex "SHR(8|16|32|64)ri")>;
+def: InstRW<[SBWriteResGroup4], (instregex "SHR(8|16|32|64)r1")>;
def: InstRW<[SBWriteResGroup4], (instregex "VBLENDPDYrri")>;
def: InstRW<[SBWriteResGroup4], (instregex "VBLENDPDrri")>;
def: InstRW<[SBWriteResGroup4], (instregex "VBLENDPSYrri")>;
}
def: InstRW<[SBWriteResGroup9], (instregex "BLENDVPDrr0")>;
def: InstRW<[SBWriteResGroup9], (instregex "BLENDVPSrr0")>;
+def: InstRW<[SBWriteResGroup9], (instregex "ROL(8|16|32|64)r1")>;
def: InstRW<[SBWriteResGroup9], (instregex "ROL(8|16|32|64)ri")>;
+def: InstRW<[SBWriteResGroup9], (instregex "ROR(8|16|32|64)r1")>;
def: InstRW<[SBWriteResGroup9], (instregex "ROR(8|16|32|64)ri")>;
def: InstRW<[SBWriteResGroup9], (instregex "SET(A|BE)r")>;
def: InstRW<[SBWriteResGroup9], (instregex "VBLENDVPDYrr")>;
def: InstRW<[SBWriteResGroup69], (instregex "BTC(16|32|64)mi8")>;
def: InstRW<[SBWriteResGroup69], (instregex "BTR(16|32|64)mi8")>;
def: InstRW<[SBWriteResGroup69], (instregex "BTS(16|32|64)mi8")>;
+def: InstRW<[SBWriteResGroup69], (instregex "SAR(8|16|32|64)m1")>;
def: InstRW<[SBWriteResGroup69], (instregex "SAR(8|16|32|64)mi")>;
def: InstRW<[SBWriteResGroup69], (instregex "SHL(8|16|32|64)m1")>;
def: InstRW<[SBWriteResGroup69], (instregex "SHL(8|16|32|64)mi")>;
+def: InstRW<[SBWriteResGroup69], (instregex "SHR(8|16|32|64)m1")>;
def: InstRW<[SBWriteResGroup69], (instregex "SHR(8|16|32|64)mi")>;
def SBWriteResGroup70 : SchedWriteRes<[SBPort4,SBPort23,SBPort015]> {
let NumMicroOps = 5;
let ResourceCycles = [1,2,2];
}
+def: InstRW<[SBWriteResGroup85], (instregex "ROL(8|16|32|64)m1")>;
def: InstRW<[SBWriteResGroup85], (instregex "ROL(8|16|32|64)mi")>;
+def: InstRW<[SBWriteResGroup85], (instregex "ROR(8|16|32|64)m1")>;
def: InstRW<[SBWriteResGroup85], (instregex "ROR(8|16|32|64)mi")>;
def SBWriteResGroup86 : SchedWriteRes<[SBPort4,SBPort23,SBPort015]> {
; GENERIC-LABEL: test_rol_ror_8:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: rolb %dil # sched: [1:0.50]
-; GENERIC-NEXT: rorb %dil # sched: [1:0.50]
-; GENERIC-NEXT: rolb (%rdx) # sched: [5:1.00]
-; GENERIC-NEXT: rorb (%rdx) # sched: [5:1.00]
+; GENERIC-NEXT: rolb %dil # sched: [2:1.00]
+; GENERIC-NEXT: rorb %dil # sched: [2:1.00]
+; GENERIC-NEXT: rolb (%rdx) # sched: [8:1.00]
+; GENERIC-NEXT: rorb (%rdx) # sched: [8:1.00]
; GENERIC-NEXT: rolb $7, %dil # sched: [2:1.00]
; GENERIC-NEXT: rorb $7, %dil # sched: [2:1.00]
; GENERIC-NEXT: rolb $7, (%rdx) # sched: [8:1.00]
; SANDY-LABEL: test_rol_ror_8:
; SANDY: # %bb.0:
; SANDY-NEXT: #APP
-; SANDY-NEXT: rolb %dil # sched: [1:0.50]
-; SANDY-NEXT: rorb %dil # sched: [1:0.50]
-; SANDY-NEXT: rolb (%rdx) # sched: [5:1.00]
-; SANDY-NEXT: rorb (%rdx) # sched: [5:1.00]
+; SANDY-NEXT: rolb %dil # sched: [2:1.00]
+; SANDY-NEXT: rorb %dil # sched: [2:1.00]
+; SANDY-NEXT: rolb (%rdx) # sched: [8:1.00]
+; SANDY-NEXT: rorb (%rdx) # sched: [8:1.00]
; SANDY-NEXT: rolb $7, %dil # sched: [2:1.00]
; SANDY-NEXT: rorb $7, %dil # sched: [2:1.00]
; SANDY-NEXT: rolb $7, (%rdx) # sched: [8:1.00]
; GENERIC-LABEL: test_rol_ror_16:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: rolw %di # sched: [1:0.50]
-; GENERIC-NEXT: rorw %di # sched: [1:0.50]
-; GENERIC-NEXT: rolw (%rdx) # sched: [5:1.00]
-; GENERIC-NEXT: rorw (%rdx) # sched: [5:1.00]
+; GENERIC-NEXT: rolw %di # sched: [2:1.00]
+; GENERIC-NEXT: rorw %di # sched: [2:1.00]
+; GENERIC-NEXT: rolw (%rdx) # sched: [8:1.00]
+; GENERIC-NEXT: rorw (%rdx) # sched: [8:1.00]
; GENERIC-NEXT: rolw $7, %di # sched: [2:1.00]
; GENERIC-NEXT: rorw $7, %di # sched: [2:1.00]
; GENERIC-NEXT: rolw $7, (%rdx) # sched: [8:1.00]
; SANDY-LABEL: test_rol_ror_16:
; SANDY: # %bb.0:
; SANDY-NEXT: #APP
-; SANDY-NEXT: rolw %di # sched: [1:0.50]
-; SANDY-NEXT: rorw %di # sched: [1:0.50]
-; SANDY-NEXT: rolw (%rdx) # sched: [5:1.00]
-; SANDY-NEXT: rorw (%rdx) # sched: [5:1.00]
+; SANDY-NEXT: rolw %di # sched: [2:1.00]
+; SANDY-NEXT: rorw %di # sched: [2:1.00]
+; SANDY-NEXT: rolw (%rdx) # sched: [8:1.00]
+; SANDY-NEXT: rorw (%rdx) # sched: [8:1.00]
; SANDY-NEXT: rolw $7, %di # sched: [2:1.00]
; SANDY-NEXT: rorw $7, %di # sched: [2:1.00]
; SANDY-NEXT: rolw $7, (%rdx) # sched: [8:1.00]
; GENERIC-LABEL: test_rol_ror_32:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: roll %edi # sched: [1:0.50]
-; GENERIC-NEXT: rorl %edi # sched: [1:0.50]
-; GENERIC-NEXT: roll (%rdx) # sched: [5:1.00]
-; GENERIC-NEXT: rorl (%rdx) # sched: [5:1.00]
+; GENERIC-NEXT: roll %edi # sched: [2:1.00]
+; GENERIC-NEXT: rorl %edi # sched: [2:1.00]
+; GENERIC-NEXT: roll (%rdx) # sched: [8:1.00]
+; GENERIC-NEXT: rorl (%rdx) # sched: [8:1.00]
; GENERIC-NEXT: roll $7, %edi # sched: [2:1.00]
; GENERIC-NEXT: rorl $7, %edi # sched: [2:1.00]
; GENERIC-NEXT: roll $7, (%rdx) # sched: [8:1.00]
; SANDY-LABEL: test_rol_ror_32:
; SANDY: # %bb.0:
; SANDY-NEXT: #APP
-; SANDY-NEXT: roll %edi # sched: [1:0.50]
-; SANDY-NEXT: rorl %edi # sched: [1:0.50]
-; SANDY-NEXT: roll (%rdx) # sched: [5:1.00]
-; SANDY-NEXT: rorl (%rdx) # sched: [5:1.00]
+; SANDY-NEXT: roll %edi # sched: [2:1.00]
+; SANDY-NEXT: rorl %edi # sched: [2:1.00]
+; SANDY-NEXT: roll (%rdx) # sched: [8:1.00]
+; SANDY-NEXT: rorl (%rdx) # sched: [8:1.00]
; SANDY-NEXT: roll $7, %edi # sched: [2:1.00]
; SANDY-NEXT: rorl $7, %edi # sched: [2:1.00]
; SANDY-NEXT: roll $7, (%rdx) # sched: [8:1.00]
; GENERIC-LABEL: test_rol_ror_64:
; GENERIC: # %bb.0:
; GENERIC-NEXT: #APP
-; GENERIC-NEXT: rolq %rdi # sched: [1:0.50]
-; GENERIC-NEXT: rorq %rdi # sched: [1:0.50]
-; GENERIC-NEXT: rolq (%rdx) # sched: [5:1.00]
-; GENERIC-NEXT: rorq (%rdx) # sched: [5:1.00]
+; GENERIC-NEXT: rolq %rdi # sched: [2:1.00]
+; GENERIC-NEXT: rorq %rdi # sched: [2:1.00]
+; GENERIC-NEXT: rolq (%rdx) # sched: [8:1.00]
+; GENERIC-NEXT: rorq (%rdx) # sched: [8:1.00]
; GENERIC-NEXT: rolq $7, %rdi # sched: [2:1.00]
; GENERIC-NEXT: rorq $7, %rdi # sched: [2:1.00]
; GENERIC-NEXT: rolq $7, (%rdx) # sched: [8:1.00]
; SANDY-LABEL: test_rol_ror_64:
; SANDY: # %bb.0:
; SANDY-NEXT: #APP
-; SANDY-NEXT: rolq %rdi # sched: [1:0.50]
-; SANDY-NEXT: rorq %rdi # sched: [1:0.50]
-; SANDY-NEXT: rolq (%rdx) # sched: [5:1.00]
-; SANDY-NEXT: rorq (%rdx) # sched: [5:1.00]
+; SANDY-NEXT: rolq %rdi # sched: [2:1.00]
+; SANDY-NEXT: rorq %rdi # sched: [2:1.00]
+; SANDY-NEXT: rolq (%rdx) # sched: [8:1.00]
+; SANDY-NEXT: rorq (%rdx) # sched: [8:1.00]
; SANDY-NEXT: rolq $7, %rdi # sched: [2:1.00]
; SANDY-NEXT: rorq $7, %rdi # sched: [2:1.00]
; SANDY-NEXT: rolq $7, (%rdx) # sched: [8:1.00]
; GENERIC-NEXT: sarb %dil # sched: [1:0.50]
; GENERIC-NEXT: shlb %dil # sched: [1:0.50]
; GENERIC-NEXT: shrb %dil # sched: [1:0.50]
-; GENERIC-NEXT: sarb (%rdx) # sched: [5:1.00]
+; GENERIC-NEXT: sarb (%rdx) # sched: [7:1.00]
; GENERIC-NEXT: shlb (%rdx) # sched: [7:1.00]
-; GENERIC-NEXT: shrb (%rdx) # sched: [5:1.00]
+; GENERIC-NEXT: shrb (%rdx) # sched: [7:1.00]
; GENERIC-NEXT: sarb $7, %dil # sched: [1:0.50]
; GENERIC-NEXT: shlb $7, %dil # sched: [1:0.50]
; GENERIC-NEXT: shrb $7, %dil # sched: [1:0.50]
; SANDY-NEXT: sarb %dil # sched: [1:0.50]
; SANDY-NEXT: shlb %dil # sched: [1:0.50]
; SANDY-NEXT: shrb %dil # sched: [1:0.50]
-; SANDY-NEXT: sarb (%rdx) # sched: [5:1.00]
+; SANDY-NEXT: sarb (%rdx) # sched: [7:1.00]
; SANDY-NEXT: shlb (%rdx) # sched: [7:1.00]
-; SANDY-NEXT: shrb (%rdx) # sched: [5:1.00]
+; SANDY-NEXT: shrb (%rdx) # sched: [7:1.00]
; SANDY-NEXT: sarb $7, %dil # sched: [1:0.50]
; SANDY-NEXT: shlb $7, %dil # sched: [1:0.50]
; SANDY-NEXT: shrb $7, %dil # sched: [1:0.50]
; GENERIC-NEXT: sarw %di # sched: [1:0.50]
; GENERIC-NEXT: shlw %di # sched: [1:0.50]
; GENERIC-NEXT: shrw %di # sched: [1:0.50]
-; GENERIC-NEXT: sarw (%rdx) # sched: [5:1.00]
+; GENERIC-NEXT: sarw (%rdx) # sched: [7:1.00]
; GENERIC-NEXT: shlw (%rdx) # sched: [7:1.00]
-; GENERIC-NEXT: shrw (%rdx) # sched: [5:1.00]
+; GENERIC-NEXT: shrw (%rdx) # sched: [7:1.00]
; GENERIC-NEXT: sarw $7, %di # sched: [1:0.50]
; GENERIC-NEXT: shlw $7, %di # sched: [1:0.50]
; GENERIC-NEXT: shrw $7, %di # sched: [1:0.50]
; SANDY-NEXT: sarw %di # sched: [1:0.50]
; SANDY-NEXT: shlw %di # sched: [1:0.50]
; SANDY-NEXT: shrw %di # sched: [1:0.50]
-; SANDY-NEXT: sarw (%rdx) # sched: [5:1.00]
+; SANDY-NEXT: sarw (%rdx) # sched: [7:1.00]
; SANDY-NEXT: shlw (%rdx) # sched: [7:1.00]
-; SANDY-NEXT: shrw (%rdx) # sched: [5:1.00]
+; SANDY-NEXT: shrw (%rdx) # sched: [7:1.00]
; SANDY-NEXT: sarw $7, %di # sched: [1:0.50]
; SANDY-NEXT: shlw $7, %di # sched: [1:0.50]
; SANDY-NEXT: shrw $7, %di # sched: [1:0.50]
; GENERIC-NEXT: sarl %edi # sched: [1:0.50]
; GENERIC-NEXT: shll %edi # sched: [1:0.50]
; GENERIC-NEXT: shrl %edi # sched: [1:0.50]
-; GENERIC-NEXT: sarl (%rdx) # sched: [5:1.00]
+; GENERIC-NEXT: sarl (%rdx) # sched: [7:1.00]
; GENERIC-NEXT: shll (%rdx) # sched: [7:1.00]
-; GENERIC-NEXT: shrl (%rdx) # sched: [5:1.00]
+; GENERIC-NEXT: shrl (%rdx) # sched: [7:1.00]
; GENERIC-NEXT: sarl $7, %edi # sched: [1:0.50]
; GENERIC-NEXT: shll $7, %edi # sched: [1:0.50]
; GENERIC-NEXT: shrl $7, %edi # sched: [1:0.50]
; SANDY-NEXT: sarl %edi # sched: [1:0.50]
; SANDY-NEXT: shll %edi # sched: [1:0.50]
; SANDY-NEXT: shrl %edi # sched: [1:0.50]
-; SANDY-NEXT: sarl (%rdx) # sched: [5:1.00]
+; SANDY-NEXT: sarl (%rdx) # sched: [7:1.00]
; SANDY-NEXT: shll (%rdx) # sched: [7:1.00]
-; SANDY-NEXT: shrl (%rdx) # sched: [5:1.00]
+; SANDY-NEXT: shrl (%rdx) # sched: [7:1.00]
; SANDY-NEXT: sarl $7, %edi # sched: [1:0.50]
; SANDY-NEXT: shll $7, %edi # sched: [1:0.50]
; SANDY-NEXT: shrl $7, %edi # sched: [1:0.50]
; GENERIC-NEXT: sarq %rdi # sched: [1:0.50]
; GENERIC-NEXT: shlq %rdi # sched: [1:0.50]
; GENERIC-NEXT: shrq %rdi # sched: [1:0.50]
-; GENERIC-NEXT: sarq (%rdx) # sched: [5:1.00]
+; GENERIC-NEXT: sarq (%rdx) # sched: [7:1.00]
; GENERIC-NEXT: shlq (%rdx) # sched: [7:1.00]
-; GENERIC-NEXT: shrq (%rdx) # sched: [5:1.00]
+; GENERIC-NEXT: shrq (%rdx) # sched: [7:1.00]
; GENERIC-NEXT: sarq $7, %rdi # sched: [1:0.50]
; GENERIC-NEXT: shlq $7, %rdi # sched: [1:0.50]
; GENERIC-NEXT: shrq $7, %rdi # sched: [1:0.50]
; SANDY-NEXT: sarq %rdi # sched: [1:0.50]
; SANDY-NEXT: shlq %rdi # sched: [1:0.50]
; SANDY-NEXT: shrq %rdi # sched: [1:0.50]
-; SANDY-NEXT: sarq (%rdx) # sched: [5:1.00]
+; SANDY-NEXT: sarq (%rdx) # sched: [7:1.00]
; SANDY-NEXT: shlq (%rdx) # sched: [7:1.00]
-; SANDY-NEXT: shrq (%rdx) # sched: [5:1.00]
+; SANDY-NEXT: shrq (%rdx) # sched: [7:1.00]
; SANDY-NEXT: sarq $7, %rdi # sched: [1:0.50]
; SANDY-NEXT: shlq $7, %rdi # sched: [1:0.50]
; SANDY-NEXT: shrq $7, %rdi # sched: [1:0.50]