Skip to content

Commit c60461e

Browse files
committed
Set mayLoad = 1 for shift/rotate with a memory operand
1 parent e1472db commit c60461e

File tree

21 files changed

+413
-411
lines changed

21 files changed

+413
-411
lines changed

llvm/lib/Target/X86/X86InstrShiftRotate.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ def RCR64ri : RIi8<0xC1, MRM3r, (outs GR64:$dst), (ins GR64:$src1, u8imm:$cnt),
396396

397397
} // Constraints = "$src = $dst"
398398

399-
let mayStore = 1 in {
399+
let mayLoad = 1, mayStore = 1 in {
400400
let Uses = [EFLAGS], SchedRW = [WriteRotateLd, WriteRMW] in {
401401
def RCL8m1 : I<0xD0, MRM2m, (outs), (ins i8mem:$dst),
402402
"rcl{b}\t$dst", []>;
@@ -456,7 +456,7 @@ def RCR64mCL : RI<0xD3, MRM3m, (outs), (ins i64mem:$dst),
456456
"rcr{q}\t{%cl, $dst|$dst, cl}", []>,
457457
Requires<[In64BitMode]>;
458458
} // Uses = [CL, EFLAGS], SchedRW
459-
} // mayStore
459+
} // mayLoad, mayStore
460460
} // hasSideEffects = 0
461461

