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

     1  // Code generated by 'simdgen -o godefs -goroot $GOROOT -arch arm64 -arm64Path $ARM64_ISA_PATH go_arm64.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 ssaGenSIMDValue(s *ssagen.State, v *ssa.Value) bool {
    14  	var p *obj.Prog
    15  	switch v.Op {
    16  	case ssaop.OpARM64VABS16B,
    17  		ssaop.OpARM64VCLS16B,
    18  		ssaop.OpARM64VCLZ16B,
    19  		ssaop.OpARM64VNEG16B,
    20  		ssaop.OpARM64VNOT16B,
    21  		ssaop.OpARM64VCNT16B:
    22  		p = simdV11(s, v, arm64.ARNG_16B)
    23  
    24  	case ssaop.OpARM64VFABS2D,
    25  		ssaop.OpARM64VABS2D,
    26  		ssaop.OpARM64VFRINTP2D,
    27  		ssaop.OpARM64VSCVTF2D,
    28  		ssaop.OpARM64VUCVTF2D,
    29  		ssaop.OpARM64VFCVTZS2D,
    30  		ssaop.OpARM64VFCVTZU2D,
    31  		ssaop.OpARM64VFRINTM2D,
    32  		ssaop.OpARM64VFNEG2D,
    33  		ssaop.OpARM64VNEG2D,
    34  		ssaop.OpARM64VFRINTN2D,
    35  		ssaop.OpARM64VFSQRT2D,
    36  		ssaop.OpARM64VFRINTZ2D:
    37  		p = simdV11(s, v, arm64.ARNG_2D)
    38  
    39  	case ssaop.OpARM64VFABS4S,
    40  		ssaop.OpARM64VABS4S,
    41  		ssaop.OpARM64VFRINTP4S,
    42  		ssaop.OpARM64VSCVTF4S,
    43  		ssaop.OpARM64VUCVTF4S,
    44  		ssaop.OpARM64VFCVTZS4S,
    45  		ssaop.OpARM64VFCVTZU4S,
    46  		ssaop.OpARM64VFRINTM4S,
    47  		ssaop.OpARM64VCLS4S,
    48  		ssaop.OpARM64VCLZ4S,
    49  		ssaop.OpARM64VFNEG4S,
    50  		ssaop.OpARM64VNEG4S,
    51  		ssaop.OpARM64VFRINTN4S,
    52  		ssaop.OpARM64VFSQRT4S,
    53  		ssaop.OpARM64VFRINTZ4S:
    54  		p = simdV11(s, v, arm64.ARNG_4S)
    55  
    56  	case ssaop.OpARM64VABS8H,
    57  		ssaop.OpARM64VCLS8H,
    58  		ssaop.OpARM64VCLZ8H,
    59  		ssaop.OpARM64VNEG8H:
    60  		p = simdV11(s, v, arm64.ARNG_8H)
    61  
    62  	case ssaop.OpARM64VSHL16B,
    63  		ssaop.OpARM64VSSHR16B,
    64  		ssaop.OpARM64VUSHR16B,
    65  		ssaop.OpARM64VSQSHL16Bconst,
    66  		ssaop.OpARM64VUQSHL16Bconst:
    67  		p = simdV11Imm(s, v, arm64.ARNG_16B)
    68  
    69  	case ssaop.OpARM64VSHL2D,
    70  		ssaop.OpARM64VSSHR2D,
    71  		ssaop.OpARM64VUSHR2D,
    72  		ssaop.OpARM64VSQSHL2Dconst,
    73  		ssaop.OpARM64VUQSHL2Dconst:
    74  		p = simdV11Imm(s, v, arm64.ARNG_2D)
    75  
    76  	case ssaop.OpARM64VSHL4S,
    77  		ssaop.OpARM64VSSHR4S,
    78  		ssaop.OpARM64VUSHR4S,
    79  		ssaop.OpARM64VSQSHL4Sconst,
    80  		ssaop.OpARM64VUQSHL4Sconst:
    81  		p = simdV11Imm(s, v, arm64.ARNG_4S)
    82  
    83  	case ssaop.OpARM64VSHL8H,
    84  		ssaop.OpARM64VSSHR8H,
    85  		ssaop.OpARM64VUSHR8H,
    86  		ssaop.OpARM64VSQSHL8Hconst,
    87  		ssaop.OpARM64VUQSHL8Hconst:
    88  		p = simdV11Imm(s, v, arm64.ARNG_8H)
    89  
    90  	case ssaop.OpARM64VDUPBbcast:
    91  		p = simdV11ImmIn1(s, v, arm64.ARNG_B)
    92  
    93  	case ssaop.OpARM64VDUPDbcast:
    94  		p = simdV11ImmIn1(s, v, arm64.ARNG_D)
    95  
    96  	case ssaop.OpARM64VDUPHbcast:
    97  		p = simdV11ImmIn1(s, v, arm64.ARNG_H)
    98  
    99  	case ssaop.OpARM64VDUPSbcast:
   100  		p = simdV11ImmIn1(s, v, arm64.ARNG_S)
   101  
   102  	case ssaop.OpARM64VSMAXV16B,
   103  		ssaop.OpARM64VUMAXV16B,
   104  		ssaop.OpARM64VSMINV16B,
   105  		ssaop.OpARM64VUMINV16B,
   106  		ssaop.OpARM64VADDV16B:
   107  		p = simdV11Scalar(s, v, arm64.ARNG_16B)
   108  
   109  	case ssaop.OpARM64VFMAXV4S,
   110  		ssaop.OpARM64VSMAXV4S,
   111  		ssaop.OpARM64VUMAXV4S,
   112  		ssaop.OpARM64VFMINV4S,
   113  		ssaop.OpARM64VSMINV4S,
   114  		ssaop.OpARM64VUMINV4S,
   115  		ssaop.OpARM64VADDV4S:
   116  		p = simdV11Scalar(s, v, arm64.ARNG_4S)
   117  
   118  	case ssaop.OpARM64VSMAXV8H,
   119  		ssaop.OpARM64VUMAXV8H,
   120  		ssaop.OpARM64VSMINV8H,
   121  		ssaop.OpARM64VUMINV8H,
   122  		ssaop.OpARM64VADDV8H:
   123  		p = simdV11Scalar(s, v, arm64.ARNG_8H)
   124  
   125  	case ssaop.OpARM64VDUPDextr:
   126  		p = simdV11ScalarImmIn1(s, v, arm64.ARNG_D)
   127  
   128  	case ssaop.OpARM64VDUPSextr:
   129  		p = simdV11ScalarImmIn1(s, v, arm64.ARNG_S)
   130  
   131  	case ssaop.OpARM64VADD16B,
   132  		ssaop.OpARM64VSQADD16B,
   133  		ssaop.OpARM64VUQADD16B,
   134  		ssaop.OpARM64VAND16B,
   135  		ssaop.OpARM64VBIC16B,
   136  		ssaop.OpARM64VSRHADD16B,
   137  		ssaop.OpARM64VURHADD16B,
   138  		ssaop.OpARM64VUZP116B,
   139  		ssaop.OpARM64VUZP216B,
   140  		ssaop.OpARM64VCMEQ16B,
   141  		ssaop.OpARM64VCMGT16B,
   142  		ssaop.OpARM64VCMHI16B,
   143  		ssaop.OpARM64VCMGE16B,
   144  		ssaop.OpARM64VCMHS16B,
   145  		ssaop.OpARM64VTRN116B,
   146  		ssaop.OpARM64VZIP216B,
   147  		ssaop.OpARM64VZIP116B,
   148  		ssaop.OpARM64VTRN216B,
   149  		ssaop.OpARM64VSMAX16B,
   150  		ssaop.OpARM64VUMAX16B,
   151  		ssaop.OpARM64VSMIN16B,
   152  		ssaop.OpARM64VUMIN16B,
   153  		ssaop.OpARM64VMUL16B,
   154  		ssaop.OpARM64VORR16B,
   155  		ssaop.OpARM64VORN16B,
   156  		ssaop.OpARM64VSSHL16B,
   157  		ssaop.OpARM64VUSHL16B,
   158  		ssaop.OpARM64VSQSHL16B,
   159  		ssaop.OpARM64VUQSHL16B,
   160  		ssaop.OpARM64VSUB16B,
   161  		ssaop.OpARM64VSQSUB16B,
   162  		ssaop.OpARM64VUQSUB16B,
   163  		ssaop.OpARM64VCMTST16B,
   164  		ssaop.OpARM64VEOR16B:
   165  		p = simdV21(s, v, arm64.ARNG_16B)
   166  
   167  	case ssaop.OpARM64VFADD2D,
   168  		ssaop.OpARM64VADD2D,
   169  		ssaop.OpARM64VSQADD2D,
   170  		ssaop.OpARM64VUQADD2D,
   171  		ssaop.OpARM64VFADDP2D,
   172  		ssaop.OpARM64VADDP2D,
   173  		ssaop.OpARM64VUZP12D,
   174  		ssaop.OpARM64VUZP22D,
   175  		ssaop.OpARM64VFDIV2D,
   176  		ssaop.OpARM64VFCMEQ2D,
   177  		ssaop.OpARM64VCMEQ2D,
   178  		ssaop.OpARM64VFCMGT2D,
   179  		ssaop.OpARM64VCMGT2D,
   180  		ssaop.OpARM64VCMHI2D,
   181  		ssaop.OpARM64VFCMGE2D,
   182  		ssaop.OpARM64VCMGE2D,
   183  		ssaop.OpARM64VCMHS2D,
   184  		ssaop.OpARM64VTRN12D,
   185  		ssaop.OpARM64VZIP22D,
   186  		ssaop.OpARM64VZIP12D,
   187  		ssaop.OpARM64VTRN22D,
   188  		ssaop.OpARM64VFMAX2D,
   189  		ssaop.OpARM64VFMIN2D,
   190  		ssaop.OpARM64VFMUL2D,
   191  		ssaop.OpARM64VSSHL2D,
   192  		ssaop.OpARM64VUSHL2D,
   193  		ssaop.OpARM64VSQSHL2D,
   194  		ssaop.OpARM64VUQSHL2D,
   195  		ssaop.OpARM64VFSUB2D,
   196  		ssaop.OpARM64VSUB2D,
   197  		ssaop.OpARM64VSQSUB2D,
   198  		ssaop.OpARM64VUQSUB2D,
   199  		ssaop.OpARM64VCMTST2D:
   200  		p = simdV21(s, v, arm64.ARNG_2D)
   201  
   202  	case ssaop.OpARM64VFADD4S,
   203  		ssaop.OpARM64VADD4S,
   204  		ssaop.OpARM64VSQADD4S,
   205  		ssaop.OpARM64VUQADD4S,
   206  		ssaop.OpARM64VSRHADD4S,
   207  		ssaop.OpARM64VURHADD4S,
   208  		ssaop.OpARM64VFADDP4S,
   209  		ssaop.OpARM64VADDP4S,
   210  		ssaop.OpARM64VUZP14S,
   211  		ssaop.OpARM64VUZP24S,
   212  		ssaop.OpARM64VFDIV4S,
   213  		ssaop.OpARM64VFCMEQ4S,
   214  		ssaop.OpARM64VCMEQ4S,
   215  		ssaop.OpARM64VFCMGT4S,
   216  		ssaop.OpARM64VCMGT4S,
   217  		ssaop.OpARM64VCMHI4S,
   218  		ssaop.OpARM64VFCMGE4S,
   219  		ssaop.OpARM64VCMGE4S,
   220  		ssaop.OpARM64VCMHS4S,
   221  		ssaop.OpARM64VTRN14S,
   222  		ssaop.OpARM64VZIP24S,
   223  		ssaop.OpARM64VZIP14S,
   224  		ssaop.OpARM64VTRN24S,
   225  		ssaop.OpARM64VFMAX4S,
   226  		ssaop.OpARM64VSMAX4S,
   227  		ssaop.OpARM64VUMAX4S,
   228  		ssaop.OpARM64VFMIN4S,
   229  		ssaop.OpARM64VSMIN4S,
   230  		ssaop.OpARM64VUMIN4S,
   231  		ssaop.OpARM64VFMUL4S,
   232  		ssaop.OpARM64VMUL4S,
   233  		ssaop.OpARM64VSSHL4S,
   234  		ssaop.OpARM64VUSHL4S,
   235  		ssaop.OpARM64VSQSHL4S,
   236  		ssaop.OpARM64VUQSHL4S,
   237  		ssaop.OpARM64VFSUB4S,
   238  		ssaop.OpARM64VSUB4S,
   239  		ssaop.OpARM64VSQSUB4S,
   240  		ssaop.OpARM64VUQSUB4S,
   241  		ssaop.OpARM64VCMTST4S:
   242  		p = simdV21(s, v, arm64.ARNG_4S)
   243  
   244  	case ssaop.OpARM64VADD8H,
   245  		ssaop.OpARM64VSQADD8H,
   246  		ssaop.OpARM64VUQADD8H,
   247  		ssaop.OpARM64VSRHADD8H,
   248  		ssaop.OpARM64VURHADD8H,
   249  		ssaop.OpARM64VADDP8H,
   250  		ssaop.OpARM64VUZP18H,
   251  		ssaop.OpARM64VUZP28H,
   252  		ssaop.OpARM64VCMEQ8H,
   253  		ssaop.OpARM64VCMGT8H,
   254  		ssaop.OpARM64VCMHI8H,
   255  		ssaop.OpARM64VCMGE8H,
   256  		ssaop.OpARM64VCMHS8H,
   257  		ssaop.OpARM64VTRN18H,
   258  		ssaop.OpARM64VZIP28H,
   259  		ssaop.OpARM64VZIP18H,
   260  		ssaop.OpARM64VTRN28H,
   261  		ssaop.OpARM64VSMAX8H,
   262  		ssaop.OpARM64VUMAX8H,
   263  		ssaop.OpARM64VSMIN8H,
   264  		ssaop.OpARM64VUMIN8H,
   265  		ssaop.OpARM64VMUL8H,
   266  		ssaop.OpARM64VSSHL8H,
   267  		ssaop.OpARM64VUSHL8H,
   268  		ssaop.OpARM64VSQSHL8H,
   269  		ssaop.OpARM64VUQSHL8H,
   270  		ssaop.OpARM64VSUB8H,
   271  		ssaop.OpARM64VSQSUB8H,
   272  		ssaop.OpARM64VUQSUB8H,
   273  		ssaop.OpARM64VCMTST8H:
   274  		p = simdV21(s, v, arm64.ARNG_8H)
   275  
   276  	case ssaop.OpARM64VEXT16B:
   277  		p = simdV21Imm(s, v, arm64.ARNG_16B)
   278  
   279  	case ssaop.OpARM64VMLA16B,
   280  		ssaop.OpARM64VBIF16B,
   281  		ssaop.OpARM64VBIT16B:
   282  		p = simdV31ResultInArg0(s, v, arm64.ARNG_16B)
   283  
   284  	case ssaop.OpARM64VFMLA2D:
   285  		p = simdV31ResultInArg0(s, v, arm64.ARNG_2D)
   286  
   287  	case ssaop.OpARM64VFMLA4S,
   288  		ssaop.OpARM64VMLA4S:
   289  		p = simdV31ResultInArg0(s, v, arm64.ARNG_4S)
   290  
   291  	case ssaop.OpARM64VMLA8H:
   292  		p = simdV31ResultInArg0(s, v, arm64.ARNG_8H)
   293  
   294  	case ssaop.OpARM64VMOVBextr:
   295  		p = simdVgpImmIn1(s, v, arm64.ARNG_B)
   296  
   297  	case ssaop.OpARM64VMOVDextr:
   298  		p = simdVgpImmIn1(s, v, arm64.ARNG_D)
   299  
   300  	case ssaop.OpARM64VMOVHextr:
   301  		p = simdVgpImmIn1(s, v, arm64.ARNG_H)
   302  
   303  	case ssaop.OpARM64VMOVSextr:
   304  		p = simdVgpImmIn1(s, v, arm64.ARNG_S)
   305  
   306  	case ssaop.OpARM64VMOVBins:
   307  		p = simdVgpvResultInArg0ImmOutIn0(s, v, arm64.ARNG_B)
   308  
   309  	case ssaop.OpARM64VMOVDins:
   310  		p = simdVgpvResultInArg0ImmOutIn0(s, v, arm64.ARNG_D)
   311  
   312  	case ssaop.OpARM64VMOVHins:
   313  		p = simdVgpvResultInArg0ImmOutIn0(s, v, arm64.ARNG_H)
   314  
   315  	case ssaop.OpARM64VMOVSins:
   316  		p = simdVgpvResultInArg0ImmOutIn0(s, v, arm64.ARNG_S)
   317  
   318  	case ssaop.OpARM64VMOVDins0:
   319  		p = simdVfpvResultInArg0ImmOutIn1(s, v, arm64.ARNG_D)
   320  
   321  	case ssaop.OpARM64VMOVSins0:
   322  		p = simdVfpvResultInArg0ImmOutIn1(s, v, arm64.ARNG_S)
   323  
   324  	case ssaop.OpARM64VSXTL16B,
   325  		ssaop.OpARM64VUXTL16B:
   326  		p = simdV11Long(s, v, arm64.ARNG_16B)
   327  
   328  	case ssaop.OpARM64VFCVTL4S,
   329  		ssaop.OpARM64VSXTL4S,
   330  		ssaop.OpARM64VUXTL4S:
   331  		p = simdV11Long(s, v, arm64.ARNG_4S)
   332  
   333  	case ssaop.OpARM64VSXTL8H,
   334  		ssaop.OpARM64VUXTL8H:
   335  		p = simdV11Long(s, v, arm64.ARNG_8H)
   336  
   337  	case ssaop.OpARM64VFCVTN2D,
   338  		ssaop.OpARM64VSQXTN2D,
   339  		ssaop.OpARM64VSQXTUN2D,
   340  		ssaop.OpARM64VUQXTN2D,
   341  		ssaop.OpARM64VXTN2D:
   342  		p = simdV11Narrow(s, v, arm64.ARNG_2D)
   343  
   344  	case ssaop.OpARM64VSQXTN4S,
   345  		ssaop.OpARM64VSQXTUN4S,
   346  		ssaop.OpARM64VUQXTN4S,
   347  		ssaop.OpARM64VXTN4S:
   348  		p = simdV11Narrow(s, v, arm64.ARNG_4S)
   349  
   350  	case ssaop.OpARM64VSQXTN8H,
   351  		ssaop.OpARM64VSQXTUN8H,
   352  		ssaop.OpARM64VUQXTN8H,
   353  		ssaop.OpARM64VXTN8H:
   354  		p = simdV11Narrow(s, v, arm64.ARNG_8H)
   355  
   356  	case ssaop.OpARM64VSHRN2D:
   357  		p = simdV11ImmNarrow(s, v, arm64.ARNG_2D)
   358  
   359  	case ssaop.OpARM64VSHRN4S:
   360  		p = simdV11ImmNarrow(s, v, arm64.ARNG_4S)
   361  
   362  	case ssaop.OpARM64VSHRN8H:
   363  		p = simdV11ImmNarrow(s, v, arm64.ARNG_8H)
   364  
   365  	case ssaop.OpARM64VSSHLL16B,
   366  		ssaop.OpARM64VUSHLL16B:
   367  		p = simdV11ImmLong(s, v, arm64.ARNG_16B)
   368  
   369  	case ssaop.OpARM64VSSHLL4S,
   370  		ssaop.OpARM64VUSHLL4S:
   371  		p = simdV11ImmLong(s, v, arm64.ARNG_4S)
   372  
   373  	case ssaop.OpARM64VSSHLL8H,
   374  		ssaop.OpARM64VUSHLL8H:
   375  		p = simdV11ImmLong(s, v, arm64.ARNG_8H)
   376  
   377  	case ssaop.OpARM64VSMULL16B,
   378  		ssaop.OpARM64VUMULL16B:
   379  		p = simdV21Long(s, v, arm64.ARNG_16B)
   380  
   381  	case ssaop.OpARM64VPMULL2D:
   382  		p = simdV21Long(s, v, arm64.ARNG_2D)
   383  
   384  	case ssaop.OpARM64VSMULL4S,
   385  		ssaop.OpARM64VUMULL4S:
   386  		p = simdV21Long(s, v, arm64.ARNG_4S)
   387  
   388  	case ssaop.OpARM64VSMULL8H,
   389  		ssaop.OpARM64VUMULL8H:
   390  		p = simdV21Long(s, v, arm64.ARNG_8H)
   391  
   392  	case ssaop.OpARM64VSXTL2_16B,
   393  		ssaop.OpARM64VUXTL2_16B:
   394  		p = simdV11Long2(s, v, arm64.ARNG_16B)
   395  
   396  	case ssaop.OpARM64VFCVTL2_4S,
   397  		ssaop.OpARM64VSXTL2_4S,
   398  		ssaop.OpARM64VUXTL2_4S:
   399  		p = simdV11Long2(s, v, arm64.ARNG_4S)
   400  
   401  	case ssaop.OpARM64VSXTL2_8H,
   402  		ssaop.OpARM64VUXTL2_8H:
   403  		p = simdV11Long2(s, v, arm64.ARNG_8H)
   404  
   405  	case ssaop.OpARM64VFCVTN2_2D,
   406  		ssaop.OpARM64VSQXTN2_2D,
   407  		ssaop.OpARM64VSQXTUN2_2D,
   408  		ssaop.OpARM64VUQXTN2_2D,
   409  		ssaop.OpARM64VXTN2_2D:
   410  		p = simdV21Narrow2(s, v, arm64.ARNG_2D)
   411  
   412  	case ssaop.OpARM64VSQXTN2_4S,
   413  		ssaop.OpARM64VSQXTUN2_4S,
   414  		ssaop.OpARM64VUQXTN2_4S,
   415  		ssaop.OpARM64VXTN2_4S:
   416  		p = simdV21Narrow2(s, v, arm64.ARNG_4S)
   417  
   418  	case ssaop.OpARM64VSQXTN2_8H,
   419  		ssaop.OpARM64VSQXTUN2_8H,
   420  		ssaop.OpARM64VUQXTN2_8H,
   421  		ssaop.OpARM64VXTN2_8H:
   422  		p = simdV21Narrow2(s, v, arm64.ARNG_8H)
   423  
   424  	case ssaop.OpARM64VSHRN2_2D:
   425  		p = simdV21ImmNarrow2(s, v, arm64.ARNG_2D)
   426  
   427  	case ssaop.OpARM64VSHRN2_4S:
   428  		p = simdV21ImmNarrow2(s, v, arm64.ARNG_4S)
   429  
   430  	case ssaop.OpARM64VSHRN2_8H:
   431  		p = simdV21ImmNarrow2(s, v, arm64.ARNG_8H)
   432  
   433  	case ssaop.OpARM64VSSHLL2_16B,
   434  		ssaop.OpARM64VUSHLL2_16B:
   435  		p = simdV11ImmLong2(s, v, arm64.ARNG_16B)
   436  
   437  	case ssaop.OpARM64VSSHLL2_4S,
   438  		ssaop.OpARM64VUSHLL2_4S:
   439  		p = simdV11ImmLong2(s, v, arm64.ARNG_4S)
   440  
   441  	case ssaop.OpARM64VSSHLL2_8H,
   442  		ssaop.OpARM64VUSHLL2_8H:
   443  		p = simdV11ImmLong2(s, v, arm64.ARNG_8H)
   444  
   445  	case ssaop.OpARM64VSMULL2_16B,
   446  		ssaop.OpARM64VUMULL2_16B:
   447  		p = simdV21Long2(s, v, arm64.ARNG_16B)
   448  
   449  	case ssaop.OpARM64VPMULL2_2D:
   450  		p = simdV21Long2(s, v, arm64.ARNG_2D)
   451  
   452  	case ssaop.OpARM64VSMULL2_4S,
   453  		ssaop.OpARM64VUMULL2_4S:
   454  		p = simdV21Long2(s, v, arm64.ARNG_4S)
   455  
   456  	case ssaop.OpARM64VSMULL2_8H,
   457  		ssaop.OpARM64VUMULL2_8H:
   458  		p = simdV21Long2(s, v, arm64.ARNG_8H)
   459  
   460  	case ssaop.OpARM64VTBL16B:
   461  		p = simdV21List(s, v, arm64.ARNG_16B)
   462  
   463  	case ssaop.OpARM64VTBX16B:
   464  		p = simdV31ResultInArg0List(s, v, arm64.ARNG_16B)
   465  
   466  	default:
   467  		// Unknown reg shape
   468  		return false
   469  	}
   470  
   471  	// Ensure p is marked as used (may not be used in all generated code paths)
   472  	_ = p
   473  	return true
   474  }
   475  

View as plain text