50 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc < %s -mtriple=aarch64 -mattr=+neon | FileCheck %s --check-prefixes=CHECK,CHECK-SD3; RUN: llc < %s -mtriple=aarch64 -mattr=+neon -global-isel -global-isel-abort=2 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI4 5; CHECK-GI: warning: Instruction selection used fallback path for testmhhs6; CHECK-GI-NEXT: warning: Instruction selection used fallback path for testmhws7; CHECK-GI-NEXT: warning: Instruction selection used fallback path for testmhxs8 9define i16 @testmhhs(half %x) {10; CHECK-LABEL: testmhhs:11; CHECK: // %bb.0: // %entry12; CHECK-NEXT: fcvt s0, h013; CHECK-NEXT: frintx s0, s014; CHECK-NEXT: fcvtzs w0, s015; CHECK-NEXT: ret16entry:17 %0 = tail call i32 @llvm.lrint.i32.f16(half %x)18 %conv = trunc i32 %0 to i1619 ret i16 %conv20}21 22define i32 @testmhws(half %x) {23; CHECK-LABEL: testmhws:24; CHECK: // %bb.0: // %entry25; CHECK-NEXT: fcvt s0, h026; CHECK-NEXT: frintx s0, s027; CHECK-NEXT: fcvtzs w0, s028; CHECK-NEXT: ret29entry:30 %0 = tail call i32 @llvm.lrint.i32.f16(half %x)31 ret i32 %032}33 34define i64 @testmhxs(half %x) {35; CHECK-LABEL: testmhxs:36; CHECK: // %bb.0: // %entry37; CHECK-NEXT: fcvt s0, h038; CHECK-NEXT: frintx s0, s039; CHECK-NEXT: fcvtzs w8, s040; CHECK-NEXT: sxtw x0, w841; CHECK-NEXT: ret42entry:43 %0 = tail call i32 @llvm.lrint.i32.f16(half %x)44 %conv = sext i32 %0 to i6445 ret i64 %conv46}47;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:48; CHECK-GI: {{.*}}49; CHECK-SD: {{.*}}50