66 lines · plain
1; RUN: llc -mtriple=aarch64-linux-gnu -verify-machineinstrs < %s | FileCheck %s2; RUN: llc -mtriple=aarch64-apple-darwin -code-model=large -verify-machineinstrs < %s | FileCheck %s --check-prefixes=LARGE3; RUN: llc -mtriple=aarch64 -code-model=tiny -verify-machineinstrs < %s | FileCheck %s4; RUN: llc -mtriple=aarch64-linux-gnu -global-isel -verify-machineinstrs < %s | FileCheck %s5 6@varf32 = global float 0.07@varf64 = global double 0.08 9define void @check_float() {10; CHECK-LABEL: check_float:11 12 %val = load float, ptr @varf3213 %newval1 = fadd float %val, 8.514 store volatile float %newval1, ptr @varf3215; CHECK-DAG: fmov {{s[0-9]+}}, #8.516 17 %newval2 = fadd float %val, 128.018 store volatile float %newval2, ptr @varf3219; CHECK-DAG: movi [[REG:v[0-9s]+]].2s, #67, lsl #2420 21; CHECK: ret22 ret void23}24 25define void @check_double() {26; CHECK-LABEL: check_double:27 28 %val = load double, ptr @varf6429 %newval1 = fadd double %val, 8.530 store volatile double %newval1, ptr @varf6431; CHECK-DAG: fmov {{d[0-9]+}}, #8.532 33 %newval2 = fadd double %val, 128.034 store volatile double %newval2, ptr @varf6435; CHECK-DAG: mov [[X128:x[0-9]+]], #463870761619161088036; CHECK-DAG: fmov {{d[0-9]+}}, [[X128]]37 38; 64-bit ORR followed by MOVK.39; CHECK-DAG: mov [[XFP0:x[0-9]+]], #108233175884440; CHECK-DAG: movk [[XFP0]], #64764, lsl #1641; CHECK-DAG: fmov {{d[0-9]+}}, [[XFP0]]42 %newval3 = fadd double %val, 0xFCFCFC00FC43 store volatile double %newval3, ptr @varf6444 45; CHECK: ret46 ret void47}48 49; CHECK-LABEL: check_float250; CHECK: mov [[REG:w[0-9]+]], #405951; CHECK-NEXT: movk [[REG]], #16457, lsl #1652; CHECK-NEXT: fmov {{s[0-9]+}}, [[REG]]53define float @check_float2() {54 ret float 3.1415927410125732421875055}56 57; LARGE-LABEL: check_double258; LARGE: mov [[REG:x[0-9]+]], #1154459; LARGE-NEXT: movk [[REG]], #21572, lsl #1660; LARGE-NEXT: movk [[REG]], #8699, lsl #3261; LARGE-NEXT: movk [[REG]], #16393, lsl #4862; LARGE-NEXT: fmov {{d[0-9]+}}, [[REG]]63define double @check_double2() {64 ret double 3.141592653589793115997963468544185161590576171875065}66