Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/ARM/fp16.ll @ 100:7d135dc70f03 LLVM 3.9
LLVM 3.9
author | Miyagi Mitsuki <e135756@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 26 Jan 2016 22:53:40 +0900 |
parents | afa8332a0e37 |
children | 1172e4bd9c6f |
comparison
equal
deleted
inserted
replaced
96:6418606d0ead | 100:7d135dc70f03 |
---|---|
1 ; RUN: llc -mtriple=armv7a--none-eabi < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-HARDFLOAT-EABI %s | 1 ; RUN: llc -mtriple=armv7a--none-eabi < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-HARDFLOAT-EABI %s |
2 ; RUN: llc -mtriple=armv7a--none-gnueabi < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-HARDFLOAT-GNU %s | 2 ; RUN: llc -mtriple=armv7a--none-gnueabi < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-HARDFLOAT-GNU %s |
3 ; RUN: llc -mattr=+vfp3,+fp16 < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-FP16 %s | |
4 ; RUN: llc -mtriple=armv8-eabihf < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-ARMV8 %s | 3 ; RUN: llc -mtriple=armv8-eabihf < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-ARMV8 %s |
5 ; RUN: llc -mtriple=thumbv7m-eabi < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-SOFTFLOAT-EABI %s | 4 ; RUN: llc -mtriple=thumbv7m-eabi < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-SOFTFLOAT-EABI %s |
6 ; RUN: llc -mtriple=thumbv7m-gnueabi < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-SOFTFLOAT-GNU %s | 5 ; RUN: llc -mtriple=thumbv7m-gnueabi < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-SOFTFLOAT-GNU %s |
6 | |
7 ;; +fp16 is special: it has f32->f16 (unlike v7), but not f64->f16 (unlike v8). | |
8 ;; This exposes unsafe-fp-math optimization opportunities; test that. | |
9 ; RUN: llc -mattr=+vfp3,+fp16 < %s |\ | |
10 ; RUN: FileCheck --check-prefix=CHECK --check-prefix=CHECK-FP16 --check-prefix=CHECK-FP16-SAFE %s | |
11 ; RUN: llc -mattr=+vfp3,+fp16 < %s -enable-unsafe-fp-math |\ | |
12 ; RUN: FileCheck --check-prefix=CHECK --check-prefix=CHECK-FP16 --check-prefix=CHECK-FP16-UNSAFE %s | |
7 | 13 |
8 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" | 14 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" |
9 target triple = "armv7---eabihf" | 15 target triple = "armv7---eabihf" |
10 | 16 |
11 @x = global i16 12902 | 17 @x = global i16 12902 |
74 %val = call i16 @llvm.convert.to.fp16.f64(double %in) | 80 %val = call i16 @llvm.convert.to.fp16.f64(double %in) |
75 ; CHECK-HARDFLOAT-EABI: bl __aeabi_d2h | 81 ; CHECK-HARDFLOAT-EABI: bl __aeabi_d2h |
76 | 82 |
77 ; CHECK-HARDFLOAT-GNU: bl __aeabi_d2h | 83 ; CHECK-HARDFLOAT-GNU: bl __aeabi_d2h |
78 | 84 |
79 ; CHECK-FP16: bl __aeabi_d2h | 85 ; CHECK-FP16-SAFE: bl __aeabi_d2h |
86 | |
87 ; CHECK-FP16-UNSAFE: vcvt.f32.f64 s0, d0 | |
88 ; CHECK-FP16-UNSAFE-NEXT: vcvtb.f16.f32 s0, s0 | |
80 | 89 |
81 ; CHECK-ARMV8: vcvtb.f16.f64 [[TMP:s[0-9]+]], d0 | 90 ; CHECK-ARMV8: vcvtb.f16.f64 [[TMP:s[0-9]+]], d0 |
82 ; CHECK-ARMV8: vmov r0, [[TMP]] | 91 ; CHECK-ARMV8: vmov r0, [[TMP]] |
83 | 92 |
84 ; CHECK-SOFTFLOAT-EABI: bl __aeabi_d2h | 93 ; CHECK-SOFTFLOAT-EABI: bl __aeabi_d2h |