Protect PPC Altivec patterns with a predicate
authorHal Finkel <hfinkel@anl.gov>
Fri, 15 Mar 2013 13:21:21 +0000 (13:21 +0000)
committerHal Finkel <hfinkel@anl.gov>
Fri, 15 Mar 2013 13:21:21 +0000 (13:21 +0000)
In preparation for the addition of other SIMD ISA extensions (such as QPX) we
need to make sure that all Altivec patterns are properly predicated on having
Altivec support.

No functionality change intended (one test case needed to be updated b/c it
assumed that Altivec intrinsics would be supported without enabling Altivec
support).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177152 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCInstrAltivec.td
test/CodeGen/PowerPC/2007-09-04-AltivecDST.ll

index 0cf28ae4b5c3da1e9d45d779a84e0428ff045340..0ed7ff2cc4f98fc496214a722ed8a6802c0e16db 100644 (file)
@@ -182,6 +182,9 @@ class VX2_Int<bits<11> xo, string opc, Intrinsic IntID>
 //===----------------------------------------------------------------------===//
 // Instruction Definitions.
 
+def HasAltivec : Predicate<"PPCSubTarget.hasAltivec()">;
+let Predicates = [HasAltivec] in {
+
 def DSS      : DSS_Form<822, (outs),
                         (ins u5imm:$ZERO0, u5imm:$STRM,u5imm:$ZERO1,u5imm:$ZERO2),
                         "dss $STRM", LdStLoad /*FIXME*/, []>;
@@ -733,3 +736,6 @@ def : Pat<(v4f32 (ftrunc (v4f32 VRRC:$vA))),
           (VRFIZ VRRC:$vA)>;
 def : Pat<(v4f32 (fnearbyint (v4f32 VRRC:$vA))),
           (VRFIN VRRC:$vA)>;
+
+} // end HasAltivec
+
index 82ef2b82cbe62893ad389923c2f036ad3b046b1e..b6feb5abbc3fb1ff7f2e11771c87cfc847c7c34b 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=ppc64 | grep dst | count 4
+; RUN: llc < %s -march=ppc64 -mattr=+altivec | grep dst | count 4
 
 define hidden void @_Z4borkPc(i8* %image) {
 entry: