1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: llc < %s -mtriple=x86_64-darwin | FileCheck %s
3
4; CHECK-LABEL: LCPI0_0:
5; CHECK-NEXT: .long 4286578688
6; CHECK-LABEL: LCPI0_1:
7; CHECK-NEXT: .long 2139095040
8
9define x86_fp80 @foo(x86_fp80 %a) {
10; CHECK-LABEL: foo:
11; CHECK:       ## BB#0:
12; CHECK-NEXT:    fldt {{[0-9]+}}(%rsp)
13; CHECK-NEXT:    fstpt -{{[0-9]+}}(%rsp)
14; CHECK-NEXT:    testb $-128, -{{[0-9]+}}(%rsp)
15; CHECK-NEXT:    flds LCPI0_0(%rip)
16; CHECK-NEXT:    flds LCPI0_1(%rip)
17; CHECK-NEXT:    fcmovne %st(1), %st(0)
18; CHECK-NEXT:    fstp %st(1)
19; CHECK-NEXT:    retq
20;
21  %1 = tail call x86_fp80 @copysignl(x86_fp80 0xK7FFF8000000000000000, x86_fp80 %a) nounwind readnone
22  ret x86_fp80 %1
23}
24
25declare x86_fp80 @copysignl(x86_fp80, x86_fp80) nounwind readnone
26
27; This would crash:
28; https://llvm.org/bugs/show_bug.cgi?id=26070
29
30define float @pr26070() {
31; CHECK-LABEL: pr26070:
32; CHECK:       ## BB#0:
33; CHECK-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
34; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,0,0,0]
35; CHECK-NEXT:    orps {{.*}}(%rip), %xmm0
36; CHECK-NEXT:    retq
37;
38  %c = call float @copysignf(float 1.0, float undef) readnone
39  ret float %c
40}
41
42declare float @copysignf(float, float)
43
44