Spell e500 feature in lower case.
[oota-llvm.git] / lib / Target / PowerPC / PPCInstrSPE.td
1 //=======-- PPCInstrSPE.td - The PowerPC SPE Extension -*- tablegen -*-=======//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file describes the Signal Processing Engine extension to
11 // the PowerPC instruction set.
12 //
13 //===----------------------------------------------------------------------===//
14
15 class EVXForm_1<bits<11> xo, dag OOL, dag IOL, string asmstr,
16                InstrItinClass itin> : I<4, OOL, IOL, asmstr, itin> {
17   bits<5> RT;
18   bits<5> RA;
19   bits<5> RB;
20
21   let Pattern = [];
22   
23   let Inst{6-10}  = RT;
24   let Inst{11-15} = RA;
25   let Inst{16-20} = RB;
26   let Inst{21-31} = xo;
27 }
28
29 let Predicates = [HasSPE], isAsmParserOnly = 1 in {
30
31 def EVMRA : EVXForm_1<1220, (outs gprc:$RT), (ins gprc:$RA),
32                       "evmra $RT, $RA", IIC_VecFP> {
33   let RB = 0;
34 }
35
36 def EVLDDX         : EVXForm_1<768, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
37                                "evlddx $RT, $RA, $RB", IIC_VecFP>;
38 def EVLDWX         : EVXForm_1<770, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
39                                "evldwx $RT, $RA, $RB", IIC_VecFP>;
40 def EVLDHX         : EVXForm_1<772, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
41                                "evldhx $RT, $RA, $RB", IIC_VecFP>;
42 def EVLHHESPLATX   : EVXForm_1<776, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
43                                "evlhhesplatx $RT, $RA, $RB", IIC_VecFP>;
44 def EVLHHOUSPLATX  : EVXForm_1<780, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
45                                "evlhhousplatx $RT, $RA, $RB", IIC_VecFP>;
46 def EVLHHOSSPLATX  : EVXForm_1<782, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
47                                "evlhhossplatx $RT, $RA, $RB", IIC_VecFP>;
48 def EVLWHEX        : EVXForm_1<784, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
49                                "evlwhex $RT, $RA, $RB", IIC_VecFP>;
50 def EVLWHOUX       : EVXForm_1<788, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
51                                "evlwhoux $RT, $RA, $RB", IIC_VecFP>;
52 def EVLWHOSX       : EVXForm_1<790, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
53                                "evlwhosx $RT, $RA, $RB", IIC_VecFP>;
54 def EVLWWSPLATX    : EVXForm_1<792, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
55                                "evlwwsplatx $RT, $RA, $RB", IIC_VecFP>;
56 def EVLWHSPLATX    : EVXForm_1<796, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
57                                "evlwhsplatx $RT, $RA, $RB", IIC_VecFP>;
58
59 def EVMERGEHI      : EVXForm_1<556, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
60                                "evmergehi $RT, $RA, $RB", IIC_VecFP>;
61 def EVMERGELO      : EVXForm_1<557, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
62                                "evmergelo $RT, $RA, $RB", IIC_VecFP>;
63 def EVMERGEHILO    : EVXForm_1<558, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
64                                "evmergehilo $RT, $RA, $RB", IIC_VecFP>;
65 def EVMERGELOHI    : EVXForm_1<559, (outs gprc:$RT), (ins gprc:$RA, gprc:$RB),
66                                "evmergelohi $RT, $RA, $RB", IIC_VecFP>;
67
68 } // HasSPE