From 9a6217b6505fc2e2f3bd9f3ebbc117f9f0765ca2 Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Tue, 27 May 2014 16:50:09 +0000 Subject: [PATCH] AArch64: add test for NZCV cross-copy save. llvm-svn: 209665 --- llvm/test/CodeGen/AArch64/nzcv-save.ll | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 llvm/test/CodeGen/AArch64/nzcv-save.ll diff --git a/llvm/test/CodeGen/AArch64/nzcv-save.ll b/llvm/test/CodeGen/AArch64/nzcv-save.ll new file mode 100644 index 0000000..32baff3 --- /dev/null +++ b/llvm/test/CodeGen/AArch64/nzcv-save.ll @@ -0,0 +1,18 @@ +; RUN: llc -march=aarch64 < %s | FileCheck %s + +; CHECK: mrs [[NZCV_SAVE:x[0-9]+]], NZCV +; CHECK: msr NZCV, [[NZCV_SAVE]] + +; DAG ends up with two uses for the flags from an ADCS node, which means they +; must be saved for later. +define void @f(i256* nocapture %a, i256* nocapture %b, i256* nocapture %cc, i256* nocapture %dd) nounwind uwtable noinline ssp { +entry: + %c = load i256* %cc + %d = load i256* %dd + %add = add nsw i256 %c, %d + store i256 %add, i256* %a, align 8 + %or = or i256 %c, 1606938044258990275541962092341162602522202993782792835301376 + %add6 = add nsw i256 %or, %d + store i256 %add6, i256* %b, align 8 + ret void +} -- 2.7.4