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.