<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/71187>71187</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[X86] llvm.lrint.vxi32.vxf64 fails to codegen
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:X86,
llvm:SelectionDAG
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
artagnon
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
artagnon
</td>
</tr>
</table>
<pre>
This issue was reported by @mstorsjo on #69945, and is a blocker for re-landing the patch. The following minimal reproduction has been extracted:
```llvm
define <8 x i32> @lrint_v8f64(<8 x double> %x) {
%a = call <8 x i32> @llvm.lrint.v8i32.v8f64(<8 x double> %x)
ret <8 x i32> %a
}
declare <8 x i32> @llvm.lrint.v8i32.v8f64(<8 x double>)
```
When built as follows:
```
$ llc -mtriple=i686-unknown -mattr=sse2 repro.ll
```
There is an assertion in SelectionDAG:
```
llc: /home/swtoolsteam/rarm/riscv-sdk-llvm/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h:160: const llvm::SDValue& llvm::DAGTypeLegalizer::getSDValue(llvm::DAGTypeLegalizer::TableId&): Assertion `Id && "TableId should be non-zero"' failed.
```
The scalar version of the same program:
```llvm
define i32 @lrint_f64(double %x) {
%a = call i32 @llvm.lrint.i32.f64(double %x)
ret i32 %a
}
declare i32 @llvm.lrint.i32.f64(double)
```
Works just fine.
Moreover, an f32 variant of the same program:
```llvm
define <8 x i32> @lrint_v8f32(<8 x float> %x) {
%a = call <8 x i32> @llvm.lrint.v8i32.v8f32(<8 x float> %x)
ret <8 x i32> %a
}
declare <8 x i32> @llvm.lrint.v8i32.v8f32(<8 x float>)
```
Works just fine.
The root cause of the issue is a bug or deficiency in 98c90a1 (ISel: introduce vector ISD::LRINT, ISD::LLRINT; custom RISCV lowering).
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0Vktv4zYQ_jX0ZWBBJm09Dj44cR0Y2PawMba9FRQ5kphQpEFSTrK_viBlJ9kij0UfgGFBQ_IbznzzzYh7rzqDuCarK0Ipd4F3xhpCKVltZ3wMvXXri3XWWPm0PvTKg_J-RHjgHhwerQsooXkCsswHH6zzdxasAUJZUdfLFaHXwI0E5YFDo624RwetdeBwrrmRynQQeoQjD6LP4NAjtFZr-xAXBmXUwHX046wcRVDWQM89NIgG8DE4LgJKwjYk35L88l_k00_r0zCZJLbKIBB2XcEjKEYJ-yXeWDtlwp-nqi2WhFbnZWnHRmPaQVePhNZAyqsJB6KJA2FbEFzrNwD1acgSanaqFKPZZ9gXXIfh72h0xc8BldtLGEJz91YcP-v22eNzkl5n7vceDTSj0gG4P_Pg38vu-ZUuQWsB8yE4dYw-tqqoivlo7o19MDAfeAiOsK33SCciM60_uMOhR4epXAxw79El0pWBW9SYKmC7ufn4TloLwjZA6K63AxK68w_BWu0D8oHQneMuPZQXp7mX9_NUJ3R3eaiG0N21lXiDhtDdD37p7gt2XKvveHg6os96wjaLIo_uhDU-QAJhG8I2t9tvXI9IaPHKuN3cxIMXEDdZOwzPu6vPNh94o3EvCS0imWwDm-cskSLfS0grBRBKz1vB93bUEhoEY838OzobRU5LaLnSKLOP6QAvuOYOTuh89GLbpFjPB4Sjs53jw08rUDH6orupRKfa_Fxrl6MvpR4L_S2M8_koqXTofSF9jvmJYKy793A3-gAxvOz12q_WoT2hmzogtIzCiTvFTfhXGXy_hzH6IvhWWx7-uxb2EfT_18He8vrP-YiV7KwNIPjo8cLBNMym6TR2YB3EPAuFRjzFrlNXos75Agit9reoo96UCWkaIZxQBOtgf7udpPnl6_63Q-T7xTKZ2BWI0Qc7wNf97fU30PYBnTIdoXU2k2sma1bzGa4XRV3ndFFWxaxfs0W9onKxygtZMsFYVbK8Kss2L5ChLOVMrWlO2WKRs8WS1ssiq5gsyhVtsW3rYlkgWeY4cKWzlF3rulkKd10uFlU507xB7c_Tv-HiHk0cpX9UReoO14TScy_6sQWmzwO3jmvzZux8ZE_54F-8BBV0-qyIWKstvCb3MZH72BbL1H08BAvCSuzQzEan130IxzRz6I7QXadCPzaZsK8bdHR8dPYORSB0l0LyhO5SVH8FAAD__0NDk-0">