| // Code generated by 'simdgen -o godefs -goroot $GOROOT -arch sve -arm64Path $ARM64_ISA_PATH go_sve.yaml types.yaml categories.yaml'; DO NOT EDIT. |
| |
| package arm64 |
| |
| import ( |
| "cmd/compile/internal/ssa" |
| "cmd/compile/internal/ssa/ssaop" |
| "cmd/compile/internal/ssagen" |
| "cmd/internal/obj" |
| "cmd/internal/obj/arm64" |
| ) |
| |
| func ssaGenSIMDSVEValue(s *ssagen.State, v *ssa.Value) bool { |
| var p *obj.Prog |
| switch v.Op { |
| case ssaop.OpARM64ZABSB, |
| ssaop.OpARM64ZNEGB: |
| p = simdZkv(s, v, arm64.ARNG_B) |
| |
| case ssaop.OpARM64ZFABSD, |
| ssaop.OpARM64ZABSD, |
| ssaop.OpARM64ZFRINTPD, |
| ssaop.OpARM64ZFRINTMD, |
| ssaop.OpARM64ZFNEGD, |
| ssaop.OpARM64ZNEGD, |
| ssaop.OpARM64ZFRINTND, |
| ssaop.OpARM64ZFSQRTD, |
| ssaop.OpARM64ZFRINTZD: |
| p = simdZkv(s, v, arm64.ARNG_D) |
| |
| case ssaop.OpARM64ZABSH, |
| ssaop.OpARM64ZNEGH: |
| p = simdZkv(s, v, arm64.ARNG_H) |
| |
| case ssaop.OpARM64ZFABSS, |
| ssaop.OpARM64ZABSS, |
| ssaop.OpARM64ZFRINTPS, |
| ssaop.OpARM64ZFRINTMS, |
| ssaop.OpARM64ZFNEGS, |
| ssaop.OpARM64ZNEGS, |
| ssaop.OpARM64ZFRINTNS, |
| ssaop.OpARM64ZFSQRTS, |
| ssaop.OpARM64ZFRINTZS: |
| p = simdZkv(s, v, arm64.ARNG_S) |
| |
| case ssaop.OpARM64ZADDB, |
| ssaop.OpARM64ZSQADDB, |
| ssaop.OpARM64ZUQADDB, |
| ssaop.OpARM64ZMULB, |
| ssaop.OpARM64ZSMULHB, |
| ssaop.OpARM64ZUMULHB, |
| ssaop.OpARM64ZSUBB, |
| ssaop.OpARM64ZSQSUBB, |
| ssaop.OpARM64ZUQSUBB: |
| p = simdZ21(s, v, arm64.ARNG_B) |
| |
| case ssaop.OpARM64ZFADDD, |
| ssaop.OpARM64ZADDD, |
| ssaop.OpARM64ZSQADDD, |
| ssaop.OpARM64ZUQADDD, |
| ssaop.OpARM64ZANDD, |
| ssaop.OpARM64ZBICD, |
| ssaop.OpARM64ZFMULD, |
| ssaop.OpARM64ZMULD, |
| ssaop.OpARM64ZSMULHD, |
| ssaop.OpARM64ZUMULHD, |
| ssaop.OpARM64ZORRD, |
| ssaop.OpARM64ZFSUBD, |
| ssaop.OpARM64ZSUBD, |
| ssaop.OpARM64ZSQSUBD, |
| ssaop.OpARM64ZUQSUBD, |
| ssaop.OpARM64ZEORD: |
| p = simdZ21(s, v, arm64.ARNG_D) |
| |
| case ssaop.OpARM64ZADDH, |
| ssaop.OpARM64ZSQADDH, |
| ssaop.OpARM64ZUQADDH, |
| ssaop.OpARM64ZMULH, |
| ssaop.OpARM64ZSMULHH, |
| ssaop.OpARM64ZUMULHH, |
| ssaop.OpARM64ZSUBH, |
| ssaop.OpARM64ZSQSUBH, |
| ssaop.OpARM64ZUQSUBH: |
| p = simdZ21(s, v, arm64.ARNG_H) |
| |
| case ssaop.OpARM64ZFADDS, |
| ssaop.OpARM64ZADDS, |
| ssaop.OpARM64ZSQADDS, |
| ssaop.OpARM64ZUQADDS, |
| ssaop.OpARM64ZFMULS, |
| ssaop.OpARM64ZMULS, |
| ssaop.OpARM64ZSMULHS, |
| ssaop.OpARM64ZUMULHS, |
| ssaop.OpARM64ZFSUBS, |
| ssaop.OpARM64ZSUBS, |
| ssaop.OpARM64ZSQSUBS, |
| ssaop.OpARM64ZUQSUBS: |
| p = simdZ21(s, v, arm64.ARNG_S) |
| |
| case ssaop.OpARM64ZCMPEQB, |
| ssaop.OpARM64ZCMPGTB, |
| ssaop.OpARM64ZCMPHIB, |
| ssaop.OpARM64ZCMPGEB, |
| ssaop.OpARM64ZCMPHSB, |
| ssaop.OpARM64ZCMPNEB: |
| p = simdZ2kk(s, v, arm64.ARNG_B) |
| |
| case ssaop.OpARM64ZFCMEQD, |
| ssaop.OpARM64ZCMPEQD, |
| ssaop.OpARM64ZFCMGTD, |
| ssaop.OpARM64ZCMPGTD, |
| ssaop.OpARM64ZCMPHID, |
| ssaop.OpARM64ZFCMGED, |
| ssaop.OpARM64ZCMPGED, |
| ssaop.OpARM64ZCMPHSD, |
| ssaop.OpARM64ZFCMNED, |
| ssaop.OpARM64ZCMPNED: |
| p = simdZ2kk(s, v, arm64.ARNG_D) |
| |
| case ssaop.OpARM64ZCMPEQH, |
| ssaop.OpARM64ZCMPGTH, |
| ssaop.OpARM64ZCMPHIH, |
| ssaop.OpARM64ZCMPGEH, |
| ssaop.OpARM64ZCMPHSH, |
| ssaop.OpARM64ZCMPNEH: |
| p = simdZ2kk(s, v, arm64.ARNG_H) |
| |
| case ssaop.OpARM64ZFCMEQS, |
| ssaop.OpARM64ZCMPEQS, |
| ssaop.OpARM64ZFCMGTS, |
| ssaop.OpARM64ZCMPGTS, |
| ssaop.OpARM64ZCMPHIS, |
| ssaop.OpARM64ZFCMGES, |
| ssaop.OpARM64ZCMPGES, |
| ssaop.OpARM64ZCMPHSS, |
| ssaop.OpARM64ZFCMNES, |
| ssaop.OpARM64ZCMPNES: |
| p = simdZ2kk(s, v, arm64.ARNG_S) |
| |
| case ssaop.OpARM64ZADDMergingB, |
| ssaop.OpARM64ZSQADDMergingB, |
| ssaop.OpARM64ZUQADDMergingB, |
| ssaop.OpARM64ZANDMergingB, |
| ssaop.OpARM64ZBICMergingB, |
| ssaop.OpARM64ZMULMergingB, |
| ssaop.OpARM64ZSMULHMergingB, |
| ssaop.OpARM64ZUMULHMergingB, |
| ssaop.OpARM64ZORRMergingB, |
| ssaop.OpARM64ZSUBMergingB, |
| ssaop.OpARM64ZSQSUBMergingB, |
| ssaop.OpARM64ZUQSUBMergingB, |
| ssaop.OpARM64ZEORMergingB: |
| p = simdZ2kvPred(s, v, arm64.ARNG_B) |
| |
| case ssaop.OpARM64ZFADDMergingD, |
| ssaop.OpARM64ZADDMergingD, |
| ssaop.OpARM64ZSQADDMergingD, |
| ssaop.OpARM64ZUQADDMergingD, |
| ssaop.OpARM64ZANDMergingD, |
| ssaop.OpARM64ZBICMergingD, |
| ssaop.OpARM64ZFMULMergingD, |
| ssaop.OpARM64ZMULMergingD, |
| ssaop.OpARM64ZSMULHMergingD, |
| ssaop.OpARM64ZUMULHMergingD, |
| ssaop.OpARM64ZORRMergingD, |
| ssaop.OpARM64ZFSUBMergingD, |
| ssaop.OpARM64ZSUBMergingD, |
| ssaop.OpARM64ZSQSUBMergingD, |
| ssaop.OpARM64ZUQSUBMergingD, |
| ssaop.OpARM64ZEORMergingD: |
| p = simdZ2kvPred(s, v, arm64.ARNG_D) |
| |
| case ssaop.OpARM64ZADDMergingH, |
| ssaop.OpARM64ZSQADDMergingH, |
| ssaop.OpARM64ZUQADDMergingH, |
| ssaop.OpARM64ZANDMergingH, |
| ssaop.OpARM64ZBICMergingH, |
| ssaop.OpARM64ZMULMergingH, |
| ssaop.OpARM64ZSMULHMergingH, |
| ssaop.OpARM64ZUMULHMergingH, |
| ssaop.OpARM64ZORRMergingH, |
| ssaop.OpARM64ZSUBMergingH, |
| ssaop.OpARM64ZSQSUBMergingH, |
| ssaop.OpARM64ZUQSUBMergingH, |
| ssaop.OpARM64ZEORMergingH: |
| p = simdZ2kvPred(s, v, arm64.ARNG_H) |
| |
| case ssaop.OpARM64ZFADDMergingS, |
| ssaop.OpARM64ZADDMergingS, |
| ssaop.OpARM64ZSQADDMergingS, |
| ssaop.OpARM64ZUQADDMergingS, |
| ssaop.OpARM64ZANDMergingS, |
| ssaop.OpARM64ZBICMergingS, |
| ssaop.OpARM64ZFMULMergingS, |
| ssaop.OpARM64ZMULMergingS, |
| ssaop.OpARM64ZSMULHMergingS, |
| ssaop.OpARM64ZUMULHMergingS, |
| ssaop.OpARM64ZORRMergingS, |
| ssaop.OpARM64ZFSUBMergingS, |
| ssaop.OpARM64ZSUBMergingS, |
| ssaop.OpARM64ZSQSUBMergingS, |
| ssaop.OpARM64ZUQSUBMergingS, |
| ssaop.OpARM64ZEORMergingS: |
| p = simdZ2kvPred(s, v, arm64.ARNG_S) |
| |
| case ssaop.OpARM64ZABSMergingB, |
| ssaop.OpARM64ZNEGMergingB: |
| p = simdZ2kvPredResultInArg0(s, v, arm64.ARNG_B) |
| |
| case ssaop.OpARM64ZFABSMergingD, |
| ssaop.OpARM64ZABSMergingD, |
| ssaop.OpARM64ZFNEGMergingD, |
| ssaop.OpARM64ZNEGMergingD, |
| ssaop.OpARM64ZFSQRTMergingD: |
| p = simdZ2kvPredResultInArg0(s, v, arm64.ARNG_D) |
| |
| case ssaop.OpARM64ZABSMergingH, |
| ssaop.OpARM64ZNEGMergingH: |
| p = simdZ2kvPredResultInArg0(s, v, arm64.ARNG_H) |
| |
| case ssaop.OpARM64ZFABSMergingS, |
| ssaop.OpARM64ZABSMergingS, |
| ssaop.OpARM64ZFNEGMergingS, |
| ssaop.OpARM64ZNEGMergingS, |
| ssaop.OpARM64ZFSQRTMergingS: |
| p = simdZ2kvPredResultInArg0(s, v, arm64.ARNG_S) |
| |
| case ssaop.OpARM64ZADDMergingPrefixedB, |
| ssaop.OpARM64ZSQADDMergingPrefixedB, |
| ssaop.OpARM64ZUQADDMergingPrefixedB, |
| ssaop.OpARM64ZANDMergingPrefixedB, |
| ssaop.OpARM64ZMULMergingPrefixedB, |
| ssaop.OpARM64ZSMULHMergingPrefixedB, |
| ssaop.OpARM64ZUMULHMergingPrefixedB, |
| ssaop.OpARM64ZORRMergingPrefixedB, |
| ssaop.OpARM64ZEORMergingPrefixedB: |
| p = simdZ3kvPredResultInArg0(s, v, arm64.ARNG_B) |
| |
| case ssaop.OpARM64ZFADDMergingPrefixedD, |
| ssaop.OpARM64ZADDMergingPrefixedD, |
| ssaop.OpARM64ZSQADDMergingPrefixedD, |
| ssaop.OpARM64ZUQADDMergingPrefixedD, |
| ssaop.OpARM64ZANDMergingPrefixedD, |
| ssaop.OpARM64ZFMULMergingPrefixedD, |
| ssaop.OpARM64ZMULMergingPrefixedD, |
| ssaop.OpARM64ZSMULHMergingPrefixedD, |
| ssaop.OpARM64ZUMULHMergingPrefixedD, |
| ssaop.OpARM64ZORRMergingPrefixedD, |
| ssaop.OpARM64ZEORMergingPrefixedD: |
| p = simdZ3kvPredResultInArg0(s, v, arm64.ARNG_D) |
| |
| case ssaop.OpARM64ZADDMergingPrefixedH, |
| ssaop.OpARM64ZSQADDMergingPrefixedH, |
| ssaop.OpARM64ZUQADDMergingPrefixedH, |
| ssaop.OpARM64ZANDMergingPrefixedH, |
| ssaop.OpARM64ZMULMergingPrefixedH, |
| ssaop.OpARM64ZSMULHMergingPrefixedH, |
| ssaop.OpARM64ZUMULHMergingPrefixedH, |
| ssaop.OpARM64ZORRMergingPrefixedH, |
| ssaop.OpARM64ZEORMergingPrefixedH: |
| p = simdZ3kvPredResultInArg0(s, v, arm64.ARNG_H) |
| |
| case ssaop.OpARM64ZFADDMergingPrefixedS, |
| ssaop.OpARM64ZADDMergingPrefixedS, |
| ssaop.OpARM64ZSQADDMergingPrefixedS, |
| ssaop.OpARM64ZUQADDMergingPrefixedS, |
| ssaop.OpARM64ZANDMergingPrefixedS, |
| ssaop.OpARM64ZFMULMergingPrefixedS, |
| ssaop.OpARM64ZMULMergingPrefixedS, |
| ssaop.OpARM64ZSMULHMergingPrefixedS, |
| ssaop.OpARM64ZUMULHMergingPrefixedS, |
| ssaop.OpARM64ZORRMergingPrefixedS, |
| ssaop.OpARM64ZEORMergingPrefixedS: |
| p = simdZ3kvPredResultInArg0(s, v, arm64.ARNG_S) |
| |
| default: |
| // Unknown reg shape |
| return false |
| } |
| |
| // Ensure p is marked as used (may not be used in all generated code paths) |
| _ = p |
| return true |
| } |