summaryrefslogtreecommitdiff
path: root/include/llvm/IntrinsicsX86.td
Commit message (Collapse)AuthorAge
* Make sure aeskeygenassist uses an unsigned immediate field.Eric Christopher2010-05-25
| | | | | | | Fixes rdar://8017638 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104617 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove the palignr intrinsics now that we lower them to vector shuffles,Eric Christopher2010-04-20
| | | | | | | | | shifts and null vectors. Autoupgrade these to what we'd lower them to. Add a testcase to exercise this. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101851 91177308-0d34-0410-b5e6-96231b3b80d8
* Rewrite aesimc handling. It only takes a single input and has a singleEric Christopher2010-04-02
| | | | | | | dest. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100252 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix typo aeskeygenassist -> aeskeygenassist128.Eric Christopher2010-04-02
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100250 91177308-0d34-0410-b5e6-96231b3b80d8
* Add aeskeygenassist intrinsic and rename all of the aes intrinsics toEric Christopher2010-04-01
| | | | | | | | aes instead of sse4.2. Add a brief todo for a subtarget flag and rework the aeskeygenassist instruction to more closely match the docs. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100078 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove the pmulld intrinsic and autoupdate it as a vector multiply.Eric Christopher2010-03-30
| | | | | | | | Rewrite the pmulld patterns, and make sure that they fold in loads of arguments into the instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99910 91177308-0d34-0410-b5e6-96231b3b80d8
* Reapply Kevin's change 94440, now that Chris has fixed the limitation onBob Wilson2010-03-25
| | | | | | | opcode values fitting in one byte (svn r99494). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99514 91177308-0d34-0410-b5e6-96231b3b80d8
* Speculatively revert this to see if it fixes buildbot failures.Bob Wilson2010-03-24
| | | | | | | | | | | | | --- Reverse-merging r99440 into '.': U test/MC/AsmParser/X86/x86_32-bit_cat.s U test/MC/AsmParser/X86/x86_32-encoding.s U include/llvm/IntrinsicsX86.td U include/llvm/CodeGen/SelectionDAGNodes.h U lib/Target/X86/X86InstrSSE.td U lib/Target/X86/X86ISelLowering.h git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99450 91177308-0d34-0410-b5e6-96231b3b80d8
* Added the Advanced Encryption Standard (AES) Instructions.Kevin Enderby2010-03-24
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99440 91177308-0d34-0410-b5e6-96231b3b80d8
* [llvm_void_ty] is no longer needed for result types, Chris Lattner2010-03-23
| | | | | | | just use an empty result list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99346 91177308-0d34-0410-b5e6-96231b3b80d8
* Fixed the encoding problems of the crc32 instructions. All had the Operand sizeKevin Enderby2010-03-19
| | | | | | | | | | override prefix and only the r/m16 forms should have had that. Also for variant one, the AT&T syntax, added suffixes to all forms. Also added the missing 64-bit form for 'CRC32 r64, r/m8'. Plus added test cases for all forms and tweaked one test case to add the needed suffixes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98980 91177308-0d34-0410-b5e6-96231b3b80d8
* Revert r92939. These intrinsics get matched to LLVM instructions,David Greene2010-01-07
| | | | | | | so removing at Chris' request. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92947 91177308-0d34-0410-b5e6-96231b3b80d8
* Add some "missing" instrinsics to make the SSE intrinsic set a bit moreDavid Greene2010-01-07
| | | | | | | orthogonal. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92939 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove the gcc builtins from the intrinsics, we'll lower themEric Christopher2009-12-01
| | | | | | | explicitly so we can check arguments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90199 91177308-0d34-0410-b5e6-96231b3b80d8
* Recommitting PALIGNR shift width fixes.Sean Callanan2009-11-20
| | | | | | | | Thanks to Daniel Dunbar for fixing clang intrinsics: http://llvm.org/viewvc/llvm-project?view=rev&revision=89499 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89500 91177308-0d34-0410-b5e6-96231b3b80d8
* Reverting PALIGNR fix until I figure out how thisSean Callanan2009-11-20
| | | | | | | broke the Clang testsuite. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89495 91177308-0d34-0410-b5e6-96231b3b80d8
* Fixed PALIGNR to take 8-bit rotations in all cases.Sean Callanan2009-11-20
| | | | | | | | Also fixed the corresponding testcase, and the PALIGNR intrinsic (tested for correctness with llvm-gcc). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89491 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix PR5315, original patch by Nicolas Capens!Eric Christopher2009-11-06
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86203 91177308-0d34-0410-b5e6-96231b3b80d8
* Add sse4.2 string/text processing intrinsics. We'll select these later.Eric Christopher2009-08-14
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79037 91177308-0d34-0410-b5e6-96231b3b80d8
* Whitespace cleanup.Eric Christopher2009-08-14
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79036 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix some cut and paste-os.Eric Christopher2009-08-08
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78493 91177308-0d34-0410-b5e6-96231b3b80d8
* Define intrinsics for crc instruction.Eric Christopher2009-08-08
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78482 91177308-0d34-0410-b5e6-96231b3b80d8
* Add support for gcc __builtin_ia32_ptest{z,c,nzc} intrinsics. LowerEric Christopher2009-07-29
| | | | | | | to ptest instruction plus setcc. Revamp ptest instruction. Add test. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77407 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove intrinsic support for __builtin_ia32_vec_set_v16qi andEric Christopher2009-07-22
| | | | | | | | __builtin_ia32_vec_set_v4si as these should be lowered in the front-end to inserts. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76714 91177308-0d34-0410-b5e6-96231b3b80d8
* Add intrinsic for __builtin_ia32_vec_set_v4si which turns out to beEric Christopher2009-07-21
| | | | | | | pinsrd in sse4.1. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76684 91177308-0d34-0410-b5e6-96231b3b80d8
* ADDS{D|S}rr_Int and MULS{D|S}rr_Int are not commutable. The users of these ↵Evan Cheng2009-02-26
| | | | | | intrinsics expect the high bits will not be modified. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65499 91177308-0d34-0410-b5e6-96231b3b80d8
* Modify the intrinsics pattern to separate out the "return" types from theBill Wendling2008-11-13
| | | | | | | | | | | | "parameter" types. An intrinsic can now return a multiple return values like this: def add_with_overflow : Intrinsic<[llvm_i32_ty, llvm_i1_ty], [LLVMMatchType<0>, LLVMMatchType<0>]>; git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59237 91177308-0d34-0410-b5e6-96231b3b80d8
* Removed pinsrd and pinsrq intrinsics because the code generator does not supportMon P Wang2008-10-15
| | | | | | | them since they map to insert element git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57564 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix SSE4.1 roundss, roundsd. While the instructions have Dale Johannesen2008-10-10
| | | | | | | | | | the same pattern as roundpd/roundps, the Intel compiler builtins do not: rounds* has an extra operand. Fixes gcc.target/i386/sse4_1-rounds[sd]-[1234].c git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57370 91177308-0d34-0410-b5e6-96231b3b80d8
* "The original bug was a complaint that _mm_srli_si128 mis-compiled when passedBill Wendling2008-10-02
| | | | | | | | | | | a constant vector ("{0x123, 0x456}" syntax). The fix is to simplify the _mm_srli_si128 macro, and move the "* 8" from the macro into the compiler back-end. I can't change the existing __builtins because so many people are using them :-(." Patch by Stuart Hastings! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56944 91177308-0d34-0410-b5e6-96231b3b80d8
* SSE codegen for vsetcc nodesNate Begeman2008-07-17
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53719 91177308-0d34-0410-b5e6-96231b3b80d8
* Horizontal-add instructions are not commutative.Evan Cheng2008-06-16
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52363 91177308-0d34-0410-b5e6-96231b3b80d8
* - Add "Commutative" property to intrinsics. This allows tblgen to generate ↵Evan Cheng2008-06-16
| | | | | | | | | the commuted variants for dagisel matching code. - Mark lots of X86 intrinsics as "Commutative" to allow load folding. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52353 91177308-0d34-0410-b5e6-96231b3b80d8
* Eliminate x86.sse2.punpckh.qdq and x86.sse2.punpckl.qdq.Evan Cheng2008-05-24
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51533 91177308-0d34-0410-b5e6-96231b3b80d8
* Eliminate x86.sse2.movs.d, x86.sse2.shuf.pd, x86.sse2.unpckh.pd, and ↵Evan Cheng2008-05-24
| | | | | | x86.sse2.unpckl.pd intrinsics. These will be lowered into shuffles. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51531 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove x86.sse2.loadh.pd and x86.sse2.loadl.pd. These will be lowered into ↵Evan Cheng2008-05-24
| | | | | | load and shuffle instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51521 91177308-0d34-0410-b5e6-96231b3b80d8
* Add separate intrinsics for MMX / SSE shifts with i32 integer operands. This ↵Evan Cheng2008-05-03
| | | | | | allow us to simplify the horribly complicated matching code. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50601 91177308-0d34-0410-b5e6-96231b3b80d8
* Undo 48570. Correctly match mmx shift instructions with an immediate operand.Evan Cheng2008-03-21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48627 91177308-0d34-0410-b5e6-96231b3b80d8
* Add intrinsics to match mmx shift builtin's with immediate operand.Evan Cheng2008-03-19
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48569 91177308-0d34-0410-b5e6-96231b3b80d8
* __builtin_ia32_movntdqa reads memoryNate Begeman2008-03-16
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48431 91177308-0d34-0410-b5e6-96231b3b80d8
* Missed one.Dale Johannesen2008-02-05
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46733 91177308-0d34-0410-b5e6-96231b3b80d8
* Do not unconditionally redefine vec_ext_v16qi andDale Johannesen2008-02-04
| | | | | | | | | | | vec_ext_v4si builtins. This is a hack; they should be defined here, then resolved in the X86 BE. However there is enough other stuff missing in the X86 BE for SSE41 that this will do for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46727 91177308-0d34-0410-b5e6-96231b3b80d8
* SSE 4.1 Intrinsics and detectionNate Begeman2008-02-03
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46681 91177308-0d34-0410-b5e6-96231b3b80d8
* Fix sse2.psrl.w and sse2.psrl.q definitions.Evan Cheng2008-01-09
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45772 91177308-0d34-0410-b5e6-96231b3b80d8
* remove attribution from a variety of miscellaneous files.Chris Lattner2007-12-29
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45425 91177308-0d34-0410-b5e6-96231b3b80d8
* Add a few more missing gcc builtin's.Evan Cheng2007-12-21
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45278 91177308-0d34-0410-b5e6-96231b3b80d8
* Type specification didn't match gcc's.Evan Cheng2007-12-20
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45260 91177308-0d34-0410-b5e6-96231b3b80d8
* Remove int_x86_sse2_movl_dq. It's replaced with a string compare.Evan Cheng2007-12-18
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45140 91177308-0d34-0410-b5e6-96231b3b80d8
* These have matching builtin's in 4.2.Evan Cheng2007-12-18
| | | | git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45139 91177308-0d34-0410-b5e6-96231b3b80d8
* Bring back int_x86_sse2_movl_dq intrinsic for backward compatibility. Make sureEvan Cheng2007-12-17
| | | | | | | it's auto-upgraded to a shufflevector instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45131 91177308-0d34-0410-b5e6-96231b3b80d8