diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/large-constants.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/large-constants.ll | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/X86/large-constants.ll b/llvm/test/CodeGen/X86/large-constants.ll index 945d633eec1..be7e598fddf 100644 --- a/llvm/test/CodeGen/X86/large-constants.ll +++ b/llvm/test/CodeGen/X86/large-constants.ll @@ -1,6 +1,35 @@ -; RUN: llc < %s -mtriple=x86_64-darwin -mcpu=corei7 | grep movabsq | count 3 +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -mtriple=x86_64-darwin -mcpu=corei7 | FileCheck %s define i64 @constant_hoisting(i64 %o0, i64 %o1, i64 %o2, i64 %o3, i64 %o4, i64 %o5) { +; CHECK-LABEL: constant_hoisting: +; CHECK: ## %bb.0: ## %entry +; CHECK-NEXT: movabsq $-281474976710654, %rax ## imm = 0xFFFF000000000002 +; CHECK-NEXT: testq %rax, %rdi +; CHECK-NEXT: jne LBB0_7 +; CHECK-NEXT: ## %bb.1: ## %bb1 +; CHECK-NEXT: testq %rax, %rsi +; CHECK-NEXT: jne LBB0_7 +; CHECK-NEXT: ## %bb.2: ## %bb2 +; CHECK-NEXT: testq %rax, %rdx +; CHECK-NEXT: jne LBB0_7 +; CHECK-NEXT: ## %bb.3: ## %bb3 +; CHECK-NEXT: testq %rax, %rcx +; CHECK-NEXT: jne LBB0_7 +; CHECK-NEXT: ## %bb.4: ## %bb4 +; CHECK-NEXT: leaq 1(%rax), %rcx +; CHECK-NEXT: testq %rcx, %r8 +; CHECK-NEXT: jne LBB0_7 +; CHECK-NEXT: ## %bb.5: ## %bb5 +; CHECK-NEXT: addq $2, %rax +; CHECK-NEXT: andq %rax, %r9 +; CHECK-NEXT: je LBB0_6 +; CHECK-NEXT: LBB0_7: ## %fail +; CHECK-NEXT: movq $-1, %rax +; CHECK-NEXT: retq +; CHECK-NEXT: LBB0_6: ## %bb6 +; CHECK-NEXT: movq %r9, %rax +; CHECK-NEXT: retq entry: %l0 = and i64 %o0, -281474976710654 %c0 = icmp ne i64 %l0, 0 @@ -39,6 +68,16 @@ fail: } define void @constant_expressions() { +; CHECK-LABEL: constant_expressions: +; CHECK: ## %bb.0: ## %entry +; CHECK-NEXT: movabsq $51250129900, %rax ## imm = 0xBEEBEEBEC +; CHECK-NEXT: movq (%rax), %rcx +; CHECK-NEXT: movq 16(%rax), %rdx +; CHECK-NEXT: addq 8(%rax), %rcx +; CHECK-NEXT: addq 24(%rax), %rdx +; CHECK-NEXT: addq %rcx, %rdx +; CHECK-NEXT: movq %rdx, (%rax) +; CHECK-NEXT: retq entry: %0 = load i64, i64* inttoptr (i64 add (i64 51250129900, i64 0) to i64*) %1 = load i64, i64* inttoptr (i64 add (i64 51250129900, i64 8) to i64*) @@ -53,6 +92,16 @@ entry: define void @constant_expressions2() { +; CHECK-LABEL: constant_expressions2: +; CHECK: ## %bb.0: ## %entry +; CHECK-NEXT: movabsq $51250129900, %rax ## imm = 0xBEEBEEBEC +; CHECK-NEXT: movq (%rax), %rcx +; CHECK-NEXT: movq 16(%rax), %rdx +; CHECK-NEXT: addq 8(%rax), %rcx +; CHECK-NEXT: addq 24(%rax), %rdx +; CHECK-NEXT: addq %rcx, %rdx +; CHECK-NEXT: movq %rdx, (%rax) +; CHECK-NEXT: retq entry: %0 = load i64, i64* inttoptr (i64 51250129900 to i64*) %1 = load i64, i64* inttoptr (i64 51250129908 to i64*) |