summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/PowerPC
diff options
context:
space:
mode:
authorGuozhi Wei <carrot@google.com>2017-05-11 22:17:35 +0000
committerGuozhi Wei <carrot@google.com>2017-05-11 22:17:35 +0000
commit22e7da9597a267165ee03cbabd31c1e4c13c5cb9 (patch)
tree5e9c276b36bf1155394ead773501a7db7d205fd6 /llvm/test/CodeGen/PowerPC
parent09e91ac6ab8a184d92100e3b1a1c4b6a0b8dc47a (diff)
downloadbcm5719-llvm-22e7da9597a267165ee03cbabd31c1e4c13c5cb9.tar.gz
bcm5719-llvm-22e7da9597a267165ee03cbabd31c1e4c13c5cb9.zip
[PPC] Change the register constraint of the first source operand of instruction mtvsrdd to g8rc_nox0
According to Power ISA V3.0 document, the first source operand of mtvsrdd is constant 0 if r0 is specified. So the corresponding register constraint should be g8rc_nox0. This bug caused wrong output generated by 401.bzip2 when -mcpu=power9 and fdo are specified. Differential Revision: https://reviews.llvm.org/D32880 llvm-svn: 302834
Diffstat (limited to 'llvm/test/CodeGen/PowerPC')
-rw-r--r--llvm/test/CodeGen/PowerPC/mtvsrdd.ll22
1 files changed, 22 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/PowerPC/mtvsrdd.ll b/llvm/test/CodeGen/PowerPC/mtvsrdd.ll
new file mode 100644
index 00000000000..1d6a3553b2a
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/mtvsrdd.ll
@@ -0,0 +1,22 @@
+; RUN: llc -mcpu=pwr9 -ppc-vsr-nums-as-vr -mtriple=powerpc64le-unknown-unknown \
+; RUN: < %s | FileCheck %s
+
+; This test case checks r0 is used as constant 0 in instruction mtvsrdd.
+
+define <2 x i64> @const0(i64 %a) {
+ %vecinit = insertelement <2 x i64> undef, i64 %a, i32 0
+ %vecinit1 = insertelement <2 x i64> %vecinit, i64 0, i32 1
+ ret <2 x i64> %vecinit1
+; CHECK-LABEL: const0
+; CHECK: mtvsrdd v2, 0, r3
+}
+
+define <2 x i64> @noconst0(i64* %a, i64* %b) {
+ %1 = load i64, i64* %a, align 8
+ %2 = load i64, i64* %b, align 8
+ %vecinit = insertelement <2 x i64> undef, i64 %2, i32 0
+ %vecinit1 = insertelement <2 x i64> %vecinit, i64 %1, i32 1
+ ret <2 x i64> %vecinit1
+; CHECK-LABEL: noconst0
+; CHECK: mtvsrdd v2, {{r[0-9]+}}, {{r[0-9]+}}
+}
OpenPOWER on IntegriCloud