132 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -verify-machineinstrs -mtriple=aarch64 < %s | FileCheck %s3 4define void @f32_to_u8(float %f, ptr %dst) {5; CHECK-LABEL: f32_to_u8:6; CHECK: // %bb.0: // %entry7; CHECK-NEXT: fcvtzu s0, s08; CHECK-NEXT: str b0, [x0]9; CHECK-NEXT: ret10entry:11 %conv = fptoui float %f to i3212 %trunc = trunc i32 %conv to i813 store i8 %trunc, ptr %dst14 ret void15}16 17define void @f32_to_s8(float %f, ptr %dst) {18; CHECK-LABEL: f32_to_s8:19; CHECK: // %bb.0: // %entry20; CHECK-NEXT: fcvtzs s0, s021; CHECK-NEXT: str b0, [x0]22; CHECK-NEXT: ret23entry:24 %conv = fptosi float %f to i3225 %trunc = trunc i32 %conv to i826 store i8 %trunc, ptr %dst27 ret void28}29 30define void @f32_to_u16(float %f, ptr %dst) {31; CHECK-LABEL: f32_to_u16:32; CHECK: // %bb.0: // %entry33; CHECK-NEXT: fcvtzu s0, s034; CHECK-NEXT: str h0, [x0]35; CHECK-NEXT: ret36entry:37 %conv = fptoui float %f to i3238 %trunc = trunc i32 %conv to i1639 store i16 %trunc, ptr %dst40 ret void41}42 43define void @f32_to_s16(float %f, ptr %dst) {44; CHECK-LABEL: f32_to_s16:45; CHECK: // %bb.0: // %entry46; CHECK-NEXT: fcvtzs s0, s047; CHECK-NEXT: str h0, [x0]48; CHECK-NEXT: ret49entry:50 %conv = fptosi float %f to i3251 %trunc = trunc i32 %conv to i1652 store i16 %trunc, ptr %dst53 ret void54}55 56define void @f32_to_u32(float %f, ptr %dst) {57; CHECK-LABEL: f32_to_u32:58; CHECK: // %bb.0: // %entry59; CHECK-NEXT: fcvtzu s0, s060; CHECK-NEXT: str s0, [x0]61; CHECK-NEXT: ret62entry:63 %conv = fptoui float %f to i3264 store i32 %conv, ptr %dst65 ret void66}67 68define void @f32_to_s32(float %f, ptr %dst) {69; CHECK-LABEL: f32_to_s32:70; CHECK: // %bb.0: // %entry71; CHECK-NEXT: fcvtzs s0, s072; CHECK-NEXT: str s0, [x0]73; CHECK-NEXT: ret74entry:75 %conv = fptosi float %f to i3276 store i32 %conv, ptr %dst77 ret void78}79 80define void @f32_to_s64(float %f, ptr %dst) {81; CHECK-LABEL: f32_to_s64:82; CHECK: // %bb.0: // %entry83; CHECK-NEXT: fcvtzs w8, s084; CHECK-NEXT: sxtw x8, w885; CHECK-NEXT: str x8, [x0]86; CHECK-NEXT: ret87entry:88 %conv = fptosi float %f to i3289 %ext = sext i32 %conv to i6490 store i64 %ext, ptr %dst91 ret void92}93 94define void @f64_to_u64(double %d, ptr %dst) {95; CHECK-LABEL: f64_to_u64:96; CHECK: // %bb.0: // %entry97; CHECK-NEXT: fcvtzu d0, d098; CHECK-NEXT: str d0, [x0]99; CHECK-NEXT: ret100entry:101 %conv = fptoui double %d to i64102 store i64 %conv, ptr %dst103 ret void104}105 106define void @f64_to_s64(double %d, ptr %dst) {107; CHECK-LABEL: f64_to_s64:108; CHECK: // %bb.0: // %entry109; CHECK-NEXT: fcvtzs d0, d0110; CHECK-NEXT: str d0, [x0]111; CHECK-NEXT: ret112entry:113 %conv = fptosi double %d to i64114 store i64 %conv, ptr %dst115 ret void116}117 118define i32 @f32_to_i32_multiple_uses(float %f, ptr %dst) {119; CHECK-LABEL: f32_to_i32_multiple_uses:120; CHECK: // %bb.0: // %entry121; CHECK-NEXT: fcvtzs w8, s0122; CHECK-NEXT: mov x9, x0123; CHECK-NEXT: mov w0, w8124; CHECK-NEXT: strb w8, [x9]125; CHECK-NEXT: ret126entry:127 %conv = fptosi float %f to i32128 %trunc = trunc i32 %conv to i8129 store i8 %trunc, ptr %dst130 ret i32 %conv131}132