summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/large-constants.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/X86/large-constants.ll')
-rw-r--r--llvm/test/CodeGen/X86/large-constants.ll51
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*)
OpenPOWER on IntegriCloud