diff options
| author | Craig Topper <craig.topper@gmail.com> | 2016-12-27 06:51:09 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@gmail.com> | 2016-12-27 06:51:09 +0000 |
| commit | e77e901130af2f5fd451f084c0e6c1349f12ee03 (patch) | |
| tree | ba23d42a8766e1ed8852ccc3a6716656995ce944 /llvm/lib/Target | |
| parent | 141bf5d14d3edcfe01b0869879afe8b1e6d7c979 (diff) | |
| download | bcm5719-llvm-e77e901130af2f5fd451f084c0e6c1349f12ee03.tar.gz bcm5719-llvm-e77e901130af2f5fd451f084c0e6c1349f12ee03.zip | |
[AVX-512] Add all forms of VPALIGNR, VALIGND, and VALIGNQ to the load folding tables.
llvm-svn: 290591
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.cpp | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.cpp b/llvm/lib/Target/X86/X86InstrInfo.cpp index 4a6d337a9bd..579359794fb 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.cpp +++ b/llvm/lib/Target/X86/X86InstrInfo.cpp @@ -1794,6 +1794,8 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) { X86::VADDSDZrr_Int, X86::VADDSDZrm_Int, TB_NO_REVERSE }, { X86::VADDSSZrr, X86::VADDSSZrm, 0 }, { X86::VADDSSZrr_Int, X86::VADDSSZrm_Int, TB_NO_REVERSE }, + { X86::VALIGNDZrri, X86::VALIGNDZrmi, 0 }, + { X86::VALIGNQZrri, X86::VALIGNQZrmi, 0 }, { X86::VANDNPDZrr, X86::VANDNPDZrm, 0 }, { X86::VANDNPSZrr, X86::VANDNPSZrm, 0 }, { X86::VANDPDZrr, X86::VANDPDZrm, 0 }, @@ -1856,8 +1858,7 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) { X86::VPADDUSBZrr, X86::VPADDUSBZrm, 0 }, { X86::VPADDUSWZrr, X86::VPADDUSWZrm, 0 }, { X86::VPADDWZrr, X86::VPADDWZrm, 0 }, - { X86::VALIGNDZrri, X86::VALIGNDZrmi, 0 }, - { X86::VALIGNQZrri, X86::VALIGNQZrmi, 0 }, + { X86::VPALIGNRZrri, X86::VPALIGNRZrmi, 0 }, { X86::VPANDDZrr, X86::VPANDDZrm, 0 }, { X86::VPANDNDZrr, X86::VPANDNDZrm, 0 }, { X86::VPANDNQZrr, X86::VPANDNQZrm, 0 }, @@ -1944,6 +1945,10 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) { X86::VADDPDZ256rr, X86::VADDPDZ256rm, 0 }, { X86::VADDPSZ128rr, X86::VADDPSZ128rm, 0 }, { X86::VADDPSZ256rr, X86::VADDPSZ256rm, 0 }, + { X86::VALIGNDZ128rri, X86::VALIGNDZ128rmi, 0 }, + { X86::VALIGNDZ256rri, X86::VALIGNDZ256rmi, 0 }, + { X86::VALIGNQZ128rri, X86::VALIGNQZ128rmi, 0 }, + { X86::VALIGNQZ256rri, X86::VALIGNQZ256rmi, 0 }, { X86::VANDNPDZ128rr, X86::VANDNPDZ128rm, 0 }, { X86::VANDNPDZ256rr, X86::VANDNPDZ256rm, 0 }, { X86::VANDNPSZ128rr, X86::VANDNPSZ128rm, 0 }, @@ -2007,6 +2012,8 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) { X86::VPADDUSWZ256rr, X86::VPADDUSWZ256rm, 0 }, { X86::VPADDWZ128rr, X86::VPADDWZ128rm, 0 }, { X86::VPADDWZ256rr, X86::VPADDWZ256rm, 0 }, + { X86::VPALIGNRZ128rri, X86::VPALIGNRZ128rmi, 0 }, + { X86::VPALIGNRZ256rri, X86::VPALIGNRZ256rmi, 0 }, { X86::VPANDDZ128rr, X86::VPANDDZ128rm, 0 }, { X86::VPANDDZ256rr, X86::VPANDDZ256rm, 0 }, { X86::VPANDNDZ128rr, X86::VPANDNDZ128rm, 0 }, @@ -2322,6 +2329,8 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) // AVX-512 masked instructions { X86::VADDPDZrrkz, X86::VADDPDZrmkz, 0 }, { X86::VADDPSZrrkz, X86::VADDPSZrmkz, 0 }, + { X86::VALIGNDZrrikz, X86::VALIGNDZrmikz, 0 }, + { X86::VALIGNQZrrikz, X86::VALIGNQZrmikz, 0 }, { X86::VANDNPDZrrkz, X86::VANDNPDZrmkz, 0 }, { X86::VANDNPSZrrkz, X86::VANDNPSZrmkz, 0 }, { X86::VANDPDZrrkz, X86::VANDPDZrmkz, 0 }, @@ -2356,6 +2365,7 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) { X86::VPADDUSBZrrkz, X86::VPADDUSBZrmkz, 0 }, { X86::VPADDUSWZrrkz, X86::VPADDUSWZrmkz, 0 }, { X86::VPADDWZrrkz, X86::VPADDWZrmkz, 0 }, + { X86::VPALIGNRZrrikz, X86::VPALIGNRZrmikz, 0 }, { X86::VPANDDZrrkz, X86::VPANDDZrmkz, 0 }, { X86::VPANDNDZrrkz, X86::VPANDNDZrmkz, 0 }, { X86::VPANDNQZrrkz, X86::VPANDNQZrmkz, 0 }, @@ -2403,6 +2413,8 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) // AVX-512{F,VL} masked arithmetic instructions 256-bit { X86::VADDPDZ256rrkz, X86::VADDPDZ256rmkz, 0 }, { X86::VADDPSZ256rrkz, X86::VADDPSZ256rmkz, 0 }, + { X86::VALIGNDZ256rrikz, X86::VALIGNDZ256rmikz, 0 }, + { X86::VALIGNQZ256rrikz, X86::VALIGNQZ256rmikz, 0 }, { X86::VANDNPDZ256rrkz, X86::VANDNPDZ256rmkz, 0 }, { X86::VANDNPSZ256rrkz, X86::VANDNPSZ256rmkz, 0 }, { X86::VANDPDZ256rrkz, X86::VANDPDZ256rmkz, 0 }, @@ -2433,6 +2445,7 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) { X86::VPADDUSBZ256rrkz, X86::VPADDUSBZ256rmkz, 0 }, { X86::VPADDUSWZ256rrkz, X86::VPADDUSWZ256rmkz, 0 }, { X86::VPADDWZ256rrkz, X86::VPADDWZ256rmkz, 0 }, + { X86::VPALIGNRZ256rrikz, X86::VPALIGNRZ256rmikz, 0 }, { X86::VPANDDZ256rrkz, X86::VPANDDZ256rmkz, 0 }, { X86::VPANDNDZ256rrkz, X86::VPANDNDZ256rmkz, 0 }, { X86::VPANDNQZ256rrkz, X86::VPANDNQZ256rmkz, 0 }, @@ -2480,6 +2493,8 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) // AVX-512{F,VL} masked arithmetic instructions 128-bit { X86::VADDPDZ128rrkz, X86::VADDPDZ128rmkz, 0 }, { X86::VADDPSZ128rrkz, X86::VADDPSZ128rmkz, 0 }, + { X86::VALIGNDZ128rrikz, X86::VALIGNDZ128rmikz, 0 }, + { X86::VALIGNQZ128rrikz, X86::VALIGNQZ128rmikz, 0 }, { X86::VANDNPDZ128rrkz, X86::VANDNPDZ128rmkz, 0 }, { X86::VANDNPSZ128rrkz, X86::VANDNPSZ128rmkz, 0 }, { X86::VANDPDZ128rrkz, X86::VANDPDZ128rmkz, 0 }, @@ -2506,6 +2521,7 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) { X86::VPADDUSBZ128rrkz, X86::VPADDUSBZ128rmkz, 0 }, { X86::VPADDUSWZ128rrkz, X86::VPADDUSWZ128rmkz, 0 }, { X86::VPADDWZ128rrkz, X86::VPADDWZ128rmkz, 0 }, + { X86::VPALIGNRZ128rrikz, X86::VPALIGNRZ128rmikz, 0 }, { X86::VPANDDZ128rrkz, X86::VPANDDZ128rmkz, 0 }, { X86::VPANDNDZ128rrkz, X86::VPANDNDZ128rmkz, 0 }, { X86::VPANDNQZ128rrkz, X86::VPANDNQZ128rmkz, 0 }, @@ -2635,6 +2651,8 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) // AVX-512 foldable masked instructions { X86::VADDPDZrrk, X86::VADDPDZrmk, 0 }, { X86::VADDPSZrrk, X86::VADDPSZrmk, 0 }, + { X86::VALIGNDZrrik, X86::VALIGNDZrmik, 0 }, + { X86::VALIGNQZrrik, X86::VALIGNQZrmik, 0 }, { X86::VANDNPDZrrk, X86::VANDNPDZrmk, 0 }, { X86::VANDNPSZrrk, X86::VANDNPSZrmk, 0 }, { X86::VANDPDZrrk, X86::VANDPDZrmk, 0 }, @@ -2669,6 +2687,7 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) { X86::VPADDUSBZrrk, X86::VPADDUSBZrmk, 0 }, { X86::VPADDUSWZrrk, X86::VPADDUSWZrmk, 0 }, { X86::VPADDWZrrk, X86::VPADDWZrmk, 0 }, + { X86::VPALIGNRZrrik, X86::VPALIGNRZrmik, 0 }, { X86::VPANDDZrrk, X86::VPANDDZrmk, 0 }, { X86::VPANDNDZrrk, X86::VPANDNDZrmk, 0 }, { X86::VPANDNQZrrk, X86::VPANDNQZrmk, 0 }, @@ -2729,6 +2748,8 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) // AVX-512{F,VL} foldable masked instructions 256-bit { X86::VADDPDZ256rrk, X86::VADDPDZ256rmk, 0 }, { X86::VADDPSZ256rrk, X86::VADDPSZ256rmk, 0 }, + { X86::VALIGNDZ256rrik, X86::VALIGNDZ256rmik, 0 }, + { X86::VALIGNQZ256rrik, X86::VALIGNQZ256rmik, 0 }, { X86::VANDNPDZ256rrk, X86::VANDNPDZ256rmk, 0 }, { X86::VANDNPSZ256rrk, X86::VANDNPSZ256rmk, 0 }, { X86::VANDPDZ256rrk, X86::VANDPDZ256rmk, 0 }, @@ -2759,6 +2780,7 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) { X86::VPADDUSBZ256rrk, X86::VPADDUSBZ256rmk, 0 }, { X86::VPADDUSWZ256rrk, X86::VPADDUSWZ256rmk, 0 }, { X86::VPADDWZ256rrk, X86::VPADDWZ256rmk, 0 }, + { X86::VPALIGNRZ256rrik, X86::VPALIGNRZ256rmik, 0 }, { X86::VPANDDZ256rrk, X86::VPANDDZ256rmk, 0 }, { X86::VPANDNDZ256rrk, X86::VPANDNDZ256rmk, 0 }, { X86::VPANDNQZ256rrk, X86::VPANDNQZ256rmk, 0 }, @@ -2820,6 +2842,8 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) // AVX-512{F,VL} foldable instructions 128-bit { X86::VADDPDZ128rrk, X86::VADDPDZ128rmk, 0 }, { X86::VADDPSZ128rrk, X86::VADDPSZ128rmk, 0 }, + { X86::VALIGNDZ128rrik, X86::VALIGNDZ128rmik, 0 }, + { X86::VALIGNQZ128rrik, X86::VALIGNQZ128rmik, 0 }, { X86::VANDNPDZ128rrk, X86::VANDNPDZ128rmk, 0 }, { X86::VANDNPSZ128rrk, X86::VANDNPSZ128rmk, 0 }, { X86::VANDPDZ128rrk, X86::VANDPDZ128rmk, 0 }, @@ -2846,6 +2870,7 @@ X86InstrInfo::X86InstrInfo(X86Subtarget &STI) { X86::VPADDUSBZ128rrk, X86::VPADDUSBZ128rmk, 0 }, { X86::VPADDUSWZ128rrk, X86::VPADDUSWZ128rmk, 0 }, { X86::VPADDWZ128rrk, X86::VPADDWZ128rmk, 0 }, + { X86::VPALIGNRZ128rrik, X86::VPALIGNRZ128rmik, 0 }, { X86::VPANDDZ128rrk, X86::VPANDDZ128rmk, 0 }, { X86::VPANDNDZ128rrk, X86::VPANDNDZ128rmk, 0 }, { X86::VPANDNQZ128rrk, X86::VPANDNQZ128rmk, 0 }, |

