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

Reply via email to