brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 5442125 Raw
99 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-- < %s | FileCheck %s3 4define i32 @s32_f32_s24_s32(i32 %a) {5; CHECK-LABEL: s32_f32_s24_s32:6; CHECK:       // %bb.0:7; CHECK-NEXT:    sbfx w0, w0, #0, #248; CHECK-NEXT:    ret9  %f = sitofp i32 %a to float10  %i = fptosi float %f to i2411  %r = sext i24 %i to i3212  ret i32 %r13}14 15define i32 @s32_f32_u24_u32(i32 %a) {16; CHECK-LABEL: s32_f32_u24_u32:17; CHECK:       // %bb.0:18; CHECK-NEXT:    and w0, w0, #0xffffff19; CHECK-NEXT:    ret20  %f = sitofp i32 %a to float21  %i = fptoui float %f to i2422  %r = zext i24 %i to i3223  ret i32 %r24}25 26define i32 @u32_f32_s24_s32(i32 %a) {27; CHECK-LABEL: u32_f32_s24_s32:28; CHECK:       // %bb.0:29; CHECK-NEXT:    sbfx w0, w0, #0, #2430; CHECK-NEXT:    ret31  %f = uitofp i32 %a to float32  %i = fptosi float %f to i2433  %r = sext i24 %i to i3234  ret i32 %r35}36 37define i32 @u32_f32_u24_u32(i32 %a) {38; CHECK-LABEL: u32_f32_u24_u32:39; CHECK:       // %bb.0:40; CHECK-NEXT:    and w0, w0, #0xffffff41; CHECK-NEXT:    ret42  %f = uitofp i32 %a to float43  %i = fptoui float %f to i2444  %r = zext i24 %i to i3245  ret i32 %r46}47 48; This requires converting to FP and back.49 50define i32 @s32_f32_s25_s32(i32 %a) {51; CHECK-LABEL: s32_f32_s25_s32:52; CHECK:       // %bb.0:53; CHECK-NEXT:    scvtf s0, w054; CHECK-NEXT:    fcvtzs w0, s055; CHECK-NEXT:    ret56  %f = sitofp i32 %a to float57  %i = fptosi float %f to i2558  %r = sext i25 %i to i3259  ret i32 %r60}61 62define i32 @s32_f32_u25_u32(i32 %a) {63; CHECK-LABEL: s32_f32_u25_u32:64; CHECK:       // %bb.0:65; CHECK-NEXT:    scvtf s0, w066; CHECK-NEXT:    fcvtzs w0, s067; CHECK-NEXT:    ret68  %f = sitofp i32 %a to float69  %i = fptoui float %f to i2570  %r = zext i25 %i to i3271  ret i32 %r72}73 74; TODO: This could avoid converting to FP.75 76define i32 @u32_f32_s25_s32(i32 %a) {77; CHECK-LABEL: u32_f32_s25_s32:78; CHECK:       // %bb.0:79; CHECK-NEXT:    ucvtf s0, w080; CHECK-NEXT:    fcvtzs w0, s081; CHECK-NEXT:    ret82  %f = uitofp i32 %a to float83  %i = fptosi float %f to i2584  %r = sext i25 %i to i3285  ret i32 %r86}87 88define i32 @u32_f32_u25_u32(i32 %a) {89; CHECK-LABEL: u32_f32_u25_u32:90; CHECK:       // %bb.0:91; CHECK-NEXT:    ucvtf s0, w092; CHECK-NEXT:    fcvtzs w0, s093; CHECK-NEXT:    ret94  %f = uitofp i32 %a to float95  %i = fptoui float %f to i2596  %r = zext i25 %i to i3297  ret i32 %r98}99