[FastISel][AArch64] Extend floating-point materialization test.

This adds the missing test that I promised for r215753 to test the
materialization of the floating-point value +0.0.

Related to <rdar://problem/18027157>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216019 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Juergen Ributzka 2014-08-19 20:35:07 +00:00
parent 6825609779
commit 1d58f989d4

View File

@ -1,27 +1,41 @@
; RUN: llc < %s -O0 -fast-isel-abort -mtriple=arm64-apple-darwin | FileCheck %s
; RUN: llc -O0 -fast-isel-abort -mtriple=arm64-apple-darwin < %s | FileCheck %s
; Materialize using fmov
define void @float_(float* %value) {
; CHECK: @float_
; CHECK: fmov s0, #1.25000000
store float 1.250000e+00, float* %value, align 4
ret void
define float @fmov_float1() {
; CHECK-LABEL: fmov_float1
; CHECK: fmov s0, #1.25000000
ret float 1.250000e+00
}
define void @double_(double* %value) {
; CHECK: @double_
; CHECK: fmov d0, #1.25000000
store double 1.250000e+00, double* %value, align 8
ret void
define float @fmov_float2() {
; CHECK-LABEL: fmov_float2
; CHECK: fmov s0, wzr
ret float 0.0e+00
}
define double @fmov_double1() {
; CHECK-LABEL: fmov_double1
; CHECK: fmov d0, #1.25000000
ret double 1.250000e+00
}
define double @fmov_double2() {
; CHECK-LABEL: fmov_double2
; CHECK: fmov d0, xzr
ret double 0.0e+00
}
; Materialize from constant pool
define float @float_cp() {
; CHECK: @float_cp
define float @cp_float() {
; CHECK-LABEL: cp_float
; CHECK: adrp [[REG:x[0-9]+]], {{lCPI[0-9]+_0}}@PAGE
; CHECK-NEXT: ldr s0, {{\[}}[[REG]], {{lCPI[0-9]+_0}}@PAGEOFF{{\]}}
ret float 0x400921FB60000000
}
define double @double_cp() {
; CHECK: @double_cp
define double @cp_double() {
; CHECK-LABEL: cp_double
; CHECK: adrp [[REG:x[0-9]+]], {{lCPI[0-9]+_0}}@PAGE
; CHECK-NEXT: ldr d0, {{\[}}[[REG]], {{lCPI[0-9]+_0}}@PAGEOFF{{\]}}
ret double 0x400921FB54442D18
}