summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/PowerPC/ppc64-align-long-double.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/PowerPC/ppc64-align-long-double.ll')
-rw-r--r--llvm/test/CodeGen/PowerPC/ppc64-align-long-double.ll78
1 files changed, 39 insertions, 39 deletions
diff --git a/llvm/test/CodeGen/PowerPC/ppc64-align-long-double.ll b/llvm/test/CodeGen/PowerPC/ppc64-align-long-double.ll
index 8a5c5731865..c9a45a881f1 100644
--- a/llvm/test/CodeGen/PowerPC/ppc64-align-long-double.ll
+++ b/llvm/test/CodeGen/PowerPC/ppc64-align-long-double.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -O2 -fast-isel=false -mattr=-vsx < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -mcpu=pwr7 -O2 -fast-isel=false -mattr=+vsx < %s | FileCheck -check-prefix=CHECK-VSX %s
; RUN: llc -verify-machineinstrs -mcpu=pwr9 -O2 -fast-isel=false -mattr=+vsx < %s | FileCheck -check-prefix=CHECK-P9 %s
@@ -12,49 +13,48 @@ target triple = "powerpc64-unknown-linux-gnu"
%struct.S = type { double, ppc_fp128 }
+; The additional stores are caused because we forward the value in the
+; store->load->bitcast path to make a store and bitcast of the same
+; value. Since the target does bitcast through memory and we no longer
+; remember the address we need to do the store in a fresh local
+; address.
define ppc_fp128 @test(%struct.S* byval %x) nounwind {
+; CHECK-LABEL: test:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: std 5, -16(1)
+; CHECK-NEXT: std 6, -8(1)
+; CHECK-NEXT: lfd 1, -16(1)
+; CHECK-NEXT: lfd 2, -8(1)
+; CHECK-NEXT: std 6, 72(1)
+; CHECK-NEXT: std 5, 64(1)
+; CHECK-NEXT: std 3, 48(1)
+; CHECK-NEXT: std 4, 56(1)
+; CHECK-NEXT: blr
+;
+; CHECK-VSX-LABEL: test:
+; CHECK-VSX: # %bb.0: # %entry
+; CHECK-VSX-NEXT: std 3, 48(1)
+; CHECK-VSX-NEXT: std 6, 72(1)
+; CHECK-VSX-NEXT: std 5, 64(1)
+; CHECK-VSX-NEXT: std 4, 56(1)
+; CHECK-VSX-NEXT: std 5, -16(1)
+; CHECK-VSX-NEXT: std 6, -8(1)
+; CHECK-VSX-NEXT: lfd 1, -16(1)
+; CHECK-VSX-NEXT: lfd 2, -8(1)
+; CHECK-VSX-NEXT: blr
+;
+; CHECK-P9-LABEL: test:
+; CHECK-P9: # %bb.0: # %entry
+; CHECK-P9-NEXT: mtvsrd 1, 5
+; CHECK-P9-NEXT: mtvsrd 2, 6
+; CHECK-P9-NEXT: std 6, 72(1)
+; CHECK-P9-NEXT: std 5, 64(1)
+; CHECK-P9-NEXT: std 3, 48(1)
+; CHECK-P9-NEXT: std 4, 56(1)
+; CHECK-P9-NEXT: blr
entry:
%b = getelementptr inbounds %struct.S, %struct.S* %x, i32 0, i32 1
%0 = load ppc_fp128, ppc_fp128* %b, align 16
ret ppc_fp128 %0
}
-; The additional stores are caused because we forward the value in the
-; store->load->bitcast path to make a store and bitcast of the same
-; value. Since the target does bitcast through memory and we no longer
-; remember the address we need to do the store in a fresh local
-; address.
-
-; CHECK-DAG: std 6, 72(1)
-; CHECK-DAG: std 5, 64(1)
-; CHECK-DAG: std 4, 56(1)
-; CHECK-DAG: std 3, 48(1)
-
-; CHECK-DAG: std 5, -16(1)
-; CHECK-DAG: std 6, -8(1)
-; CHECK-DAG: lfd 1, -16(1)
-; CHECK-DAG: lfd 2, -8(1)
-
-; FIXMECHECK: lfd 1, 64(1)
-; FIXMECHECK: lfd 2, 72(1)
-
-; CHECK-VSX-DAG: std 6, 72(1)
-; CHECK-VSX-DAG: std 5, 64(1)
-; CHECK-VSX-DAG: std 4, 56(1)
-; CHECK-VSX-DAG: std 3, 48(1)
-; CHECK-VSX-DAG: std 5, -16(1)
-; CHECK-VSX-DAG: std 6, -8(1)
-; CHECK-VSX: lfd 1, -16(1)
-; CHECK-VSX: lfd 2, -8(1)
-
-; FIXME-VSX: addi 4, 1, 48
-; FIXME-VSX: lxsdx 1, 4, 3
-; FIXME-VSX: li 3, 24
-; FIXME-VSX: lxsdx 2, 4, 3
-
-; CHECK-P9-DAG: std 6, 72(1)
-; CHECK-P9-DAG: std 5, 64(1)
-; CHECK-P9-DAG: std 4, 56(1)
-; CHECK-P9-DAG: std 3, 48(1)
-; CHECK-P9-DAG: mtvsrd 1, 5
-; CHECK-P9-DAG: mtvsrd 2, 6
OpenPOWER on IntegriCloud