1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=x86_64-apple-macosx10.15.0 -O0 | FileCheck %s 3 4define i32 @a() { 5; CHECK-LABEL: a: 6; CHECK: ## %bb.0: ## %entry 7; CHECK-NEXT: pushq %rax 8; CHECK-NEXT: .cfi_def_cfa_offset 16 9; CHECK-NEXT: movb $0, %al 10; CHECK-NEXT: callq _b 11; CHECK-NEXT: cvtsi2sd %eax, %xmm1 12; CHECK-NEXT: movq _calloc@GOTPCREL(%rip), %rdx 13; CHECK-NEXT: addq $1, %rdx 14; CHECK-NEXT: xorl %eax, %eax 15; CHECK-NEXT: movl $1, %ecx 16; CHECK-NEXT: cmpq $0, %rdx 17; CHECK-NEXT: cmovnel %ecx, %eax 18; CHECK-NEXT: cvtsi2sd %eax, %xmm0 19; CHECK-NEXT: movsd {{.*#+}} xmm2 = [1.0E+2,0.0E+0] 20; CHECK-NEXT: subsd %xmm2, %xmm0 21; CHECK-NEXT: movsd {{.*#+}} xmm3 = [1.0E+0,0.0E+0] 22; CHECK-NEXT: movsd {{.*#+}} xmm2 = [3.1400000000000001E+0,0.0E+0] 23; CHECK-NEXT: cmplesd %xmm1, %xmm0 24; CHECK-NEXT: movaps %xmm0, %xmm1 25; CHECK-NEXT: andpd %xmm3, %xmm1 26; CHECK-NEXT: andnpd %xmm2, %xmm0 27; CHECK-NEXT: orpd %xmm1, %xmm0 28; CHECK-NEXT: cvttsd2si %xmm0, %eax 29; CHECK-NEXT: popq %rcx 30; CHECK-NEXT: retq 31entry: 32 %call = call i32 (...) @b() 33 %conv = sitofp i32 %call to double 34 %cmp2 = icmp ne ptr getelementptr (i8, ptr @calloc, i64 1), null 35 %sel = select i1 %cmp2, i32 1, i32 0 36 %sitofp = sitofp i32 %sel to double 37 %fsub = fsub double %sitofp, 1.000000e+02 38 %cmp = fcmp ole double %fsub, %conv 39 %cond = select i1 %cmp, double 1.000000e+00, double 3.140000e+00 40 %conv2 = fptosi double %cond to i32 41 ret i32 %conv2 42} 43 44declare ptr @calloc(i64, i64) 45 46declare i32 @b(...) 47