99 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple aarch64 -mattr=+fullfp16 -global-isel -global-isel-abort=1 -verify-machineinstrs %s -o - | FileCheck %s3define half @test_s16(half %a) #0 {4; CHECK-LABEL: test_s16:5; CHECK: // %bb.0: // %entry6; CHECK-NEXT: movi d1, #00000000000000007; CHECK-NEXT: fmax h0, h0, h18; CHECK-NEXT: ret9entry:10 %fcmp = fcmp olt half %a, 0.011 %sel = select i1 %fcmp, half 0.0, half %a12 ret half %sel13}14 15define float @test_s32(float %a) #0 {16; CHECK-LABEL: test_s32:17; CHECK: // %bb.0: // %entry18; CHECK-NEXT: movi d1, #000000000000000019; CHECK-NEXT: fmax s0, s0, s120; CHECK-NEXT: ret21entry:22 %fcmp = fcmp olt float %a, 0.023 %sel = select i1 %fcmp, float 0.0, float %a24 ret float %sel25}26 27define double @test_s64(double %a) #0 {28; CHECK-LABEL: test_s64:29; CHECK: // %bb.0: // %entry30; CHECK-NEXT: movi d1, #000000000000000031; CHECK-NEXT: fmax d0, d0, d132; CHECK-NEXT: ret33entry:34 %fcmp = fcmp olt double %a, 0.035 %sel = select i1 %fcmp, double 0.0, double %a36 ret double %sel37}38 39define <4 x half> @test_v4s16(<4 x half> %a) #0 {40; CHECK-LABEL: test_v4s16:41; CHECK: // %bb.0: // %entry42; CHECK-NEXT: movi v1.2d, #000000000000000043; CHECK-NEXT: fmax v0.4h, v0.4h, v1.4h44; CHECK-NEXT: ret45entry:46 %fcmp = fcmp olt <4 x half> %a, zeroinitializer47 %sel = select <4 x i1> %fcmp, <4 x half> zeroinitializer, <4 x half> %a48 ret <4 x half> %sel49}50 51define <8 x half> @test_v8s16(<8 x half> %a) #0 {52; CHECK-LABEL: test_v8s16:53; CHECK: // %bb.0: // %entry54; CHECK-NEXT: movi v1.2d, #000000000000000055; CHECK-NEXT: fmax v0.8h, v0.8h, v1.8h56; CHECK-NEXT: ret57entry:58 %fcmp = fcmp olt <8 x half> %a, zeroinitializer59 %sel = select <8 x i1> %fcmp, <8 x half> zeroinitializer, <8 x half> %a60 ret <8 x half> %sel61}62 63define <2 x float> @test_v2s32(<2 x float> %a) #0 {64; CHECK-LABEL: test_v2s32:65; CHECK: // %bb.0: // %entry66; CHECK-NEXT: movi v1.2d, #000000000000000067; CHECK-NEXT: fmax v0.2s, v0.2s, v1.2s68; CHECK-NEXT: ret69entry:70 %fcmp = fcmp olt <2 x float> %a, zeroinitializer71 %sel = select <2 x i1> %fcmp, <2 x float> zeroinitializer, <2 x float> %a72 ret <2 x float> %sel73}74 75define <4 x float> @test_v4s32(<4 x float> %a) #0 {76; CHECK-LABEL: test_v4s32:77; CHECK: // %bb.0: // %entry78; CHECK-NEXT: movi v1.2d, #000000000000000079; CHECK-NEXT: fmax v0.4s, v0.4s, v1.4s80; CHECK-NEXT: ret81entry:82 %fcmp = fcmp olt <4 x float> %a, zeroinitializer83 %sel = select <4 x i1> %fcmp, <4 x float> zeroinitializer, <4 x float> %a84 ret <4 x float> %sel85}86 87define <2 x double> @test_v2s64(<2 x double> %a) #0 {88; CHECK-LABEL: test_v2s64:89; CHECK: // %bb.0: // %entry90; CHECK-NEXT: movi v1.2d, #000000000000000091; CHECK-NEXT: fmax v0.2d, v0.2d, v1.2d92; CHECK-NEXT: ret93entry:94 %fcmp = fcmp olt <2 x double> %a, zeroinitializer95 %sel = select <2 x i1> %fcmp, <2 x double> zeroinitializer, <2 x double> %a96 ret <2 x double> %sel97}98 99