Deric C.
7c366b041c
[DirectX] Implement llvm.is.fpclass lowering for the fcNegZero FPClassTest and the IsNaN, IsInf, IsFinite, IsNormal DXIL ops ( #138048 )
...
Fixes #137209
This PR:
- Adds a case to `expandIntrinsic()` in `DXILIntrinsicExpansion.cpp` to
expand the `Intrinsic::is_fpclass` in the case of
`FPClassTest::fcNegZero`
- Defines the `IsNaN`, `IsFinite`, `IsNormal` DXIL ops in `DXIL.td`
- Adds a case to `lowerIntrinsics()` in `DXILOpLowering.cpp` to handle
the lowering of `Intrinsic::is_fpclass` to the DXIL ops `IsNaN`,
`IsInf`, `IsFinite`, `IsNormal` when the FPClassTest is `fcNan`,
`fcInf`, `fcFinite`, and `fcNormal` respectively
- Creates a test `llvm/test/CodeGen/DirectX/is_fpclass.ll` to exercise
the intrinsic expansion and DXIL op lowering of `Intrinsic::is_fpclass`
~~A separate PR will be made to remove the now-redundant `dx_isinf`
intrinsic to address #87777.~~
A proper implementation for the lowering of the `llvm.is.fpclass`
intrinsic to handle all possible combinations of FPClassTest can be
implemented in a separate PR. This PR's implementation focuses primarily
on addressing the current use-cases for DirectML and HLSL intrinsics.
2025-05-08 09:13:26 -07:00
..
2025-04-15 22:33:27 -07:00
2025-04-24 13:56:34 -07:00
2025-04-23 10:27:09 -06:00
2025-03-20 11:07:54 -07:00
2025-04-24 14:17:11 -06:00
2025-04-29 11:56:21 -07:00
2025-01-21 17:33:45 -08:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2024-08-26 13:40:11 -04:00
2024-08-20 16:33:25 -07:00
2024-11-22 10:23:30 -08:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2024-10-18 21:16:50 +01:00
2024-11-06 11:32:07 -08:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2025-01-08 16:56:05 -08:00
2025-03-16 09:47:48 +00:00
2025-03-06 13:18:06 -08:00
2025-01-12 18:52:20 -07:00
2025-03-06 13:18:06 -08:00
2025-01-21 17:33:45 -08:00
2025-02-26 09:43:30 -08:00
2025-02-26 09:43:30 -08:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2025-02-25 16:09:41 -05:00
2025-01-21 17:33:45 -08:00
2024-10-17 12:54:52 -06:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-03-13 09:29:37 -07:00
2025-03-13 09:29:37 -07:00
2025-03-16 09:47:48 +00:00
2024-10-10 16:34:26 -07:00
2024-11-14 23:34:07 -08:00
2025-02-25 16:09:41 -05:00
2025-04-14 10:34:15 -07:00
2025-04-14 10:34:15 -07:00
2025-04-14 10:34:15 -07:00
2025-04-14 10:34:15 -07:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2024-08-15 12:16:52 +03:00
2024-08-02 15:13:16 -07:00
2024-09-12 15:53:50 -04:00
2024-11-06 11:32:07 -08:00
2025-01-21 17:33:45 -08:00
2024-09-12 15:53:50 -04:00
2025-04-14 10:34:15 -07:00
2024-10-17 12:54:52 -06:00
2024-12-02 12:08:14 -08:00
2024-10-17 12:54:52 -06:00
2024-10-17 12:54:52 -06:00
2025-01-21 17:33:45 -08:00
2025-01-15 15:36:50 -07:00
2025-01-15 15:36:50 -07:00
2024-11-06 07:31:39 -08:00
2024-11-06 07:31:39 -08:00
2024-11-18 13:56:33 -08:00
2024-12-18 16:33:49 -05:00
2024-08-02 15:13:16 -07:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2024-10-17 12:54:52 -06:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2024-08-02 15:13:16 -07:00
2024-12-01 22:31:40 -08:00
2025-03-24 16:17:19 -07:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-05-08 09:13:26 -07:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2025-04-17 09:02:05 -07:00
2025-04-29 16:07:44 -04:00
2025-03-17 20:33:02 -04:00
2025-03-17 20:33:02 -04:00
2025-04-22 14:25:33 -04:00
2025-04-30 17:09:28 -04:00
2024-09-23 19:00:20 -04:00
2024-09-23 19:00:20 -04:00
2024-10-02 15:55:40 -04:00
2024-08-15 12:16:52 +03:00
2025-05-01 22:07:07 -07:00
2025-03-17 20:33:02 -04:00
2024-11-13 16:36:24 -05:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2024-11-06 11:32:07 -08:00
2025-01-21 17:33:45 -08:00
2025-04-28 12:43:38 -07:00
2024-10-18 21:16:50 +01:00
2025-04-14 10:34:15 -07:00
2024-10-17 12:54:52 -06:00
2025-04-10 16:40:05 -04:00
2024-10-07 10:33:35 -07:00
2025-01-08 16:56:05 -08:00
2025-03-16 09:47:48 +00:00
2025-01-12 18:52:20 -07:00
2025-01-12 18:52:20 -07:00
2025-03-29 00:45:11 -04:00
2025-03-17 20:33:02 -04:00
2025-01-21 17:33:45 -08:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2024-08-20 12:46:33 -04:00
2025-04-08 08:54:10 +09:00
2024-12-18 16:33:49 -05:00
2024-11-13 16:36:24 -05:00
2024-12-18 16:33:49 -05:00
2024-11-13 16:36:24 -05:00
2025-03-17 20:33:02 -04:00
2024-10-02 15:55:40 -04:00
2024-08-02 15:13:16 -07:00
2024-09-04 22:12:01 -07:00
2025-01-21 17:33:45 -08:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2024-11-06 11:32:07 -08:00
2024-09-23 19:00:20 -04:00
2024-10-17 12:54:52 -06:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2024-08-02 15:13:16 -07:00
2024-08-02 15:13:16 -07:00
2024-08-02 15:13:16 -07:00
2025-01-21 17:33:45 -08:00
2024-09-23 19:00:20 -04:00
2025-03-05 17:04:10 -08:00
2025-03-05 17:04:10 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-04-21 10:26:27 -04:00
2025-04-11 14:32:44 -04:00
2024-12-17 17:32:50 -05:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-27 23:26:56 -08:00
2025-01-16 10:35:23 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00
2025-01-21 17:33:45 -08:00