Abhishek Kaushik
17857d9241
[X86] Generate kmov for masking integers ( #120593 )
...
When we have an integer used as a bit mask the llvm ir looks something
like this
```
%1 = and <16 x i32> %.splat, <i32 1, i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128, i32 256, i32 512, i32 1024, i32 2048, i32 4096, i32 8192, i32 16384, i32 32768>
%cmp1 = icmp ne <16 x i32> %1, zeroinitializer
```
where `.splat` is vector containing the mask in all lanes. The assembly
generated for this looks like
```
vpbroadcastd %ecx, %zmm0
vptestmd .LCPI0_0(%rip), %zmm0, %k1
```
where we have a constant table of powers of 2.
Instead of doing this we could just move the relevant bits directly to
`k` registers using a `kmov` instruction.
```
kmovw %ecx, %k1
```
This is faster and also reduces code size.
2025-03-03 20:35:09 +05:30
..
2025-02-05 23:29:02 +07:00
2025-03-03 21:07:59 +08:00
2025-02-20 09:11:29 +00:00
2024-12-22 21:11:32 -08:00
2025-02-07 13:01:21 +05:30
2024-12-15 13:08:02 -08:00
2025-01-06 08:43:39 +00:00
2025-02-12 17:19:19 +00:00
2025-01-06 08:43:39 +00:00
2025-01-24 15:31:53 +01:00
2025-02-12 12:24:29 +08:00
2025-01-17 17:51:42 +08:00
2025-01-17 17:51:42 +08:00
2025-01-17 17:51:42 +08:00
2025-01-17 22:21:19 +08:00
2025-01-21 10:11:29 +08:00
2025-01-17 22:21:19 +08:00
2025-02-25 17:11:00 +00:00
2025-02-24 09:23:00 +00:00
2025-02-15 11:59:52 +00:00
2024-12-16 10:49:08 +09:00
2025-01-06 08:43:39 +00:00
2025-01-24 15:31:53 +01:00
2025-02-26 18:53:08 +08:00
2025-01-24 15:49:28 +08:00
2025-01-24 15:49:28 +08:00
2025-01-23 22:23:56 +08:00
2025-01-05 10:23:37 +08:00
2025-01-21 19:55:09 +08:00
2025-01-22 22:53:47 +08:00
2024-12-09 12:55:07 +08:00
2025-01-24 15:49:28 +08:00
2025-01-24 15:49:28 +08:00
2025-01-23 22:23:56 +08:00
2025-01-05 10:23:37 +08:00
2025-01-21 19:55:09 +08:00
2025-01-22 22:53:47 +08:00
2025-01-24 15:49:28 +08:00
2025-02-06 18:30:54 +00:00
2025-02-04 14:21:09 +00:00
2025-01-22 17:23:37 +00:00
2024-12-18 09:48:38 +00:00
2025-01-12 15:59:05 +00:00
2025-02-04 14:21:10 +00:00
2025-02-04 14:21:10 +00:00
2025-02-05 23:29:02 +07:00
2025-02-04 14:21:10 +00:00
2025-01-06 08:43:39 +00:00
2025-02-27 15:25:02 +00:00
2025-01-30 13:51:30 -08:00
2025-01-22 17:23:37 +00:00
2025-01-22 17:23:37 +00:00
2025-02-04 14:25:07 +00:00
2025-02-04 14:21:11 +00:00
2025-01-12 15:59:05 +00:00
2024-12-18 09:48:38 +00:00
2025-01-30 13:51:30 -08:00
2025-02-03 16:36:01 +00:00
2025-02-04 14:21:11 +00:00
2024-12-10 18:12:51 +08:00
2024-11-29 20:58:48 +08:00
2025-01-17 15:10:52 +00:00
2025-01-17 15:10:52 +00:00
2025-01-17 15:10:52 +00:00
2025-01-17 15:10:52 +00:00
2025-02-12 10:12:20 +00:00
2025-01-17 15:10:52 +00:00
2025-01-17 15:10:52 +00:00
2025-01-22 17:23:37 +00:00
2025-01-12 15:59:05 +00:00
2025-02-27 15:25:02 +00:00
2025-01-06 08:43:39 +00:00
2024-12-22 21:11:32 -08:00
2025-02-19 11:04:10 +08:00
2025-02-18 16:49:51 +00:00
2025-01-23 12:59:59 +00:00
2025-02-03 16:36:01 +00:00
2025-01-06 08:43:39 +00:00
2025-01-30 13:51:30 -08:00
2025-02-06 08:29:39 +00:00
2025-01-27 07:27:26 +08:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-01-21 16:12:58 -08:00
2025-01-30 13:51:30 -08:00
2025-01-06 08:43:39 +00:00
2025-02-04 09:14:37 +00:00
2025-02-03 13:41:51 +07:00
2025-01-22 10:11:32 +00:00
2025-02-12 09:19:00 +00:00
2025-02-12 09:19:00 +00:00
2025-01-30 08:58:23 +08:00
2025-02-12 09:19:00 +00:00
2025-01-06 08:43:39 +00:00
2025-01-06 08:43:39 +00:00
2024-12-22 22:03:44 -08:00
2025-02-03 16:36:01 +00:00
2025-01-06 08:43:39 +00:00
2024-12-05 10:31:56 +00:00
2024-12-05 10:31:56 +00:00
2025-03-01 18:05:49 +08:00
2025-01-23 12:59:59 +00:00
2025-01-19 13:09:17 +00:00
2024-12-18 16:08:45 +00:00
2025-01-12 15:59:05 +00:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-02-12 10:12:20 +00:00
2025-01-06 08:43:39 +00:00
2025-01-23 12:59:59 +00:00
2025-01-23 12:59:59 +00:00
2025-01-23 12:59:59 +00:00
2025-01-17 15:10:52 +00:00
2025-02-19 10:16:57 +01:00
2025-03-03 11:26:17 +05:30
2025-01-17 20:09:00 +07:00
2025-02-06 14:51:13 -08:00
2025-02-12 09:19:00 +00:00
2025-02-05 23:29:02 +07:00
2025-01-06 08:43:39 +00:00
2025-02-07 10:34:16 -08:00
2025-02-12 09:19:00 +00:00
2024-12-22 21:11:32 -08:00
2025-02-12 10:12:20 +00:00
2025-01-16 10:12:29 +08:00
2025-01-12 15:59:05 +00:00
2024-11-28 08:19:10 +08:00
2025-01-28 13:59:41 +00:00
2025-02-27 11:27:07 +01:00
2025-01-28 18:25:32 +00:00
2025-01-28 18:25:32 +00:00
2025-01-06 08:43:39 +00:00
2024-12-01 17:46:08 -05:00
2025-02-03 16:36:01 +00:00
2025-02-12 09:19:00 +00:00
2025-01-22 10:47:09 +00:00
2025-02-10 11:24:04 +00:00
2025-02-19 10:16:57 +01:00
2025-02-05 23:29:02 +07:00
2025-02-06 08:29:39 +00:00
2025-02-10 11:24:04 +00:00
2025-01-24 15:31:53 +01:00
2025-02-25 22:03:17 +08:00
2025-01-06 08:43:39 +00:00
2025-02-27 09:28:50 +00:00
2025-02-19 10:16:57 +01:00
2025-02-25 11:30:54 +01:00
2025-02-12 15:32:08 +00:00
2025-02-19 10:16:57 +01:00
2025-02-06 08:29:39 +00:00
2025-02-06 08:29:39 +00:00
2025-02-10 11:24:04 +00:00
2025-02-12 09:19:00 +00:00
2025-02-12 09:19:00 +00:00
2025-02-06 08:29:39 +00:00
2025-02-05 17:37:05 +00:00
2025-02-06 08:29:39 +00:00
2025-02-06 08:29:39 +00:00
2024-12-04 07:37:01 +00:00
2025-02-19 10:16:57 +01:00
2025-02-19 10:16:57 +01:00
2024-12-04 07:37:01 +00:00
2025-02-19 10:16:57 +01:00
2025-02-03 11:48:41 -08:00
2024-12-05 09:36:21 +00:00
2025-01-31 08:51:05 +00:00
2024-11-28 13:43:14 +00:00
2025-01-31 08:51:04 +00:00
2024-11-28 13:43:14 +00:00
2025-02-03 16:36:01 +00:00
2025-02-19 10:16:57 +01:00
2025-01-18 14:08:24 +05:30
2025-01-17 14:46:22 +00:00
2025-02-27 09:28:50 +00:00
2024-12-12 11:24:07 +08:00
2025-01-06 08:43:39 +00:00
2025-02-09 17:11:18 +00:00
2025-01-27 14:10:16 +00:00
2025-01-24 15:31:53 +01:00
2024-12-16 12:15:11 +01:00
2025-01-06 08:43:39 +00:00
2025-02-12 09:19:00 +00:00
2024-11-27 08:03:47 +03:00
2025-02-26 13:19:49 +07:00
2025-01-12 15:59:05 +00:00
2025-02-12 09:19:00 +00:00
2025-01-06 08:43:39 +00:00
2025-01-12 15:59:05 +00:00
2025-02-24 21:39:28 +08:00
2025-02-07 13:01:21 +05:30
2025-02-07 13:01:21 +05:30
2024-12-12 09:50:26 -08:00
2025-01-06 08:43:39 +00:00
2025-01-28 22:49:28 -08:00
2025-02-06 10:54:22 +08:00
2025-03-03 20:35:09 +05:30
2025-01-23 12:59:59 +00:00
2025-02-03 13:41:51 +07:00
2025-02-19 10:16:57 +01:00
2025-02-12 09:19:00 +00:00
2025-02-12 09:19:00 +00:00
2025-03-03 11:06:15 +05:30
2025-02-12 09:19:00 +00:00
2025-02-03 14:12:43 +07:00
2025-02-27 10:10:36 +07:00
2025-02-27 10:10:36 +07:00
2025-02-27 10:10:36 +07:00
2025-02-27 10:10:36 +07:00
2025-02-27 10:10:36 +07:00
2025-02-27 10:10:36 +07:00
2025-02-19 10:16:57 +01:00
2025-02-27 10:10:36 +07:00
2024-12-17 10:54:17 +00:00
2025-02-27 10:10:36 +07:00
2025-02-27 10:10:36 +07:00
2025-02-27 10:10:36 +07:00
2024-11-29 17:24:38 +00:00
2025-01-30 13:51:30 -08:00
2025-01-06 08:43:39 +00:00
2024-12-18 16:08:45 +00:00
2025-02-06 10:58:37 +08:00
2025-02-03 14:12:43 +07:00
2025-02-03 14:12:43 +07:00
2025-01-06 08:43:39 +00:00
2025-01-06 08:43:39 +00:00
2025-02-12 09:19:00 +00:00
2025-01-06 08:43:39 +00:00
2025-03-03 15:49:37 +05:30
2025-02-12 10:12:20 +00:00
2025-02-23 09:23:33 +00:00
2025-02-14 17:38:25 +08:00
2025-02-14 17:38:25 +08:00
2025-02-14 17:38:25 +08:00
2025-02-14 17:38:25 +08:00
2025-02-14 17:38:25 +08:00
2025-02-14 17:38:25 +08:00
2025-02-14 17:38:25 +08:00
2025-02-14 17:38:25 +08:00
2025-02-04 07:12:14 -06:00
2025-01-06 08:43:39 +00:00
2025-02-14 17:38:25 +08:00
2025-01-03 00:08:58 +02:00
2024-12-12 11:24:07 +08:00
2025-02-23 09:23:33 +00:00
2025-01-06 08:43:39 +00:00
2024-12-12 11:24:07 +08:00
2024-12-12 11:24:07 +08:00
2025-01-31 10:39:53 -08:00
2024-11-29 12:30:55 +00:00
2025-01-17 16:06:31 +08:00
2025-01-23 12:49:35 -08:00
2025-02-23 09:23:33 +00:00
2025-01-30 13:51:30 -08:00
2025-01-29 16:56:47 +01:00
2025-01-30 13:51:30 -08:00
2024-12-03 12:54:26 +01:00
2025-01-12 15:59:05 +00:00
2025-02-12 12:24:29 +08:00
2024-12-16 18:32:12 +00:00
2025-01-22 13:15:40 +07:00
2025-02-23 09:23:33 +00:00
2025-02-05 12:45:59 +05:30
2025-02-14 11:38:47 +00:00
2025-01-06 08:43:39 +00:00
2025-01-06 08:43:39 +00:00
2025-02-23 09:23:33 +00:00
2025-02-05 12:45:59 +05:30
2025-01-12 15:59:05 +00:00
2025-02-06 08:29:39 +00:00
2025-01-06 08:43:39 +00:00
2025-02-04 09:14:37 +00:00
2024-12-18 09:48:38 +00:00
2024-12-18 09:48:38 +00:00
2024-12-16 12:15:11 +01:00
2025-02-05 23:25:04 +07:00
2025-01-12 15:59:05 +00:00
2025-01-06 08:43:39 +00:00
2024-12-02 12:03:04 +00:00
2025-02-12 10:12:20 +00:00
2025-01-06 08:43:39 +00:00
2025-01-12 15:59:05 +00:00
2025-03-03 20:35:09 +05:30
2025-01-17 14:46:22 +00:00
2025-01-23 12:59:59 +00:00
2025-01-23 12:59:59 +00:00
2025-01-18 14:08:24 +05:30
2025-01-23 12:59:59 +00:00
2025-01-18 14:08:24 +05:30
2025-01-13 14:13:55 +00:00
2025-01-03 17:44:25 +00:00
2024-11-29 10:35:05 +00:00
2025-01-17 14:46:22 +00:00
2024-12-10 18:12:51 +08:00
2024-12-06 13:36:43 +00:00
2024-12-09 11:56:29 +00:00
2024-12-16 16:46:38 +00:00
2024-12-22 17:21:44 +00:00
2025-01-11 13:41:50 +00:00
2025-01-18 11:44:46 +00:00
2025-01-28 18:54:49 +05:30
2025-02-22 12:06:34 +08:00
2025-01-30 13:51:30 -08:00
2025-02-14 09:28:57 +01:00
2025-01-06 08:43:39 +00:00
2025-02-23 09:23:33 +00:00
2025-02-21 14:44:08 +08:00
2025-01-24 15:31:53 +01:00
2025-01-23 12:59:59 +00:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-02-06 08:29:39 +00:00
2025-02-14 17:38:25 +08:00
2025-02-23 09:23:33 +00:00
2025-02-10 11:24:04 +00:00
2025-02-20 11:58:45 +00:00
2025-01-06 08:43:39 +00:00
2025-01-06 08:43:39 +00:00
2025-01-13 14:13:55 +00:00
2025-01-15 08:19:54 +00:00
2025-01-15 08:19:54 +00:00
2024-12-17 10:54:17 +00:00
2024-11-27 08:03:47 +03:00
2025-02-05 23:29:02 +07:00
2025-02-05 23:29:02 +07:00
2025-01-23 12:49:35 -08:00
2025-01-23 12:49:35 -08:00
2025-01-23 12:49:35 -08:00
2025-01-12 15:59:05 +00:00
2025-02-10 11:24:04 +00:00
2025-02-03 16:36:01 +00:00
2025-02-03 16:36:01 +00:00
2025-01-24 15:31:53 +01:00
2025-01-25 12:03:57 +08:00
2025-01-23 12:37:07 +05:30
2025-01-30 13:51:30 -08:00
2024-12-15 12:57:35 -08:00
2025-02-27 17:03:24 +01:00
2025-02-28 14:56:41 +01:00
2025-01-06 08:43:39 +00:00
2024-12-11 17:41:19 +08:00
2024-12-17 12:59:46 +07:00
2025-01-06 08:43:39 +00:00
2024-12-17 12:59:46 +07:00
2024-12-16 12:15:11 +01:00
2025-02-03 16:36:01 +00:00
2025-01-22 10:11:32 +00:00
2025-01-13 11:36:58 +00:00
2025-01-30 13:51:30 -08:00
2025-01-06 08:43:39 +00:00
2025-02-10 20:01:14 +00:00
2025-01-06 08:43:39 +00:00
2025-01-23 18:24:20 +00:00
2025-01-06 08:43:39 +00:00
2025-02-23 09:23:33 +00:00
2025-02-23 09:23:33 +00:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-02-23 09:23:33 +00:00
2025-02-05 23:29:02 +07:00
2025-01-15 08:19:54 +00:00
2025-01-24 15:31:53 +01:00
2024-11-26 21:13:00 -08:00
2024-11-26 21:13:00 -08:00
2025-01-08 16:49:29 +08:00
2025-02-05 23:29:02 +07:00
2025-02-05 23:29:02 +07:00
2025-01-06 08:43:39 +00:00
2025-01-06 08:43:39 +00:00
2025-01-21 23:55:50 +07:00
2025-01-21 14:20:38 +00:00
2025-01-24 15:31:53 +01:00
2025-02-22 10:10:51 -08:00
2025-02-23 09:23:33 +00:00
2025-01-22 17:23:36 +00:00
2025-02-10 11:24:04 +00:00
2025-01-12 15:59:05 +00:00
2025-01-12 15:59:05 +00:00
2025-01-12 15:59:05 +00:00
2025-01-04 17:57:15 +00:00
2024-12-18 16:08:45 +00:00
2025-01-23 12:49:35 -08:00
2025-01-04 17:57:15 +00:00
2025-01-04 17:57:15 +00:00
2025-01-21 23:55:50 +07:00
2025-01-04 17:57:15 +00:00
2025-02-12 18:48:55 +00:00
2024-12-11 20:21:34 +08:00
2025-02-12 18:48:55 +00:00
2025-02-12 18:48:54 +00:00
2025-02-12 18:48:54 +00:00
2025-02-12 18:48:54 +00:00
2025-02-05 23:29:02 +07:00
2025-02-05 23:29:02 +07:00
2024-12-18 11:36:54 +00:00
2024-12-18 11:36:54 +00:00
2025-02-12 10:12:20 +00:00
2025-01-29 11:34:44 +00:00
2025-01-15 08:19:54 +00:00
2025-01-15 08:19:54 +00:00
2025-01-15 08:19:54 +00:00
2025-01-15 08:19:54 +00:00
2025-01-15 08:19:54 +00:00
2025-01-13 14:13:55 +00:00
2025-01-13 14:13:55 +00:00
2025-02-20 09:11:29 +00:00
2025-02-20 09:11:29 +00:00
2025-01-13 14:13:55 +00:00
2025-01-13 14:13:55 +00:00
2025-02-15 11:59:52 +00:00
2025-01-13 14:13:55 +00:00
2025-01-13 14:13:55 +00:00
2025-02-27 15:25:02 +00:00
2025-02-15 11:59:52 +00:00
2025-02-13 12:35:05 +00:00
2025-01-13 14:13:55 +00:00
2025-01-12 15:59:05 +00:00
2025-01-12 15:59:05 +00:00
2025-01-13 14:13:55 +00:00
2025-01-13 14:13:55 +00:00
2025-02-17 08:20:25 +00:00
2025-02-21 16:10:46 +00:00
2025-02-26 15:07:51 +00:00
2025-02-27 09:49:03 +00:00
2025-02-26 15:07:51 +00:00
2025-02-17 08:20:25 +00:00
2025-02-20 09:11:29 +00:00
2025-02-21 16:10:46 +00:00
2025-02-17 08:20:25 +00:00
2025-01-12 15:59:05 +00:00
2025-02-17 08:20:25 +00:00
2025-02-17 08:20:25 +00:00
2025-02-27 15:25:02 +00:00
2025-01-12 15:59:05 +00:00
2025-02-27 15:25:02 +00:00
2024-12-16 18:32:12 +00:00
2025-01-12 15:59:05 +00:00
2025-01-12 15:59:05 +00:00
2025-01-14 13:26:38 +00:00
2025-02-27 15:25:02 +00:00
2024-12-06 16:25:15 +00:00
2025-02-27 15:25:02 +00:00
2025-02-22 21:17:26 +08:00
2025-02-22 21:17:26 +08:00
2025-02-11 13:14:41 +08:00
2025-01-12 15:59:05 +00:00
2025-01-12 15:59:05 +00:00
2025-02-03 16:25:27 +00:00
2025-02-27 15:25:02 +00:00
2025-02-18 14:42:18 +00:00
2025-01-11 15:02:52 +00:00
2025-01-12 15:59:05 +00:00
2025-01-11 15:02:52 +00:00
2025-01-12 15:59:05 +00:00
2025-01-11 15:02:52 +00:00
2025-01-11 15:02:52 +00:00
2025-01-22 17:23:37 +00:00
2025-01-22 17:23:37 +00:00
2025-01-22 17:23:37 +00:00
2024-12-10 18:12:51 +08:00
2025-02-10 11:24:04 +00:00
2025-02-10 11:24:04 +00:00
2024-12-10 18:12:51 +08:00
2025-02-10 11:24:04 +00:00
2025-01-22 17:23:37 +00:00
2025-02-20 13:49:49 +00:00
2025-01-22 17:23:37 +00:00
2025-01-22 17:23:37 +00:00
2025-01-22 17:23:37 +00:00
2024-12-17 18:19:15 +00:00
2024-12-17 18:19:15 +00:00
2024-12-17 18:19:15 +00:00
2024-12-17 18:19:15 +00:00
2024-11-29 16:03:35 +00:00
2024-11-29 16:03:35 +00:00
2024-11-29 16:03:35 +00:00
2024-11-29 16:03:35 +00:00
2024-11-29 16:03:35 +00:00
2024-11-29 16:03:35 +00:00
2024-12-17 18:19:15 +00:00
2024-12-17 18:19:15 +00:00
2024-11-29 16:03:35 +00:00
2024-11-29 16:03:35 +00:00
2025-02-12 10:12:20 +00:00
2025-02-20 09:11:29 +00:00
2025-02-20 09:11:29 +00:00
2025-02-19 09:34:15 +00:00
2025-01-12 15:59:05 +00:00
2025-02-12 10:12:20 +00:00
2025-02-20 09:11:29 +00:00
2025-01-12 15:59:05 +00:00
2025-01-12 15:59:05 +00:00
2024-11-29 16:03:35 +00:00
2025-02-20 09:11:29 +00:00
2025-01-12 15:59:05 +00:00
2025-01-15 08:19:54 +00:00
2024-12-09 10:27:44 +00:00
2025-01-06 08:43:39 +00:00
2025-01-12 15:59:05 +00:00
2024-12-09 10:27:44 +00:00
2025-02-12 13:13:49 +00:00
2025-02-18 14:42:18 +00:00
2024-11-29 11:57:54 +00:00
2025-02-20 11:58:45 +00:00
2025-01-24 07:20:14 +00:00
2025-01-12 15:59:05 +00:00
2025-01-12 15:59:05 +00:00
2024-12-06 16:25:14 +00:00
2025-02-12 13:13:49 +00:00
2025-03-01 20:21:28 +08:00
2025-02-10 11:24:04 +00:00
2024-12-09 10:56:44 +00:00
2025-02-05 23:29:02 +07:00
2024-12-18 16:08:45 +00:00
2025-02-17 15:50:25 +00:00
2024-12-04 07:37:01 +00:00
2025-02-17 08:20:25 +00:00
2025-02-17 08:20:25 +00:00
2025-02-17 08:20:25 +00:00
2025-02-17 08:20:25 +00:00
2025-01-21 23:55:50 +07:00
2025-02-05 23:29:02 +07:00
2025-02-05 23:29:02 +07:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-01-30 13:51:30 -08:00
2025-01-15 08:19:54 +00:00
2025-02-25 15:29:12 -08:00
2025-02-25 15:29:12 -08:00
2025-01-23 12:49:35 -08:00
2025-01-17 20:09:00 +07:00
2025-02-27 15:25:02 +00:00
2025-02-27 15:25:02 +00:00
2025-02-19 09:34:15 +00:00