Open
Description
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.