Folkert de Vries
73cddef788
optimize is_finite assembly (#169402)
Fixes https://github.com/llvm/llvm-project/issues/169270
Changes the implementation of `is_finite` to emit fewer instructions,
e.g.
X86_64
```asm
old: # 18 bytes
movd %xmm0, %eax
andl $2147483647, %eax
cmpl $2139095040, %eax
setl %al
retq
new: # 15 bytes
movd %xmm0, %eax
addl %eax, %eax
cmpl $-16777216, %eax
setb %al
retq
```
Aarch64
```asm
old:
fmov w9, s0
mov w8, #2139095040
and w9, w9, #0x7fffffff
cmp w9, w8
cset w0, lt
ret
new:
fmov w8, s0
ubfx w8, w8, #23, #8
cmp w8, #255
cset w0, lo
ret
```
See the issue for more information.
2026-03-29 14:28:07 +00:00
..
2025-06-27 21:16:23 +09:00
2026-01-26 15:11:17 +00:00
2025-07-03 07:48:08 -04:00
2025-10-26 09:29:45 +08:00
2025-04-03 13:22:49 -04:00
2025-04-03 13:22:49 -04:00
2025-11-21 12:26:58 +05:30
2025-10-26 09:29:45 +08:00
2026-03-23 13:55:09 +00:00
2026-03-23 13:55:09 +00:00
2026-03-25 12:33:53 +00:00
2025-12-08 14:36:45 -05:00
2025-07-02 09:44:54 -07:00
2025-12-11 08:57:26 +01:00
2025-12-08 14:36:45 -05:00
2025-12-08 14:36:45 -05:00
2025-12-08 14:36:45 -05:00
2025-10-12 12:03:40 -07:00
2025-12-11 08:57:26 +01:00
2025-12-11 08:57:26 +01:00
2025-06-18 10:50:17 +02:00
2025-04-03 13:22:49 -04:00
2025-06-17 15:16:24 +02:00
2026-02-04 10:21:07 +01:00
2025-10-12 12:03:40 -07:00
2025-10-12 12:03:40 -07:00
2025-10-12 12:03:40 -07:00
2025-10-12 12:03:40 -07:00
2025-12-11 08:57:26 +01:00
2025-10-12 12:03:40 -07:00
2026-01-09 13:49:21 -05:00
2026-02-03 14:15:16 -05:00
2026-02-03 14:15:16 -05:00
2026-02-03 14:15:16 -05:00
2026-02-05 19:00:23 +00:00
2026-02-04 03:53:59 +00:00
2026-02-03 14:15:16 -05:00
2025-08-01 08:01:26 -04:00
2025-08-06 12:15:27 -04:00
2026-01-09 13:49:21 -05:00
2026-03-04 12:25:11 -05:00
2025-03-30 22:03:14 -07:00
2025-03-30 22:03:14 -07:00
2025-03-30 22:03:14 -07:00
2025-03-30 22:03:14 -07:00
2025-03-30 22:03:14 -07:00
2025-06-23 16:25:53 +09:00
2025-04-03 13:22:49 -04:00
2025-04-03 13:22:49 -04:00
2025-04-03 13:22:49 -04:00
2025-08-06 12:15:27 -04:00
2026-03-25 12:33:53 +00:00
2025-06-18 10:50:17 +02:00
2025-06-18 10:50:17 +02:00
2025-06-18 10:50:17 +02:00
2025-06-18 10:50:17 +02:00
2025-12-11 08:57:26 +01:00
2026-03-10 01:03:27 -07:00
2025-08-12 11:23:05 -07:00
2025-10-21 09:37:30 -04:00
2026-02-20 11:16:45 -08:00
2026-03-09 13:50:08 -04:00
2025-11-06 10:07:22 -05:00
2025-07-04 12:18:14 +01:00
2025-10-26 09:29:45 +08:00
2026-02-23 10:32:01 +00:00
2025-06-11 22:19:31 -07:00
2025-10-26 09:29:45 +08:00
2025-06-13 09:14:48 -04:00
2025-09-02 09:33:28 -04:00
2025-09-02 09:33:28 -04:00
2025-10-21 09:37:30 -04:00
2025-09-02 09:33:28 -04:00
2025-09-02 09:33:28 -04:00
2025-10-21 09:37:30 -04:00
2026-03-26 15:25:09 +01:00
2025-03-18 13:41:24 -04:00
2026-02-27 13:24:34 -05:00
2025-10-28 10:24:32 -04:00
2025-08-12 11:23:05 -07:00
2025-08-12 11:23:05 -07:00
2026-03-18 13:12:47 +05:30
2025-11-25 11:01:27 +00:00
2026-01-21 21:34:06 +05:30
2025-06-25 14:47:38 +05:30
2025-06-03 08:44:13 +01:00
2025-11-25 11:01:27 +00:00
2025-04-03 13:22:49 -04:00
2026-03-03 17:25:54 -08:00
2025-08-12 11:23:05 -07:00
2025-11-25 11:01:27 +00:00
2025-11-14 14:51:33 +01:00
2025-09-05 08:45:13 +00:00
2026-01-12 12:29:55 +05:30
2025-10-26 09:29:45 +08:00
2025-10-26 09:29:45 +08:00
2025-10-26 09:29:45 +08:00
2025-07-14 15:28:52 +01:00
2025-10-26 09:29:45 +08:00
2025-07-02 15:28:44 -04:00
2025-10-26 09:29:45 +08:00
2025-10-26 09:29:45 +08:00
2025-12-10 11:45:26 +01:00
2025-10-26 09:29:45 +08:00
2025-11-24 09:27:25 +08:00
2025-10-26 09:29:45 +08:00
2025-04-03 13:22:49 -04:00
2025-06-11 22:19:31 -07:00
2025-07-03 07:48:08 -04:00
2025-08-12 11:23:05 -07:00
2025-10-26 09:29:45 +08:00
2025-10-26 09:29:45 +08:00
2025-10-26 09:29:45 +08:00
2026-03-16 11:20:32 -04:00
2026-03-16 11:20:32 -04:00
2026-03-16 11:20:32 -04:00
2026-03-16 11:20:32 -04:00
2026-01-08 12:34:43 -05:00
2025-07-12 11:57:28 +02:00
2025-05-22 15:42:22 +01:00
2025-10-26 09:29:45 +08:00
2025-06-18 13:26:15 +09:00
2026-01-08 15:35:01 +01:00
2026-01-26 15:11:17 +00:00
2026-02-26 11:13:42 +00:00
2025-10-26 09:29:45 +08:00
2026-02-27 04:45:54 +08:00
2025-06-04 14:35:30 +02:00
2025-12-08 13:18:52 +08:00
2025-12-10 11:45:26 +01:00
2026-01-26 15:11:17 +00:00
2026-03-25 12:33:53 +00:00
2025-03-19 10:19:57 -04:00
2025-08-20 12:37:14 +02:00
2025-07-06 10:53:21 +01:00
2026-03-29 14:28:07 +00:00
2025-11-25 11:01:27 +00:00
2025-10-26 09:29:45 +08:00
2026-02-23 10:32:01 +00:00
2025-11-25 11:01:27 +00:00
2025-11-25 11:01:27 +00:00
2026-03-13 09:29:28 +00:00
2025-11-12 12:25:49 -05:00
2025-10-26 09:29:45 +08:00
2025-03-15 21:20:22 -04:00
2025-04-02 10:40:53 +02:00
2026-01-21 09:50:28 +00:00
2025-10-21 19:01:34 +08:00
2025-09-16 12:43:53 +09:00
2025-10-26 09:29:45 +08:00
2026-02-03 14:15:16 -05:00
2025-04-03 13:22:49 -04:00
2025-10-26 09:29:45 +08:00
2025-07-12 11:57:28 +02:00
2026-01-08 15:35:01 +01:00
2026-03-26 15:25:09 +01:00
2025-11-24 09:27:25 +08:00
2025-08-12 11:23:05 -07:00
2025-08-12 09:56:51 +09:00
2026-01-08 15:35:01 +01:00
2026-01-08 15:35:01 +01:00
2025-11-10 11:05:08 -08:00
2025-11-10 11:05:08 -08:00
2025-11-12 05:26:40 +00:00
2026-03-18 11:38:51 +01:00
2025-09-02 09:33:28 -04:00
2025-04-17 17:52:49 +08:00
2025-11-24 09:27:25 +08:00
2025-08-29 12:45:38 +08:00
2025-08-12 09:56:51 +09:00
2025-10-26 09:29:45 +08:00
2025-10-15 10:54:04 +05:30
2025-10-26 09:29:45 +08:00
2025-04-07 15:50:21 -04:00
2025-05-22 15:42:22 +01:00
2025-11-13 10:06:36 -05:00
2025-11-13 10:06:36 -05:00
2025-10-11 12:34:30 +09:00
2025-11-13 10:06:36 -05:00
2025-11-25 13:16:39 -05:00
2025-03-03 11:14:02 -05:00
2026-03-23 13:55:09 +00:00
2026-03-23 13:55:09 +00:00
2026-02-04 17:35:21 +00:00
2026-02-26 13:09:22 -05:00
2026-02-26 13:09:22 -05:00
2026-03-16 11:20:32 -04:00
2026-03-16 11:20:32 -04:00
2025-11-04 09:29:26 -05:00
2025-11-04 09:29:26 -05:00
2026-01-08 12:34:43 -05:00
2026-03-16 11:20:32 -04:00
2025-11-04 09:29:26 -05:00
2025-06-09 12:34:50 -04:00
2026-01-08 12:34:43 -05:00
2026-01-08 12:34:43 -05:00
2025-08-01 09:43:15 +02:00
2025-08-06 09:36:37 -04:00
2025-06-09 14:01:38 -04:00
2025-10-26 09:29:45 +08:00
2025-08-01 09:43:15 +02:00
2025-10-26 09:29:45 +08:00
2025-08-13 15:00:32 -04:00
2025-07-02 09:44:54 -07:00
2026-02-17 15:37:35 -08:00
2026-03-27 15:37:47 +00:00
2026-01-08 10:07:53 +05:30
2025-05-13 11:26:46 -04:00
2025-05-28 14:53:46 +08:00
2026-03-26 18:14:58 +01:00
2025-04-17 17:52:49 +08:00
2025-08-14 11:56:55 +01:00
2025-10-27 11:18:45 -04:00
2025-06-09 14:01:38 -04:00
2025-03-18 13:41:24 -04:00
2025-09-09 16:43:18 -04:00
2025-12-03 16:21:47 +01:00
2026-01-27 09:44:23 -05:00
2026-01-24 11:35:14 +01:00
2025-08-12 11:23:05 -07:00
2025-08-12 11:23:05 -07:00
2025-11-12 21:12:19 +00:00
2025-08-12 11:23:05 -07:00
2025-04-10 11:29:14 -04:00
2025-08-29 12:45:38 +08:00
2025-08-29 12:45:38 +08:00
2025-09-20 02:31:38 +00:00
2025-10-26 09:29:45 +08:00
2025-04-07 15:50:21 -04:00
2025-04-07 15:50:21 -04:00
2025-04-07 15:50:21 -04:00
2025-03-18 13:41:24 -04:00
2025-03-18 13:41:24 -04:00
2026-02-23 10:32:01 +00:00
2025-05-26 19:40:01 -07:00
2025-06-03 08:44:13 +01:00
2025-08-27 07:29:30 +00:00
2026-01-22 18:08:49 -05:00
2025-08-12 20:30:28 +09:00
2026-02-23 10:44:38 -05:00
2025-10-26 09:29:45 +08:00
2025-10-21 09:37:30 -04:00
2025-07-03 07:48:08 -04:00
2025-10-26 09:29:45 +08:00
2025-10-26 09:29:45 +08:00
2025-10-26 09:29:45 +08:00
2025-10-26 09:29:45 +08:00
2026-02-25 10:03:15 +00:00
2025-10-26 09:29:45 +08:00
2025-10-26 09:29:45 +08:00
2025-04-03 13:22:49 -04:00
2025-04-03 13:22:49 -04:00
2025-04-03 13:22:49 -04:00
2025-04-13 17:06:38 +02:00
2025-04-03 13:22:49 -04:00
2025-02-27 11:27:07 +01:00
2025-05-23 10:49:37 -04:00
2026-01-08 15:35:01 +01:00
2026-01-08 15:35:01 +01:00
2026-03-23 13:55:09 +00:00
2026-01-12 12:29:55 +05:30
2025-10-21 09:37:30 -04:00
2025-07-03 07:48:08 -04:00
2025-02-15 14:13:32 -08:00
2025-06-24 04:08:34 +00:00
2025-09-22 21:37:13 +02:00
2025-09-02 09:33:28 -04:00
2025-06-09 14:01:38 -04:00
2026-02-05 13:31:26 +00:00
2025-10-26 09:29:45 +08:00
2025-08-12 11:23:05 -07:00
2025-08-12 11:23:05 -07:00
2025-08-12 11:23:05 -07:00
2025-08-12 11:23:05 -07:00
2025-10-26 09:29:45 +08:00
2025-12-10 11:45:26 +01:00
2025-11-19 10:11:51 +05:30
2025-07-02 15:07:48 +01:00
2026-03-10 14:06:42 +08:00
2026-02-04 00:35:15 +00:00
2026-03-13 09:29:28 +00:00
2025-12-08 13:18:52 +08:00
2025-10-21 19:01:34 +08:00
2025-08-12 11:23:05 -07:00
2025-04-03 13:22:49 -04:00
2026-01-12 12:29:55 +05:30
2025-10-26 09:29:45 +08:00
2025-08-12 11:23:05 -07:00
2025-10-26 09:29:45 +08:00
2025-03-21 12:55:39 -04:00
2025-04-30 13:11:17 +05:30
2025-10-21 09:37:30 -04:00
2026-03-25 12:33:53 +00:00
2025-05-26 11:08:13 -04:00
2025-10-26 09:29:45 +08:00
2025-10-26 09:29:45 +08:00
2025-11-24 09:27:25 +08:00
2025-10-26 09:29:45 +08:00
2025-04-17 17:52:49 +08:00
2025-04-13 17:06:38 +02:00
2025-11-24 09:27:25 +08:00
2025-11-12 21:12:19 +00:00
2025-07-03 07:48:08 -04:00
2025-04-17 17:52:49 +08:00
2025-07-17 00:29:38 +03:00
2025-12-08 11:16:55 -05:00
2025-09-19 10:43:22 -04:00
2025-08-23 10:21:00 +09:00
2025-07-03 07:48:08 -04:00
2025-10-26 09:29:45 +08:00
2026-02-04 17:35:21 +00:00
2025-07-03 07:48:08 -04:00
2025-08-14 11:56:55 +01:00
2025-08-12 11:23:05 -07:00
2025-08-12 11:23:05 -07:00
2025-08-25 15:31:27 -07:00
2025-10-26 09:29:45 +08:00
2025-08-12 11:23:05 -07:00
2025-04-03 13:22:49 -04:00
2025-04-03 13:22:49 -04:00
2026-02-02 09:00:40 +01:00
2025-04-03 13:22:49 -04:00
2025-10-26 09:29:45 +08:00
2025-04-22 17:36:41 -04:00
2026-03-19 17:58:54 +05:30
2025-04-03 13:22:49 -04:00
2025-10-02 13:36:47 +09:00
2025-04-30 10:39:09 -04:00
2025-10-26 09:29:45 +08:00
2025-02-27 08:41:58 +00:00
2026-03-12 12:54:07 -04:00
2026-01-21 16:48:26 +00:00
2025-11-21 12:26:58 +05:30
2025-09-19 13:15:57 +01:00
2025-10-02 13:36:47 +09:00
2026-03-25 12:33:53 +00:00
2025-11-12 12:25:49 -05:00
2025-12-09 00:49:14 +00:00
2025-12-18 17:14:01 +08:00
2025-06-02 18:21:14 +08:00
2025-10-06 12:40:57 -04:00
2025-11-25 11:01:27 +00:00
2025-06-09 14:01:38 -04:00
2026-01-08 15:35:01 +01:00
2026-01-08 15:35:01 +01:00
2026-01-12 12:29:55 +05:30
2025-10-27 11:18:45 -04:00
2025-11-12 12:25:49 -05:00
2025-11-07 10:27:46 -05:00
2025-05-23 10:49:37 -04:00
2025-09-01 10:14:12 +05:30
2025-11-24 09:27:25 +08:00
2025-06-25 12:31:23 +08:00
2026-03-16 11:20:32 -04:00
2026-01-30 18:21:32 +01:00
2025-07-03 07:48:08 -04:00
2026-03-25 12:33:53 +00:00
2026-01-10 13:49:53 +08:00
2025-07-08 21:52:53 -07:00
2025-07-29 22:56:05 +05:30
2025-09-01 10:13:54 +05:30
2025-09-01 10:13:54 +05:30
[PowerPC] Exploit xxeval instruction for operations of the form ternary(A, X, nor(B,C)), ternary(A, X, eqv(B,C)), ternary(A, X, nand(B,C)), ternary(A, X, not(B)) and ternary(A, X, not(C)) (#158096)
2025-10-15 10:58:42 +05:30
[PowerPC] Exploit xxeval instruction for operations of the form ternary(A, X, nor(B,C)), ternary(A, X, eqv(B,C)), ternary(A, X, nand(B,C)), ternary(A, X, not(B)) and ternary(A, X, not(C)) (#158096)
2025-10-15 10:58:42 +05:30
[PowerPC] Exploit xxeval instruction for operations of the form ternary(A, X, nor(B,C)), ternary(A, X, eqv(B,C)), ternary(A, X, nand(B,C)), ternary(A, X, not(B)) and ternary(A, X, not(C)) (#158096)
2025-10-15 10:58:42 +05:30
[PowerPC] Exploit xxeval instruction for operations of the form ternary(A, X, nor(B,C)), ternary(A, X, eqv(B,C)), ternary(A, X, nand(B,C)), ternary(A, X, not(B)) and ternary(A, X, not(C)) (#158096)
2025-10-15 10:58:42 +05:30
[PowerPC] Exploit xxeval instruction for operations of the form ternary(A, X, nor(B,C)), ternary(A, X, eqv(B,C)), ternary(A, X, nand(B,C)), ternary(A, X, not(B)) and ternary(A, X, not(C)) (#158096)
2025-10-15 10:58:42 +05:30
2025-09-22 19:09:47 +05:30
2025-09-22 19:09:47 +05:30
2026-02-04 17:35:21 +00:00
2025-10-26 09:29:45 +08:00