Source file src/cmd/compile/internal/ssarewrite/rewriteamd64latelower/rewriteAMD64latelower.go

     1  // Code generated from _gen/AMD64latelower.rules using 'go generate'; DO NOT EDIT.
     2  
     3  package rewriteamd64latelower
     4  
     5  import "internal/buildcfg"
     6  import "cmd/compile/internal/ssa/ssaop"
     7  import "cmd/compile/internal/ssa"
     8  
     9  func RewriteValue(v *ssa.Value) bool {
    10  	switch v.Op {
    11  	case ssaop.OpAMD64MOVBQZX:
    12  		return rewriteValue_OpAMD64MOVBQZX(v)
    13  	case ssaop.OpAMD64MOVLQZX:
    14  		return rewriteValue_OpAMD64MOVLQZX(v)
    15  	case ssaop.OpAMD64MOVWQZX:
    16  		return rewriteValue_OpAMD64MOVWQZX(v)
    17  	case ssaop.OpAMD64SARL:
    18  		return rewriteValue_OpAMD64SARL(v)
    19  	case ssaop.OpAMD64SARQ:
    20  		return rewriteValue_OpAMD64SARQ(v)
    21  	case ssaop.OpAMD64SHLL:
    22  		return rewriteValue_OpAMD64SHLL(v)
    23  	case ssaop.OpAMD64SHLQ:
    24  		return rewriteValue_OpAMD64SHLQ(v)
    25  	case ssaop.OpAMD64SHRL:
    26  		return rewriteValue_OpAMD64SHRL(v)
    27  	case ssaop.OpAMD64SHRQ:
    28  		return rewriteValue_OpAMD64SHRQ(v)
    29  	}
    30  	return false
    31  }
    32  func rewriteValue_OpAMD64MOVBQZX(v *ssa.Value) bool {
    33  	v_0 := v.Args[0]
    34  	// match: (MOVBQZX x)
    35  	// cond: ssa.ZeroUpper56Bits(x)
    36  	// result: x
    37  	for {
    38  		x := v_0
    39  		if !(ssa.ZeroUpper56Bits(x)) {
    40  			break
    41  		}
    42  		v.CopyOf(x)
    43  		return true
    44  	}
    45  	return false
    46  }
    47  func rewriteValue_OpAMD64MOVLQZX(v *ssa.Value) bool {
    48  	v_0 := v.Args[0]
    49  	// match: (MOVLQZX x)
    50  	// cond: ssa.ZeroUpper32Bits(x)
    51  	// result: x
    52  	for {
    53  		x := v_0
    54  		if !(ssa.ZeroUpper32Bits(x)) {
    55  			break
    56  		}
    57  		v.CopyOf(x)
    58  		return true
    59  	}
    60  	return false
    61  }
    62  func rewriteValue_OpAMD64MOVWQZX(v *ssa.Value) bool {
    63  	v_0 := v.Args[0]
    64  	// match: (MOVWQZX x)
    65  	// cond: ssa.ZeroUpper48Bits(x)
    66  	// result: x
    67  	for {
    68  		x := v_0
    69  		if !(ssa.ZeroUpper48Bits(x)) {
    70  			break
    71  		}
    72  		v.CopyOf(x)
    73  		return true
    74  	}
    75  	return false
    76  }
    77  func rewriteValue_OpAMD64SARL(v *ssa.Value) bool {
    78  	v_1 := v.Args[1]
    79  	v_0 := v.Args[0]
    80  	// match: (SARL x y)
    81  	// cond: buildcfg.GOAMD64 >= 3
    82  	// result: (SARXL x y)
    83  	for {
    84  		x := v_0
    85  		y := v_1
    86  		if !(buildcfg.GOAMD64 >= 3) {
    87  			break
    88  		}
    89  		v.Reset(ssaop.OpAMD64SARXL)
    90  		v.AddArg2(x, y)
    91  		return true
    92  	}
    93  	return false
    94  }
    95  func rewriteValue_OpAMD64SARQ(v *ssa.Value) bool {
    96  	v_1 := v.Args[1]
    97  	v_0 := v.Args[0]
    98  	// match: (SARQ x y)
    99  	// cond: buildcfg.GOAMD64 >= 3
   100  	// result: (SARXQ x y)
   101  	for {
   102  		x := v_0
   103  		y := v_1
   104  		if !(buildcfg.GOAMD64 >= 3) {
   105  			break
   106  		}
   107  		v.Reset(ssaop.OpAMD64SARXQ)
   108  		v.AddArg2(x, y)
   109  		return true
   110  	}
   111  	return false
   112  }
   113  func rewriteValue_OpAMD64SHLL(v *ssa.Value) bool {
   114  	v_1 := v.Args[1]
   115  	v_0 := v.Args[0]
   116  	// match: (SHLL x y)
   117  	// cond: buildcfg.GOAMD64 >= 3
   118  	// result: (SHLXL x y)
   119  	for {
   120  		x := v_0
   121  		y := v_1
   122  		if !(buildcfg.GOAMD64 >= 3) {
   123  			break
   124  		}
   125  		v.Reset(ssaop.OpAMD64SHLXL)
   126  		v.AddArg2(x, y)
   127  		return true
   128  	}
   129  	return false
   130  }
   131  func rewriteValue_OpAMD64SHLQ(v *ssa.Value) bool {
   132  	v_1 := v.Args[1]
   133  	v_0 := v.Args[0]
   134  	// match: (SHLQ x y)
   135  	// cond: buildcfg.GOAMD64 >= 3
   136  	// result: (SHLXQ x y)
   137  	for {
   138  		x := v_0
   139  		y := v_1
   140  		if !(buildcfg.GOAMD64 >= 3) {
   141  			break
   142  		}
   143  		v.Reset(ssaop.OpAMD64SHLXQ)
   144  		v.AddArg2(x, y)
   145  		return true
   146  	}
   147  	return false
   148  }
   149  func rewriteValue_OpAMD64SHRL(v *ssa.Value) bool {
   150  	v_1 := v.Args[1]
   151  	v_0 := v.Args[0]
   152  	// match: (SHRL x y)
   153  	// cond: buildcfg.GOAMD64 >= 3
   154  	// result: (SHRXL x y)
   155  	for {
   156  		x := v_0
   157  		y := v_1
   158  		if !(buildcfg.GOAMD64 >= 3) {
   159  			break
   160  		}
   161  		v.Reset(ssaop.OpAMD64SHRXL)
   162  		v.AddArg2(x, y)
   163  		return true
   164  	}
   165  	return false
   166  }
   167  func rewriteValue_OpAMD64SHRQ(v *ssa.Value) bool {
   168  	v_1 := v.Args[1]
   169  	v_0 := v.Args[0]
   170  	// match: (SHRQ x y)
   171  	// cond: buildcfg.GOAMD64 >= 3
   172  	// result: (SHRXQ x y)
   173  	for {
   174  		x := v_0
   175  		y := v_1
   176  		if !(buildcfg.GOAMD64 >= 3) {
   177  			break
   178  		}
   179  		v.Reset(ssaop.OpAMD64SHRXQ)
   180  		v.AddArg2(x, y)
   181  		return true
   182  	}
   183  	return false
   184  }
   185  func RewriteBlock(b *ssa.Block) bool {
   186  	return false
   187  }
   188  

View as plain text