Source file src/cmd/compile/internal/arm64/simdssa_sve.go

     1  // Code generated by 'simdgen -o godefs -goroot $GOROOT -arch sve -arm64Path $ARM64_ISA_PATH go_sve.yaml types.yaml categories.yaml'; DO NOT EDIT.
     2  
     3  package arm64
     4  
     5  import (
     6  	"cmd/compile/internal/ssa"
     7  	"cmd/compile/internal/ssa/ssaop"
     8  	"cmd/compile/internal/ssagen"
     9  	"cmd/internal/obj"
    10  	"cmd/internal/obj/arm64"
    11  )
    12  
    13  func ssaGenSIMDSVEValue(s *ssagen.State, v *ssa.Value) bool {
    14  	var p *obj.Prog
    15  	switch v.Op {
    16  	case ssaop.OpARM64ZABSB,
    17  		ssaop.OpARM64ZNEGB:
    18  		p = simdZkv(s, v, arm64.ARNG_B)
    19  
    20  	case ssaop.OpARM64ZFABSD,
    21  		ssaop.OpARM64ZABSD,
    22  		ssaop.OpARM64ZFRINTPD,
    23  		ssaop.OpARM64ZFRINTMD,
    24  		ssaop.OpARM64ZFNEGD,
    25  		ssaop.OpARM64ZNEGD,
    26  		ssaop.OpARM64ZFRINTND,
    27  		ssaop.OpARM64ZFSQRTD,
    28  		ssaop.OpARM64ZFRINTZD:
    29  		p = simdZkv(s, v, arm64.ARNG_D)
    30  
    31  	case ssaop.OpARM64ZABSH,
    32  		ssaop.OpARM64ZNEGH:
    33  		p = simdZkv(s, v, arm64.ARNG_H)
    34  
    35  	case ssaop.OpARM64ZFABSS,
    36  		ssaop.OpARM64ZABSS,
    37  		ssaop.OpARM64ZFRINTPS,
    38  		ssaop.OpARM64ZFRINTMS,
    39  		ssaop.OpARM64ZFNEGS,
    40  		ssaop.OpARM64ZNEGS,
    41  		ssaop.OpARM64ZFRINTNS,
    42  		ssaop.OpARM64ZFSQRTS,
    43  		ssaop.OpARM64ZFRINTZS:
    44  		p = simdZkv(s, v, arm64.ARNG_S)
    45  
    46  	case ssaop.OpARM64ZADDB,
    47  		ssaop.OpARM64ZSQADDB,
    48  		ssaop.OpARM64ZUQADDB,
    49  		ssaop.OpARM64ZMULB,
    50  		ssaop.OpARM64ZSMULHB,
    51  		ssaop.OpARM64ZUMULHB,
    52  		ssaop.OpARM64ZSUBB,
    53  		ssaop.OpARM64ZSQSUBB,
    54  		ssaop.OpARM64ZUQSUBB:
    55  		p = simdZ21(s, v, arm64.ARNG_B)
    56  
    57  	case ssaop.OpARM64ZFADDD,
    58  		ssaop.OpARM64ZADDD,
    59  		ssaop.OpARM64ZSQADDD,
    60  		ssaop.OpARM64ZUQADDD,
    61  		ssaop.OpARM64ZANDD,
    62  		ssaop.OpARM64ZBICD,
    63  		ssaop.OpARM64ZFMULD,
    64  		ssaop.OpARM64ZMULD,
    65  		ssaop.OpARM64ZSMULHD,
    66  		ssaop.OpARM64ZUMULHD,
    67  		ssaop.OpARM64ZORRD,
    68  		ssaop.OpARM64ZFSUBD,
    69  		ssaop.OpARM64ZSUBD,
    70  		ssaop.OpARM64ZSQSUBD,
    71  		ssaop.OpARM64ZUQSUBD,
    72  		ssaop.OpARM64ZEORD:
    73  		p = simdZ21(s, v, arm64.ARNG_D)
    74  
    75  	case ssaop.OpARM64ZADDH,
    76  		ssaop.OpARM64ZSQADDH,
    77  		ssaop.OpARM64ZUQADDH,
    78  		ssaop.OpARM64ZMULH,
    79  		ssaop.OpARM64ZSMULHH,
    80  		ssaop.OpARM64ZUMULHH,
    81  		ssaop.OpARM64ZSUBH,
    82  		ssaop.OpARM64ZSQSUBH,
    83  		ssaop.OpARM64ZUQSUBH:
    84  		p = simdZ21(s, v, arm64.ARNG_H)
    85  
    86  	case ssaop.OpARM64ZFADDS,
    87  		ssaop.OpARM64ZADDS,
    88  		ssaop.OpARM64ZSQADDS,
    89  		ssaop.OpARM64ZUQADDS,
    90  		ssaop.OpARM64ZFMULS,
    91  		ssaop.OpARM64ZMULS,
    92  		ssaop.OpARM64ZSMULHS,
    93  		ssaop.OpARM64ZUMULHS,
    94  		ssaop.OpARM64ZFSUBS,
    95  		ssaop.OpARM64ZSUBS,
    96  		ssaop.OpARM64ZSQSUBS,
    97  		ssaop.OpARM64ZUQSUBS:
    98  		p = simdZ21(s, v, arm64.ARNG_S)
    99  
   100  	case ssaop.OpARM64ZCMPEQB,
   101  		ssaop.OpARM64ZCMPGTB,
   102  		ssaop.OpARM64ZCMPHIB,
   103  		ssaop.OpARM64ZCMPGEB,
   104  		ssaop.OpARM64ZCMPHSB,
   105  		ssaop.OpARM64ZCMPNEB:
   106  		p = simdZ2kk(s, v, arm64.ARNG_B)
   107  
   108  	case ssaop.OpARM64ZFCMEQD,
   109  		ssaop.OpARM64ZCMPEQD,
   110  		ssaop.OpARM64ZFCMGTD,
   111  		ssaop.OpARM64ZCMPGTD,
   112  		ssaop.OpARM64ZCMPHID,
   113  		ssaop.OpARM64ZFCMGED,
   114  		ssaop.OpARM64ZCMPGED,
   115  		ssaop.OpARM64ZCMPHSD,
   116  		ssaop.OpARM64ZFCMNED,
   117  		ssaop.OpARM64ZCMPNED:
   118  		p = simdZ2kk(s, v, arm64.ARNG_D)
   119  
   120  	case ssaop.OpARM64ZCMPEQH,
   121  		ssaop.OpARM64ZCMPGTH,
   122  		ssaop.OpARM64ZCMPHIH,
   123  		ssaop.OpARM64ZCMPGEH,
   124  		ssaop.OpARM64ZCMPHSH,
   125  		ssaop.OpARM64ZCMPNEH:
   126  		p = simdZ2kk(s, v, arm64.ARNG_H)
   127  
   128  	case ssaop.OpARM64ZFCMEQS,
   129  		ssaop.OpARM64ZCMPEQS,
   130  		ssaop.OpARM64ZFCMGTS,
   131  		ssaop.OpARM64ZCMPGTS,
   132  		ssaop.OpARM64ZCMPHIS,
   133  		ssaop.OpARM64ZFCMGES,
   134  		ssaop.OpARM64ZCMPGES,
   135  		ssaop.OpARM64ZCMPHSS,
   136  		ssaop.OpARM64ZFCMNES,
   137  		ssaop.OpARM64ZCMPNES:
   138  		p = simdZ2kk(s, v, arm64.ARNG_S)
   139  
   140  	case ssaop.OpARM64ZADDMergingB,
   141  		ssaop.OpARM64ZSQADDMergingB,
   142  		ssaop.OpARM64ZUQADDMergingB,
   143  		ssaop.OpARM64ZANDMergingB,
   144  		ssaop.OpARM64ZBICMergingB,
   145  		ssaop.OpARM64ZMULMergingB,
   146  		ssaop.OpARM64ZSMULHMergingB,
   147  		ssaop.OpARM64ZUMULHMergingB,
   148  		ssaop.OpARM64ZORRMergingB,
   149  		ssaop.OpARM64ZSUBMergingB,
   150  		ssaop.OpARM64ZSQSUBMergingB,
   151  		ssaop.OpARM64ZUQSUBMergingB,
   152  		ssaop.OpARM64ZEORMergingB:
   153  		p = simdZ2kvPred(s, v, arm64.ARNG_B)
   154  
   155  	case ssaop.OpARM64ZFADDMergingD,
   156  		ssaop.OpARM64ZADDMergingD,
   157  		ssaop.OpARM64ZSQADDMergingD,
   158  		ssaop.OpARM64ZUQADDMergingD,
   159  		ssaop.OpARM64ZANDMergingD,
   160  		ssaop.OpARM64ZBICMergingD,
   161  		ssaop.OpARM64ZFMULMergingD,
   162  		ssaop.OpARM64ZMULMergingD,
   163  		ssaop.OpARM64ZSMULHMergingD,
   164  		ssaop.OpARM64ZUMULHMergingD,
   165  		ssaop.OpARM64ZORRMergingD,
   166  		ssaop.OpARM64ZFSUBMergingD,
   167  		ssaop.OpARM64ZSUBMergingD,
   168  		ssaop.OpARM64ZSQSUBMergingD,
   169  		ssaop.OpARM64ZUQSUBMergingD,
   170  		ssaop.OpARM64ZEORMergingD:
   171  		p = simdZ2kvPred(s, v, arm64.ARNG_D)
   172  
   173  	case ssaop.OpARM64ZADDMergingH,
   174  		ssaop.OpARM64ZSQADDMergingH,
   175  		ssaop.OpARM64ZUQADDMergingH,
   176  		ssaop.OpARM64ZANDMergingH,
   177  		ssaop.OpARM64ZBICMergingH,
   178  		ssaop.OpARM64ZMULMergingH,
   179  		ssaop.OpARM64ZSMULHMergingH,
   180  		ssaop.OpARM64ZUMULHMergingH,
   181  		ssaop.OpARM64ZORRMergingH,
   182  		ssaop.OpARM64ZSUBMergingH,
   183  		ssaop.OpARM64ZSQSUBMergingH,
   184  		ssaop.OpARM64ZUQSUBMergingH,
   185  		ssaop.OpARM64ZEORMergingH:
   186  		p = simdZ2kvPred(s, v, arm64.ARNG_H)
   187  
   188  	case ssaop.OpARM64ZFADDMergingS,
   189  		ssaop.OpARM64ZADDMergingS,
   190  		ssaop.OpARM64ZSQADDMergingS,
   191  		ssaop.OpARM64ZUQADDMergingS,
   192  		ssaop.OpARM64ZANDMergingS,
   193  		ssaop.OpARM64ZBICMergingS,
   194  		ssaop.OpARM64ZFMULMergingS,
   195  		ssaop.OpARM64ZMULMergingS,
   196  		ssaop.OpARM64ZSMULHMergingS,
   197  		ssaop.OpARM64ZUMULHMergingS,
   198  		ssaop.OpARM64ZORRMergingS,
   199  		ssaop.OpARM64ZFSUBMergingS,
   200  		ssaop.OpARM64ZSUBMergingS,
   201  		ssaop.OpARM64ZSQSUBMergingS,
   202  		ssaop.OpARM64ZUQSUBMergingS,
   203  		ssaop.OpARM64ZEORMergingS:
   204  		p = simdZ2kvPred(s, v, arm64.ARNG_S)
   205  
   206  	case ssaop.OpARM64ZABSMergingB,
   207  		ssaop.OpARM64ZNEGMergingB:
   208  		p = simdZ2kvPredResultInArg0(s, v, arm64.ARNG_B)
   209  
   210  	case ssaop.OpARM64ZFABSMergingD,
   211  		ssaop.OpARM64ZABSMergingD,
   212  		ssaop.OpARM64ZFNEGMergingD,
   213  		ssaop.OpARM64ZNEGMergingD,
   214  		ssaop.OpARM64ZFSQRTMergingD:
   215  		p = simdZ2kvPredResultInArg0(s, v, arm64.ARNG_D)
   216  
   217  	case ssaop.OpARM64ZABSMergingH,
   218  		ssaop.OpARM64ZNEGMergingH:
   219  		p = simdZ2kvPredResultInArg0(s, v, arm64.ARNG_H)
   220  
   221  	case ssaop.OpARM64ZFABSMergingS,
   222  		ssaop.OpARM64ZABSMergingS,
   223  		ssaop.OpARM64ZFNEGMergingS,
   224  		ssaop.OpARM64ZNEGMergingS,
   225  		ssaop.OpARM64ZFSQRTMergingS:
   226  		p = simdZ2kvPredResultInArg0(s, v, arm64.ARNG_S)
   227  
   228  	case ssaop.OpARM64ZADDMergingPrefixedB,
   229  		ssaop.OpARM64ZSQADDMergingPrefixedB,
   230  		ssaop.OpARM64ZUQADDMergingPrefixedB,
   231  		ssaop.OpARM64ZANDMergingPrefixedB,
   232  		ssaop.OpARM64ZMULMergingPrefixedB,
   233  		ssaop.OpARM64ZSMULHMergingPrefixedB,
   234  		ssaop.OpARM64ZUMULHMergingPrefixedB,
   235  		ssaop.OpARM64ZORRMergingPrefixedB,
   236  		ssaop.OpARM64ZEORMergingPrefixedB:
   237  		p = simdZ3kvPredResultInArg0(s, v, arm64.ARNG_B)
   238  
   239  	case ssaop.OpARM64ZFADDMergingPrefixedD,
   240  		ssaop.OpARM64ZADDMergingPrefixedD,
   241  		ssaop.OpARM64ZSQADDMergingPrefixedD,
   242  		ssaop.OpARM64ZUQADDMergingPrefixedD,
   243  		ssaop.OpARM64ZANDMergingPrefixedD,
   244  		ssaop.OpARM64ZFMULMergingPrefixedD,
   245  		ssaop.OpARM64ZMULMergingPrefixedD,
   246  		ssaop.OpARM64ZSMULHMergingPrefixedD,
   247  		ssaop.OpARM64ZUMULHMergingPrefixedD,
   248  		ssaop.OpARM64ZORRMergingPrefixedD,
   249  		ssaop.OpARM64ZEORMergingPrefixedD:
   250  		p = simdZ3kvPredResultInArg0(s, v, arm64.ARNG_D)
   251  
   252  	case ssaop.OpARM64ZADDMergingPrefixedH,
   253  		ssaop.OpARM64ZSQADDMergingPrefixedH,
   254  		ssaop.OpARM64ZUQADDMergingPrefixedH,
   255  		ssaop.OpARM64ZANDMergingPrefixedH,
   256  		ssaop.OpARM64ZMULMergingPrefixedH,
   257  		ssaop.OpARM64ZSMULHMergingPrefixedH,
   258  		ssaop.OpARM64ZUMULHMergingPrefixedH,
   259  		ssaop.OpARM64ZORRMergingPrefixedH,
   260  		ssaop.OpARM64ZEORMergingPrefixedH:
   261  		p = simdZ3kvPredResultInArg0(s, v, arm64.ARNG_H)
   262  
   263  	case ssaop.OpARM64ZFADDMergingPrefixedS,
   264  		ssaop.OpARM64ZADDMergingPrefixedS,
   265  		ssaop.OpARM64ZSQADDMergingPrefixedS,
   266  		ssaop.OpARM64ZUQADDMergingPrefixedS,
   267  		ssaop.OpARM64ZANDMergingPrefixedS,
   268  		ssaop.OpARM64ZFMULMergingPrefixedS,
   269  		ssaop.OpARM64ZMULMergingPrefixedS,
   270  		ssaop.OpARM64ZSMULHMergingPrefixedS,
   271  		ssaop.OpARM64ZUMULHMergingPrefixedS,
   272  		ssaop.OpARM64ZORRMergingPrefixedS,
   273  		ssaop.OpARM64ZEORMergingPrefixedS:
   274  		p = simdZ3kvPredResultInArg0(s, v, arm64.ARNG_S)
   275  
   276  	default:
   277  		// Unknown reg shape
   278  		return false
   279  	}
   280  
   281  	// Ensure p is marked as used (may not be used in all generated code paths)
   282  	_ = p
   283  	return true
   284  }
   285  

View as plain text