1
2
3 package ssa
4
5 func rewriteValueLOONG64latelower(v *Value) bool {
6 switch v.Op {
7 case OpLOONG64SLLVconst:
8 return rewriteValueLOONG64latelower_OpLOONG64SLLVconst(v)
9 }
10 return false
11 }
12 func rewriteValueLOONG64latelower_OpLOONG64SLLVconst(v *Value) bool {
13 v_0 := v.Args[0]
14
15
16 for {
17 if auxIntToInt64(v.AuxInt) != 1 {
18 break
19 }
20 x := v_0
21 v.reset(OpLOONG64ADDV)
22 v.AddArg2(x, x)
23 return true
24 }
25 return false
26 }
27 func rewriteBlockLOONG64latelower(b *Block) bool {
28 switch b.Kind {
29 case BlockLOONG64EQZ:
30
31
32 for b.Controls[0].Op == OpLOONG64XOR {
33 v_0 := b.Controls[0]
34 _ = v_0.Args[1]
35 v_0_0 := v_0.Args[0]
36 v_0_1 := v_0.Args[1]
37 for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
38 x := v_0_0
39 y := v_0_1
40 b.resetWithControl2(BlockLOONG64BEQ, x, y)
41 return true
42 }
43 }
44 case BlockLOONG64NEZ:
45
46
47 for b.Controls[0].Op == OpLOONG64XOR {
48 v_0 := b.Controls[0]
49 _ = v_0.Args[1]
50 v_0_0 := v_0.Args[0]
51 v_0_1 := v_0.Args[1]
52 for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
53 x := v_0_0
54 y := v_0_1
55 b.resetWithControl2(BlockLOONG64BNE, x, y)
56 return true
57 }
58 }
59 }
60 return false
61 }
62
View as plain text