| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py |
| ; RUN: llc < %s -mtriple=x86_64-- -mcpu=x86-64-v3 | FileCheck %s |
| |
| define i1 @sqrt_neginf_f32(float %a0) { |
| ; CHECK-LABEL: sqrt_neginf_f32: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vsqrtss %xmm0, %xmm0, %xmm0 |
| ; CHECK-NEXT: vmovd %xmm0, %eax |
| ; CHECK-NEXT: cmpl $-8388608, %eax # imm = 0xFF800000 |
| ; CHECK-NEXT: sete %al |
| ; CHECK-NEXT: retq |
| %sqr = call float @llvm.sqrt.f32(float %a0) |
| %res = tail call i1 @llvm.is.fpclass.f32(float %sqr, i32 4) ; 0x4 = "neginf" |
| ret i1 %res |
| } |
| |
| define i1 @sqrt_neginf_v4f32(<4 x float> %a0, ptr %p1) { |
| ; CHECK-LABEL: sqrt_neginf_v4f32: |
| ; CHECK: # %bb.0: |
| ; CHECK-NEXT: vsqrtps %xmm0, %xmm0 |
| ; CHECK-NEXT: vmovaps %xmm0, (%rdi) |
| ; CHECK-NEXT: vextractps $0, %xmm0, %eax |
| ; CHECK-NEXT: cmpl $-8388608, %eax # imm = 0xFF800000 |
| ; CHECK-NEXT: sete %al |
| ; CHECK-NEXT: retq |
| %sqr = call <4 x float> @llvm.sqrt.v4f32(<4 x float> %a0) |
| store <4 x float> %sqr, ptr %p1 |
| %elt = extractelement <4 x float> %sqr, i32 0 |
| %res = tail call i1 @llvm.is.fpclass.f32(float %elt, i32 4) ; 0x4 = "neginf" |
| ret i1 %res |
| } |