Tim Northover | 4e80b58 | 2014-07-18 13:01:19 +0000 | [diff] [blame] | 1 | ; RUN: llc < %s -mtriple=thumbv7-apple-ios7.0 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-OLD |
| 2 | ; RUN: llc < %s -mtriple=thumbv7s-apple-ios7.0 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-F16 |
| 3 | ; RUN: llc < %s -mtriple=thumbv8-apple-ios7.0 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-V8 |
Tim Northover | 20bd0ce | 2014-07-18 12:41:46 +0000 | [diff] [blame] | 4 | |
| 5 | define void @test_load_store(half* %in, half* %out) { |
| 6 | ; CHECK-LABEL: test_load_store: |
| 7 | ; CHECK: ldrh [[TMP:r[0-9]+]], [r0] |
| 8 | ; CHECK: strh [[TMP]], [r1] |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 9 | %val = load half, half* %in |
Tim Northover | 20bd0ce | 2014-07-18 12:41:46 +0000 | [diff] [blame] | 10 | store half %val, half* %out |
| 11 | ret void |
| 12 | } |
| 13 | |
| 14 | define i16 @test_bitcast_from_half(half* %addr) { |
| 15 | ; CHECK-LABEL: test_bitcast_from_half: |
| 16 | ; CHECK: ldrh r0, [r0] |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 17 | %val = load half, half* %addr |
Tim Northover | 20bd0ce | 2014-07-18 12:41:46 +0000 | [diff] [blame] | 18 | %val_int = bitcast half %val to i16 |
| 19 | ret i16 %val_int |
| 20 | } |
| 21 | |
| 22 | define void @test_bitcast_to_half(half* %addr, i16 %in) { |
| 23 | ; CHECK-LABEL: test_bitcast_to_half: |
| 24 | ; CHECK: strh r1, [r0] |
| 25 | %val_fp = bitcast i16 %in to half |
| 26 | store half %val_fp, half* %addr |
| 27 | ret void |
| 28 | } |
Tim Northover | 4e80b58 | 2014-07-18 13:01:19 +0000 | [diff] [blame] | 29 | |
| 30 | define float @test_extend32(half* %addr) { |
| 31 | ; CHECK-LABEL: test_extend32: |
| 32 | |
Ahmed Bougacha | 6402ad2 | 2015-05-14 01:00:51 +0000 | [diff] [blame] | 33 | ; CHECK-OLD: b.w ___extendhfsf2 |
Tim Northover | 4e80b58 | 2014-07-18 13:01:19 +0000 | [diff] [blame] | 34 | ; CHECK-F16: vcvtb.f32.f16 |
| 35 | ; CHECK-V8: vcvtb.f32.f16 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 36 | %val16 = load half, half* %addr |
Tim Northover | 4e80b58 | 2014-07-18 13:01:19 +0000 | [diff] [blame] | 37 | %val32 = fpext half %val16 to float |
| 38 | ret float %val32 |
| 39 | } |
| 40 | |
| 41 | define double @test_extend64(half* %addr) { |
| 42 | ; CHECK-LABEL: test_extend64: |
| 43 | |
Tim Northover | b5ece52 | 2016-05-10 19:17:47 +0000 | [diff] [blame] | 44 | ; CHECK-OLD: bl ___extendhfsf2 |
Tim Northover | 4e80b58 | 2014-07-18 13:01:19 +0000 | [diff] [blame] | 45 | ; CHECK-OLD: vcvt.f64.f32 |
| 46 | ; CHECK-F16: vcvtb.f32.f16 |
| 47 | ; CHECK-F16: vcvt.f64.f32 |
| 48 | ; CHECK-V8: vcvtb.f64.f16 |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 49 | %val16 = load half, half* %addr |
Tim Northover | 4e80b58 | 2014-07-18 13:01:19 +0000 | [diff] [blame] | 50 | %val32 = fpext half %val16 to double |
| 51 | ret double %val32 |
| 52 | } |
| 53 | |
| 54 | define void @test_trunc32(float %in, half* %addr) { |
| 55 | ; CHECK-LABEL: test_trunc32: |
| 56 | |
Tim Northover | b5ece52 | 2016-05-10 19:17:47 +0000 | [diff] [blame] | 57 | ; CHECK-OLD: bl ___truncsfhf2 |
Tim Northover | 4e80b58 | 2014-07-18 13:01:19 +0000 | [diff] [blame] | 58 | ; CHECK-F16: vcvtb.f16.f32 |
| 59 | ; CHECK-V8: vcvtb.f16.f32 |
| 60 | %val16 = fptrunc float %in to half |
| 61 | store half %val16, half* %addr |
| 62 | ret void |
| 63 | } |
| 64 | |
| 65 | define void @test_trunc64(double %in, half* %addr) { |
| 66 | ; CHECK-LABEL: test_trunc64: |
| 67 | |
Tim Northover | b5ece52 | 2016-05-10 19:17:47 +0000 | [diff] [blame] | 68 | ; CHECK-OLD: bl ___truncdfhf2 |
| 69 | ; CHECK-F16: bl ___truncdfhf2 |
Tim Northover | 4e80b58 | 2014-07-18 13:01:19 +0000 | [diff] [blame] | 70 | ; CHECK-V8: vcvtb.f16.f64 |
| 71 | %val16 = fptrunc double %in to half |
| 72 | store half %val16, half* %addr |
| 73 | ret void |
| 74 | } |