462462
let Constraints = "$src1 = $dst" in {

llvm/test/tools/llvm-mca/X86/AlderlakeP/resources-x86_64.s

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1515,52 +1515,52 @@ xorq (%rax), %rdi
15151515
# CHECK-NEXT: 2 4 1.00 * * U pause
15161516
# CHECK-NEXT: 3 2 1.00 rclb %dil
15171517
# CHECK-NEXT: 3 2 1.00 rcrb %dil
1518-
# CHECK-NEXT: 6 13 1.00 * rclb (%rax)
1519-
# CHECK-NEXT: 6 13 1.00 * rcrb (%rax)
1518+
# CHECK-NEXT: 6 13 1.00 * * rclb (%rax)
1519+
# CHECK-NEXT: 6 13 1.00 * * rcrb (%rax)
15201520
# CHECK-NEXT: 3 2 1.00 rclb $7, %dil
15211521
# CHECK-NEXT: 3 2 1.00 rcrb $7, %dil
1522-
# CHECK-NEXT: 6 13 1.00 * rclb $7, (%rax)
1523-
# CHECK-NEXT: 6 13 1.00 * rcrb $7, (%rax)
1522+
# CHECK-NEXT: 6 13 1.00 * * rclb $7, (%rax)
1523+
# CHECK-NEXT: 6 13 1.00 * * rcrb $7, (%rax)
15241524
# CHECK-NEXT: 9 7 2.50 rclb %cl, %dil
15251525
# CHECK-NEXT: 10 9 3.00 rcrb %cl, %dil
1526-
# CHECK-NEXT: 11 20 2.50 * rclb %cl, (%rax)
1527-
# CHECK-NEXT: 12 20 3.00 * rcrb %cl, (%rax)
1526+
# CHECK-NEXT: 11 20 2.50 * * rclb %cl, (%rax)
1527+
# CHECK-NEXT: 12 20 3.00 * * rcrb %cl, (%rax)
15281528
# CHECK-NEXT: 3 2 1.00 rclw %di
15291529
# CHECK-NEXT: 3 2 1.00 rcrw %di
1530-
# CHECK-NEXT: 6 12 1.00 * rclw (%rax)
1531-
# CHECK-NEXT: 6 12 1.00 * rcrw (%rax)
1530+
# CHECK-NEXT: 6 12 1.00 * * rclw (%rax)
1531+
# CHECK-NEXT: 6 12 1.00 * * rcrw (%rax)
15321532
# CHECK-NEXT: 3 2 1.00 rclw $7, %di
15331533
# CHECK-NEXT: 3 2 1.00 rcrw $7, %di
1534-
# CHECK-NEXT: 6 12 1.00 * rclw $7, (%rax)
1535-
# CHECK-NEXT: 6 12 1.00 * rcrw $7, (%rax)
1534+
# CHECK-NEXT: 6 12 1.00 * * rclw $7, (%rax)
1535+
# CHECK-NEXT: 6 12 1.00 * * rcrw $7, (%rax)
15361536
# CHECK-NEXT: 7 8 2.00 rclw %cl, %di
15371537
# CHECK-NEXT: 7 8 2.00 rcrw %cl, %di
1538-
# CHECK-NEXT: 10 19 2.00 * rclw %cl, (%rax)
1539-
# CHECK-NEXT: 10 19 2.00 * rcrw %cl, (%rax)
1538+
# CHECK-NEXT: 10 19 2.00 * * rclw %cl, (%rax)
1539+
# CHECK-NEXT: 10 19 2.00 * * rcrw %cl, (%rax)
15401540
# CHECK-NEXT: 3 2 1.00 rcll %edi
15411541
# CHECK-NEXT: 3 2 1.00 rcrl %edi
1542-
# CHECK-NEXT: 6 12 1.00 * rcll (%rax)
1543-
# CHECK-NEXT: 6 12 1.00 * rcrl (%rax)
1542+
# CHECK-NEXT: 6 12 1.00 * * rcll (%rax)
1543+
# CHECK-NEXT: 6 12 1.00 * * rcrl (%rax)
15441544
# CHECK-NEXT: 3 2 1.00 rcll $7, %edi
15451545
# CHECK-NEXT: 3 2 1.00 rcrl $7, %edi
1546-
# CHECK-NEXT: 6 12 1.00 * rcll $7, (%rax)
1547-
# CHECK-NEXT: 6 12 1.00 * rcrl $7, (%rax)
1546+
# CHECK-NEXT: 6 12 1.00 * * rcll $7, (%rax)
1547+
# CHECK-NEXT: 6 12 1.00 * * rcrl $7, (%rax)
15481548
# CHECK-NEXT: 7 8 2.00 rcll %cl, %edi
15491549
# CHECK-NEXT: 7 8 2.00 rcrl %cl, %edi
1550-
# CHECK-NEXT: 10 19 2.00 * rcll %cl, (%rax)
1551-
# CHECK-NEXT: 10 19 2.00 * rcrl %cl, (%rax)
1550+
# CHECK-NEXT: 10 19 2.00 * * rcll %cl, (%rax)
1551+
# CHECK-NEXT: 10 19 2.00 * * rcrl %cl, (%rax)
15521552
# CHECK-NEXT: 3 2 1.00 rclq %rdi
15531553
# CHECK-NEXT: 3 2 1.00 rcrq %rdi
1554-
# CHECK-NEXT: 6 12 1.00 * rclq (%rax)
1555-
# CHECK-NEXT: 6 12 1.00 * rcrq (%rax)
1554+
# CHECK-NEXT: 6 12 1.00 * * rclq (%rax)
1555+
# CHECK-NEXT: 6 12 1.00 * * rcrq (%rax)
15561556
# CHECK-NEXT: 3 2 1.00 rclq $7, %rdi
15571557
# CHECK-NEXT: 3 2 1.00 rcrq $7, %rdi
1558-
# CHECK-NEXT: 6 12 1.00 * rclq $7, (%rax)
1559-
# CHECK-NEXT: 6 12 1.00 * rcrq $7, (%rax)
1558+
# CHECK-NEXT: 6 12 1.00 * * rclq $7, (%rax)
1559+
# CHECK-NEXT: 6 12 1.00 * * rcrq $7, (%rax)
15601560
# CHECK-NEXT: 7 8 2.00 rclq %cl, %rdi
15611561
# CHECK-NEXT: 7 8 2.00 rcrq %cl, %rdi
1562-
# CHECK-NEXT: 10 19 2.00 * rclq %cl, (%rax)
1563-
# CHECK-NEXT: 10 19 2.00 * rcrq %cl, (%rax)
1562+
# CHECK-NEXT: 10 19 2.00 * * rclq %cl, (%rax)
1563+
# CHECK-NEXT: 10 19 2.00 * * rcrq %cl, (%rax)
15641564
# CHECK-NEXT: 54 100 13.25 U rdmsr
15651565
# CHECK-NEXT: 18 100 3.60 U rdpmc
15661566
# CHECK-NEXT: 15 18 3.00 U rdtsc

llvm/test/tools/llvm-mca/X86/Atom/resources-x86_64.s

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1515,52 +1515,52 @@ xorq (%rax), %rdi
15151515
# CHECK-NEXT: 1 17 8.50 * * U pause
15161516
# CHECK-NEXT: 1 1 1.00 rclb %dil
15171517
# CHECK-NEXT: 1 1 1.00 rcrb %dil
1518-
# CHECK-NEXT: 1 1 1.00 * rclb (%rax)
1519-
# CHECK-NEXT: 1 1 1.00 * rcrb (%rax)
1518+
# CHECK-NEXT: 1 1 1.00 * * rclb (%rax)
1519+
# CHECK-NEXT: 1 1 1.00 * * rcrb (%rax)
15201520
# CHECK-NEXT: 1 1 1.00 rclb $7, %dil
15211521
# CHECK-NEXT: 1 1 1.00 rcrb $7, %dil
1522-
# CHECK-NEXT: 1 1 1.00 * rclb $7, (%rax)
1523-
# CHECK-NEXT: 1 1 1.00 * rcrb $7, (%rax)
1522+
# CHECK-NEXT: 1 1 1.00 * * rclb $7, (%rax)
1523+
# CHECK-NEXT: 1 1 1.00 * * rcrb $7, (%rax)
15241524
# CHECK-NEXT: 1 1 1.00 rclb %cl, %dil
15251525
# CHECK-NEXT: 1 1 1.00 rcrb %cl, %dil
1526-
# CHECK-NEXT: 1 1 1.00 * rclb %cl, (%rax)
1527-
# CHECK-NEXT: 1 1 1.00 * rcrb %cl, (%rax)
1526+
# CHECK-NEXT: 1 1 1.00 * * rclb %cl, (%rax)
1527+
# CHECK-NEXT: 1 1 1.00 * * rcrb %cl, (%rax)
15281528
# CHECK-NEXT: 1 1 1.00 rclw %di
15291529
# CHECK-NEXT: 1 1 1.00 rcrw %di
1530-
# CHECK-NEXT: 1 1 1.00 * rclw (%rax)
1531-
# CHECK-NEXT: 1 1 1.00 * rcrw (%rax)
1530+
# CHECK-NEXT: 1 1 1.00 * * rclw (%rax)
1531+
# CHECK-NEXT: 1 1 1.00 * * rcrw (%rax)
15321532
# CHECK-NEXT: 1 1 1.00 rclw $7, %di
15331533
# CHECK-NEXT: 1 1 1.00 rcrw $7, %di
1534-
# CHECK-NEXT: 1 1 1.00 * rclw $7, (%rax)
1535-
# CHECK-NEXT: 1 1 1.00 * rcrw $7, (%rax)
1534+
# CHECK-NEXT: 1 1 1.00 * * rclw $7, (%rax)
1535+
# CHECK-NEXT: 1 1 1.00 * * rcrw $7, (%rax)
15361536
# CHECK-NEXT: 1 1 1.00 rclw %cl, %di
15371537
# CHECK-NEXT: 1 1 1.00 rcrw %cl, %di
1538-
# CHECK-NEXT: 1 1 1.00 * rclw %cl, (%rax)
1539-
# CHECK-NEXT: 1 1 1.00 * rcrw %cl, (%rax)
1538+
# CHECK-NEXT: 1 1 1.00 * * rclw %cl, (%rax)
1539+
# CHECK-NEXT: 1 1 1.00 * * rcrw %cl, (%rax)
15401540
# CHECK-NEXT: 1 1 1.00 rcll %edi
15411541
# CHECK-NEXT: 1 1 1.00 rcrl %edi
1542-
# CHECK-NEXT: 1 1 1.00 * rcll (%rax)
1543-
# CHECK-NEXT: 1 1 1.00 * rcrl (%rax)
1542+
# CHECK-NEXT: 1 1 1.00 * * rcll (%rax)
1543+
# CHECK-NEXT: 1 1 1.00 * * rcrl (%rax)
15441544
# CHECK-NEXT: 1 1 1.00 rcll $7, %edi
15451545
# CHECK-NEXT: 1 1 1.00 rcrl $7, %edi
1546-
# CHECK-NEXT: 1 1 1.00 * rcll $7, (%rax)
1547-
# CHECK-NEXT: 1 1 1.00 * rcrl $7, (%rax)
1546+
# CHECK-NEXT: 1 1 1.00 * * rcll $7, (%rax)
1547+
# CHECK-NEXT: 1 1 1.00 * * rcrl $7, (%rax)
15481548
# CHECK-NEXT: 1 1 1.00 rcll %cl, %edi
15491549
# CHECK-NEXT: 1 1 1.00 rcrl %cl, %edi
1550-
# CHECK-NEXT: 1 1 1.00 * rcll %cl, (%rax)
1551-
# CHECK-NEXT: 1 1 1.00 * rcrl %cl, (%rax)
1550+
# CHECK-NEXT: 1 1 1.00 * * rcll %cl, (%rax)
1551+
# CHECK-NEXT: 1 1 1.00 * * rcrl %cl, (%rax)
15521552
# CHECK-NEXT: 1 1 1.00 rclq %rdi
15531553
# CHECK-NEXT: 1 1 1.00 rcrq %rdi
1554-
# CHECK-NEXT: 1 1 1.00 * rclq (%rax)
1555-
# CHECK-NEXT: 1 1 1.00 * rcrq (%rax)
1554+
# CHECK-NEXT: 1 1 1.00 * * rclq (%rax)
1555+
# CHECK-NEXT: 1 1 1.00 * * rcrq (%rax)
15561556
# CHECK-NEXT: 1 1 1.00 rclq $7, %rdi
15571557
# CHECK-NEXT: 1 1 1.00 rcrq $7, %rdi
1558-
# CHECK-NEXT: 1 1 1.00 * rclq $7, (%rax)
1559-
# CHECK-NEXT: 1 1 1.00 * rcrq $7, (%rax)
1558+
# CHECK-NEXT: 1 1 1.00 * * rclq $7, (%rax)
1559+
# CHECK-NEXT: 1 1 1.00 * * rcrq $7, (%rax)
15601560
# CHECK-NEXT: 1 1 1.00 rclq %cl, %rdi
15611561
# CHECK-NEXT: 1 1 1.00 rcrq %cl, %rdi
1562-
# CHECK-NEXT: 1 1 1.00 * rclq %cl, (%rax)
1563-
# CHECK-NEXT: 1 1 1.00 * rcrq %cl, (%rax)
1562+
# CHECK-NEXT: 1 1 1.00 * * rclq %cl, (%rax)
1563+
# CHECK-NEXT: 1 1 1.00 * * rcrq %cl, (%rax)
15641564
# CHECK-NEXT: 1 78 39.00 U rdmsr
15651565
# CHECK-NEXT: 1 46 23.00 U rdpmc
15661566
# CHECK-NEXT: 1 30 15.00 U rdtsc

llvm/test/tools/llvm-mca/X86/Barcelona/resources-x86_64.s

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1515,52 +1515,52 @@ xorq (%rax), %rdi
15151515
# CHECK-NEXT: 4 4 1.33 * * U pause
15161516
# CHECK-NEXT: 3 2 1.00 rclb %dil
15171517
# CHECK-NEXT: 3 2 1.00 rcrb %dil
1518-
# CHECK-NEXT: 11 11 3.50 * rclb (%rax)
1519-
# CHECK-NEXT: 11 11 3.50 * rcrb (%rax)
1518+
# CHECK-NEXT: 11 11 3.50 * * rclb (%rax)
1519+
# CHECK-NEXT: 11 11 3.50 * * rcrb (%rax)
15201520
# CHECK-NEXT: 8 4 2.67 rclb $7, %dil
15211521
# CHECK-NEXT: 8 3 2.67 rcrb $7, %dil
1522-
# CHECK-NEXT: 11 11 3.50 * rclb $7, (%rax)
1523-
# CHECK-NEXT: 11 11 3.50 * rcrb $7, (%rax)
1522+
# CHECK-NEXT: 11 11 3.50 * * rclb $7, (%rax)
1523+
# CHECK-NEXT: 11 11 3.50 * * rcrb $7, (%rax)
15241524
# CHECK-NEXT: 8 5 4.00 rclb %cl, %dil
15251525
# CHECK-NEXT: 8 5 4.00 rcrb %cl, %dil
1526-
# CHECK-NEXT: 11 11 3.50 * rclb %cl, (%rax)
1527-
# CHECK-NEXT: 11 11 3.50 * rcrb %cl, (%rax)
1526+
# CHECK-NEXT: 11 11 3.50 * * rclb %cl, (%rax)
1527+
# CHECK-NEXT: 11 11 3.50 * * rcrb %cl, (%rax)
15281528
# CHECK-NEXT: 3 2 1.00 rclw %di
15291529
# CHECK-NEXT: 3 2 1.00 rcrw %di
1530-
# CHECK-NEXT: 11 11 3.50 * rclw (%rax)
1531-
# CHECK-NEXT: 11 11 3.50 * rcrw (%rax)
1530+
# CHECK-NEXT: 11 11 3.50 * * rclw (%rax)
1531+
# CHECK-NEXT: 11 11 3.50 * * rcrw (%rax)
15321532
# CHECK-NEXT: 8 4 2.67 rclw $7, %di
15331533
# CHECK-NEXT: 8 3 2.67 rcrw $7, %di
1534-
# CHECK-NEXT: 11 11 3.50 * rclw $7, (%rax)
1535-
# CHECK-NEXT: 11 11 3.50 * rcrw $7, (%rax)
1534+
# CHECK-NEXT: 11 11 3.50 * * rclw $7, (%rax)
1535+
# CHECK-NEXT: 11 11 3.50 * * rcrw $7, (%rax)
15361536
# CHECK-NEXT: 8 5 4.00 rclw %cl, %di
15371537
# CHECK-NEXT: 8 5 4.00 rcrw %cl, %di
1538-
# CHECK-NEXT: 11 11 3.50 * rclw %cl, (%rax)
1539-
# CHECK-NEXT: 11 11 3.50 * rcrw %cl, (%rax)
1538+
# CHECK-NEXT: 11 11 3.50 * * rclw %cl, (%rax)
1539+
# CHECK-NEXT: 11 11 3.50 * * rcrw %cl, (%rax)
15401540
# CHECK-NEXT: 3 2 1.00 rcll %edi
15411541
# CHECK-NEXT: 3 2 1.00 rcrl %edi
1542-
# CHECK-NEXT: 11 11 3.50 * rcll (%rax)
1543-
# CHECK-NEXT: 11 11 3.50 * rcrl (%rax)
1542+
# CHECK-NEXT: 11 11 3.50 * * rcll (%rax)
1543+
# CHECK-NEXT: 11 11 3.50 * * rcrl (%rax)
15441544
# CHECK-NEXT: 8 4 2.67 rcll $7, %edi
15451545
# CHECK-NEXT: 8 3 2.67 rcrl $7, %edi
1546-
# CHECK-NEXT: 11 11 3.50 * rcll $7, (%rax)
1547-
# CHECK-NEXT: 11 11 3.50 * rcrl $7, (%rax)
1546+
# CHECK-NEXT: 11 11 3.50 * * rcll $7, (%rax)
1547+
# CHECK-NEXT: 11 11 3.50 * * rcrl $7, (%rax)
15481548
# CHECK-NEXT: 8 5 4.00 rcll %cl, %edi
15491549
# CHECK-NEXT: 8 5 4.00 rcrl %cl, %edi
1550-
# CHECK-NEXT: 11 11 3.50 * rcll %cl, (%rax)
1551-
# CHECK-NEXT: 11 11 3.50 * rcrl %cl, (%rax)
1550+
# CHECK-NEXT: 11 11 3.50 * * rcll %cl, (%rax)
1551+
# CHECK-NEXT: 11 11 3.50 * * rcrl %cl, (%rax)
15521552
# CHECK-NEXT: 3 2 1.00 rclq %rdi
15531553
# CHECK-NEXT: 3 2 1.00 rcrq %rdi
1554-
# CHECK-NEXT: 11 11 3.50 * rclq (%rax)
1555-
# CHECK-NEXT: 11 11 3.50 * rcrq (%rax)
1554+
# CHECK-NEXT: 11 11 3.50 * * rclq (%rax)
1555+
# CHECK-NEXT: 11 11 3.50 * * rcrq (%rax)
15561556
# CHECK-NEXT: 8 4 2.67 rclq $7, %rdi
15571557
# CHECK-NEXT: 8 3 2.67 rcrq $7, %rdi
1558-
# CHECK-NEXT: 11 11 3.50 * rclq $7, (%rax)
1559-
# CHECK-NEXT: 11 11 3.50 * rcrq $7, (%rax)
1558+
# CHECK-NEXT: 11 11 3.50 * * rclq $7, (%rax)
1559+
# CHECK-NEXT: 11 11 3.50 * * rcrq $7, (%rax)
15601560
# CHECK-NEXT: 8 5 4.00 rclq %cl, %rdi
15611561
# CHECK-NEXT: 8 5 4.00 rcrq %cl, %rdi
1562-
# CHECK-NEXT: 11 11 3.50 * rclq %cl, (%rax)
1563-
# CHECK-NEXT: 11 11 3.50 * rcrq %cl, (%rax)
1562+
# CHECK-NEXT: 11 11 3.50 * * rclq %cl, (%rax)
1563+
# CHECK-NEXT: 11 11 3.50 * * rcrq %cl, (%rax)
15641564
# CHECK-NEXT: 1 100 0.33 U rdmsr
15651565
# CHECK-NEXT: 1 100 0.33 U rdpmc
15661566
# CHECK-NEXT: 1 100 0.33 U rdtsc

0 commit comments

Comments
 (0)