diff options
Diffstat (limited to 'llvm/test/CodeGen/AArch64/f16-instructions.ll')
-rw-r--r-- | llvm/test/CodeGen/AArch64/f16-instructions.ll | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/llvm/test/CodeGen/AArch64/f16-instructions.ll b/llvm/test/CodeGen/AArch64/f16-instructions.ll index 04d9917dd27..df673aa6616 100644 --- a/llvm/test/CodeGen/AArch64/f16-instructions.ll +++ b/llvm/test/CodeGen/AArch64/f16-instructions.ll @@ -4,13 +4,13 @@ ; RUN: llc < %s -mtriple aarch64-unknown-unknown -aarch64-neon-syntax=apple \ ; RUN: -asm-verbose=false -disable-post-ra -frame-pointer=all -global-isel \ ; RUN: -global-isel-abort=2 -pass-remarks-missed=gisel-* 2>&1 | FileCheck %s \ -; RUN: --check-prefixes=FALLBACK,GISEL-CVT +; RUN: --check-prefixes=FALLBACK,GISEL-CVT,GISEL ; RUN: llc < %s -mtriple aarch64-unknown-unknown -mattr=+fullfp16 \ ; RUN: -aarch64-neon-syntax=apple -asm-verbose=false -disable-post-ra \ ; RUN: -frame-pointer=all -global-isel -global-isel-abort=2 \ ; RUN: -pass-remarks-missed=gisel-* 2>&1 | FileCheck %s \ -; RUN: --check-prefixes=FALLBACK-FP16,GISEL-FP16 +; RUN: --check-prefixes=FALLBACK-FP16,GISEL-FP16,GISEL target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" @@ -809,6 +809,9 @@ define half @test_powi(half %a, i32 %b) #0 { ret half %r } +; FALLBACK-NOT: remark:{{.*}}test_sin +; FALLBACK-FP16-NOT: remark:{{.*}}test_sin + ; CHECK-COMMON-LABEL: test_sin: ; CHECK-COMMON-NEXT: stp x29, x30, [sp, #-16]! ; CHECK-COMMON-NEXT: mov x29, sp @@ -817,11 +820,23 @@ define half @test_powi(half %a, i32 %b) #0 { ; CHECK-COMMON-NEXT: fcvt h0, s0 ; CHECK-COMMON-NEXT: ldp x29, x30, [sp], #16 ; CHECK-COMMON-NEXT: ret + +; GISEL-LABEL: test_sin: +; GISEL-NEXT: stp x29, x30, [sp, #-16]! +; GISEL-NEXT: mov x29, sp +; GISEL-NEXT: fcvt s0, h0 +; GISEL-NEXT: bl {{_?}}sinf +; GISEL-NEXT: fcvt h0, s0 +; GISEL-NEXT: ldp x29, x30, [sp], #16 +; GISEL-NEXT: ret define half @test_sin(half %a) #0 { %r = call half @llvm.sin.f16(half %a) ret half %r } +; FALLBACK-NOT: remark:{{.*}}test_cos +; FALLBACK-FP16-NOT: remark:{{.*}}test_cos + ; CHECK-COMMON-LABEL: test_cos: ; CHECK-COMMON-NEXT: stp x29, x30, [sp, #-16]! ; CHECK-COMMON-NEXT: mov x29, sp @@ -830,6 +845,15 @@ define half @test_sin(half %a) #0 { ; CHECK-COMMON-NEXT: fcvt h0, s0 ; CHECK-COMMON-NEXT: ldp x29, x30, [sp], #16 ; CHECK-COMMON-NEXT: ret + +; GISEL-LABEL: test_cos: +; GISEL-NEXT: stp x29, x30, [sp, #-16]! +; GISEL-NEXT: mov x29, sp +; GISEL-NEXT: fcvt s0, h0 +; GISEL-NEXT: bl {{_?}}cosf +; GISEL-NEXT: fcvt h0, s0 +; GISEL-NEXT: ldp x29, x30, [sp], #16 +; GISEL-NEXT: ret define half @test_cos(half %a) #0 { %r = call half @llvm.cos.f16(half %a) ret half %r |