133 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=aarch64 -mattr=+fullfp16,+no-zcz-fpr64 | FileCheck %s --check-prefixes=CHECK-FP16,CHECK-NOZCZ3; RUN: llc < %s -mtriple=aarch64 -mattr=+fullfp16,+zcz-gpr32,+zcz-gpr64 | FileCheck %s --check-prefixes=CHECK-FP16,CHECK-ZCZ4; RUN: llc < %s -mtriple=aarch64 -mattr=-fullfp16 | FileCheck %s --check-prefixes=CHECK-NOFP165 6define half @Const0() {7; CHECK-NOZCZ-LABEL: Const0:8; CHECK-NOZCZ: // %bb.0: // %entry9; CHECK-NOZCZ-NEXT: fmov h0, wzr10; CHECK-NOZCZ-NEXT: ret11;12; CHECK-ZCZ-LABEL: Const0:13; CHECK-ZCZ: // %bb.0: // %entry14; CHECK-ZCZ-NEXT: movi d0, #000000000000000015; CHECK-ZCZ-NEXT: ret16;17; CHECK-NOFP16-LABEL: Const0:18; CHECK-NOFP16: // %bb.0: // %entry19; CHECK-NOFP16-NEXT: movi d0, #000000000000000020; CHECK-NOFP16-NEXT: ret21entry:22 ret half 0xH000023}24 25define half @Const1() {26; CHECK-FP16-LABEL: Const1:27; CHECK-FP16: // %bb.0: // %entry28; CHECK-FP16-NEXT: fmov h0, #1.0000000029; CHECK-FP16-NEXT: ret30;31; CHECK-NOFP16-LABEL: Const1:32; CHECK-NOFP16: // %bb.0: // %entry33; CHECK-NOFP16-NEXT: adrp x8, .LCPI1_034; CHECK-NOFP16-NEXT: ldr h0, [x8, :lo12:.LCPI1_0]35; CHECK-NOFP16-NEXT: ret36entry:37 ret half 0xH3C0038}39 40define half @Const2() {41; CHECK-FP16-LABEL: Const2:42; CHECK-FP16: // %bb.0: // %entry43; CHECK-FP16-NEXT: fmov h0, #0.1250000044; CHECK-FP16-NEXT: ret45;46; CHECK-NOFP16-LABEL: Const2:47; CHECK-NOFP16: // %bb.0: // %entry48; CHECK-NOFP16-NEXT: adrp x8, .LCPI2_049; CHECK-NOFP16-NEXT: ldr h0, [x8, :lo12:.LCPI2_0]50; CHECK-NOFP16-NEXT: ret51entry:52 ret half 0xH300053}54 55define half @Const3() {56; CHECK-FP16-LABEL: Const3:57; CHECK-FP16: // %bb.0: // %entry58; CHECK-FP16-NEXT: fmov h0, #30.0000000059; CHECK-FP16-NEXT: ret60;61; CHECK-NOFP16-LABEL: Const3:62; CHECK-NOFP16: // %bb.0: // %entry63; CHECK-NOFP16-NEXT: adrp x8, .LCPI3_064; CHECK-NOFP16-NEXT: ldr h0, [x8, :lo12:.LCPI3_0]65; CHECK-NOFP16-NEXT: ret66entry:67 ret half 0xH4F8068}69 70define half @Const4() {71; CHECK-FP16-LABEL: Const4:72; CHECK-FP16: // %bb.0: // %entry73; CHECK-FP16-NEXT: fmov h0, #31.0000000074; CHECK-FP16-NEXT: ret75;76; CHECK-NOFP16-LABEL: Const4:77; CHECK-NOFP16: // %bb.0: // %entry78; CHECK-NOFP16-NEXT: adrp x8, .LCPI4_079; CHECK-NOFP16-NEXT: ldr h0, [x8, :lo12:.LCPI4_0]80; CHECK-NOFP16-NEXT: ret81entry:82 ret half 0xH4FC083}84 85define half @Const5() {86; CHECK-FP16-LABEL: Const5:87; CHECK-FP16: // %bb.0: // %entry88; CHECK-FP16-NEXT: mov w8, #1227289; CHECK-FP16-NEXT: fmov h0, w890; CHECK-FP16-NEXT: ret91;92; CHECK-NOFP16-LABEL: Const5:93; CHECK-NOFP16: // %bb.0: // %entry94; CHECK-NOFP16-NEXT: adrp x8, .LCPI5_095; CHECK-NOFP16-NEXT: ldr h0, [x8, :lo12:.LCPI5_0]96; CHECK-NOFP16-NEXT: ret97entry:98 ret half 0xH2FF099}100 101define half @Const6() {102; CHECK-FP16-LABEL: Const6:103; CHECK-FP16: // %bb.0: // %entry104; CHECK-FP16-NEXT: mov w8, #20417105; CHECK-FP16-NEXT: fmov h0, w8106; CHECK-FP16-NEXT: ret107;108; CHECK-NOFP16-LABEL: Const6:109; CHECK-NOFP16: // %bb.0: // %entry110; CHECK-NOFP16-NEXT: adrp x8, .LCPI6_0111; CHECK-NOFP16-NEXT: ldr h0, [x8, :lo12:.LCPI6_0]112; CHECK-NOFP16-NEXT: ret113entry:114 ret half 0xH4FC1115}116 117define half @Const7() {118; CHECK-FP16-LABEL: Const7:119; CHECK-FP16: // %bb.0: // %entry120; CHECK-FP16-NEXT: mov w8, #20480121; CHECK-FP16-NEXT: fmov h0, w8122; CHECK-FP16-NEXT: ret123;124; CHECK-NOFP16-LABEL: Const7:125; CHECK-NOFP16: // %bb.0: // %entry126; CHECK-NOFP16-NEXT: adrp x8, .LCPI7_0127; CHECK-NOFP16-NEXT: ldr h0, [x8, :lo12:.LCPI7_0]128; CHECK-NOFP16-NEXT: ret129entry:130 ret half 0xH5000131}132 133