defm : X86WriteRes<WriteBSWAP32, [SLM_IEC_RSV01], 1, [1], 1>;
defm : X86WriteRes<WriteBSWAP64, [SLM_IEC_RSV01], 1, [1], 1>;
-defm : X86WriteRes<WriteCMPXCHG, [SLM_IEC_RSV01], 1, [1], 1>;
-defm : X86WriteRes<WriteCMPXCHGRMW, [SLM_IEC_RSV01, SLM_MEC_RSV], 4, [1, 2], 2>;
+defm : X86WriteRes<WriteCMPXCHG, [SLM_IEC_RSV01], 6, [6], 5>;
+defm : X86WriteRes<WriteCMPXCHGRMW, [SLM_IEC_RSV01, SLM_MEC_RSV], 10, [6, 2], 8>;
defm : X86WriteRes<WriteXCHG, [SLM_IEC_RSV01], 1, [1], 1>;
defm : SLMWriteResPair<WriteShift, [SLM_IEC_RSV0], 1>;
# CHECK-NEXT: [6]: HasSideEffects (U)
# CHECK: [1] [2] [3] [4] [5] [6] Instructions:
-# CHECK-NEXT: 2 4 2.00 * * cmpxchg8b (%rax)
-# CHECK-NEXT: 2 4 2.00 * * cmpxchg16b (%rax)
-# CHECK-NEXT: 2 4 2.00 * * lock cmpxchg8b (%rax)
-# CHECK-NEXT: 2 4 2.00 * * lock cmpxchg16b (%rax)
+# CHECK-NEXT: 8 10 3.00 * * cmpxchg8b (%rax)
+# CHECK-NEXT: 8 10 3.00 * * cmpxchg16b (%rax)
+# CHECK-NEXT: 8 10 3.00 * * lock cmpxchg8b (%rax)
+# CHECK-NEXT: 8 10 3.00 * * lock cmpxchg16b (%rax)
# CHECK: Resources:
# CHECK-NEXT: [0] - SLMDivider
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
-# CHECK-NEXT: - - - - - 2.00 2.00 8.00
+# CHECK-NEXT: - - - - - 12.00 12.00 8.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
-# CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchg8b (%rax)
-# CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchg16b (%rax)
-# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchg8b (%rax)
-# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchg16b (%rax)
+# CHECK-NEXT: - - - - - 3.00 3.00 2.00 cmpxchg8b (%rax)
+# CHECK-NEXT: - - - - - 3.00 3.00 2.00 cmpxchg16b (%rax)
+# CHECK-NEXT: - - - - - 3.00 3.00 2.00 lock cmpxchg8b (%rax)
+# CHECK-NEXT: - - - - - 3.00 3.00 2.00 lock cmpxchg16b (%rax)
# CHECK-NEXT: 1 100 1.00 U cmpsw %es:(%rdi), (%rsi)
# CHECK-NEXT: 1 100 1.00 U cmpsl %es:(%rdi), (%rsi)
# CHECK-NEXT: 1 100 1.00 U cmpsq %es:(%rdi), (%rsi)
-# CHECK-NEXT: 1 1 0.50 cmpxchgb %cl, %bl
-# CHECK-NEXT: 2 4 2.00 * * cmpxchgb %cl, (%rbx)
-# CHECK-NEXT: 2 4 2.00 * * lock cmpxchgb %cl, (%rbx)
-# CHECK-NEXT: 1 1 0.50 cmpxchgw %cx, %bx
-# CHECK-NEXT: 2 4 2.00 * * cmpxchgw %cx, (%rbx)
-# CHECK-NEXT: 2 4 2.00 * * lock cmpxchgw %cx, (%rbx)
-# CHECK-NEXT: 1 1 0.50 cmpxchgl %ecx, %ebx
-# CHECK-NEXT: 2 4 2.00 * * cmpxchgl %ecx, (%rbx)
-# CHECK-NEXT: 2 4 2.00 * * lock cmpxchgl %ecx, (%rbx)
-# CHECK-NEXT: 1 1 0.50 cmpxchgq %rcx, %rbx
-# CHECK-NEXT: 2 4 2.00 * * cmpxchgq %rcx, (%rbx)
-# CHECK-NEXT: 2 4 2.00 * * lock cmpxchgq %rcx, (%rbx)
+# CHECK-NEXT: 5 6 3.00 cmpxchgb %cl, %bl
+# CHECK-NEXT: 8 10 3.00 * * cmpxchgb %cl, (%rbx)
+# CHECK-NEXT: 8 10 3.00 * * lock cmpxchgb %cl, (%rbx)
+# CHECK-NEXT: 5 6 3.00 cmpxchgw %cx, %bx
+# CHECK-NEXT: 8 10 3.00 * * cmpxchgw %cx, (%rbx)
+# CHECK-NEXT: 8 10 3.00 * * lock cmpxchgw %cx, (%rbx)
+# CHECK-NEXT: 5 6 3.00 cmpxchgl %ecx, %ebx
+# CHECK-NEXT: 8 10 3.00 * * cmpxchgl %ecx, (%rbx)
+# CHECK-NEXT: 8 10 3.00 * * lock cmpxchgl %ecx, (%rbx)
+# CHECK-NEXT: 5 6 3.00 cmpxchgq %rcx, %rbx
+# CHECK-NEXT: 8 10 3.00 * * cmpxchgq %rcx, (%rbx)
+# CHECK-NEXT: 8 10 3.00 * * lock cmpxchgq %rcx, (%rbx)
# CHECK-NEXT: 1 100 1.00 U cpuid
# CHECK-NEXT: 1 1 0.50 decb %dil
# CHECK-NEXT: 1 5 2.00 * * decb (%rax)
# CHECK: Resource pressure per iteration:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7]
-# CHECK-NEXT: 400.00 - - 49.00 - 654.50 595.50 835.00
+# CHECK-NEXT: 400.00 - - 49.00 - 684.50 625.50 835.00
# CHECK: Resource pressure by instruction:
# CHECK-NEXT: [0] [1] [2] [3] [4] [5] [6] [7] Instructions:
# CHECK-NEXT: - - - 1.00 - - - - cmpsw %es:(%rdi), (%rsi)
# CHECK-NEXT: - - - 1.00 - - - - cmpsl %es:(%rdi), (%rsi)
# CHECK-NEXT: - - - 1.00 - - - - cmpsq %es:(%rdi), (%rsi)
-# CHECK-NEXT: - - - - - 0.50 0.50 - cmpxchgb %cl, %bl
-# CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchgb %cl, (%rbx)
-# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchgb %cl, (%rbx)
-# CHECK-NEXT: - - - - - 0.50 0.50 - cmpxchgw %cx, %bx
-# CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchgw %cx, (%rbx)
-# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchgw %cx, (%rbx)
-# CHECK-NEXT: - - - - - 0.50 0.50 - cmpxchgl %ecx, %ebx
-# CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchgl %ecx, (%rbx)
-# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchgl %ecx, (%rbx)
-# CHECK-NEXT: - - - - - 0.50 0.50 - cmpxchgq %rcx, %rbx
-# CHECK-NEXT: - - - - - 0.50 0.50 2.00 cmpxchgq %rcx, (%rbx)
-# CHECK-NEXT: - - - - - 0.50 0.50 2.00 lock cmpxchgq %rcx, (%rbx)
+# CHECK-NEXT: - - - - - 3.00 3.00 - cmpxchgb %cl, %bl
+# CHECK-NEXT: - - - - - 3.00 3.00 2.00 cmpxchgb %cl, (%rbx)
+# CHECK-NEXT: - - - - - 3.00 3.00 2.00 lock cmpxchgb %cl, (%rbx)
+# CHECK-NEXT: - - - - - 3.00 3.00 - cmpxchgw %cx, %bx
+# CHECK-NEXT: - - - - - 3.00 3.00 2.00 cmpxchgw %cx, (%rbx)
+# CHECK-NEXT: - - - - - 3.00 3.00 2.00 lock cmpxchgw %cx, (%rbx)
+# CHECK-NEXT: - - - - - 3.00 3.00 - cmpxchgl %ecx, %ebx
+# CHECK-NEXT: - - - - - 3.00 3.00 2.00 cmpxchgl %ecx, (%rbx)
+# CHECK-NEXT: - - - - - 3.00 3.00 2.00 lock cmpxchgl %ecx, (%rbx)
+# CHECK-NEXT: - - - - - 3.00 3.00 - cmpxchgq %rcx, %rbx
+# CHECK-NEXT: - - - - - 3.00 3.00 2.00 cmpxchgq %rcx, (%rbx)
+# CHECK-NEXT: - - - - - 3.00 3.00 2.00 lock cmpxchgq %rcx, (%rbx)
# CHECK-NEXT: - - - 1.00 - - - - cpuid
# CHECK-NEXT: - - - - - 0.50 0.50 - decb %dil
# CHECK-NEXT: - - - - - 0.50 0.50 2.00 decb (%rax)