summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2014-03-26 04:55:40 +0000
committerHal Finkel <hfinkel@anl.gov>2014-03-26 04:55:40 +0000
commit360ee971798ebccc177f7e1c2947a74e3bd9fbc0 (patch)
tree027dc0bbbca6c27bbb6bc4994b5fd7fe8dd470b4 /lib
parent33845aa8c489e52e6287c75356daa8dd04b87350 (diff)
downloadllvm-360ee971798ebccc177f7e1c2947a74e3bd9fbc0.tar.gz
llvm-360ee971798ebccc177f7e1c2947a74e3bd9fbc0.tar.bz2
llvm-360ee971798ebccc177f7e1c2947a74e3bd9fbc0.tar.xz
[PowerPC] Generate logical vector VSX instructions
These instructions are essentially the same as their Altivec counterparts, but have access to the larger VSX register file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204782 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/PowerPC/PPCInstrVSX.td17
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/Target/PowerPC/PPCInstrVSX.td b/lib/Target/PowerPC/PPCInstrVSX.td
index 771c1fbaa5..2762da6ad4 100644
--- a/lib/Target/PowerPC/PPCInstrVSX.td
+++ b/lib/Target/PowerPC/PPCInstrVSX.td
@@ -658,20 +658,27 @@ let Uses = [RM] in {
let isCommutable = 1 in
def XXLAND : XX3Form<60, 130,
(outs vsrc:$XT), (ins vsrc:$XA, vsrc:$XB),
- "xxland $XT, $XA, $XB", IIC_VecGeneral, []>;
+ "xxland $XT, $XA, $XB", IIC_VecGeneral,
+ [(set v4i32:$XT, (and v4i32:$XA, v4i32:$XB))]>;
def XXLANDC : XX3Form<60, 138,
(outs vsrc:$XT), (ins vsrc:$XA, vsrc:$XB),
- "xxlandc $XT, $XA, $XB", IIC_VecGeneral, []>;
+ "xxlandc $XT, $XA, $XB", IIC_VecGeneral,
+ [(set v4i32:$XT, (and v4i32:$XA,
+ (vnot_ppc v4i32:$XB)))]>;
let isCommutable = 1 in {
def XXLNOR : XX3Form<60, 162,
(outs vsrc:$XT), (ins vsrc:$XA, vsrc:$XB),
- "xxlnor $XT, $XA, $XB", IIC_VecGeneral, []>;
+ "xxlnor $XT, $XA, $XB", IIC_VecGeneral,
+ [(set v4i32:$XT, (vnot_ppc (or v4i32:$XA,
+ v4i32:$XB)))]>;
def XXLOR : XX3Form<60, 146,
(outs vsrc:$XT), (ins vsrc:$XA, vsrc:$XB),
- "xxlor $XT, $XA, $XB", IIC_VecGeneral, []>;
+ "xxlor $XT, $XA, $XB", IIC_VecGeneral,
+ [(set v4i32:$XT, (or v4i32:$XA, v4i32:$XB))]>;
def XXLXOR : XX3Form<60, 154,
(outs vsrc:$XT), (ins vsrc:$XA, vsrc:$XB),
- "xxlxor $XT, $XA, $XB", IIC_VecGeneral, []>;
+ "xxlxor $XT, $XA, $XB", IIC_VecGeneral,
+ [(set v4i32:$XT, (xor v4i32:$XA, v4i32:$XB))]>;
} // isCommutable
// Permutation Instructions