From bf967a28517085ed872febd351cd124f45c467d7 Mon Sep 17 00:00:00 2001 From: Pirama Arumuga Nainar Date: Thu, 22 Oct 2015 14:15:00 +0000 Subject: [PATCH] Fix incorrect target triple in fp16-promote.ll Summary: Hyphens were missing from the triple, causing it to be parsed incorrectly. This patch updates the triple and makes necessary changes to the expected output. Patch is from Vinicius Tinti. Reviewers: ab, tinti Subscribers: srhines, llvm-commits Differential Revision: http://reviews.llvm.org/D13792 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251020 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/ARM/fp16-promote.ll | 195 ++++++++++++++++--------------- 1 file changed, 99 insertions(+), 96 deletions(-) diff --git a/test/CodeGen/ARM/fp16-promote.ll b/test/CodeGen/ARM/fp16-promote.ll index e691c2bb8a9..0352e5e2a79 100644 --- a/test/CodeGen/ARM/fp16-promote.ll +++ b/test/CodeGen/ARM/fp16-promote.ll @@ -2,7 +2,7 @@ ; RUN: llc -asm-verbose=false < %s | FileCheck %s -check-prefix=CHECK-LIBCALL -check-prefix=CHECK-ALL target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32" -target triple = "armv7-eabihf" +target triple = "armv7---eabihf" ; CHECK-FP16-LABEL: test_fadd: ; CHECK-FP16: vcvtb.f32.f16 @@ -10,10 +10,10 @@ target triple = "armv7-eabihf" ; CHECK-FP16: vadd.f32 ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_fadd: -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vadd.f32 -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_fadd(half* %p, half* %q) #0 { %a = load half, half* %p, align 2 %b = load half, half* %q, align 2 @@ -28,10 +28,10 @@ define void @test_fadd(half* %p, half* %q) #0 { ; CHECK-FP16: vsub.f32 ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_fsub: -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vsub.f32 -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_fsub(half* %p, half* %q) #0 { %a = load half, half* %p, align 2 %b = load half, half* %q, align 2 @@ -46,10 +46,10 @@ define void @test_fsub(half* %p, half* %q) #0 { ; CHECK-FP16: vmul.f32 ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_fmul -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vmul.f32 -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_fmul(half* %p, half* %q) #0 { %a = load half, half* %p, align 2 %b = load half, half* %q, align 2 @@ -64,10 +64,10 @@ define void @test_fmul(half* %p, half* %q) #0 { ; CHECK-FP16: vdiv.f32 ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_fdiv -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vdiv.f32 -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_fdiv(half* %p, half* %q) #0 { %a = load half, half* %p, align 2 %b = load half, half* %q, align 2 @@ -82,10 +82,10 @@ define void @test_fdiv(half* %p, half* %q) #0 { ; CHECK-FP16: bl fmodf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_frem -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl fmodf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_frem(half* %p, half* %q) #0 { %a = load half, half* %p, align 2 %b = load half, half* %q, align 2 @@ -112,6 +112,7 @@ declare half @test_callee(half %a, half %b) #0 ; CHECK-ALL-LABEL: test_call: ; CHECK-ALL-NEXT: .fnstart +; CHECK-ALL-NEXT: .save {r11, lr} ; CHECK-ALL-NEXT: push {r11, lr} ; CHECK-ALL-NEXT: bl test_callee ; CHECK-ALL-NEXT: pop {r11, pc} @@ -122,10 +123,11 @@ define half @test_call(half %a, half %b) #0 { ; CHECK-ALL-LABEL: test_call_flipped: ; CHECK-ALL-NEXT: .fnstart +; CHECK-ALL-NEXT: .save {r11, lr} ; CHECK-ALL-NEXT: push {r11, lr} -; CHECK-ALL-NEXT: mov r2, r0 -; CHECK-ALL-NEXT: mov r0, r1 -; CHECK-ALL-NEXT: mov r1, r2 +; CHECK-ALL-NEXT: vmov.f32 s2, s0 +; CHECK-ALL-NEXT: vmov.f32 s0, s1 +; CHECK-ALL-NEXT: vmov.f32 s1, s2 ; CHECK-ALL-NEXT: bl test_callee ; CHECK-ALL-NEXT: pop {r11, pc} define half @test_call_flipped(half %a, half %b) #0 { @@ -135,9 +137,9 @@ define half @test_call_flipped(half %a, half %b) #0 { ; CHECK-ALL-LABEL: test_tailcall_flipped: ; CHECK-ALL-NEXT: .fnstart -; CHECK-ALL-NEXT: mov r2, r0 -; CHECK-ALL-NEXT: mov r0, r1 -; CHECK-ALL-NEXT: mov r1, r2 +; CHECK-ALL-NEXT: vmov.f32 s2, s0 +; CHECK-ALL-NEXT: vmov.f32 s0, s1 +; CHECK-ALL-NEXT: vmov.f32 s1, s2 ; CHECK-ALL-NEXT: b test_callee define half @test_tailcall_flipped(half %a, half %b) #0 { %r = tail call half @test_callee(half %b, half %a) @@ -170,8 +172,8 @@ define void @test_select(half* %p, half* %q, i1 zeroext %c) #0 { ; CHECK-FP16: vmrs APSR_nzcv, fpscr ; CHECK-FP16: movwne ; CHECK-LIBCALL-LABEL: test_fcmp_une: -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vcmpe.f32 ; CHECK-LIBCALL: movwne define i1 @test_fcmp_une(half* %p, half* %q) #0 { @@ -189,8 +191,8 @@ define i1 @test_fcmp_une(half* %p, half* %q) #0 { ; CHECK-FP16: movweq ; CHECK-FP16: movwvs ; CHECK-LIBCALL-LABEL: test_fcmp_ueq: -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vcmpe.f32 ; CHECK-LIBCALL: movweq define i1 @test_fcmp_ueq(half* %p, half* %q) #0 { @@ -208,8 +210,8 @@ define i1 @test_fcmp_ueq(half* %p, half* %q) #0 { ; CHECK-FP16: strmi ; CHECK-FP16: strpl ; CHECK-LIBCALL-LABEL: test_br_cc: -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vcmpe.f32 ; CHECK-LIBCALL: strmi ; CHECK-LIBCALL: strpl @@ -235,12 +237,12 @@ declare i1 @test_dummy(half* %p) #0 ; CHECK-FP16: bne [[LOOP]] ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_phi: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: [[LOOP:.LBB[1-9_]+]]: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl test_dummy ; CHECK-LIBCALL: bne [[LOOP]] -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_phi(half* %p) #0 { entry: %a = load half, half* %p @@ -259,7 +261,7 @@ return: ; CHECK-FP16: vcvtb.f32.f16 ; CHECK-FP16: vcvt.s32.f32 ; CHECK-LIBCALL-LABEL: test_fptosi_i32: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vcvt.s32.f32 define i32 @test_fptosi_i32(half* %p) #0 { %a = load half, half* %p, align 2 @@ -271,7 +273,7 @@ define i32 @test_fptosi_i32(half* %p) #0 { ; CHECK-FP16: vcvtb.f32.f16 ; CHECK-FP16: bl __aeabi_f2lz ; CHECK-LIBCALL-LABEL: test_fptosi_i64: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl __aeabi_f2lz define i64 @test_fptosi_i64(half* %p) #0 { %a = load half, half* %p, align 2 @@ -283,7 +285,7 @@ define i64 @test_fptosi_i64(half* %p) #0 { ; CHECK-FP16: vcvtb.f32.f16 ; CHECK-FP16: vcvt.u32.f32 ; CHECK-LIBCALL-LABEL: test_fptoui_i32: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vcvt.u32.f32 define i32 @test_fptoui_i32(half* %p) #0 { %a = load half, half* %p, align 2 @@ -295,7 +297,7 @@ define i32 @test_fptoui_i32(half* %p) #0 { ; CHECK-FP16: vcvtb.f32.f16 ; CHECK-FP16: bl __aeabi_f2ulz ; CHECK-LIBCALL-LABEL: test_fptoui_i64: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl __aeabi_f2ulz define i64 @test_fptoui_i64(half* %p) #0 { %a = load half, half* %p, align 2 @@ -308,7 +310,7 @@ define i64 @test_fptoui_i64(half* %p) #0 { ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_sitofp_i32: ; CHECK-LIBCALL: vcvt.f32.s32 -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_sitofp_i32(i32 %a, half* %p) #0 { %r = sitofp i32 %a to half store half %r, half* %p @@ -320,7 +322,7 @@ define void @test_sitofp_i32(i32 %a, half* %p) #0 { ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_uitofp_i32: ; CHECK-LIBCALL: vcvt.f32.u32 -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_uitofp_i32(i32 %a, half* %p) #0 { %r = uitofp i32 %a to half store half %r, half* %p @@ -332,7 +334,7 @@ define void @test_uitofp_i32(i32 %a, half* %p) #0 { ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_sitofp_i64: ; CHECK-LIBCALL: bl __aeabi_l2f -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_sitofp_i64(i64 %a, half* %p) #0 { %r = sitofp i64 %a to half store half %r, half* %p @@ -344,7 +346,7 @@ define void @test_sitofp_i64(i64 %a, half* %p) #0 { ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_uitofp_i64: ; CHECK-LIBCALL: bl __aeabi_ul2f -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_uitofp_i64(i64 %a, half* %p) #0 { %r = uitofp i64 %a to half store half %r, half* %p @@ -354,7 +356,7 @@ define void @test_uitofp_i64(i64 %a, half* %p) #0 { ; CHECK-FP16-LABEL: test_fptrunc_float: ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_fptrunc_float: -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_fptrunc_float(float %f, half* %p) #0 { %a = fptrunc float %f to half store half %a, half* %p @@ -374,7 +376,7 @@ define void @test_fptrunc_double(double %d, half* %p) #0 { ; CHECK-FP16-LABEL: test_fpextend_float: ; CHECK-FP16: vcvtb.f32.f16 ; CHECK-LIBCALL-LABEL: test_fpextend_float: -; CHECK-LIBCALL: b __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f define float @test_fpextend_float(half* %p) { %a = load half, half* %p, align 2 %r = fpext half %a to float @@ -385,7 +387,7 @@ define float @test_fpextend_float(half* %p) { ; CHECK-FP16: vcvtb.f32.f16 ; CHECK-FP16: vcvt.f64.f32 ; CHECK-LIBCALL-LABEL: test_fpextend_double: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vcvt.f64.f32 define double @test_fpextend_double(half* %p) { %a = load half, half* %p, align 2 @@ -441,9 +443,9 @@ declare half @llvm.fmuladd.f16(half %a, half %b, half %c) #0 ; CHECK-FP16: vsqrt.f32 ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_sqrt: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vsqrt.f32 -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_sqrt(half* %p) #0 { %a = load half, half* %p, align 2 %r = call half @llvm.sqrt.f16(half %a) @@ -456,9 +458,9 @@ define void @test_sqrt(half* %p) #0 { ; CHECK-FP16: bl __powisf2 ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_fpowi: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl __powisf2 -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_fpowi(half* %p, i32 %b) #0 { %a = load half, half* %p, align 2 %r = call half @llvm.powi.f16(half %a, i32 %b) @@ -471,9 +473,9 @@ define void @test_fpowi(half* %p, i32 %b) #0 { ; CHECK-FP16: bl sinf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_sin: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl sinf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_sin(half* %p) #0 { %a = load half, half* %p, align 2 %r = call half @llvm.sin.f16(half %a) @@ -486,9 +488,9 @@ define void @test_sin(half* %p) #0 { ; CHECK-FP16: bl cosf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_cos: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl cosf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_cos(half* %p) #0 { %a = load half, half* %p, align 2 %r = call half @llvm.cos.f16(half %a) @@ -502,10 +504,10 @@ define void @test_cos(half* %p) #0 { ; CHECK-FP16: bl powf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_pow: -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl powf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_pow(half* %p, half* %q) #0 { %a = load half, half* %p, align 2 %b = load half, half* %q, align 2 @@ -519,9 +521,9 @@ define void @test_pow(half* %p, half* %q) #0 { ; CHECK-FP16: bl expf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_exp: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl expf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_exp(half* %p) #0 { %a = load half, half* %p, align 2 %r = call half @llvm.exp.f16(half %a) @@ -534,9 +536,9 @@ define void @test_exp(half* %p) #0 { ; CHECK-FP16: bl exp2f ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_exp2: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl exp2f -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_exp2(half* %p) #0 { %a = load half, half* %p, align 2 %r = call half @llvm.exp2.f16(half %a) @@ -549,9 +551,9 @@ define void @test_exp2(half* %p) #0 { ; CHECK-FP16: bl logf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_log: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl logf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_log(half* %p) #0 { %a = load half, half* %p, align 2 %r = call half @llvm.log.f16(half %a) @@ -564,9 +566,9 @@ define void @test_log(half* %p) #0 { ; CHECK-FP16: bl log10f ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_log10: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl log10f -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_log10(half* %p) #0 { %a = load half, half* %p, align 2 %r = call half @llvm.log10.f16(half %a) @@ -579,9 +581,9 @@ define void @test_log10(half* %p) #0 { ; CHECK-FP16: bl log2f ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_log2: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl log2f -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_log2(half* %p) #0 { %a = load half, half* %p, align 2 %r = call half @llvm.log2.f16(half %a) @@ -596,11 +598,11 @@ define void @test_log2(half* %p) #0 { ; CHECK-FP16: bl fmaf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_fma: -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl fmaf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_fma(half* %p, half* %q, half* %r) #0 { %a = load half, half* %p, align 2 %b = load half, half* %q, align 2 @@ -615,9 +617,9 @@ define void @test_fma(half* %p, half* %q, half* %r) #0 { ; CHECK-FP16: vabs.f32 ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_fabs: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bfc -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_fabs(half* %p) { %a = load half, half* %p, align 2 %r = call half @llvm.fabs.f16(half %a) @@ -631,10 +633,10 @@ define void @test_fabs(half* %p) { ; CHECK-FP16: bl fminf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_minnum: -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl fminf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_minnum(half* %p, half* %q) #0 { %a = load half, half* %p, align 2 %b = load half, half* %q, align 2 @@ -649,10 +651,10 @@ define void @test_minnum(half* %p, half* %q) #0 { ; CHECK-FP16: bl fmaxf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_maxnum: -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl fmaxf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_maxnum(half* %p, half* %q) #0 { %a = load half, half* %p, align 2 %b = load half, half* %q, align 2 @@ -667,10 +669,10 @@ define void @test_maxnum(half* %p, half* %q) #0 { ; CHECK-FP16: vbsl ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_copysign: -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vbsl -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_copysign(half* %p, half* %q) #0 { %a = load half, half* %p, align 2 %b = load half, half* %q, align 2 @@ -684,9 +686,9 @@ define void @test_copysign(half* %p, half* %q) #0 { ; CHECK-FP16: bl floorf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_floor: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl floorf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_floor(half* %p) { %a = load half, half* %p, align 2 %r = call half @llvm.floor.f16(half %a) @@ -699,9 +701,9 @@ define void @test_floor(half* %p) { ; CHECK-FP16: bl ceilf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_ceil: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl ceilf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_ceil(half* %p) { %a = load half, half* %p, align 2 %r = call half @llvm.ceil.f16(half %a) @@ -714,9 +716,9 @@ define void @test_ceil(half* %p) { ; CHECK-FP16: bl truncf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_trunc: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl truncf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_trunc(half* %p) { %a = load half, half* %p, align 2 %r = call half @llvm.trunc.f16(half %a) @@ -729,9 +731,9 @@ define void @test_trunc(half* %p) { ; CHECK-FP16: bl rintf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_rint: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl rintf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_rint(half* %p) { %a = load half, half* %p, align 2 %r = call half @llvm.rint.f16(half %a) @@ -744,9 +746,9 @@ define void @test_rint(half* %p) { ; CHECK-FP16: bl nearbyintf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_nearbyint: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl nearbyintf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_nearbyint(half* %p) { %a = load half, half* %p, align 2 %r = call half @llvm.nearbyint.f16(half %a) @@ -759,9 +761,9 @@ define void @test_nearbyint(half* %p) { ; CHECK-FP16: bl roundf ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_round: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: bl roundf -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_round(half* %p) { %a = load half, half* %p, align 2 %r = call half @llvm.round.f16(half %a) @@ -776,11 +778,11 @@ define void @test_round(half* %p) { ; CHECK-FP16: vmla.f32 ; CHECK-FP16: vcvtb.f16.f32 ; CHECK-LIBCALL-LABEL: test_fmuladd: -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f +; CHECK-LIBCALL: bl __aeabi_h2f ; CHECK-LIBCALL: vmla.f32 -; CHECK-LIBCALL: bl __gnu_f2h_ieee +; CHECK-LIBCALL: bl __aeabi_f2h define void @test_fmuladd(half* %p, half* %q, half* %r) #0 { %a = load half, half* %p, align 2 %b = load half, half* %q, align 2 @@ -796,6 +798,7 @@ define void @test_fmuladd(half* %p, half* %q, half* %r) #0 { ; CHECK-ALL-LABEL: test_insertelement: ; CHECK-ALL-NEXT: .fnstart +; CHECK-ALL-NEXT: .pad #8 ; CHECK-ALL-NEXT: sub sp, sp, #8 ; CHECK-ALL-NEXT: ldrh ; CHECK-ALL-NEXT: strh @@ -829,6 +832,7 @@ define void @test_insertelement(half* %p, <4 x half>* %q, i32 %i) #0 { ; CHECK-ALL-LABEL: test_extractelement: ; CHECK-ALL-NEXT: .fnstart +; CHECK-ALL-NEXT: .pad #8 ; CHECK-ALL-NEXT: sub sp, sp, #8 ; CHECK-ALL-NEXT: ldrh ; CHECK-ALL-NEXT: ldrh @@ -885,7 +889,7 @@ define void @test_extractvalue(%struct.dummy* %p, half* %q) { ; CHECK-FP16-LABEL: test_struct_return: ; CHECK-FP16: vcvtb.f32.f16 ; CHECK-LIBCALL-LABEL: test_struct_return: -; CHECK-LIBCALL: bl __gnu_h2f_ieee +; CHECK-LIBCALL: bl __aeabi_h2f define %struct.dummy @test_struct_return(%struct.dummy* %p) { %a = load %struct.dummy, %struct.dummy* %p ret %struct.dummy %a @@ -893,7 +897,6 @@ define %struct.dummy @test_struct_return(%struct.dummy* %p) { ; CHECK-ALL-LABEL: test_struct_arg: ; CHECK-ALL-NEXT: .fnstart -; CHECK-ALL-NEXT: mov r0, r1 ; CHECK-ALL-NEXT: bx lr define half @test_struct_arg(%struct.dummy %p) { %a = extractvalue %struct.dummy %p, 1 -- 2.34.1