| |
| |
|
|
| package ppc64 |
|
|
| import ( |
| "cmd/internal/obj" |
| ) |
|
|
| const ( |
| AXXSETACCZ = ALASTAOUT + iota |
| AXXMTACC |
| AXXMFACC |
| AXXGENPCVWM |
| AXXGENPCVHM |
| AXXGENPCVDM |
| AXXGENPCVBM |
| AXVTLSBB |
| AXVI8GER4SPP |
| AXVI8GER4PP |
| AXVI8GER4 |
| AXVI4GER8PP |
| AXVI4GER8 |
| AXVI16GER2SPP |
| AXVI16GER2S |
| AXVI16GER2PP |
| AXVI16GER2 |
| AXVF64GERPP |
| AXVF64GERPN |
| AXVF64GERNP |
| AXVF64GERNN |
| AXVF64GER |
| AXVF32GERPP |
| AXVF32GERPN |
| AXVF32GERNP |
| AXVF32GERNN |
| AXVF32GER |
| AXVF16GER2PP |
| AXVF16GER2PN |
| AXVF16GER2NP |
| AXVF16GER2NN |
| AXVF16GER2 |
| AXVCVSPBF16 |
| AXVCVBF16SPN |
| AXVBF16GER2PP |
| AXVBF16GER2PN |
| AXVBF16GER2NP |
| AXVBF16GER2NN |
| AXVBF16GER2 |
| AXSMINCQP |
| AXSMAXCQP |
| AXSCVUQQP |
| AXSCVSQQP |
| AXSCVQPUQZ |
| AXSCVQPSQZ |
| AXSCMPGTQP |
| AXSCMPGEQP |
| AXSCMPEQQP |
| AVSTRIHRCC |
| AVSTRIHR |
| AVSTRIHLCC |
| AVSTRIHL |
| AVSTRIBRCC |
| AVSTRIBR |
| AVSTRIBLCC |
| AVSTRIBL |
| AVSRQ |
| AVSRDBI |
| AVSRAQ |
| AVSLQ |
| AVSLDBI |
| AVRLQNM |
| AVRLQMI |
| AVRLQ |
| AVPEXTD |
| AVPDEPD |
| AVMULOUD |
| AVMULOSD |
| AVMULLD |
| AVMULHUW |
| AVMULHUD |
| AVMULHSW |
| AVMULHSD |
| AVMULEUD |
| AVMULESD |
| AVMSUMCUD |
| AVMODUW |
| AVMODUQ |
| AVMODUD |
| AVMODSW |
| AVMODSQ |
| AVMODSD |
| AVINSWVRX |
| AVINSWVLX |
| AVINSWRX |
| AVINSWLX |
| AVINSW |
| AVINSHVRX |
| AVINSHVLX |
| AVINSHRX |
| AVINSHLX |
| AVINSDRX |
| AVINSDLX |
| AVINSD |
| AVINSBVRX |
| AVINSBVLX |
| AVINSBRX |
| AVINSBLX |
| AVGNB |
| AVEXTSD2Q |
| AVEXTRACTWM |
| AVEXTRACTQM |
| AVEXTRACTHM |
| AVEXTRACTDM |
| AVEXTRACTBM |
| AVEXTDUWVRX |
| AVEXTDUWVLX |
| AVEXTDUHVRX |
| AVEXTDUHVLX |
| AVEXTDUBVRX |
| AVEXTDUBVLX |
| AVEXTDDVRX |
| AVEXTDDVLX |
| AVEXPANDWM |
| AVEXPANDQM |
| AVEXPANDHM |
| AVEXPANDDM |
| AVEXPANDBM |
| AVDIVUW |
| AVDIVUQ |
| AVDIVUD |
| AVDIVSW |
| AVDIVSQ |
| AVDIVSD |
| AVDIVEUW |
| AVDIVEUQ |
| AVDIVEUD |
| AVDIVESW |
| AVDIVESQ |
| AVDIVESD |
| AVCTZDM |
| AVCNTMBW |
| AVCNTMBH |
| AVCNTMBD |
| AVCNTMBB |
| AVCMPUQ |
| AVCMPSQ |
| AVCMPGTUQCC |
| AVCMPGTUQ |
| AVCMPGTSQCC |
| AVCMPGTSQ |
| AVCMPEQUQCC |
| AVCMPEQUQ |
| AVCLZDM |
| AVCLRRB |
| AVCLRLB |
| AVCFUGED |
| ASTXVRWX |
| ASTXVRHX |
| ASTXVRDX |
| ASTXVRBX |
| ASTXVPX |
| ASTXVP |
| ASETNBCR |
| ASETNBC |
| ASETBCR |
| ASETBC |
| APEXTD |
| APDEPD |
| AMTVSRWM |
| AMTVSRQM |
| AMTVSRHM |
| AMTVSRDM |
| AMTVSRBMI |
| AMTVSRBM |
| ALXVRWX |
| ALXVRHX |
| ALXVRDX |
| ALXVRBX |
| ALXVPX |
| ALXVP |
| ALXVKQ |
| ADCTFIXQQ |
| ADCFFIXQQ |
| ACNTTZDM |
| ACNTLZDM |
| ACFUGED |
| ABRW |
| ABRH |
| ABRD |
| AHASHSTP |
| AHASHST |
| AHASHCHKP |
| AHASHCHK |
| AXXSPLTIW |
| AXXSPLTIDP |
| AXXSPLTI32DX |
| AXXPERMX |
| AXXEVAL |
| AXXBLENDVW |
| AXXBLENDVH |
| AXXBLENDVD |
| AXXBLENDVB |
| APSTXVP |
| APSTXV |
| APSTXSSP |
| APSTXSD |
| APSTW |
| APSTQ |
| APSTH |
| APSTFS |
| APSTFD |
| APSTD |
| APSTB |
| APNOP |
| APMXVI8GER4SPP |
| APMXVI8GER4PP |
| APMXVI8GER4 |
| APMXVI4GER8PP |
| APMXVI4GER8 |
| APMXVI16GER2SPP |
| APMXVI16GER2S |
| APMXVI16GER2PP |
| APMXVI16GER2 |
| APMXVF64GERPP |
| APMXVF64GERPN |
| APMXVF64GERNP |
| APMXVF64GERNN |
| APMXVF64GER |
| APMXVF32GERPP |
| APMXVF32GERPN |
| APMXVF32GERNP |
| APMXVF32GERNN |
| APMXVF32GER |
| APMXVF16GER2PP |
| APMXVF16GER2PN |
| APMXVF16GER2NP |
| APMXVF16GER2NN |
| APMXVF16GER2 |
| APMXVBF16GER2PP |
| APMXVBF16GER2PN |
| APMXVBF16GER2NP |
| APMXVBF16GER2NN |
| APMXVBF16GER2 |
| APLXVP |
| APLXV |
| APLXSSP |
| APLXSD |
| APLWZ |
| APLWA |
| APLQ |
| APLHZ |
| APLHA |
| APLFS |
| APLFD |
| APLD |
| APLBZ |
| APADDI |
| ALASTGEN |
| AFIRSTGEN = AXXSETACCZ |
| ) |
|
|
| var GenAnames = []string{ |
| "XXSETACCZ", |
| "XXMTACC", |
| "XXMFACC", |
| "XXGENPCVWM", |
| "XXGENPCVHM", |
| "XXGENPCVDM", |
| "XXGENPCVBM", |
| "XVTLSBB", |
| "XVI8GER4SPP", |
| "XVI8GER4PP", |
| "XVI8GER4", |
| "XVI4GER8PP", |
| "XVI4GER8", |
| "XVI16GER2SPP", |
| "XVI16GER2S", |
| "XVI16GER2PP", |
| "XVI16GER2", |
| "XVF64GERPP", |
| "XVF64GERPN", |
| "XVF64GERNP", |
| "XVF64GERNN", |
| "XVF64GER", |
| "XVF32GERPP", |
| "XVF32GERPN", |
| "XVF32GERNP", |
| "XVF32GERNN", |
| "XVF32GER", |
| "XVF16GER2PP", |
| "XVF16GER2PN", |
| "XVF16GER2NP", |
| "XVF16GER2NN", |
| "XVF16GER2", |
| "XVCVSPBF16", |
| "XVCVBF16SPN", |
| "XVBF16GER2PP", |
| "XVBF16GER2PN", |
| "XVBF16GER2NP", |
| "XVBF16GER2NN", |
| "XVBF16GER2", |
| "XSMINCQP", |
| "XSMAXCQP", |
| "XSCVUQQP", |
| "XSCVSQQP", |
| "XSCVQPUQZ", |
| "XSCVQPSQZ", |
| "XSCMPGTQP", |
| "XSCMPGEQP", |
| "XSCMPEQQP", |
| "VSTRIHRCC", |
| "VSTRIHR", |
| "VSTRIHLCC", |
| "VSTRIHL", |
| "VSTRIBRCC", |
| "VSTRIBR", |
| "VSTRIBLCC", |
| "VSTRIBL", |
| "VSRQ", |
| "VSRDBI", |
| "VSRAQ", |
| "VSLQ", |
| "VSLDBI", |
| "VRLQNM", |
| "VRLQMI", |
| "VRLQ", |
| "VPEXTD", |
| "VPDEPD", |
| "VMULOUD", |
| "VMULOSD", |
| "VMULLD", |
| "VMULHUW", |
| "VMULHUD", |
| "VMULHSW", |
| "VMULHSD", |
| "VMULEUD", |
| "VMULESD", |
| "VMSUMCUD", |
| "VMODUW", |
| "VMODUQ", |
| "VMODUD", |
| "VMODSW", |
| "VMODSQ", |
| "VMODSD", |
| "VINSWVRX", |
| "VINSWVLX", |
| "VINSWRX", |
| "VINSWLX", |
| "VINSW", |
| "VINSHVRX", |
| "VINSHVLX", |
| "VINSHRX", |
| "VINSHLX", |
| "VINSDRX", |
| "VINSDLX", |
| "VINSD", |
| "VINSBVRX", |
| "VINSBVLX", |
| "VINSBRX", |
| "VINSBLX", |
| "VGNB", |
| "VEXTSD2Q", |
| "VEXTRACTWM", |
| "VEXTRACTQM", |
| "VEXTRACTHM", |
| "VEXTRACTDM", |
| "VEXTRACTBM", |
| "VEXTDUWVRX", |
| "VEXTDUWVLX", |
| "VEXTDUHVRX", |
| "VEXTDUHVLX", |
| "VEXTDUBVRX", |
| "VEXTDUBVLX", |
| "VEXTDDVRX", |
| "VEXTDDVLX", |
| "VEXPANDWM", |
| "VEXPANDQM", |
| "VEXPANDHM", |
| "VEXPANDDM", |
| "VEXPANDBM", |
| "VDIVUW", |
| "VDIVUQ", |
| "VDIVUD", |
| "VDIVSW", |
| "VDIVSQ", |
| "VDIVSD", |
| "VDIVEUW", |
| "VDIVEUQ", |
| "VDIVEUD", |
| "VDIVESW", |
| "VDIVESQ", |
| "VDIVESD", |
| "VCTZDM", |
| "VCNTMBW", |
| "VCNTMBH", |
| "VCNTMBD", |
| "VCNTMBB", |
| "VCMPUQ", |
| "VCMPSQ", |
| "VCMPGTUQCC", |
| "VCMPGTUQ", |
| "VCMPGTSQCC", |
| "VCMPGTSQ", |
| "VCMPEQUQCC", |
| "VCMPEQUQ", |
| "VCLZDM", |
| "VCLRRB", |
| "VCLRLB", |
| "VCFUGED", |
| "STXVRWX", |
| "STXVRHX", |
| "STXVRDX", |
| "STXVRBX", |
| "STXVPX", |
| "STXVP", |
| "SETNBCR", |
| "SETNBC", |
| "SETBCR", |
| "SETBC", |
| "PEXTD", |
| "PDEPD", |
| "MTVSRWM", |
| "MTVSRQM", |
| "MTVSRHM", |
| "MTVSRDM", |
| "MTVSRBMI", |
| "MTVSRBM", |
| "LXVRWX", |
| "LXVRHX", |
| "LXVRDX", |
| "LXVRBX", |
| "LXVPX", |
| "LXVP", |
| "LXVKQ", |
| "DCTFIXQQ", |
| "DCFFIXQQ", |
| "CNTTZDM", |
| "CNTLZDM", |
| "CFUGED", |
| "BRW", |
| "BRH", |
| "BRD", |
| "HASHSTP", |
| "HASHST", |
| "HASHCHKP", |
| "HASHCHK", |
| "XXSPLTIW", |
| "XXSPLTIDP", |
| "XXSPLTI32DX", |
| "XXPERMX", |
| "XXEVAL", |
| "XXBLENDVW", |
| "XXBLENDVH", |
| "XXBLENDVD", |
| "XXBLENDVB", |
| "PSTXVP", |
| "PSTXV", |
| "PSTXSSP", |
| "PSTXSD", |
| "PSTW", |
| "PSTQ", |
| "PSTH", |
| "PSTFS", |
| "PSTFD", |
| "PSTD", |
| "PSTB", |
| "PNOP", |
| "PMXVI8GER4SPP", |
| "PMXVI8GER4PP", |
| "PMXVI8GER4", |
| "PMXVI4GER8PP", |
| "PMXVI4GER8", |
| "PMXVI16GER2SPP", |
| "PMXVI16GER2S", |
| "PMXVI16GER2PP", |
| "PMXVI16GER2", |
| "PMXVF64GERPP", |
| "PMXVF64GERPN", |
| "PMXVF64GERNP", |
| "PMXVF64GERNN", |
| "PMXVF64GER", |
| "PMXVF32GERPP", |
| "PMXVF32GERPN", |
| "PMXVF32GERNP", |
| "PMXVF32GERNN", |
| "PMXVF32GER", |
| "PMXVF16GER2PP", |
| "PMXVF16GER2PN", |
| "PMXVF16GER2NP", |
| "PMXVF16GER2NN", |
| "PMXVF16GER2", |
| "PMXVBF16GER2PP", |
| "PMXVBF16GER2PN", |
| "PMXVBF16GER2NP", |
| "PMXVBF16GER2NN", |
| "PMXVBF16GER2", |
| "PLXVP", |
| "PLXV", |
| "PLXSSP", |
| "PLXSD", |
| "PLWZ", |
| "PLWA", |
| "PLQ", |
| "PLHZ", |
| "PLHA", |
| "PLFS", |
| "PLFD", |
| "PLD", |
| "PLBZ", |
| "PADDI", |
| } |
|
|
| var GenOpcodes = [...]uint32{ |
| 0x7c030162, |
| 0x7c010162, |
| 0x7c000162, |
| 0xf0000768, |
| 0xf000072a, |
| 0xf000076a, |
| 0xf0000728, |
| 0xf002076c, |
| 0xec000318, |
| 0xec000010, |
| 0xec000018, |
| 0xec000110, |
| 0xec000118, |
| 0xec000150, |
| 0xec000158, |
| 0xec000358, |
| 0xec000258, |
| 0xec0001d0, |
| 0xec0005d0, |
| 0xec0003d0, |
| 0xec0007d0, |
| 0xec0001d8, |
| 0xec0000d0, |
| 0xec0004d0, |
| 0xec0002d0, |
| 0xec0006d0, |
| 0xec0000d8, |
| 0xec000090, |
| 0xec000490, |
| 0xec000290, |
| 0xec000690, |
| 0xec000098, |
| 0xf011076c, |
| 0xf010076c, |
| 0xec000190, |
| 0xec000590, |
| 0xec000390, |
| 0xec000790, |
| 0xec000198, |
| 0xfc0005c8, |
| 0xfc000548, |
| 0xfc030688, |
| 0xfc0b0688, |
| 0xfc000688, |
| 0xfc080688, |
| 0xfc0001c8, |
| 0xfc000188, |
| 0xfc000088, |
| 0x1003040d, |
| 0x1003000d, |
| 0x1002040d, |
| 0x1002000d, |
| 0x1001040d, |
| 0x1001000d, |
| 0x1000040d, |
| 0x1000000d, |
| 0x10000205, |
| 0x10000216, |
| 0x10000305, |
| 0x10000105, |
| 0x10000016, |
| 0x10000145, |
| 0x10000045, |
| 0x10000005, |
| 0x1000058d, |
| 0x100005cd, |
| 0x100000c8, |
| 0x100001c8, |
| 0x100001c9, |
| 0x10000289, |
| 0x100002c9, |
| 0x10000389, |
| 0x100003c9, |
| 0x100002c8, |
| 0x100003c8, |
| 0x10000017, |
| 0x1000068b, |
| 0x1000060b, |
| 0x100006cb, |
| 0x1000078b, |
| 0x1000070b, |
| 0x100007cb, |
| 0x1000018f, |
| 0x1000008f, |
| 0x1000038f, |
| 0x1000028f, |
| 0x100000cf, |
| 0x1000014f, |
| 0x1000004f, |
| 0x1000034f, |
| 0x1000024f, |
| 0x100003cf, |
| 0x100002cf, |
| 0x100001cf, |
| 0x1000010f, |
| 0x1000000f, |
| 0x1000030f, |
| 0x1000020f, |
| 0x100004cc, |
| 0x101b0602, |
| 0x100a0642, |
| 0x100c0642, |
| 0x10090642, |
| 0x100b0642, |
| 0x10080642, |
| 0x1000001d, |
| 0x1000001c, |
| 0x1000001b, |
| 0x1000001a, |
| 0x10000019, |
| 0x10000018, |
| 0x1000001f, |
| 0x1000001e, |
| 0x10020642, |
| 0x10040642, |
| 0x10010642, |
| 0x10030642, |
| 0x10000642, |
| 0x1000008b, |
| 0x1000000b, |
| 0x100000cb, |
| 0x1000018b, |
| 0x1000010b, |
| 0x100001cb, |
| 0x1000028b, |
| 0x1000020b, |
| 0x100002cb, |
| 0x1000038b, |
| 0x1000030b, |
| 0x100003cb, |
| 0x100007c4, |
| 0x101c0642, |
| 0x101a0642, |
| 0x101e0642, |
| 0x10180642, |
| 0x10000101, |
| 0x10000141, |
| 0x10000687, |
| 0x10000287, |
| 0x10000787, |
| 0x10000387, |
| 0x100005c7, |
| 0x100001c7, |
| 0x10000784, |
| 0x100001cd, |
| 0x1000018d, |
| 0x1000054d, |
| 0x7c00019a, |
| 0x7c00015a, |
| 0x7c0001da, |
| 0x7c00011a, |
| 0x7c00039a, |
| 0x18000001, |
| 0x7c0003c0, |
| 0x7c000380, |
| 0x7c000340, |
| 0x7c000300, |
| 0x7c000178, |
| 0x7c000138, |
| 0x10120642, |
| 0x10140642, |
| 0x10110642, |
| 0x10130642, |
| 0x10000014, |
| 0x10100642, |
| 0x7c00009a, |
| 0x7c00005a, |
| 0x7c0000da, |
| 0x7c00001a, |
| 0x7c00029a, |
| 0x18000000, |
| 0xf01f02d0, |
| 0xfc0107c4, |
| 0xfc0007c4, |
| 0x7c000476, |
| 0x7c000076, |
| 0x7c0001b8, |
| 0x7c000136, |
| 0x7c0001b6, |
| 0x7c000176, |
| 0x7c000524, |
| 0x7c0005a4, |
| 0x7c000564, |
| 0x7c0005e4, |
| 0x80060000, |
| 0x80040000, |
| 0x80000000, |
| 0x88000000, |
| 0x88000010, |
| 0x84000020, |
| 0x84000010, |
| 0x84000030, |
| 0x84000000, |
| 0xf8000000, |
| 0xd8000000, |
| 0xbc000000, |
| 0xb8000000, |
| 0x90000000, |
| 0xf0000000, |
| 0xb0000000, |
| 0xd0000000, |
| 0xd8000000, |
| 0xf4000000, |
| 0x98000000, |
| 0x00000000, |
| 0xec000318, |
| 0xec000010, |
| 0xec000018, |
| 0xec000110, |
| 0xec000118, |
| 0xec000150, |
| 0xec000158, |
| 0xec000358, |
| 0xec000258, |
| 0xec0001d0, |
| 0xec0005d0, |
| 0xec0003d0, |
| 0xec0007d0, |
| 0xec0001d8, |
| 0xec0000d0, |
| 0xec0004d0, |
| 0xec0002d0, |
| 0xec0006d0, |
| 0xec0000d8, |
| 0xec000090, |
| 0xec000490, |
| 0xec000290, |
| 0xec000690, |
| 0xec000098, |
| 0xec000190, |
| 0xec000590, |
| 0xec000390, |
| 0xec000790, |
| 0xec000198, |
| 0xe8000000, |
| 0xc8000000, |
| 0xac000000, |
| 0xa8000000, |
| 0x80000000, |
| 0xa4000000, |
| 0xe0000000, |
| 0xa0000000, |
| 0xa8000000, |
| 0xc0000000, |
| 0xc8000000, |
| 0xe4000000, |
| 0x88000000, |
| 0x38000000, |
| } |
|
|
| var GenPfxOpcodes = [...]uint32{ |
| 0x05000000, |
| 0x05000000, |
| 0x05000000, |
| 0x05000000, |
| 0x05000000, |
| 0x05000000, |
| 0x05000000, |
| 0x05000000, |
| 0x05000000, |
| 0x04000000, |
| 0x04000000, |
| 0x04000000, |
| 0x04000000, |
| 0x06000000, |
| 0x04000000, |
| 0x06000000, |
| 0x06000000, |
| 0x06000000, |
| 0x04000000, |
| 0x06000000, |
| 0x07000000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x07900000, |
| 0x04000000, |
| 0x04000000, |
| 0x04000000, |
| 0x04000000, |
| 0x06000000, |
| 0x04000000, |
| 0x04000000, |
| 0x06000000, |
| 0x06000000, |
| 0x06000000, |
| 0x06000000, |
| 0x04000000, |
| 0x06000000, |
| 0x06000000, |
| } |
|
|
| var optabGen = []Optab{ |
| {as: ABRW, a1: C_REG, a6: C_REG, asmout: type_brw, size: 4}, |
| {as: ADCFFIXQQ, a1: C_VREG, a6: C_FREGP, asmout: type_xscvuqqp, size: 4}, |
| {as: ADCTFIXQQ, a1: C_FREGP, a6: C_VREG, asmout: type_xscvuqqp, size: 4}, |
| {as: AHASHCHKP, a1: C_SOREG, a6: C_REG, asmout: type_hashchkp, size: 4}, |
| {as: AHASHSTP, a1: C_REG, a6: C_SOREG, asmout: type_hashstp, size: 4}, |
| {as: ALXVKQ, a1: C_U5CON, a6: C_VSREG, asmout: type_lxvkq, size: 4}, |
| {as: ALXVP, a1: C_SOREG, a6: C_VSREGP, asmout: type_lxvp, size: 4}, |
| {as: ALXVPX, a1: C_XOREG, a6: C_VSREGP, asmout: type_lxvpx, size: 4}, |
| {as: ALXVRWX, a1: C_XOREG, a6: C_VSREG, asmout: type_lxvrwx, size: 4}, |
| {as: AMTVSRBMI, a1: C_U16CON, a6: C_VREG, asmout: type_mtvsrbmi, size: 4}, |
| {as: AMTVSRWM, a1: C_REG, a6: C_VREG, asmout: type_xscvuqqp, size: 4}, |
| {as: APADDI, a1: C_REG, a3: C_S34CON, a4: C_U1CON, a6: C_REG, asmout: type_paddi, ispfx: true, size: 8}, |
| {as: APEXTD, a1: C_REG, a2: C_REG, a6: C_REG, asmout: type_pextd, size: 4}, |
| {as: APLFS, a1: C_LOREG, a3: C_U1CON, a6: C_FREG, asmout: type_plxssp, ispfx: true, size: 8}, |
| {as: APLQ, a1: C_LOREG, a3: C_U1CON, a6: C_REGP, asmout: type_plxssp, ispfx: true, size: 8}, |
| {as: APLWZ, a1: C_LOREG, a3: C_U1CON, a6: C_REG, asmout: type_plxssp, ispfx: true, size: 8}, |
| {as: APLXSSP, a1: C_LOREG, a3: C_U1CON, a6: C_VREG, asmout: type_plxssp, ispfx: true, size: 8}, |
| {as: APLXV, a1: C_LOREG, a3: C_U1CON, a6: C_VSREG, asmout: type_plxv, ispfx: true, size: 8}, |
| {as: APLXVP, a1: C_LOREG, a3: C_U1CON, a6: C_VSREGP, asmout: type_plxvp, ispfx: true, size: 8}, |
| {as: APMXVF32GERPP, a1: C_VSREG, a2: C_VSREG, a3: C_U4CON, a4: C_U4CON, a6: C_AREG, asmout: type_pmxvf32gerpp, ispfx: true, size: 8}, |
| {as: APMXVF64GERPP, a1: C_VSREGP, a2: C_VSREG, a3: C_U4CON, a4: C_U2CON, a6: C_AREG, asmout: type_pmxvf64gerpp, ispfx: true, size: 8}, |
| {as: APMXVI16GER2SPP, a1: C_VSREG, a2: C_VSREG, a3: C_U4CON, a4: C_U4CON, a5: C_U2CON, a6: C_AREG, asmout: type_pmxvi16ger2spp, ispfx: true, size: 8}, |
| {as: APMXVI4GER8PP, a1: C_VSREG, a2: C_VSREG, a3: C_U4CON, a4: C_U4CON, a5: C_U8CON, a6: C_AREG, asmout: type_pmxvi4ger8pp, ispfx: true, size: 8}, |
| {as: APMXVI8GER4SPP, a1: C_VSREG, a2: C_VSREG, a3: C_U4CON, a4: C_U4CON, a5: C_U4CON, a6: C_AREG, asmout: type_pmxvi8ger4spp, ispfx: true, size: 8}, |
| {as: APNOP, asmout: type_pnop, ispfx: true, size: 8}, |
| {as: APSTFS, a1: C_FREG, a3: C_U1CON, a6: C_LOREG, asmout: type_pstxssp, ispfx: true, size: 8}, |
| {as: APSTQ, a1: C_REGP, a3: C_U1CON, a6: C_LOREG, asmout: type_pstxssp, ispfx: true, size: 8}, |
| {as: APSTW, a1: C_REG, a3: C_U1CON, a6: C_LOREG, asmout: type_pstxssp, ispfx: true, size: 8}, |
| {as: APSTXSSP, a1: C_VREG, a3: C_U1CON, a6: C_LOREG, asmout: type_pstxssp, ispfx: true, size: 8}, |
| {as: APSTXV, a1: C_VSREG, a3: C_U1CON, a6: C_LOREG, asmout: type_pstxv, ispfx: true, size: 8}, |
| {as: APSTXVP, a1: C_VSREGP, a3: C_U1CON, a6: C_LOREG, asmout: type_pstxvp, ispfx: true, size: 8}, |
| {as: ASETNBCR, a1: C_CRBIT, a6: C_REG, asmout: type_setnbcr, size: 4}, |
| {as: ASTXVP, a1: C_VSREGP, a6: C_SOREG, asmout: type_stxvp, size: 4}, |
| {as: ASTXVPX, a1: C_VSREGP, a6: C_XOREG, asmout: type_stxvpx, size: 4}, |
| {as: ASTXVRWX, a1: C_VSREG, a6: C_XOREG, asmout: type_stxvrwx, size: 4}, |
| {as: AVCLRRB, a1: C_VREG, a2: C_REG, a6: C_VREG, asmout: type_xsmincqp, size: 4}, |
| {as: AVCMPUQ, a1: C_VREG, a2: C_VREG, a6: C_CREG, asmout: type_vcmpuq, size: 4}, |
| {as: AVCNTMBW, a1: C_VREG, a3: C_U1CON, a6: C_REG, asmout: type_vcntmbw, size: 4}, |
| {as: AVEXTDUWVRX, a1: C_VREG, a2: C_VREG, a3: C_REG, a6: C_VREG, asmout: type_vmsumcud, size: 4}, |
| {as: AVEXTRACTWM, a1: C_VREG, a6: C_REG, asmout: type_xscvuqqp, size: 4}, |
| {as: AVGNB, a1: C_VREG, a3: C_U3CON, a6: C_REG, asmout: type_vgnb, size: 4}, |
| {as: AVINSW, a1: C_REG, a3: C_U4CON, a6: C_VREG, asmout: type_vinsw, size: 4}, |
| {as: AVINSWRX, a1: C_REG, a2: C_REG, a6: C_VREG, asmout: type_xsmincqp, size: 4}, |
| {as: AVINSWVRX, a1: C_REG, a2: C_VREG, a6: C_VREG, asmout: type_xsmincqp, size: 4}, |
| {as: AVMSUMCUD, a1: C_VREG, a2: C_VREG, a3: C_VREG, a6: C_VREG, asmout: type_vmsumcud, size: 4}, |
| {as: AVSRDBI, a1: C_VREG, a2: C_VREG, a3: C_U3CON, a6: C_VREG, asmout: type_vsrdbi, size: 4}, |
| {as: AXSCVUQQP, a1: C_VREG, a6: C_VREG, asmout: type_xscvuqqp, size: 4}, |
| {as: AXSMINCQP, a1: C_VREG, a2: C_VREG, a6: C_VREG, asmout: type_xsmincqp, size: 4}, |
| {as: AXVCVSPBF16, a1: C_VSREG, a6: C_VSREG, asmout: type_xvcvspbf16, size: 4}, |
| {as: AXVI8GER4SPP, a1: C_VSREG, a2: C_VSREG, a6: C_AREG, asmout: type_xvi8ger4spp, size: 4}, |
| {as: AXVTLSBB, a1: C_VSREG, a6: C_CREG, asmout: type_xvtlsbb, size: 4}, |
| {as: AXXBLENDVW, a1: C_VSREG, a2: C_VSREG, a3: C_VSREG, a6: C_VSREG, asmout: type_xxblendvw, ispfx: true, size: 8}, |
| {as: AXXEVAL, a1: C_VSREG, a2: C_VSREG, a3: C_VSREG, a4: C_U8CON, a6: C_VSREG, asmout: type_xxeval, ispfx: true, size: 8}, |
| {as: AXXGENPCVWM, a1: C_VREG, a3: C_U5CON, a6: C_VSREG, asmout: type_xxgenpcvwm, size: 4}, |
| {as: AXXPERMX, a1: C_VSREG, a2: C_VSREG, a3: C_VSREG, a4: C_U3CON, a6: C_VSREG, asmout: type_xxpermx, ispfx: true, size: 8}, |
| {as: AXXSETACCZ, a6: C_AREG, asmout: type_xxsetaccz, size: 4}, |
| {as: AXXSPLTI32DX, a1: C_U1CON, a3: C_U32CON, a6: C_VSREG, asmout: type_xxsplti32dx, ispfx: true, size: 8}, |
| {as: AXXSPLTIW, a1: C_U32CON, a6: C_VSREG, asmout: type_xxspltiw, ispfx: true, size: 8}, |
| } |
|
|
| |
| func type_brw(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x1f) << 16 |
| o0 |= uint32(p.From.Reg&0x1f) << 21 |
| out[0] = o0 |
| } |
|
|
| |
| func type_hashchkp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x1f) << 11 |
| o0 |= uint32((p.From.Offset>>8)&0x1) << 0 |
| o0 |= uint32((p.From.Offset>>3)&0x1f) << 21 |
| o0 |= uint32(p.From.Reg&0x1f) << 16 |
| if p.From.Offset&0xfffffe07 != 0xfffffe00 { |
| c.ctxt.Diag("Constant(%d) must within the range of [-512,-8] in steps of 8\n%v", p.From.Offset, p) |
| } |
| out[0] = o0 |
| } |
|
|
| |
| func type_hashstp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.From.Reg&0x1f) << 11 |
| o0 |= uint32((p.To.Offset>>8)&0x1) << 0 |
| o0 |= uint32((p.To.Offset>>3)&0x1f) << 21 |
| o0 |= uint32(p.To.Reg&0x1f) << 16 |
| if p.To.Offset&0xfffffe07 != 0xfffffe00 { |
| c.ctxt.Diag("Constant(%d) must within the range of [-512,-8] in steps of 8\n%v", p.To.Offset, p) |
| } |
| out[0] = o0 |
| } |
|
|
| |
| func type_lxvkq(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32((p.To.Reg>>5)&0x1) << 0 |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32(p.From.Offset&0x1f) << 11 |
| out[0] = o0 |
| } |
|
|
| |
| func type_lxvp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32((p.To.Reg>>5)&0x1) << 21 |
| o0 |= uint32((p.To.Reg>>1)&0xf) << 22 |
| o0 |= uint32((p.From.Offset>>4)&0xfff) << 4 |
| o0 |= uint32(p.From.Reg&0x1f) << 16 |
| if p.From.Offset&0xf != 0 { |
| c.ctxt.Diag("Constant 0x%x (%d) is not a multiple of 16\n%v", p.From.Offset, p.From.Offset, p) |
| } |
| out[0] = o0 |
| } |
|
|
| |
| func type_lxvpx(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32((p.To.Reg>>5)&0x1) << 21 |
| o0 |= uint32((p.To.Reg>>1)&0xf) << 22 |
| o0 |= uint32(p.From.Index&0x1f) << 16 |
| o0 |= uint32(p.From.Reg&0x1f) << 11 |
| out[0] = o0 |
| } |
|
|
| |
| func type_lxvrwx(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32((p.To.Reg>>5)&0x1) << 0 |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32(p.From.Index&0x1f) << 16 |
| o0 |= uint32(p.From.Reg&0x1f) << 11 |
| out[0] = o0 |
| } |
|
|
| |
| func type_mtvsrbmi(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32((p.From.Offset>>6)&0x3ff) << 6 |
| o0 |= uint32((p.From.Offset>>1)&0x1f) << 16 |
| o0 |= uint32(p.From.Offset&0x1) << 0 |
| out[0] = o0 |
| } |
|
|
| |
| func type_paddi(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32(p.To.Reg&0x1f) << 21 |
| o1 |= uint32(p.From.Reg&0x1f) << 16 |
| o0 |= uint32((p.RestArgs[0].Addr.Offset>>16)&0x3ffff) << 0 |
| o1 |= uint32(p.RestArgs[0].Addr.Offset&0xffff) << 0 |
| o0 |= uint32(p.RestArgs[1].Addr.Offset&0x1) << 20 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_pextd(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x1f) << 16 |
| o0 |= uint32(p.From.Reg&0x1f) << 21 |
| o0 |= uint32(p.Reg&0x1f) << 11 |
| out[0] = o0 |
| } |
|
|
| |
| func type_plxssp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32((p.From.Offset>>16)&0x3ffff) << 0 |
| o1 |= uint32(p.From.Offset&0xffff) << 0 |
| o1 |= uint32(p.From.Reg&0x1f) << 16 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0x1) << 20 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_plxv(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32((p.To.Reg>>5)&0x1) << 26 |
| o1 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32((p.From.Offset>>16)&0x3ffff) << 0 |
| o1 |= uint32(p.From.Offset&0xffff) << 0 |
| o1 |= uint32(p.From.Reg&0x1f) << 16 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0x1) << 20 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_plxvp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32((p.To.Reg>>5)&0x1) << 21 |
| o1 |= uint32((p.To.Reg>>1)&0xf) << 22 |
| o0 |= uint32((p.From.Offset>>16)&0x3ffff) << 0 |
| o1 |= uint32(p.From.Offset&0xffff) << 0 |
| o1 |= uint32(p.From.Reg&0x1f) << 16 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0x1) << 20 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_pmxvf32gerpp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32(p.To.Reg&0x7) << 23 |
| o1 |= uint32((p.From.Reg>>5)&0x1) << 2 |
| o1 |= uint32(p.From.Reg&0x1f) << 16 |
| o1 |= uint32((p.Reg>>5)&0x1) << 1 |
| o1 |= uint32(p.Reg&0x1f) << 11 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0xf) << 4 |
| o0 |= uint32(p.RestArgs[1].Addr.Offset&0xf) << 0 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_pmxvf64gerpp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32(p.To.Reg&0x7) << 23 |
| o1 |= uint32((p.From.Reg>>5)&0x1) << 2 |
| o1 |= uint32(p.From.Reg&0x1f) << 16 |
| o1 |= uint32((p.Reg>>5)&0x1) << 1 |
| o1 |= uint32(p.Reg&0x1f) << 11 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0xf) << 4 |
| o0 |= uint32(p.RestArgs[1].Addr.Offset&0x3) << 2 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_pmxvi16ger2spp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32(p.To.Reg&0x7) << 23 |
| o1 |= uint32((p.From.Reg>>5)&0x1) << 2 |
| o1 |= uint32(p.From.Reg&0x1f) << 16 |
| o1 |= uint32((p.Reg>>5)&0x1) << 1 |
| o1 |= uint32(p.Reg&0x1f) << 11 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0xf) << 4 |
| o0 |= uint32(p.RestArgs[1].Addr.Offset&0xf) << 0 |
| o0 |= uint32(p.RestArgs[2].Addr.Offset&0x3) << 14 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_pmxvi4ger8pp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32(p.To.Reg&0x7) << 23 |
| o1 |= uint32((p.From.Reg>>5)&0x1) << 2 |
| o1 |= uint32(p.From.Reg&0x1f) << 16 |
| o1 |= uint32((p.Reg>>5)&0x1) << 1 |
| o1 |= uint32(p.Reg&0x1f) << 11 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0xf) << 4 |
| o0 |= uint32(p.RestArgs[1].Addr.Offset&0xf) << 0 |
| o0 |= uint32(p.RestArgs[2].Addr.Offset&0xff) << 8 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_pmxvi8ger4spp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32(p.To.Reg&0x7) << 23 |
| o1 |= uint32((p.From.Reg>>5)&0x1) << 2 |
| o1 |= uint32(p.From.Reg&0x1f) << 16 |
| o1 |= uint32((p.Reg>>5)&0x1) << 1 |
| o1 |= uint32(p.Reg&0x1f) << 11 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0xf) << 4 |
| o0 |= uint32(p.RestArgs[1].Addr.Offset&0xf) << 0 |
| o0 |= uint32(p.RestArgs[2].Addr.Offset&0xf) << 12 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_pnop(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_pstxssp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32(p.From.Reg&0x1f) << 21 |
| o0 |= uint32((p.To.Offset>>16)&0x3ffff) << 0 |
| o1 |= uint32(p.To.Offset&0xffff) << 0 |
| o1 |= uint32(p.To.Reg&0x1f) << 16 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0x1) << 20 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_pstxv(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32((p.From.Reg>>5)&0x1) << 26 |
| o1 |= uint32(p.From.Reg&0x1f) << 21 |
| o0 |= uint32((p.To.Offset>>16)&0x3ffff) << 0 |
| o1 |= uint32(p.To.Offset&0xffff) << 0 |
| o1 |= uint32(p.To.Reg&0x1f) << 16 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0x1) << 20 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_pstxvp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32((p.From.Reg>>5)&0x1) << 21 |
| o1 |= uint32((p.From.Reg>>1)&0xf) << 22 |
| o0 |= uint32((p.To.Offset>>16)&0x3ffff) << 0 |
| o1 |= uint32(p.To.Offset&0xffff) << 0 |
| o1 |= uint32(p.To.Reg&0x1f) << 16 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0x1) << 20 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_setnbcr(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32(p.From.Reg&0x1f) << 16 |
| out[0] = o0 |
| } |
|
|
| |
| func type_stxvp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32((p.From.Reg>>5)&0x1) << 21 |
| o0 |= uint32((p.From.Reg>>1)&0xf) << 22 |
| o0 |= uint32((p.To.Offset>>4)&0xfff) << 4 |
| o0 |= uint32(p.To.Reg&0x1f) << 16 |
| if p.To.Offset&0xf != 0 { |
| c.ctxt.Diag("Constant 0x%x (%d) is not a multiple of 16\n%v", p.To.Offset, p.To.Offset, p) |
| } |
| out[0] = o0 |
| } |
|
|
| |
| func type_stxvpx(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32((p.From.Reg>>5)&0x1) << 21 |
| o0 |= uint32((p.From.Reg>>1)&0xf) << 22 |
| o0 |= uint32(p.To.Index&0x1f) << 16 |
| o0 |= uint32(p.To.Reg&0x1f) << 11 |
| out[0] = o0 |
| } |
|
|
| |
| func type_stxvrwx(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32((p.From.Reg>>5)&0x1) << 0 |
| o0 |= uint32(p.From.Reg&0x1f) << 21 |
| o0 |= uint32(p.To.Index&0x1f) << 16 |
| o0 |= uint32(p.To.Reg&0x1f) << 11 |
| out[0] = o0 |
| } |
|
|
| |
| func type_vcmpuq(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x7) << 23 |
| o0 |= uint32(p.From.Reg&0x1f) << 16 |
| o0 |= uint32(p.Reg&0x1f) << 11 |
| out[0] = o0 |
| } |
|
|
| |
| func type_vcntmbw(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32(p.From.Reg&0x1f) << 11 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0x1) << 16 |
| out[0] = o0 |
| } |
|
|
| |
| func type_vgnb(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32(p.From.Reg&0x1f) << 11 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0x7) << 16 |
| out[0] = o0 |
| } |
|
|
| |
| func type_vinsw(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32(p.From.Reg&0x1f) << 11 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0xf) << 16 |
| out[0] = o0 |
| } |
|
|
| |
| func type_vmsumcud(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32(p.From.Reg&0x1f) << 16 |
| o0 |= uint32(p.Reg&0x1f) << 11 |
| o0 |= uint32(p.RestArgs[0].Addr.Reg&0x1f) << 6 |
| out[0] = o0 |
| } |
|
|
| |
| func type_vsrdbi(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32(p.From.Reg&0x1f) << 16 |
| o0 |= uint32(p.Reg&0x1f) << 11 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0x7) << 6 |
| out[0] = o0 |
| } |
|
|
| |
| func type_xscvuqqp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32(p.From.Reg&0x1f) << 11 |
| out[0] = o0 |
| } |
|
|
| |
| func type_xsmincqp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32(p.From.Reg&0x1f) << 16 |
| o0 |= uint32(p.Reg&0x1f) << 11 |
| out[0] = o0 |
| } |
|
|
| |
| func type_xvcvspbf16(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32((p.To.Reg>>5)&0x1) << 0 |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32((p.From.Reg>>5)&0x1) << 1 |
| o0 |= uint32(p.From.Reg&0x1f) << 11 |
| out[0] = o0 |
| } |
|
|
| |
| func type_xvi8ger4spp(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x7) << 23 |
| o0 |= uint32((p.From.Reg>>5)&0x1) << 2 |
| o0 |= uint32(p.From.Reg&0x1f) << 16 |
| o0 |= uint32((p.Reg>>5)&0x1) << 1 |
| o0 |= uint32(p.Reg&0x1f) << 11 |
| out[0] = o0 |
| } |
|
|
| |
| func type_xvtlsbb(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x7) << 23 |
| o0 |= uint32((p.From.Reg>>5)&0x1) << 1 |
| o0 |= uint32(p.From.Reg&0x1f) << 11 |
| out[0] = o0 |
| } |
|
|
| |
| func type_xxblendvw(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32((p.To.Reg>>5)&0x1) << 0 |
| o1 |= uint32(p.To.Reg&0x1f) << 21 |
| o1 |= uint32((p.From.Reg>>5)&0x1) << 2 |
| o1 |= uint32(p.From.Reg&0x1f) << 16 |
| o1 |= uint32((p.Reg>>5)&0x1) << 1 |
| o1 |= uint32(p.Reg&0x1f) << 11 |
| o1 |= uint32((p.RestArgs[0].Addr.Reg>>5)&0x1) << 3 |
| o1 |= uint32(p.RestArgs[0].Addr.Reg&0x1f) << 6 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_xxeval(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32((p.To.Reg>>5)&0x1) << 0 |
| o1 |= uint32(p.To.Reg&0x1f) << 21 |
| o1 |= uint32((p.From.Reg>>5)&0x1) << 2 |
| o1 |= uint32(p.From.Reg&0x1f) << 16 |
| o1 |= uint32((p.Reg>>5)&0x1) << 1 |
| o1 |= uint32(p.Reg&0x1f) << 11 |
| o1 |= uint32((p.RestArgs[0].Addr.Reg>>5)&0x1) << 3 |
| o1 |= uint32(p.RestArgs[0].Addr.Reg&0x1f) << 6 |
| o0 |= uint32(p.RestArgs[1].Addr.Offset&0xff) << 0 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_xxgenpcvwm(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32((p.To.Reg>>5)&0x1) << 0 |
| o0 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32(p.From.Reg&0x1f) << 11 |
| o0 |= uint32(p.RestArgs[0].Addr.Offset&0x1f) << 16 |
| out[0] = o0 |
| } |
|
|
| |
| func type_xxpermx(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32((p.To.Reg>>5)&0x1) << 0 |
| o1 |= uint32(p.To.Reg&0x1f) << 21 |
| o1 |= uint32((p.From.Reg>>5)&0x1) << 2 |
| o1 |= uint32(p.From.Reg&0x1f) << 16 |
| o1 |= uint32((p.Reg>>5)&0x1) << 1 |
| o1 |= uint32(p.Reg&0x1f) << 11 |
| o1 |= uint32((p.RestArgs[0].Addr.Reg>>5)&0x1) << 3 |
| o1 |= uint32(p.RestArgs[0].Addr.Reg&0x1f) << 6 |
| o0 |= uint32(p.RestArgs[1].Addr.Offset&0x7) << 0 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_xxsetaccz(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenOpcodes[p.As-AXXSETACCZ] |
| o0 |= uint32(p.To.Reg&0x7) << 23 |
| out[0] = o0 |
| } |
|
|
| |
| func type_xxsplti32dx(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32((p.To.Reg>>5)&0x1) << 16 |
| o1 |= uint32(p.To.Reg&0x1f) << 21 |
| o1 |= uint32(p.From.Offset&0x1) << 17 |
| o0 |= uint32((p.RestArgs[0].Addr.Offset>>16)&0xffff) << 0 |
| o1 |= uint32(p.RestArgs[0].Addr.Offset&0xffff) << 0 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| |
| func type_xxspltiw(c *ctxt9, p *obj.Prog, t *Optab, out *[5]uint32) { |
| o0 := GenPfxOpcodes[p.As-AXXSPLTIW] |
| o1 := GenOpcodes[p.As-AXXSETACCZ] |
| o1 |= uint32((p.To.Reg>>5)&0x1) << 16 |
| o1 |= uint32(p.To.Reg&0x1f) << 21 |
| o0 |= uint32((p.From.Offset>>16)&0xffff) << 0 |
| o1 |= uint32(p.From.Offset&0xffff) << 0 |
| out[1] = o1 |
| out[0] = o0 |
| } |
|
|
| func opsetGen(from obj.As) bool { |
| r0 := from & obj.AMask |
| switch from { |
| case ABRW: |
| opset(ABRH, r0) |
| opset(ABRD, r0) |
| case ADCFFIXQQ: |
| case ADCTFIXQQ: |
| case AHASHCHKP: |
| opset(AHASHCHK, r0) |
| case AHASHSTP: |
| opset(AHASHST, r0) |
| case ALXVKQ: |
| case ALXVP: |
| case ALXVPX: |
| case ALXVRWX: |
| opset(ALXVRHX, r0) |
| opset(ALXVRDX, r0) |
| opset(ALXVRBX, r0) |
| case AMTVSRBMI: |
| case AMTVSRWM: |
| opset(AMTVSRQM, r0) |
| opset(AMTVSRHM, r0) |
| opset(AMTVSRDM, r0) |
| opset(AMTVSRBM, r0) |
| case APADDI: |
| case APEXTD: |
| opset(APDEPD, r0) |
| opset(ACNTTZDM, r0) |
| opset(ACNTLZDM, r0) |
| opset(ACFUGED, r0) |
| case APLFS: |
| opset(APLFD, r0) |
| case APLQ: |
| case APLWZ: |
| opset(APLWA, r0) |
| opset(APLHZ, r0) |
| opset(APLHA, r0) |
| opset(APLD, r0) |
| opset(APLBZ, r0) |
| case APLXSSP: |
| opset(APLXSD, r0) |
| case APLXV: |
| case APLXVP: |
| case APMXVF32GERPP: |
| opset(APMXVF32GERPN, r0) |
| opset(APMXVF32GERNP, r0) |
| opset(APMXVF32GERNN, r0) |
| opset(APMXVF32GER, r0) |
| case APMXVF64GERPP: |
| opset(APMXVF64GERPN, r0) |
| opset(APMXVF64GERNP, r0) |
| opset(APMXVF64GERNN, r0) |
| opset(APMXVF64GER, r0) |
| case APMXVI16GER2SPP: |
| opset(APMXVI16GER2S, r0) |
| opset(APMXVI16GER2PP, r0) |
| opset(APMXVI16GER2, r0) |
| opset(APMXVF16GER2PP, r0) |
| opset(APMXVF16GER2PN, r0) |
| opset(APMXVF16GER2NP, r0) |
| opset(APMXVF16GER2NN, r0) |
| opset(APMXVF16GER2, r0) |
| opset(APMXVBF16GER2PP, r0) |
| opset(APMXVBF16GER2PN, r0) |
| opset(APMXVBF16GER2NP, r0) |
| opset(APMXVBF16GER2NN, r0) |
| opset(APMXVBF16GER2, r0) |
| case APMXVI4GER8PP: |
| opset(APMXVI4GER8, r0) |
| case APMXVI8GER4SPP: |
| opset(APMXVI8GER4PP, r0) |
| opset(APMXVI8GER4, r0) |
| case APNOP: |
| case APSTFS: |
| opset(APSTFD, r0) |
| case APSTQ: |
| case APSTW: |
| opset(APSTH, r0) |
| opset(APSTD, r0) |
| opset(APSTB, r0) |
| case APSTXSSP: |
| opset(APSTXSD, r0) |
| case APSTXV: |
| case APSTXVP: |
| case ASETNBCR: |
| opset(ASETNBC, r0) |
| opset(ASETBCR, r0) |
| opset(ASETBC, r0) |
| case ASTXVP: |
| case ASTXVPX: |
| case ASTXVRWX: |
| opset(ASTXVRHX, r0) |
| opset(ASTXVRDX, r0) |
| opset(ASTXVRBX, r0) |
| case AVCLRRB: |
| opset(AVCLRLB, r0) |
| case AVCMPUQ: |
| opset(AVCMPSQ, r0) |
| case AVCNTMBW: |
| opset(AVCNTMBH, r0) |
| opset(AVCNTMBD, r0) |
| opset(AVCNTMBB, r0) |
| case AVEXTDUWVRX: |
| opset(AVEXTDUWVLX, r0) |
| opset(AVEXTDUHVRX, r0) |
| opset(AVEXTDUHVLX, r0) |
| opset(AVEXTDUBVRX, r0) |
| opset(AVEXTDUBVLX, r0) |
| opset(AVEXTDDVRX, r0) |
| opset(AVEXTDDVLX, r0) |
| case AVEXTRACTWM: |
| opset(AVEXTRACTQM, r0) |
| opset(AVEXTRACTHM, r0) |
| opset(AVEXTRACTDM, r0) |
| opset(AVEXTRACTBM, r0) |
| case AVGNB: |
| case AVINSW: |
| opset(AVINSD, r0) |
| case AVINSWRX: |
| opset(AVINSWLX, r0) |
| opset(AVINSHRX, r0) |
| opset(AVINSHLX, r0) |
| opset(AVINSDRX, r0) |
| opset(AVINSDLX, r0) |
| opset(AVINSBRX, r0) |
| opset(AVINSBLX, r0) |
| case AVINSWVRX: |
| opset(AVINSWVLX, r0) |
| opset(AVINSHVRX, r0) |
| opset(AVINSHVLX, r0) |
| opset(AVINSBVRX, r0) |
| opset(AVINSBVLX, r0) |
| case AVMSUMCUD: |
| case AVSRDBI: |
| opset(AVSLDBI, r0) |
| case AXSCVUQQP: |
| opset(AXSCVSQQP, r0) |
| opset(AXSCVQPUQZ, r0) |
| opset(AXSCVQPSQZ, r0) |
| opset(AVSTRIHRCC, r0) |
| opset(AVSTRIHR, r0) |
| opset(AVSTRIHLCC, r0) |
| opset(AVSTRIHL, r0) |
| opset(AVSTRIBRCC, r0) |
| opset(AVSTRIBR, r0) |
| opset(AVSTRIBLCC, r0) |
| opset(AVSTRIBL, r0) |
| opset(AVEXTSD2Q, r0) |
| opset(AVEXPANDWM, r0) |
| opset(AVEXPANDQM, r0) |
| opset(AVEXPANDHM, r0) |
| opset(AVEXPANDDM, r0) |
| opset(AVEXPANDBM, r0) |
| case AXSMINCQP: |
| opset(AXSMAXCQP, r0) |
| opset(AXSCMPGTQP, r0) |
| opset(AXSCMPGEQP, r0) |
| opset(AXSCMPEQQP, r0) |
| opset(AVSRQ, r0) |
| opset(AVSRAQ, r0) |
| opset(AVSLQ, r0) |
| opset(AVRLQNM, r0) |
| opset(AVRLQMI, r0) |
| opset(AVRLQ, r0) |
| opset(AVPEXTD, r0) |
| opset(AVPDEPD, r0) |
| opset(AVMULOUD, r0) |
| opset(AVMULOSD, r0) |
| opset(AVMULLD, r0) |
| opset(AVMULHUW, r0) |
| opset(AVMULHUD, r0) |
| opset(AVMULHSW, r0) |
| opset(AVMULHSD, r0) |
| opset(AVMULEUD, r0) |
| opset(AVMULESD, r0) |
| opset(AVMODUW, r0) |
| opset(AVMODUQ, r0) |
| opset(AVMODUD, r0) |
| opset(AVMODSW, r0) |
| opset(AVMODSQ, r0) |
| opset(AVMODSD, r0) |
| opset(AVDIVUW, r0) |
| opset(AVDIVUQ, r0) |
| opset(AVDIVUD, r0) |
| opset(AVDIVSW, r0) |
| opset(AVDIVSQ, r0) |
| opset(AVDIVSD, r0) |
| opset(AVDIVEUW, r0) |
| opset(AVDIVEUQ, r0) |
| opset(AVDIVEUD, r0) |
| opset(AVDIVESW, r0) |
| opset(AVDIVESQ, r0) |
| opset(AVDIVESD, r0) |
| opset(AVCTZDM, r0) |
| opset(AVCMPGTUQCC, r0) |
| opset(AVCMPGTUQ, r0) |
| opset(AVCMPGTSQCC, r0) |
| opset(AVCMPGTSQ, r0) |
| opset(AVCMPEQUQCC, r0) |
| opset(AVCMPEQUQ, r0) |
| opset(AVCLZDM, r0) |
| opset(AVCFUGED, r0) |
| case AXVCVSPBF16: |
| opset(AXVCVBF16SPN, r0) |
| case AXVI8GER4SPP: |
| opset(AXVI8GER4PP, r0) |
| opset(AXVI8GER4, r0) |
| opset(AXVI4GER8PP, r0) |
| opset(AXVI4GER8, r0) |
| opset(AXVI16GER2SPP, r0) |
| opset(AXVI16GER2S, r0) |
| opset(AXVI16GER2PP, r0) |
| opset(AXVI16GER2, r0) |
| opset(AXVF64GERPP, r0) |
| opset(AXVF64GERPN, r0) |
| opset(AXVF64GERNP, r0) |
| opset(AXVF64GERNN, r0) |
| opset(AXVF64GER, r0) |
| opset(AXVF32GERPP, r0) |
| opset(AXVF32GERPN, r0) |
| opset(AXVF32GERNP, r0) |
| opset(AXVF32GERNN, r0) |
| opset(AXVF32GER, r0) |
| opset(AXVF16GER2PP, r0) |
| opset(AXVF16GER2PN, r0) |
| opset(AXVF16GER2NP, r0) |
| opset(AXVF16GER2NN, r0) |
| opset(AXVF16GER2, r0) |
| opset(AXVBF16GER2PP, r0) |
| opset(AXVBF16GER2PN, r0) |
| opset(AXVBF16GER2NP, r0) |
| opset(AXVBF16GER2NN, r0) |
| opset(AXVBF16GER2, r0) |
| case AXVTLSBB: |
| case AXXBLENDVW: |
| opset(AXXBLENDVH, r0) |
| opset(AXXBLENDVD, r0) |
| opset(AXXBLENDVB, r0) |
| case AXXEVAL: |
| case AXXGENPCVWM: |
| opset(AXXGENPCVHM, r0) |
| opset(AXXGENPCVDM, r0) |
| opset(AXXGENPCVBM, r0) |
| case AXXPERMX: |
| case AXXSETACCZ: |
| opset(AXXMTACC, r0) |
| opset(AXXMFACC, r0) |
| case AXXSPLTI32DX: |
| case AXXSPLTIW: |
| opset(AXXSPLTIDP, r0) |
| default: |
| return false |
| } |
| return true |
| } |
|
|