Filipe Cabecinhas
c5f611404c
Convert some X86 blendv* intrinsics into IR.
...
Summary:
Implemented an InstCombine transformation that takes a blendv* intrinsic
call and translates it into an IR select, if the mask is constant.
This will eventually get lowered into blends with immediates if possible,
or pblendvb (with an option to further optimize if we can transform the
pblendvb into a blend+immediate instruction, depending on the selector).
It will also enable optimizations by the IR passes, which give up on
sight of the intrinsic.
Both the transformation and the lowering of its result to asm got shiny
new tests.
The transformation is a bit convoluted because of blendvp[sd]'s
definition:
Its mask is a floating point value! This forces us to convert it and get
the highest bit. I suppose this happened because the mask has type
__m128 in Intel's intrinsic and v4sf (for blendps) in gcc's builtin.
I will send an email to llvm-dev to discuss if we want to change this or
not.
Reviewers: grosbach, delena, nadav
Differential Revision: http://reviews.llvm.org/D3859
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209643 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-27 03:42:20 +00:00
..
2013-08-28 23:04:41 +00:00
2013-08-28 23:04:41 +00:00
2009-09-11 18:01:28 +00:00
2013-08-28 23:04:41 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 12:47:22 +00:00
2013-08-28 23:04:41 +00:00
2013-08-28 23:04:41 +00:00
2012-07-02 12:47:22 +00:00
2013-08-28 23:04:41 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2013-07-09 07:50:59 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2014-03-12 20:15:49 +00:00
2014-03-12 20:15:49 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 12:47:22 +00:00
2013-07-30 20:45:05 +00:00
2013-07-30 20:45:05 +00:00
2013-08-28 23:04:41 +00:00
2012-07-02 19:09:46 +00:00
2013-08-28 23:04:41 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-12-30 01:28:40 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2013-08-28 23:04:41 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-08-07 22:35:16 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2013-11-15 01:34:59 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2013-03-21 00:55:59 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2013-07-14 01:42:54 +00:00
2012-12-30 01:28:40 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:50:49 +00:00
2013-07-14 01:50:49 +00:00
2012-06-07 20:28:57 +00:00
2012-01-11 12:20:08 +00:00
2012-02-13 23:05:18 +00:00
2012-02-29 01:53:13 +00:00
2013-07-14 01:42:54 +00:00
2014-05-24 12:50:23 +00:00
2013-07-14 01:42:54 +00:00
2012-04-30 11:56:58 +00:00
2013-04-30 17:52:57 +00:00
2013-07-14 01:42:54 +00:00
2012-06-07 01:02:13 +00:00
2012-11-08 20:34:25 +00:00
2013-11-15 01:34:59 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2012-10-26 17:17:05 +00:00
2012-12-14 20:43:49 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2014-01-19 15:24:22 +00:00
2014-01-19 13:36:27 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-09-27 10:14:43 +00:00
2012-07-02 12:47:22 +00:00
2013-12-07 02:58:45 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2013-09-03 21:05:48 +00:00
2013-07-14 01:42:54 +00:00
2014-04-28 17:40:03 +00:00
2013-08-16 00:15:20 +00:00
2013-04-12 21:56:23 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 12:47:22 +00:00
2013-07-14 01:42:54 +00:00
2013-07-09 07:50:59 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 19:09:46 +00:00
2013-07-30 20:45:05 +00:00
2013-08-28 23:04:41 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 19:09:46 +00:00
2012-09-27 10:14:43 +00:00
2012-09-27 10:14:43 +00:00
2013-07-14 01:50:49 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 19:09:46 +00:00
2014-05-16 19:35:39 +00:00
2013-08-12 07:26:09 +00:00
2014-03-25 17:21:41 +00:00
2013-07-14 01:42:54 +00:00
2013-07-13 22:00:58 +00:00
2013-09-19 20:59:04 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 19:09:46 +00:00
2014-05-27 03:42:20 +00:00
2012-07-02 12:47:22 +00:00
2014-04-30 17:22:00 +00:00
2014-01-18 22:47:12 +00:00
2013-09-17 21:10:14 +00:00
2013-07-14 01:42:54 +00:00
2013-11-15 01:34:59 +00:00
2014-02-20 23:00:15 +00:00
2014-01-22 22:32:58 +00:00
2014-02-14 00:49:12 +00:00
2014-03-24 04:36:06 +00:00
2013-11-16 16:00:48 +00:00
2013-02-14 03:23:37 +00:00
2013-11-15 01:34:59 +00:00
2013-11-04 20:46:52 +00:00
2014-03-05 19:41:48 +00:00
2014-03-06 05:32:52 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 19:09:46 +00:00
2012-08-10 20:55:20 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2013-11-22 21:49:45 +00:00
2013-11-22 21:49:45 +00:00
2012-12-30 01:28:40 +00:00
2013-07-14 01:42:54 +00:00
2013-07-02 05:21:11 +00:00
2013-07-09 22:01:22 +00:00
2014-05-14 03:03:05 +00:00
2013-12-28 02:40:19 +00:00
2012-11-13 04:16:17 +00:00
2013-08-21 18:54:53 +00:00
2013-11-17 02:06:35 +00:00
2013-07-14 01:42:54 +00:00
2014-02-04 20:27:23 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:50:49 +00:00
2014-01-19 13:36:27 +00:00
2013-07-14 01:42:54 +00:00
2014-01-20 07:44:53 +00:00
2013-08-12 12:43:26 +00:00
2013-12-16 22:42:40 +00:00
2014-01-20 07:44:53 +00:00
2013-07-30 23:53:17 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-20 07:13:13 +00:00
2012-12-14 22:08:26 +00:00
2013-08-28 23:04:41 +00:00
2012-07-02 12:47:22 +00:00
2014-01-18 00:48:14 +00:00
2013-11-28 21:38:05 +00:00
2013-11-28 21:38:05 +00:00
2014-02-26 19:51:08 +00:00
2013-07-14 01:42:54 +00:00
2010-01-17 00:21:21 +00:00
2013-07-14 01:42:54 +00:00
2014-04-03 17:51:58 +00:00
2014-02-14 00:49:12 +00:00
2013-09-04 11:57:17 +00:00
2014-05-15 00:02:20 +00:00
2013-07-14 01:42:54 +00:00
2014-03-07 10:24:44 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2014-03-13 22:51:43 +00:00
2013-09-30 21:11:01 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 12:47:22 +00:00
2013-02-16 23:41:36 +00:00
2013-07-21 23:11:42 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2014-04-24 00:01:09 +00:00
2012-07-02 12:47:22 +00:00
2013-07-14 01:50:49 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 19:09:46 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 19:09:46 +00:00
2013-07-14 01:42:54 +00:00
2014-01-19 15:24:22 +00:00
2013-08-21 19:53:10 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2013-07-14 01:42:54 +00:00
2009-09-11 18:01:28 +00:00
2013-07-14 01:42:54 +00:00
2012-12-30 01:28:40 +00:00
2013-07-14 01:42:54 +00:00
2013-11-15 01:34:59 +00:00
2013-10-07 18:06:48 +00:00
2012-07-02 12:47:22 +00:00
2014-01-19 16:48:41 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 12:47:22 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:50:49 +00:00
2014-04-13 18:23:41 +00:00
2013-07-14 01:42:54 +00:00
2014-05-08 19:50:24 +00:00
2012-07-02 12:47:22 +00:00
2013-12-06 21:48:36 +00:00
2013-07-14 01:42:54 +00:00
2014-03-06 00:18:15 +00:00
2013-07-14 01:42:54 +00:00
2013-08-19 06:55:47 +00:00
2012-07-02 12:47:22 +00:00
2013-07-13 22:00:58 +00:00
2012-04-04 12:51:34 +00:00
2012-11-14 20:18:34 +00:00
2013-12-02 18:43:59 +00:00
2014-04-14 21:50:37 +00:00
2013-05-19 13:28:39 +00:00
2014-02-26 22:29:11 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2014-01-19 15:24:22 +00:00
2014-03-07 04:36:21 +00:00
2012-11-21 14:46:18 +00:00
2014-01-20 07:44:53 +00:00
2013-07-14 01:42:54 +00:00
2013-11-04 20:36:06 +00:00
2012-07-02 12:47:22 +00:00
2014-02-12 23:54:07 +00:00
2014-05-19 07:08:32 +00:00
2012-07-02 19:09:46 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2014-04-14 21:50:37 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 12:47:22 +00:00
2014-02-11 21:09:03 +00:00
2012-07-02 12:47:22 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2014-03-29 10:18:08 +00:00
2013-07-14 01:42:54 +00:00
2014-02-26 22:29:11 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2012-07-02 12:47:22 +00:00
2013-09-27 18:34:27 +00:00
2013-10-07 18:06:48 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2014-02-04 05:55:16 +00:00
2012-10-13 16:45:37 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-10-07 18:06:48 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2014-05-02 04:11:45 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-08-15 20:58:59 +00:00
2012-10-13 16:45:37 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-09-27 18:34:27 +00:00
2013-07-14 01:42:54 +00:00
2014-01-19 15:24:22 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 12:47:22 +00:00
2012-08-28 10:01:43 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 12:47:22 +00:00
2014-04-29 22:20:40 +00:00
2013-04-18 19:56:44 +00:00
2013-08-28 23:04:41 +00:00
2014-01-24 19:02:37 +00:00
2013-08-28 23:04:41 +00:00
2012-07-02 12:47:22 +00:00
2014-01-19 15:24:22 +00:00
2014-01-19 20:05:13 +00:00
2014-05-14 09:05:09 +00:00
2012-12-30 02:33:22 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 12:47:22 +00:00
2013-03-28 19:34:14 +00:00
2012-07-02 12:47:22 +00:00
2013-07-14 01:50:49 +00:00
2013-08-31 18:19:35 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 19:09:46 +00:00
2012-07-02 12:47:22 +00:00
2013-07-14 01:42:54 +00:00
2012-07-02 12:47:22 +00:00
2014-01-19 20:05:13 +00:00