1; RUN: llc -mtriple=aarch64-linux-gnu -verify-machineinstrs < %s | FileCheck %s 2; RUN: llc -mtriple=aarch64-apple-darwin -code-model=large -verify-machineinstrs < %s | FileCheck %s --check-prefixes=LARGE 3; RUN: llc -mtriple=aarch64-none-eabi -code-model=tiny -verify-machineinstrs < %s | FileCheck %s 4 5@varf32 = global float 0.0 6@varf64 = global double 0.0 7 8define void @check_float() { 9; CHECK-LABEL: check_float: 10 11 %val = load float, float* @varf32 12 %newval1 = fadd float %val, 8.5 13 store volatile float %newval1, float* @varf32 14; CHECK-DAG: fmov {{s[0-9]+}}, #8.5 15 16 %newval2 = fadd float %val, 128.0 17 store volatile float %newval2, float* @varf32 18; CHECK-DAG: movi [[REG:v[0-9s]+]].2s, #67, lsl #24 19 20; CHECK: ret 21 ret void 22} 23 24define void @check_double() { 25; CHECK-LABEL: check_double: 26 27 %val = load double, double* @varf64 28 %newval1 = fadd double %val, 8.5 29 store volatile double %newval1, double* @varf64 30; CHECK-DAG: fmov {{d[0-9]+}}, #8.5 31 32 %newval2 = fadd double %val, 128.0 33 store volatile double %newval2, double* @varf64 34; CHECK-DAG: mov [[X128:x[0-9]+]], #4638707616191610880 35; CHECK-DAG: fmov {{d[0-9]+}}, [[X128]] 36 37; 64-bit ORR followed by MOVK. 38; CHECK-DAG: mov [[XFP0:x[0-9]+]], #1082331758844 39; CHECK-DAG: movk [[XFP0]], #64764, lsl #16 40; CHECk-DAG: fmov {{d[0-9]+}}, [[XFP0]] 41 %newval3 = fadd double %val, 0xFCFCFC00FC 42 store volatile double %newval3, double* @varf64 43 44; CHECK: ret 45 ret void 46} 47 48; CHECK-LABEL: check_float2 49; CHECK: mov [[REG:w[0-9]+]], #4059 50; CHECK-NEXT: movk [[REG]], #16457, lsl #16 51; CHECK-NEXT: fmov {{s[0-9]+}}, [[REG]] 52define float @check_float2() { 53 ret float 3.14159274101257324218750 54} 55 56; LARGE-LABEL: check_double2 57; LARGE: mov [[REG:x[0-9]+]], #11544 58; LARGE-NEXT: movk [[REG]], #21572, lsl #16 59; LARGE-NEXT: movk [[REG]], #8699, lsl #32 60; LARGE-NEXT: movk [[REG]], #16393, lsl #48 61; LARGE-NEXT: fmov {{d[0-9]+}}, [[REG]] 62define double @check_double2() { 63 ret double 3.1415926535897931159979634685441851615905761718750 64} 65