# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py # RUN: llc -mtriple aarch64 -run-pass=aarch64-prelegalizer-combiner %s -o - | FileCheck %s --- name: fceil body: | bb.0: ; CHECK-LABEL: name: fceil ; CHECK: %res:_(s64) = G_FCONSTANT double 3.000000e+00 ; CHECK-NEXT: $d0 = COPY %res(s64) ; CHECK-NEXT: RET_ReallyLR implicit $d0 %a:_(s64) = G_FCONSTANT double 2.5 %res:_(s64) = G_FCEIL %a $d0 = COPY %res(s64) RET_ReallyLR implicit $d0 ... --- name: fceil_negative body: | bb.0: ; CHECK-LABEL: name: fceil_negative ; CHECK: %res:_(s64) = G_FCONSTANT double -2.000000e+00 ; CHECK-NEXT: $d0 = COPY %res(s64) ; CHECK-NEXT: RET_ReallyLR implicit $d0 %a:_(s64) = G_FCONSTANT double -2.5 %res:_(s64) = G_FCEIL %a $d0 = COPY %res(s64) RET_ReallyLR implicit $d0 ... --- name: ffloor body: | bb.0: ; CHECK-LABEL: name: ffloor ; CHECK: %res:_(s64) = G_FCONSTANT double 2.000000e+00 ; CHECK-NEXT: $d0 = COPY %res(s64) ; CHECK-NEXT: RET_ReallyLR implicit $d0 %a:_(s64) = G_FCONSTANT double 2.5 %res:_(s64) = G_FFLOOR %a $d0 = COPY %res(s64) RET_ReallyLR implicit $d0 ... --- name: ffloor_negative body: | bb.0: ; CHECK-LABEL: name: ffloor_negative ; CHECK: %res:_(s64) = G_FCONSTANT double -3.000000e+00 ; CHECK-NEXT: $d0 = COPY %res(s64) ; CHECK-NEXT: RET_ReallyLR implicit $d0 %a:_(s64) = G_FCONSTANT double -2.5 %res:_(s64) = G_FFLOOR %a $d0 = COPY %res(s64) RET_ReallyLR implicit $d0 ... --- name: intrinsic_trunc body: | bb.0: ; CHECK-LABEL: name: intrinsic_trunc ; CHECK: %res:_(s64) = G_FCONSTANT double 2.000000e+00 ; CHECK-NEXT: $d0 = COPY %res(s64) ; CHECK-NEXT: RET_ReallyLR implicit $d0 %a:_(s64) = G_FCONSTANT double 2.7 %res:_(s64) = G_INTRINSIC_TRUNC %a $d0 = COPY %res(s64) RET_ReallyLR implicit $d0 ... --- name: intrinsic_trunc_negative body: | bb.0: ; CHECK-LABEL: name: intrinsic_trunc_negative ; CHECK: %res:_(s64) = G_FCONSTANT double -2.000000e+00 ; CHECK-NEXT: $d0 = COPY %res(s64) ; CHECK-NEXT: RET_ReallyLR implicit $d0 %a:_(s64) = G_FCONSTANT double -2.7 %res:_(s64) = G_INTRINSIC_TRUNC %a $d0 = COPY %res(s64) RET_ReallyLR implicit $d0 ... --- name: intrinsic_round body: | bb.0: ; CHECK-LABEL: name: intrinsic_round ; CHECK: %res:_(s64) = G_FCONSTANT double 3.000000e+00 ; CHECK-NEXT: $d0 = COPY %res(s64) ; CHECK-NEXT: RET_ReallyLR implicit $d0 %a:_(s64) = G_FCONSTANT double 2.5 %res:_(s64) = G_INTRINSIC_ROUND %a $d0 = COPY %res(s64) RET_ReallyLR implicit $d0 ... --- name: intrinsic_roundeven body: | bb.0: ; CHECK-LABEL: name: intrinsic_roundeven ; CHECK: %res:_(s64) = G_FCONSTANT double 2.000000e+00 ; CHECK-NEXT: $d0 = COPY %res(s64) ; CHECK-NEXT: RET_ReallyLR implicit $d0 %a:_(s64) = G_FCONSTANT double 2.5 %res:_(s64) = G_INTRINSIC_ROUNDEVEN %a $d0 = COPY %res(s64) RET_ReallyLR implicit $d0 ... --- name: intrinsic_roundeven_odd body: | bb.0: ; CHECK-LABEL: name: intrinsic_roundeven_odd ; CHECK: %res:_(s64) = G_FCONSTANT double 4.000000e+00 ; CHECK-NEXT: $d0 = COPY %res(s64) ; CHECK-NEXT: RET_ReallyLR implicit $d0 %a:_(s64) = G_FCONSTANT double 3.5 %res:_(s64) = G_INTRINSIC_ROUNDEVEN %a $d0 = COPY %res(s64) RET_ReallyLR implicit $d0 ... --- name: frint body: | bb.0: ; CHECK-LABEL: name: frint ; CHECK: %res:_(s64) = G_FCONSTANT double 2.000000e+00 ; CHECK-NEXT: $d0 = COPY %res(s64) ; CHECK-NEXT: RET_ReallyLR implicit $d0 %a:_(s64) = G_FCONSTANT double 2.5 %res:_(s64) = G_FRINT %a $d0 = COPY %res(s64) RET_ReallyLR implicit $d0 ... --- name: fnearbyint body: | bb.0: ; CHECK-LABEL: name: fnearbyint ; CHECK: %res:_(s64) = G_FCONSTANT double 2.000000e+00 ; CHECK-NEXT: $d0 = COPY %res(s64) ; CHECK-NEXT: RET_ReallyLR implicit $d0 %a:_(s64) = G_FCONSTANT double 2.5 %res:_(s64) = G_FNEARBYINT %a $d0 = COPY %res(s64) RET_ReallyLR implicit $d0 ...