Michael Clark
212cba0ef3
[X86] Correct the cdisp8 encoding for VSCATTER/VGATHER prefetch (#122051)
during differential fuzzing, I found 8 more instructions with disp8
offset multiplier differences to binutils. somewhat sure there is a bug
in the X86 LLVM disp8 offset multipliers for this subset of vector
scatter and gather prefetch instructions. please check and refer to the
previous pull request: https://github.com/llvm/llvm-project/pull/120340
these vector scatter and gather prefetch instructions also have an
unusual k mask operand position but I have not addressed this with this
patch as I am unsure how to change the Intel format in the tablegen
file.
```
hex: 62 f2 fd 49 c6 4c 51 01
llvm: vgatherpf0dpd {k1}, zmmword ptr [rcx + 2*ymm2 + 4]
ours: vgatherpf0dpd qword ptr * 8 [rcx + 2*ymm2 + 8] {k1}
gnu: vgatherpf0dpd QWORD PTR [rcx+ymm2*2+0x8]{k1}
hex: 62 f2 7d 49 c7 4c 51 01
llvm: vgatherpf0qps {k1}, ymmword ptr [rcx + 2*zmm2 + 8]
ours: vgatherpf0qps dword ptr * 8 [rcx + 2*zmm2 + 4] {k1}
gnu: vgatherpf0qps DWORD PTR [rcx+zmm2*2+0x4]{k1}
hex: 62 f2 fd 49 c6 54 51 01
llvm: vgatherpf1dpd {k1}, zmmword ptr [rcx + 2*ymm2 + 4]
ours: vgatherpf1dpd qword ptr * 8 [rcx + 2*ymm2 + 8] {k1}
gnu: vgatherpf1dpd QWORD PTR [rcx+ymm2*2+0x8]{k1}
hex: 62 f2 7d 49 c7 54 51 01
llvm: vgatherpf1qps {k1}, ymmword ptr [rcx + 2*zmm2 + 8]
ours: vgatherpf1qps dword ptr * 8 [rcx + 2*zmm2 + 4] {k1}
gnu: vgatherpf1qps DWORD PTR [rcx+zmm2*2+0x4]{k1}
hex: 62 f2 fd 49 c6 6c 51 01
llvm: vscatterpf0dpd {k1}, zmmword ptr [rcx + 2*ymm2 + 4]
ours: vscatterpf0dpd qword ptr * 8 [rcx + 2*ymm2 + 8] {k1}
gnu: vscatterpf0dpd QWORD PTR [rcx+ymm2*2+0x8]{k1}
hex: 62 f2 7d 49 c7 6c 51 01
llvm: vscatterpf0qps {k1}, ymmword ptr [rcx + 2*zmm2 + 8]
ours: vscatterpf0qps dword ptr * 8 [rcx + 2*zmm2 + 4] {k1}
gnu: vscatterpf0qps DWORD PTR [rcx+zmm2*2+0x4]{k1}
hex: 62 f2 fd 49 c6 74 51 01
llvm: vscatterpf1dpd {k1}, zmmword ptr [rcx + 2*ymm2 + 4]
ours: vscatterpf1dpd qword ptr * 8 [rcx + 2*ymm2 + 8] {k1}
gnu: vscatterpf1dpd QWORD PTR [rcx+ymm2*2+0x8]{k1}
hex: 62 f2 7d 49 c7 74 51 01
llvm: vscatterpf1qps {k1}, ymmword ptr [rcx + 2*zmm2 + 8]
ours: vscatterpf1qps dword ptr * 8 [rcx + 2*zmm2 + 4] {k1}
gnu: vscatterpf1qps DWORD PTR [rcx+zmm2*2+0x4]{k1}
```
2025-01-11 16:51:20 +08:00
..
2024-06-14 10:01:36 -07:00
2024-11-12 15:05:43 +08:00
2024-10-28 12:59:51 +08:00
2024-05-15 13:43:42 +01:00
2022-10-29 15:40:26 -07:00
2022-10-29 15:40:26 -07:00
2024-06-27 09:40:20 -07:00
2024-05-15 13:43:42 +01:00
2022-10-29 15:40:26 -07:00
2022-10-29 15:40:26 -07:00
2024-11-09 13:26:10 +08:00
2024-11-09 13:26:10 +08:00
2024-11-14 13:51:04 +08:00
2024-11-14 13:51:04 +08:00
2024-08-05 18:57:42 +08:00
2024-08-05 18:57:42 +08:00
2024-09-12 22:45:20 +08:00
2024-09-12 22:45:20 +08:00
2024-09-12 22:45:20 +08:00
2024-09-12 22:45:20 +08:00
2024-09-04 08:13:24 +08:00
2024-09-04 08:13:24 +08:00
2024-09-04 08:13:24 +08:00
2024-09-04 08:13:24 +08:00
2024-09-18 17:55:29 +08:00
2024-09-18 17:55:29 +08:00
2024-09-18 17:55:29 +08:00
2024-09-18 17:55:29 +08:00
2024-09-18 21:01:51 +08:00
2024-09-18 21:01:51 +08:00
2024-09-18 21:01:51 +08:00
2024-09-18 21:01:51 +08:00
2024-08-21 15:44:06 +08:00
2024-08-21 15:44:06 +08:00
2024-08-21 15:44:06 +08:00
2024-08-21 15:44:06 +08:00
2024-08-05 11:06:02 +08:00
2024-08-05 11:06:02 +08:00
2024-08-05 11:06:02 +08:00
2024-08-05 11:06:02 +08:00
2024-08-06 19:37:49 +08:00
2024-08-06 19:37:49 +08:00
2024-08-06 19:37:49 +08:00
2024-08-06 19:37:49 +08:00
2023-12-13 17:13:23 +08:00
2023-12-13 17:13:23 +08:00
2023-12-13 17:13:23 +08:00
2023-12-13 17:13:23 +08:00
2023-12-13 17:40:31 +08:00
2023-12-13 17:40:31 +08:00
2023-12-13 17:40:31 +08:00
2023-12-13 17:40:31 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 16:48:25 +08:00
2023-12-13 16:48:25 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-14 11:27:05 +08:00
2023-12-13 19:22:23 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2024-12-17 21:36:36 -08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2025-01-11 16:51:20 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 19:32:25 +08:00
2023-12-13 19:32:25 +08:00
2023-12-13 22:07:49 +08:00
2024-12-17 21:36:36 -08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 19:56:39 +08:00
2023-12-13 19:56:39 +08:00
2023-12-13 19:56:39 +08:00
2023-12-13 19:56:39 +08:00
2023-12-13 20:25:07 +08:00
2023-12-13 20:25:07 +08:00
2023-12-13 20:25:07 +08:00
2023-12-13 20:25:07 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2022-10-31 23:39:38 +08:00
2022-10-31 23:39:38 +08:00
2022-10-31 23:39:38 +08:00
2022-10-31 23:39:38 +08:00
2023-12-13 22:07:49 +08:00
2022-10-28 10:39:54 +08:00
2022-10-28 10:39:54 +08:00
2022-10-28 10:39:54 +08:00
2022-10-28 10:39:54 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2022-10-28 09:42:30 +08:00
2022-10-28 09:42:30 +08:00
2022-10-28 09:42:30 +08:00
2022-10-28 09:42:30 +08:00
2023-07-20 14:31:16 +08:00
2023-07-20 14:31:16 +08:00
2023-07-20 14:31:16 +08:00
2023-07-20 14:31:16 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2024-08-15 14:18:59 +08:00
2024-08-15 14:18:59 +08:00
2024-08-15 14:18:59 +08:00
2024-08-15 14:18:59 +08:00
2024-07-24 18:24:39 +01:00
2023-06-07 10:03:50 -04:00
2024-05-15 13:43:42 +01:00
2023-05-07 20:57:07 -07:00
2024-05-15 13:43:42 +01:00
2024-05-15 13:43:42 +01:00
2023-05-15 16:53:52 +01:00
2024-12-14 22:11:58 -08:00
2024-12-14 22:11:58 -08:00
2024-12-14 22:11:58 -08:00
2022-10-29 15:40:26 -07:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2024-05-15 10:40:16 +08:00
2024-05-15 10:40:16 +08:00
2023-12-13 22:07:49 +08:00
2024-11-20 21:02:44 +08:00
2023-12-13 22:07:49 +08:00
2023-08-14 15:43:22 +08:00
2023-08-14 15:43:22 +08:00
2024-05-15 13:43:42 +01:00
2024-11-04 17:07:24 -08:00
2023-05-09 00:07:40 +08:00
2024-07-16 09:30:19 +08:00
2024-11-04 17:07:24 -08:00
2022-11-27 20:10:29 -08:00
2023-05-17 17:03:15 +02:00
2024-05-15 10:40:16 +08:00
2024-05-15 10:40:16 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2022-12-02 17:12:03 -05:00
2024-11-14 21:44:55 +08:00
2024-10-25 09:00:19 +08:00
2024-10-25 09:00:19 +08:00
2024-11-14 21:44:55 +08:00
2024-10-28 12:59:51 +08:00
2024-10-28 12:59:51 +08:00
2023-12-13 22:07:49 +08:00
2022-10-29 15:40:26 -07:00
2023-07-19 16:15:03 +08:00
2022-10-29 15:40:26 -07:00
2023-05-16 02:44:02 -04:00
2022-10-20 08:46:01 +08:00
2023-02-01 01:26:06 -06:00
2024-11-14 21:44:55 +08:00
2024-11-14 21:44:55 +08:00
2024-11-14 21:44:55 +08:00
2024-11-14 21:44:55 +08:00
2022-10-29 15:40:26 -07:00
2022-10-29 15:40:26 -07:00
2024-06-14 10:18:21 +08:00
2023-12-13 22:07:49 +08:00
2022-10-27 17:20:07 +08:00
2022-10-27 17:20:07 +08:00
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2023-12-28 19:45:37 -08:00
2024-11-20 21:02:44 +08:00
2024-05-15 13:43:42 +01:00
2023-12-13 22:07:49 +08:00
2023-07-20 09:44:44 +08:00
2023-07-20 09:44:44 +08:00
2023-07-20 09:44:44 +08:00
2023-07-20 09:44:44 +08:00
2023-07-20 10:24:16 +08:00
2023-07-20 10:24:16 +08:00
2023-07-20 10:24:16 +08:00
2023-07-20 10:24:16 +08:00
2023-07-20 13:35:15 +08:00
2023-07-20 13:35:15 +08:00
2023-07-20 13:35:15 +08:00
2023-07-20 13:35:15 +08:00
2024-10-28 10:46:16 +08:00
2024-10-28 10:46:16 +08:00
2024-10-28 10:46:16 +08:00
2024-10-28 10:46:16 +08:00
2023-02-06 10:46:34 +05:30
2023-02-06 10:46:34 +05:30
2023-12-13 22:07:49 +08:00
2023-12-13 22:07:49 +08:00
2024-11-22 09:25:19 +08:00
2022-10-29 15:40:26 -07:00
2023-10-16 10:12:53 +08:00
2023-10-16 10:12:53 +08:00
2024-11-21 11:57:31 +00:00
2022-10-19 13:04:11 +08:00
2024-04-19 10:56:59 +08:00
2023-12-18 13:49:45 -08:00
2024-06-14 10:18:21 +08:00
2024-09-13 17:45:33 +01:00
2023-05-16 02:44:02 -04:00
2024-07-20 21:59:13 +08:00
2023-12-18 13:49:45 -08:00
2024-07-28 18:12:47 -04:00
2022-12-02 17:12:03 -05:00
2022-12-02 17:12:03 -05:00
2023-12-13 22:07:49 +08:00