blob: e1f1bb429409a499069d9ec2b371d54d60488c45 [file] [log] [blame]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s
define void @_Z10test_truncstore_f64toi32Pjd(ptr %n, double %x) {
; CHECK-LABEL: _Z10test_truncstore_f64toi32Pjd:
; CHECK: // %bb.0:
; CHECK-NEXT: str s0, [x0]
; CHECK-NEXT: ret
%i64 = bitcast double %x to i64
%conv = trunc i64 %i64 to i32
store i32 %conv, ptr %n, align 4
ret void
}
define void @_Z9test_truncstore_f64toi16Ptd(ptr %n, double %x) {
; CHECK-LABEL: _Z9test_truncstore_f64toi16Ptd:
; CHECK: // %bb.0:
; CHECK-NEXT: str h0, [x0]
; CHECK-NEXT: ret
%i64 = bitcast double %x to i64
%conv = trunc i64 %i64 to i16
store i16 %conv, ptr %n, align 2
ret void
}
define void @_Z13test_truncstore_f64toi8Phd(ptr %n, double %x) {
; CHECK-LABEL: _Z13test_truncstore_f64toi8Phd:
; CHECK: // %bb.0:
; CHECK-NEXT: str b0, [x0]
; CHECK-NEXT: ret
%i64 = bitcast double %x to i64
%conv = trunc i64 %i64 to i8
store i8 %conv, ptr %n, align 1
ret void
}
define void @_Z17test_truncstore_f32toi16Ptf(ptr %n, float %x) {
; CHECK-LABEL: _Z17test_truncstore_f32toi16Ptf:
; CHECK: // %bb.0:
; CHECK-NEXT: str h0, [x0]
; CHECK-NEXT: ret
%i32 = bitcast float %x to i32
%conv = trunc i32 %i32 to i16
store i16 %conv, ptr %n, align 2
ret void
}
define void @_Z16test_truncstore_f32toi8Phf(ptr %n, float %x) {
; CHECK-LABEL: _Z16test_truncstore_f32toi8Phf:
; CHECK: // %bb.0:
; CHECK-NEXT: str b0, [x0]
; CHECK-NEXT: ret
%i32 = bitcast float %x to i32
%conv = trunc i32 %i32 to i8
store i8 %conv, ptr %n, align 1
ret void
}
define void @test_truncstore_i64tof32(ptr %n, i64 %x) {
; CHECK-LABEL: test_truncstore_i64tof32:
; CHECK: // %bb.0:
; CHECK-NEXT: fmov d0, x1
; CHECK-NEXT: fcvt s0, d0
; CHECK-NEXT: str s0, [x0]
; CHECK-NEXT: ret
%d = bitcast i64 %x to double
%f = fptrunc double %d to float
store float %f, ptr %n, align 4
ret void
}
define void @test_truncstore_i32tof16(ptr %n, i32 %x) {
; CHECK-LABEL: test_truncstore_i32tof16:
; CHECK: // %bb.0:
; CHECK-NEXT: fmov s0, w1
; CHECK-NEXT: fcvt h0, s0
; CHECK-NEXT: str h0, [x0]
; CHECK-NEXT: ret
%f = bitcast i32 %x to float
%h = fptrunc float %f to half
store half %h, ptr %n, align 2
ret void
}