diff options
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/CodeGen/X86/addcarry.ll | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/addcarry.ll b/llvm/test/CodeGen/X86/addcarry.ll index f2e7a7ecc1a..3f9391c917b 100644 --- a/llvm/test/CodeGen/X86/addcarry.ll +++ b/llvm/test/CodeGen/X86/addcarry.ll @@ -14,6 +14,34 @@ entry: ret i128 %0 } +define void @add128_rmw(i128* %a, i128 %b) nounwind { +; CHECK-LABEL: add128_rmw: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: addq %rsi, (%rdi) +; CHECK-NEXT: adcq %rdx, 8(%rdi) +; CHECK-NEXT: retq +entry: + %0 = load i128, i128* %a + %1 = add i128 %0, %b + store i128 %1, i128* %a + ret void +} + +define void @add128_rmw2(i128 %a, i128* %b) nounwind { +; CHECK-LABEL: add128_rmw2: +; CHECK: # %bb.0: # %entry +; CHECK-NEXT: addq (%rdx), %rdi +; CHECK-NEXT: adcq 8(%rdx), %rsi +; CHECK-NEXT: movq %rdi, (%rdx) +; CHECK-NEXT: movq %rsi, 8(%rdx) +; CHECK-NEXT: retq +entry: + %0 = load i128, i128* %b + %1 = add i128 %a, %0 + store i128 %1, i128* %b + ret void +} + define i256 @add256(i256 %a, i256 %b) nounwind { ; CHECK-LABEL: add256: ; CHECK: # %bb.0: # %entry |

