Issue |
146476
|
Summary |
[X86][GlobalIsel] In X87, no-sse2, returning floating point halts for SDAG, GISEL behavior differs.
|
Labels |
new issue
|
Assignees |
|
Reporter |
mahesh-attarde
|
https://godbolt.org/z/9Ejz61Goh
For code with mattr=+87x,-sse2,-sse1
```
define float @test_float_abs(ptr %argptr) {
%arg = load float, float* %argptr
%abs = tail call float @llvm.fabs.f32(float %arg)
ret float %abs
}
```
SDAG
```
error: <unknown>:0:0: in function test_float_abs float (ptr): SSE register return with SSE disabled
Compiler returned: 1
```
GISEL
```
test_float_abs: # @test_float_abs
mov eax, 2147483647
and eax, dword ptr [rdi]
movd xmm0, eax
ret
```
GISEL lowerreturn consults RETCC and adds xmm0 (Calling Convention) where as DAG does not do that.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs