blob: 34fad618843b47182f5e4452584da1d5a9048934 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=i686-- | FileCheck %s --check-prefixes=SDAG-X86
; RUN: llc < %s -mtriple=i686-- -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=FASTISEL-X86
; RUN: llc < %s -mtriple=i686-- -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=GISEL-X86
; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s --check-prefixes=SSE
; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=SSE
; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=SSE
; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx | FileCheck %s --check-prefixes=AVX
; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=AVX
; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=AVX
; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512f | FileCheck %s --check-prefixes=AVX
; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512f -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefixes=AVX
; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512f -global-isel -global-isel-abort=2 | FileCheck %s --check-prefixes=AVX
define float @test_fdiv_f32(float %arg1, float %arg2) {
; SDAG-X86-LABEL: test_fdiv_f32:
; SDAG-X86: # %bb.0:
; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp)
; SDAG-X86-NEXT: fdivs {{[0-9]+}}(%esp)
; SDAG-X86-NEXT: retl
;
; FASTISEL-X86-LABEL: test_fdiv_f32:
; FASTISEL-X86: # %bb.0:
; FASTISEL-X86-NEXT: flds {{[0-9]+}}(%esp)
; FASTISEL-X86-NEXT: flds {{[0-9]+}}(%esp)
; FASTISEL-X86-NEXT: fdivp %st, %st(1)
; FASTISEL-X86-NEXT: retl
;
; GISEL-X86-LABEL: test_fdiv_f32:
; GISEL-X86: # %bb.0:
; GISEL-X86-NEXT: flds {{[0-9]+}}(%esp)
; GISEL-X86-NEXT: fdivrs {{[0-9]+}}(%esp)
; GISEL-X86-NEXT: retl
;
; SSE-LABEL: test_fdiv_f32:
; SSE: # %bb.0:
; SSE-NEXT: divss %xmm1, %xmm0
; SSE-NEXT: retq
;
; AVX-LABEL: test_fdiv_f32:
; AVX: # %bb.0:
; AVX-NEXT: vdivss %xmm1, %xmm0, %xmm0
; AVX-NEXT: retq
%ret = fdiv float %arg1, %arg2
ret float %ret
}
define double @test_fdiv_f64(double %arg1, double %arg2) {
; SDAG-X86-LABEL: test_fdiv_f64:
; SDAG-X86: # %bb.0:
; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp)
; SDAG-X86-NEXT: fdivl {{[0-9]+}}(%esp)
; SDAG-X86-NEXT: retl
;
; FASTISEL-X86-LABEL: test_fdiv_f64:
; FASTISEL-X86: # %bb.0:
; FASTISEL-X86-NEXT: fldl {{[0-9]+}}(%esp)
; FASTISEL-X86-NEXT: fldl {{[0-9]+}}(%esp)
; FASTISEL-X86-NEXT: fdivp %st, %st(1)
; FASTISEL-X86-NEXT: retl
;
; GISEL-X86-LABEL: test_fdiv_f64:
; GISEL-X86: # %bb.0:
; GISEL-X86-NEXT: fldl {{[0-9]+}}(%esp)
; GISEL-X86-NEXT: fdivl {{[0-9]+}}(%esp)
; GISEL-X86-NEXT: retl
;
; SSE-LABEL: test_fdiv_f64:
; SSE: # %bb.0:
; SSE-NEXT: divsd %xmm1, %xmm0
; SSE-NEXT: retq
;
; AVX-LABEL: test_fdiv_f64:
; AVX: # %bb.0:
; AVX-NEXT: vdivsd %xmm1, %xmm0, %xmm0
; AVX-NEXT: retq
%ret = fdiv double %arg1, %arg2
ret double %ret
}