]> Cypherpunks.ru repositories - gostls13.git/blob - src/cmd/compile/internal/ssa/rewritePPC64latelower.go
56acbe403bc2fa09e19230a595a7c6f2a73e31ee
[gostls13.git] / src / cmd / compile / internal / ssa / rewritePPC64latelower.go
1 // Code generated from _gen/PPC64latelower.rules using 'go generate'; DO NOT EDIT.
2
3 package ssa
4
5 import "internal/buildcfg"
6
7 func rewriteValuePPC64latelower(v *Value) bool {
8         switch v.Op {
9         case OpPPC64ISEL:
10                 return rewriteValuePPC64latelower_OpPPC64ISEL(v)
11         case OpPPC64SETBC:
12                 return rewriteValuePPC64latelower_OpPPC64SETBC(v)
13         case OpPPC64SETBCR:
14                 return rewriteValuePPC64latelower_OpPPC64SETBCR(v)
15         }
16         return false
17 }
18 func rewriteValuePPC64latelower_OpPPC64ISEL(v *Value) bool {
19         v_2 := v.Args[2]
20         v_1 := v.Args[1]
21         v_0 := v.Args[0]
22         // match: (ISEL [a] x (MOVDconst [0]) z)
23         // result: (ISELZ [a] x z)
24         for {
25                 a := auxIntToInt32(v.AuxInt)
26                 x := v_0
27                 if v_1.Op != OpPPC64MOVDconst || auxIntToInt64(v_1.AuxInt) != 0 {
28                         break
29                 }
30                 z := v_2
31                 v.reset(OpPPC64ISELZ)
32                 v.AuxInt = int32ToAuxInt(a)
33                 v.AddArg2(x, z)
34                 return true
35         }
36         // match: (ISEL [a] (MOVDconst [0]) y z)
37         // result: (ISELZ [a^0x4] y z)
38         for {
39                 a := auxIntToInt32(v.AuxInt)
40                 if v_0.Op != OpPPC64MOVDconst || auxIntToInt64(v_0.AuxInt) != 0 {
41                         break
42                 }
43                 y := v_1
44                 z := v_2
45                 v.reset(OpPPC64ISELZ)
46                 v.AuxInt = int32ToAuxInt(a ^ 0x4)
47                 v.AddArg2(y, z)
48                 return true
49         }
50         return false
51 }
52 func rewriteValuePPC64latelower_OpPPC64SETBC(v *Value) bool {
53         v_0 := v.Args[0]
54         b := v.Block
55         typ := &b.Func.Config.Types
56         // match: (SETBC [2] cmp)
57         // cond: buildcfg.GOPPC64 <= 9
58         // result: (ISELZ [2] (MOVDconst [1]) cmp)
59         for {
60                 if auxIntToInt32(v.AuxInt) != 2 {
61                         break
62                 }
63                 cmp := v_0
64                 if !(buildcfg.GOPPC64 <= 9) {
65                         break
66                 }
67                 v.reset(OpPPC64ISELZ)
68                 v.AuxInt = int32ToAuxInt(2)
69                 v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
70                 v0.AuxInt = int64ToAuxInt(1)
71                 v.AddArg2(v0, cmp)
72                 return true
73         }
74         // match: (SETBC [0] cmp)
75         // cond: buildcfg.GOPPC64 <= 9
76         // result: (ISELZ [0] (MOVDconst [1]) cmp)
77         for {
78                 if auxIntToInt32(v.AuxInt) != 0 {
79                         break
80                 }
81                 cmp := v_0
82                 if !(buildcfg.GOPPC64 <= 9) {
83                         break
84                 }
85                 v.reset(OpPPC64ISELZ)
86                 v.AuxInt = int32ToAuxInt(0)
87                 v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
88                 v0.AuxInt = int64ToAuxInt(1)
89                 v.AddArg2(v0, cmp)
90                 return true
91         }
92         // match: (SETBC [1] cmp)
93         // cond: buildcfg.GOPPC64 <= 9
94         // result: (ISELZ [1] (MOVDconst [1]) cmp)
95         for {
96                 if auxIntToInt32(v.AuxInt) != 1 {
97                         break
98                 }
99                 cmp := v_0
100                 if !(buildcfg.GOPPC64 <= 9) {
101                         break
102                 }
103                 v.reset(OpPPC64ISELZ)
104                 v.AuxInt = int32ToAuxInt(1)
105                 v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
106                 v0.AuxInt = int64ToAuxInt(1)
107                 v.AddArg2(v0, cmp)
108                 return true
109         }
110         return false
111 }
112 func rewriteValuePPC64latelower_OpPPC64SETBCR(v *Value) bool {
113         v_0 := v.Args[0]
114         b := v.Block
115         typ := &b.Func.Config.Types
116         // match: (SETBCR [2] cmp)
117         // cond: buildcfg.GOPPC64 <= 9
118         // result: (ISELZ [6] (MOVDconst [1]) cmp)
119         for {
120                 if auxIntToInt32(v.AuxInt) != 2 {
121                         break
122                 }
123                 cmp := v_0
124                 if !(buildcfg.GOPPC64 <= 9) {
125                         break
126                 }
127                 v.reset(OpPPC64ISELZ)
128                 v.AuxInt = int32ToAuxInt(6)
129                 v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
130                 v0.AuxInt = int64ToAuxInt(1)
131                 v.AddArg2(v0, cmp)
132                 return true
133         }
134         // match: (SETBCR [0] cmp)
135         // cond: buildcfg.GOPPC64 <= 9
136         // result: (ISELZ [4] (MOVDconst [1]) cmp)
137         for {
138                 if auxIntToInt32(v.AuxInt) != 0 {
139                         break
140                 }
141                 cmp := v_0
142                 if !(buildcfg.GOPPC64 <= 9) {
143                         break
144                 }
145                 v.reset(OpPPC64ISELZ)
146                 v.AuxInt = int32ToAuxInt(4)
147                 v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
148                 v0.AuxInt = int64ToAuxInt(1)
149                 v.AddArg2(v0, cmp)
150                 return true
151         }
152         // match: (SETBCR [1] cmp)
153         // cond: buildcfg.GOPPC64 <= 9
154         // result: (ISELZ [5] (MOVDconst [1]) cmp)
155         for {
156                 if auxIntToInt32(v.AuxInt) != 1 {
157                         break
158                 }
159                 cmp := v_0
160                 if !(buildcfg.GOPPC64 <= 9) {
161                         break
162                 }
163                 v.reset(OpPPC64ISELZ)
164                 v.AuxInt = int32ToAuxInt(5)
165                 v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64)
166                 v0.AuxInt = int64ToAuxInt(1)
167                 v.AddArg2(v0, cmp)
168                 return true
169         }
170         return false
171 }
172 func rewriteBlockPPC64latelower(b *Block) bool {
173         return false
174 }