Source file src/cmd/compile/internal/ssa/rewriteLOONG64latelower.go

     1  // Code generated from _gen/LOONG64latelower.rules using 'go generate'; DO NOT EDIT.
     2  
     3  package ssa
     4  
     5  func rewriteValueLOONG64latelower(v *Value) bool {
     6  	switch v.Op {
     7  	case OpLOONG64MOVVconst:
     8  		return rewriteValueLOONG64latelower_OpLOONG64MOVVconst(v)
     9  	case OpLOONG64SLLVconst:
    10  		return rewriteValueLOONG64latelower_OpLOONG64SLLVconst(v)
    11  	}
    12  	return false
    13  }
    14  func rewriteValueLOONG64latelower_OpLOONG64MOVVconst(v *Value) bool {
    15  	// match: (MOVVconst [0])
    16  	// result: (ZERO)
    17  	for {
    18  		if auxIntToInt64(v.AuxInt) != 0 {
    19  			break
    20  		}
    21  		v.reset(OpLOONG64ZERO)
    22  		return true
    23  	}
    24  	return false
    25  }
    26  func rewriteValueLOONG64latelower_OpLOONG64SLLVconst(v *Value) bool {
    27  	v_0 := v.Args[0]
    28  	// match: (SLLVconst [1] x)
    29  	// result: (ADDV x x)
    30  	for {
    31  		if auxIntToInt64(v.AuxInt) != 1 {
    32  			break
    33  		}
    34  		x := v_0
    35  		v.reset(OpLOONG64ADDV)
    36  		v.AddArg2(x, x)
    37  		return true
    38  	}
    39  	return false
    40  }
    41  func rewriteBlockLOONG64latelower(b *Block) bool {
    42  	switch b.Kind {
    43  	case BlockLOONG64EQZ:
    44  		// match: (EQZ (XOR x y) yes no)
    45  		// result: (BEQ x y yes no)
    46  		for b.Controls[0].Op == OpLOONG64XOR {
    47  			v_0 := b.Controls[0]
    48  			_ = v_0.Args[1]
    49  			v_0_0 := v_0.Args[0]
    50  			v_0_1 := v_0.Args[1]
    51  			for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
    52  				x := v_0_0
    53  				y := v_0_1
    54  				b.resetWithControl2(BlockLOONG64BEQ, x, y)
    55  				return true
    56  			}
    57  		}
    58  	case BlockLOONG64NEZ:
    59  		// match: (NEZ (XOR x y) yes no)
    60  		// result: (BNE x y yes no)
    61  		for b.Controls[0].Op == OpLOONG64XOR {
    62  			v_0 := b.Controls[0]
    63  			_ = v_0.Args[1]
    64  			v_0_0 := v_0.Args[0]
    65  			v_0_1 := v_0.Args[1]
    66  			for _i0 := 0; _i0 <= 1; _i0, v_0_0, v_0_1 = _i0+1, v_0_1, v_0_0 {
    67  				x := v_0_0
    68  				y := v_0_1
    69  				b.resetWithControl2(BlockLOONG64BNE, x, y)
    70  				return true
    71  			}
    72  		}
    73  	}
    74  	return false
    75  }
    76  

View as plain text