brintos

brintos / llvm-project-archived public Read only

0
0
Text · 108.7 KiB · 5179f97 Raw
3709 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=thumbv6-none-eabi -float-abi=soft %s -o - | FileCheck %s --check-prefixes=SOFT3; RUN: llc -mtriple=thumbv7-none-eabi -mattr=+vfp2 %s -o - | FileCheck %s --check-prefixes=VFP,VFP24; RUN: llc -mtriple=thumbv8.1m.main-eabi -mattr=+fullfp16,+fp64 %s -o - | FileCheck %s --check-prefixes=VFP,FP165 6;7; 32-bit float to signed integer8;9 10declare   i1 @llvm.fptosi.sat.i1.f32  (float)11declare   i8 @llvm.fptosi.sat.i8.f32  (float)12declare  i13 @llvm.fptosi.sat.i13.f32 (float)13declare  i16 @llvm.fptosi.sat.i16.f32 (float)14declare  i19 @llvm.fptosi.sat.i19.f32 (float)15declare  i32 @llvm.fptosi.sat.i32.f32 (float)16declare  i50 @llvm.fptosi.sat.i50.f32 (float)17declare  i64 @llvm.fptosi.sat.i64.f32 (float)18declare i100 @llvm.fptosi.sat.i100.f32(float)19declare i128 @llvm.fptosi.sat.i128.f32(float)20 21define i1 @test_signed_i1_f32(float %f) nounwind {22; SOFT-LABEL: test_signed_i1_f32:23; SOFT:       @ %bb.0:24; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}25; SOFT-NEXT:    push {r4, r5, r6, r7, lr}26; SOFT-NEXT:    .pad #427; SOFT-NEXT:    sub sp, #428; SOFT-NEXT:    mov r4, r029; SOFT-NEXT:    ldr r1, .LCPI0_030; SOFT-NEXT:    bl __aeabi_fcmpge31; SOFT-NEXT:    mov r7, r032; SOFT-NEXT:    mov r0, r433; SOFT-NEXT:    bl __aeabi_f2iz34; SOFT-NEXT:    movs r5, #035; SOFT-NEXT:    cmp r7, #036; SOFT-NEXT:    beq .LBB0_237; SOFT-NEXT:  @ %bb.1:38; SOFT-NEXT:    mov r6, r039; SOFT-NEXT:    b .LBB0_340; SOFT-NEXT:  .LBB0_2:41; SOFT-NEXT:    mvns r6, r542; SOFT-NEXT:  .LBB0_3:43; SOFT-NEXT:    mov r0, r444; SOFT-NEXT:    mov r1, r545; SOFT-NEXT:    bl __aeabi_fcmpgt46; SOFT-NEXT:    cmp r0, #047; SOFT-NEXT:    mov r7, r548; SOFT-NEXT:    bne .LBB0_549; SOFT-NEXT:  @ %bb.4:50; SOFT-NEXT:    mov r7, r651; SOFT-NEXT:  .LBB0_5:52; SOFT-NEXT:    mov r0, r453; SOFT-NEXT:    mov r1, r454; SOFT-NEXT:    bl __aeabi_fcmpun55; SOFT-NEXT:    cmp r0, #056; SOFT-NEXT:    bne .LBB0_757; SOFT-NEXT:  @ %bb.6:58; SOFT-NEXT:    mov r5, r759; SOFT-NEXT:  .LBB0_7:60; SOFT-NEXT:    mov r0, r561; SOFT-NEXT:    add sp, #462; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}63; SOFT-NEXT:    .p2align 264; SOFT-NEXT:  @ %bb.8:65; SOFT-NEXT:  .LCPI0_0:66; SOFT-NEXT:    .long 3212836864 @ 0xbf80000067;68; VFP2-LABEL: test_signed_i1_f32:69; VFP2:       @ %bb.0:70; VFP2-NEXT:    vmov s2, r071; VFP2-NEXT:    vmov.f32 s0, #-1.000000e+0072; VFP2-NEXT:    vcvt.s32.f32 s4, s273; VFP2-NEXT:    vcmp.f32 s2, s074; VFP2-NEXT:    vmov r0, s475; VFP2-NEXT:    vmrs APSR_nzcv, fpscr76; VFP2-NEXT:    it lt77; VFP2-NEXT:    movlt.w r0, #-178; VFP2-NEXT:    vcmp.f32 s2, #079; VFP2-NEXT:    vmrs APSR_nzcv, fpscr80; VFP2-NEXT:    it gt81; VFP2-NEXT:    movgt r0, #082; VFP2-NEXT:    vcmp.f32 s2, s283; VFP2-NEXT:    vmrs APSR_nzcv, fpscr84; VFP2-NEXT:    it vs85; VFP2-NEXT:    movvs r0, #086; VFP2-NEXT:    bx lr87;88; FP16-LABEL: test_signed_i1_f32:89; FP16:       @ %bb.0:90; FP16-NEXT:    vmov s2, r091; FP16-NEXT:    vldr s4, .LCPI0_092; FP16-NEXT:    vmov.f32 s0, #-1.000000e+0093; FP16-NEXT:    vmaxnm.f32 s0, s2, s094; FP16-NEXT:    vcmp.f32 s2, s295; FP16-NEXT:    vminnm.f32 s0, s0, s496; FP16-NEXT:    vmrs APSR_nzcv, fpscr97; FP16-NEXT:    vcvt.s32.f32 s0, s098; FP16-NEXT:    vmov r0, s099; FP16-NEXT:    it vs100; FP16-NEXT:    movvs r0, #0101; FP16-NEXT:    bx lr102; FP16-NEXT:    .p2align 2103; FP16-NEXT:  @ %bb.1:104; FP16-NEXT:  .LCPI0_0:105; FP16-NEXT:    .long 0x00000000 @ float 0106    %x = call i1 @llvm.fptosi.sat.i1.f32(float %f)107    ret i1 %x108}109 110define i8 @test_signed_i8_f32(float %f) nounwind {111; SOFT-LABEL: test_signed_i8_f32:112; SOFT:       @ %bb.0:113; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}114; SOFT-NEXT:    push {r4, r5, r6, r7, lr}115; SOFT-NEXT:    .pad #4116; SOFT-NEXT:    sub sp, #4117; SOFT-NEXT:    mov r4, r0118; SOFT-NEXT:    movs r0, #195119; SOFT-NEXT:    lsls r1, r0, #24120; SOFT-NEXT:    mov r0, r4121; SOFT-NEXT:    bl __aeabi_fcmpge122; SOFT-NEXT:    mov r7, r0123; SOFT-NEXT:    mov r0, r4124; SOFT-NEXT:    bl __aeabi_f2iz125; SOFT-NEXT:    movs r5, #127126; SOFT-NEXT:    cmp r7, #0127; SOFT-NEXT:    beq .LBB1_2128; SOFT-NEXT:  @ %bb.1:129; SOFT-NEXT:    mov r6, r0130; SOFT-NEXT:    b .LBB1_3131; SOFT-NEXT:  .LBB1_2:132; SOFT-NEXT:    mvns r6, r5133; SOFT-NEXT:  .LBB1_3:134; SOFT-NEXT:    ldr r1, .LCPI1_0135; SOFT-NEXT:    mov r0, r4136; SOFT-NEXT:    bl __aeabi_fcmpgt137; SOFT-NEXT:    cmp r0, #0138; SOFT-NEXT:    bne .LBB1_5139; SOFT-NEXT:  @ %bb.4:140; SOFT-NEXT:    mov r5, r6141; SOFT-NEXT:  .LBB1_5:142; SOFT-NEXT:    mov r0, r4143; SOFT-NEXT:    mov r1, r4144; SOFT-NEXT:    bl __aeabi_fcmpun145; SOFT-NEXT:    cmp r0, #0146; SOFT-NEXT:    beq .LBB1_7147; SOFT-NEXT:  @ %bb.6:148; SOFT-NEXT:    movs r5, #0149; SOFT-NEXT:  .LBB1_7:150; SOFT-NEXT:    mov r0, r5151; SOFT-NEXT:    add sp, #4152; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}153; SOFT-NEXT:    .p2align 2154; SOFT-NEXT:  @ %bb.8:155; SOFT-NEXT:  .LCPI1_0:156; SOFT-NEXT:    .long 1123942400 @ 0x42fe0000157;158; VFP2-LABEL: test_signed_i8_f32:159; VFP2:       @ %bb.0:160; VFP2-NEXT:    vmov s0, r0161; VFP2-NEXT:    vldr s2, .LCPI1_0162; VFP2-NEXT:    vldr s6, .LCPI1_1163; VFP2-NEXT:    vcvt.s32.f32 s4, s0164; VFP2-NEXT:    vcmp.f32 s0, s2165; VFP2-NEXT:    vmrs APSR_nzcv, fpscr166; VFP2-NEXT:    vcmp.f32 s0, s6167; VFP2-NEXT:    vmov r0, s4168; VFP2-NEXT:    it lt169; VFP2-NEXT:    mvnlt r0, #127170; VFP2-NEXT:    vmrs APSR_nzcv, fpscr171; VFP2-NEXT:    it gt172; VFP2-NEXT:    movgt r0, #127173; VFP2-NEXT:    vcmp.f32 s0, s0174; VFP2-NEXT:    vmrs APSR_nzcv, fpscr175; VFP2-NEXT:    it vs176; VFP2-NEXT:    movvs r0, #0177; VFP2-NEXT:    bx lr178; VFP2-NEXT:    .p2align 2179; VFP2-NEXT:  @ %bb.1:180; VFP2-NEXT:  .LCPI1_0:181; VFP2-NEXT:    .long 0xc3000000 @ float -128182; VFP2-NEXT:  .LCPI1_1:183; VFP2-NEXT:    .long 0x42fe0000 @ float 127184;185; FP16-LABEL: test_signed_i8_f32:186; FP16:       @ %bb.0:187; FP16-NEXT:    vldr s0, .LCPI1_0188; FP16-NEXT:    vmov s2, r0189; FP16-NEXT:    vldr s4, .LCPI1_1190; FP16-NEXT:    vmaxnm.f32 s0, s2, s0191; FP16-NEXT:    vcmp.f32 s2, s2192; FP16-NEXT:    vminnm.f32 s0, s0, s4193; FP16-NEXT:    vmrs APSR_nzcv, fpscr194; FP16-NEXT:    vcvt.s32.f32 s0, s0195; FP16-NEXT:    vmov r0, s0196; FP16-NEXT:    it vs197; FP16-NEXT:    movvs r0, #0198; FP16-NEXT:    bx lr199; FP16-NEXT:    .p2align 2200; FP16-NEXT:  @ %bb.1:201; FP16-NEXT:  .LCPI1_0:202; FP16-NEXT:    .long 0xc3000000 @ float -128203; FP16-NEXT:  .LCPI1_1:204; FP16-NEXT:    .long 0x42fe0000 @ float 127205    %x = call i8 @llvm.fptosi.sat.i8.f32(float %f)206    ret i8 %x207}208 209define i13 @test_signed_i13_f32(float %f) nounwind {210; SOFT-LABEL: test_signed_i13_f32:211; SOFT:       @ %bb.0:212; SOFT-NEXT:    .save {r4, r5, r6, lr}213; SOFT-NEXT:    push {r4, r5, r6, lr}214; SOFT-NEXT:    mov r4, r0215; SOFT-NEXT:    ldr r1, .LCPI2_0216; SOFT-NEXT:    bl __aeabi_fcmpge217; SOFT-NEXT:    mov r6, r0218; SOFT-NEXT:    mov r0, r4219; SOFT-NEXT:    bl __aeabi_f2iz220; SOFT-NEXT:    cmp r6, #0221; SOFT-NEXT:    beq .LBB2_2222; SOFT-NEXT:  @ %bb.1:223; SOFT-NEXT:    mov r5, r0224; SOFT-NEXT:    b .LBB2_3225; SOFT-NEXT:  .LBB2_2:226; SOFT-NEXT:    ldr r5, .LCPI2_1227; SOFT-NEXT:  .LBB2_3:228; SOFT-NEXT:    ldr r1, .LCPI2_2229; SOFT-NEXT:    mov r0, r4230; SOFT-NEXT:    bl __aeabi_fcmpgt231; SOFT-NEXT:    cmp r0, #0232; SOFT-NEXT:    beq .LBB2_5233; SOFT-NEXT:  @ %bb.4:234; SOFT-NEXT:    ldr r5, .LCPI2_3235; SOFT-NEXT:  .LBB2_5:236; SOFT-NEXT:    mov r0, r4237; SOFT-NEXT:    mov r1, r4238; SOFT-NEXT:    bl __aeabi_fcmpun239; SOFT-NEXT:    cmp r0, #0240; SOFT-NEXT:    beq .LBB2_7241; SOFT-NEXT:  @ %bb.6:242; SOFT-NEXT:    movs r5, #0243; SOFT-NEXT:  .LBB2_7:244; SOFT-NEXT:    mov r0, r5245; SOFT-NEXT:    pop {r4, r5, r6, pc}246; SOFT-NEXT:    .p2align 2247; SOFT-NEXT:  @ %bb.8:248; SOFT-NEXT:  .LCPI2_0:249; SOFT-NEXT:    .long 3313500160 @ 0xc5800000250; SOFT-NEXT:  .LCPI2_1:251; SOFT-NEXT:    .long 4294963200 @ 0xfffff000252; SOFT-NEXT:  .LCPI2_2:253; SOFT-NEXT:    .long 1166012416 @ 0x457ff000254; SOFT-NEXT:  .LCPI2_3:255; SOFT-NEXT:    .long 4095 @ 0xfff256;257; VFP2-LABEL: test_signed_i13_f32:258; VFP2:       @ %bb.0:259; VFP2-NEXT:    vmov s0, r0260; VFP2-NEXT:    vldr s2, .LCPI2_0261; VFP2-NEXT:    vldr s6, .LCPI2_1262; VFP2-NEXT:    vcvt.s32.f32 s4, s0263; VFP2-NEXT:    vcmp.f32 s0, s2264; VFP2-NEXT:    vmrs APSR_nzcv, fpscr265; VFP2-NEXT:    vcmp.f32 s0, s6266; VFP2-NEXT:    vmov r0, s4267; VFP2-NEXT:    itt lt268; VFP2-NEXT:    movwlt r0, #61440269; VFP2-NEXT:    movtlt r0, #65535270; VFP2-NEXT:    vmrs APSR_nzcv, fpscr271; VFP2-NEXT:    it gt272; VFP2-NEXT:    movwgt r0, #4095273; VFP2-NEXT:    vcmp.f32 s0, s0274; VFP2-NEXT:    vmrs APSR_nzcv, fpscr275; VFP2-NEXT:    it vs276; VFP2-NEXT:    movvs r0, #0277; VFP2-NEXT:    bx lr278; VFP2-NEXT:    .p2align 2279; VFP2-NEXT:  @ %bb.1:280; VFP2-NEXT:  .LCPI2_0:281; VFP2-NEXT:    .long 0xc5800000 @ float -4096282; VFP2-NEXT:  .LCPI2_1:283; VFP2-NEXT:    .long 0x457ff000 @ float 4095284;285; FP16-LABEL: test_signed_i13_f32:286; FP16:       @ %bb.0:287; FP16-NEXT:    vldr s0, .LCPI2_0288; FP16-NEXT:    vmov s2, r0289; FP16-NEXT:    vldr s4, .LCPI2_1290; FP16-NEXT:    vmaxnm.f32 s0, s2, s0291; FP16-NEXT:    vcmp.f32 s2, s2292; FP16-NEXT:    vminnm.f32 s0, s0, s4293; FP16-NEXT:    vmrs APSR_nzcv, fpscr294; FP16-NEXT:    vcvt.s32.f32 s0, s0295; FP16-NEXT:    vmov r0, s0296; FP16-NEXT:    it vs297; FP16-NEXT:    movvs r0, #0298; FP16-NEXT:    bx lr299; FP16-NEXT:    .p2align 2300; FP16-NEXT:  @ %bb.1:301; FP16-NEXT:  .LCPI2_0:302; FP16-NEXT:    .long 0xc5800000 @ float -4096303; FP16-NEXT:  .LCPI2_1:304; FP16-NEXT:    .long 0x457ff000 @ float 4095305    %x = call i13 @llvm.fptosi.sat.i13.f32(float %f)306    ret i13 %x307}308 309define i16 @test_signed_i16_f32(float %f) nounwind {310; SOFT-LABEL: test_signed_i16_f32:311; SOFT:       @ %bb.0:312; SOFT-NEXT:    .save {r4, r5, r6, lr}313; SOFT-NEXT:    push {r4, r5, r6, lr}314; SOFT-NEXT:    mov r4, r0315; SOFT-NEXT:    movs r0, #199316; SOFT-NEXT:    lsls r1, r0, #24317; SOFT-NEXT:    mov r0, r4318; SOFT-NEXT:    bl __aeabi_fcmpge319; SOFT-NEXT:    mov r6, r0320; SOFT-NEXT:    mov r0, r4321; SOFT-NEXT:    bl __aeabi_f2iz322; SOFT-NEXT:    cmp r6, #0323; SOFT-NEXT:    beq .LBB3_2324; SOFT-NEXT:  @ %bb.1:325; SOFT-NEXT:    mov r5, r0326; SOFT-NEXT:    b .LBB3_3327; SOFT-NEXT:  .LBB3_2:328; SOFT-NEXT:    ldr r5, .LCPI3_0329; SOFT-NEXT:  .LBB3_3:330; SOFT-NEXT:    ldr r1, .LCPI3_1331; SOFT-NEXT:    mov r0, r4332; SOFT-NEXT:    bl __aeabi_fcmpgt333; SOFT-NEXT:    cmp r0, #0334; SOFT-NEXT:    beq .LBB3_5335; SOFT-NEXT:  @ %bb.4:336; SOFT-NEXT:    ldr r5, .LCPI3_2337; SOFT-NEXT:  .LBB3_5:338; SOFT-NEXT:    mov r0, r4339; SOFT-NEXT:    mov r1, r4340; SOFT-NEXT:    bl __aeabi_fcmpun341; SOFT-NEXT:    cmp r0, #0342; SOFT-NEXT:    beq .LBB3_7343; SOFT-NEXT:  @ %bb.6:344; SOFT-NEXT:    movs r5, #0345; SOFT-NEXT:  .LBB3_7:346; SOFT-NEXT:    mov r0, r5347; SOFT-NEXT:    pop {r4, r5, r6, pc}348; SOFT-NEXT:    .p2align 2349; SOFT-NEXT:  @ %bb.8:350; SOFT-NEXT:  .LCPI3_0:351; SOFT-NEXT:    .long 4294934528 @ 0xffff8000352; SOFT-NEXT:  .LCPI3_1:353; SOFT-NEXT:    .long 1191181824 @ 0x46fffe00354; SOFT-NEXT:  .LCPI3_2:355; SOFT-NEXT:    .long 32767 @ 0x7fff356;357; VFP2-LABEL: test_signed_i16_f32:358; VFP2:       @ %bb.0:359; VFP2-NEXT:    vmov s0, r0360; VFP2-NEXT:    vldr s2, .LCPI3_0361; VFP2-NEXT:    vldr s6, .LCPI3_1362; VFP2-NEXT:    vcvt.s32.f32 s4, s0363; VFP2-NEXT:    vcmp.f32 s0, s2364; VFP2-NEXT:    vmrs APSR_nzcv, fpscr365; VFP2-NEXT:    vcmp.f32 s0, s6366; VFP2-NEXT:    vmov r0, s4367; VFP2-NEXT:    itt lt368; VFP2-NEXT:    movwlt r0, #32768369; VFP2-NEXT:    movtlt r0, #65535370; VFP2-NEXT:    vmrs APSR_nzcv, fpscr371; VFP2-NEXT:    it gt372; VFP2-NEXT:    movwgt r0, #32767373; VFP2-NEXT:    vcmp.f32 s0, s0374; VFP2-NEXT:    vmrs APSR_nzcv, fpscr375; VFP2-NEXT:    it vs376; VFP2-NEXT:    movvs r0, #0377; VFP2-NEXT:    bx lr378; VFP2-NEXT:    .p2align 2379; VFP2-NEXT:  @ %bb.1:380; VFP2-NEXT:  .LCPI3_0:381; VFP2-NEXT:    .long 0xc7000000 @ float -32768382; VFP2-NEXT:  .LCPI3_1:383; VFP2-NEXT:    .long 0x46fffe00 @ float 32767384;385; FP16-LABEL: test_signed_i16_f32:386; FP16:       @ %bb.0:387; FP16-NEXT:    vldr s0, .LCPI3_0388; FP16-NEXT:    vmov s2, r0389; FP16-NEXT:    vldr s4, .LCPI3_1390; FP16-NEXT:    vmaxnm.f32 s0, s2, s0391; FP16-NEXT:    vcmp.f32 s2, s2392; FP16-NEXT:    vminnm.f32 s0, s0, s4393; FP16-NEXT:    vmrs APSR_nzcv, fpscr394; FP16-NEXT:    vcvt.s32.f32 s0, s0395; FP16-NEXT:    vmov r0, s0396; FP16-NEXT:    it vs397; FP16-NEXT:    movvs r0, #0398; FP16-NEXT:    bx lr399; FP16-NEXT:    .p2align 2400; FP16-NEXT:  @ %bb.1:401; FP16-NEXT:  .LCPI3_0:402; FP16-NEXT:    .long 0xc7000000 @ float -32768403; FP16-NEXT:  .LCPI3_1:404; FP16-NEXT:    .long 0x46fffe00 @ float 32767405    %x = call i16 @llvm.fptosi.sat.i16.f32(float %f)406    ret i16 %x407}408 409define i19 @test_signed_i19_f32(float %f) nounwind {410; SOFT-LABEL: test_signed_i19_f32:411; SOFT:       @ %bb.0:412; SOFT-NEXT:    .save {r4, r5, r6, lr}413; SOFT-NEXT:    push {r4, r5, r6, lr}414; SOFT-NEXT:    mov r4, r0415; SOFT-NEXT:    ldr r1, .LCPI4_0416; SOFT-NEXT:    bl __aeabi_fcmpge417; SOFT-NEXT:    mov r6, r0418; SOFT-NEXT:    mov r0, r4419; SOFT-NEXT:    bl __aeabi_f2iz420; SOFT-NEXT:    cmp r6, #0421; SOFT-NEXT:    beq .LBB4_2422; SOFT-NEXT:  @ %bb.1:423; SOFT-NEXT:    mov r5, r0424; SOFT-NEXT:    b .LBB4_3425; SOFT-NEXT:  .LBB4_2:426; SOFT-NEXT:    ldr r5, .LCPI4_1427; SOFT-NEXT:  .LBB4_3:428; SOFT-NEXT:    ldr r1, .LCPI4_2429; SOFT-NEXT:    mov r0, r4430; SOFT-NEXT:    bl __aeabi_fcmpgt431; SOFT-NEXT:    cmp r0, #0432; SOFT-NEXT:    beq .LBB4_5433; SOFT-NEXT:  @ %bb.4:434; SOFT-NEXT:    ldr r5, .LCPI4_3435; SOFT-NEXT:  .LBB4_5:436; SOFT-NEXT:    mov r0, r4437; SOFT-NEXT:    mov r1, r4438; SOFT-NEXT:    bl __aeabi_fcmpun439; SOFT-NEXT:    cmp r0, #0440; SOFT-NEXT:    beq .LBB4_7441; SOFT-NEXT:  @ %bb.6:442; SOFT-NEXT:    movs r5, #0443; SOFT-NEXT:  .LBB4_7:444; SOFT-NEXT:    mov r0, r5445; SOFT-NEXT:    pop {r4, r5, r6, pc}446; SOFT-NEXT:    .p2align 2447; SOFT-NEXT:  @ %bb.8:448; SOFT-NEXT:  .LCPI4_0:449; SOFT-NEXT:    .long 3363831808 @ 0xc8800000450; SOFT-NEXT:  .LCPI4_1:451; SOFT-NEXT:    .long 4294705152 @ 0xfffc0000452; SOFT-NEXT:  .LCPI4_2:453; SOFT-NEXT:    .long 1216348096 @ 0x487fffc0454; SOFT-NEXT:  .LCPI4_3:455; SOFT-NEXT:    .long 262143 @ 0x3ffff456;457; VFP2-LABEL: test_signed_i19_f32:458; VFP2:       @ %bb.0:459; VFP2-NEXT:    vmov s0, r0460; VFP2-NEXT:    vldr s2, .LCPI4_0461; VFP2-NEXT:    vldr s6, .LCPI4_1462; VFP2-NEXT:    vcvt.s32.f32 s4, s0463; VFP2-NEXT:    vcmp.f32 s0, s2464; VFP2-NEXT:    vmrs APSR_nzcv, fpscr465; VFP2-NEXT:    vcmp.f32 s0, s6466; VFP2-NEXT:    vmov r0, s4467; VFP2-NEXT:    itt lt468; VFP2-NEXT:    movlt r0, #0469; VFP2-NEXT:    movtlt r0, #65532470; VFP2-NEXT:    vmrs APSR_nzcv, fpscr471; VFP2-NEXT:    vcmp.f32 s0, s0472; VFP2-NEXT:    itt gt473; VFP2-NEXT:    movwgt r0, #65535474; VFP2-NEXT:    movtgt r0, #3475; VFP2-NEXT:    vmrs APSR_nzcv, fpscr476; VFP2-NEXT:    it vs477; VFP2-NEXT:    movvs r0, #0478; VFP2-NEXT:    bx lr479; VFP2-NEXT:    .p2align 2480; VFP2-NEXT:  @ %bb.1:481; VFP2-NEXT:  .LCPI4_0:482; VFP2-NEXT:    .long 0xc8800000 @ float -262144483; VFP2-NEXT:  .LCPI4_1:484; VFP2-NEXT:    .long 0x487fffc0 @ float 262143485;486; FP16-LABEL: test_signed_i19_f32:487; FP16:       @ %bb.0:488; FP16-NEXT:    vldr s0, .LCPI4_0489; FP16-NEXT:    vmov s2, r0490; FP16-NEXT:    vldr s4, .LCPI4_1491; FP16-NEXT:    vmaxnm.f32 s0, s2, s0492; FP16-NEXT:    vcmp.f32 s2, s2493; FP16-NEXT:    vminnm.f32 s0, s0, s4494; FP16-NEXT:    vmrs APSR_nzcv, fpscr495; FP16-NEXT:    vcvt.s32.f32 s0, s0496; FP16-NEXT:    vmov r0, s0497; FP16-NEXT:    it vs498; FP16-NEXT:    movvs r0, #0499; FP16-NEXT:    bx lr500; FP16-NEXT:    .p2align 2501; FP16-NEXT:  @ %bb.1:502; FP16-NEXT:  .LCPI4_0:503; FP16-NEXT:    .long 0xc8800000 @ float -262144504; FP16-NEXT:  .LCPI4_1:505; FP16-NEXT:    .long 0x487fffc0 @ float 262143506    %x = call i19 @llvm.fptosi.sat.i19.f32(float %f)507    ret i19 %x508}509 510define i32 @test_signed_i32_f32(float %f) nounwind {511; SOFT-LABEL: test_signed_i32_f32:512; SOFT:       @ %bb.0:513; SOFT-NEXT:    .save {r4, r5, r6, lr}514; SOFT-NEXT:    push {r4, r5, r6, lr}515; SOFT-NEXT:    mov r4, r0516; SOFT-NEXT:    movs r0, #207517; SOFT-NEXT:    lsls r1, r0, #24518; SOFT-NEXT:    mov r0, r4519; SOFT-NEXT:    bl __aeabi_fcmpge520; SOFT-NEXT:    mov r6, r0521; SOFT-NEXT:    mov r0, r4522; SOFT-NEXT:    bl __aeabi_f2iz523; SOFT-NEXT:    cmp r6, #0524; SOFT-NEXT:    beq .LBB5_2525; SOFT-NEXT:  @ %bb.1:526; SOFT-NEXT:    mov r5, r0527; SOFT-NEXT:    b .LBB5_3528; SOFT-NEXT:  .LBB5_2:529; SOFT-NEXT:    movs r0, #1530; SOFT-NEXT:    lsls r5, r0, #31531; SOFT-NEXT:  .LBB5_3:532; SOFT-NEXT:    ldr r1, .LCPI5_0533; SOFT-NEXT:    mov r0, r4534; SOFT-NEXT:    bl __aeabi_fcmpgt535; SOFT-NEXT:    cmp r0, #0536; SOFT-NEXT:    beq .LBB5_5537; SOFT-NEXT:  @ %bb.4:538; SOFT-NEXT:    ldr r5, .LCPI5_1539; SOFT-NEXT:  .LBB5_5:540; SOFT-NEXT:    mov r0, r4541; SOFT-NEXT:    mov r1, r4542; SOFT-NEXT:    bl __aeabi_fcmpun543; SOFT-NEXT:    cmp r0, #0544; SOFT-NEXT:    beq .LBB5_7545; SOFT-NEXT:  @ %bb.6:546; SOFT-NEXT:    movs r5, #0547; SOFT-NEXT:  .LBB5_7:548; SOFT-NEXT:    mov r0, r5549; SOFT-NEXT:    pop {r4, r5, r6, pc}550; SOFT-NEXT:    .p2align 2551; SOFT-NEXT:  @ %bb.8:552; SOFT-NEXT:  .LCPI5_0:553; SOFT-NEXT:    .long 1325400063 @ 0x4effffff554; SOFT-NEXT:  .LCPI5_1:555; SOFT-NEXT:    .long 2147483647 @ 0x7fffffff556;557; VFP-LABEL: test_signed_i32_f32:558; VFP:       @ %bb.0:559; VFP-NEXT:    vmov s0, r0560; VFP-NEXT:    vcvt.s32.f32 s0, s0561; VFP-NEXT:    vmov r0, s0562; VFP-NEXT:    bx lr563    %x = call i32 @llvm.fptosi.sat.i32.f32(float %f)564    ret i32 %x565}566 567define i50 @test_signed_i50_f32(float %f) nounwind {568; SOFT-LABEL: test_signed_i50_f32:569; SOFT:       @ %bb.0:570; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}571; SOFT-NEXT:    push {r4, r5, r6, r7, lr}572; SOFT-NEXT:    .pad #4573; SOFT-NEXT:    sub sp, #4574; SOFT-NEXT:    mov r4, r0575; SOFT-NEXT:    movs r0, #27576; SOFT-NEXT:    lsls r1, r0, #27577; SOFT-NEXT:    mov r0, r4578; SOFT-NEXT:    bl __aeabi_fcmpge579; SOFT-NEXT:    mov r7, r0580; SOFT-NEXT:    mov r0, r4581; SOFT-NEXT:    bl __aeabi_f2lz582; SOFT-NEXT:    mov r5, r0583; SOFT-NEXT:    cmp r7, #0584; SOFT-NEXT:    bne .LBB6_2585; SOFT-NEXT:  @ %bb.1:586; SOFT-NEXT:    mov r5, r7587; SOFT-NEXT:  .LBB6_2:588; SOFT-NEXT:    beq .LBB6_4589; SOFT-NEXT:  @ %bb.3:590; SOFT-NEXT:    str r1, [sp] @ 4-byte Spill591; SOFT-NEXT:    b .LBB6_5592; SOFT-NEXT:  .LBB6_4:593; SOFT-NEXT:    ldr r0, .LCPI6_0594; SOFT-NEXT:    str r0, [sp] @ 4-byte Spill595; SOFT-NEXT:  .LBB6_5:596; SOFT-NEXT:    ldr r1, .LCPI6_1597; SOFT-NEXT:    mov r0, r4598; SOFT-NEXT:    bl __aeabi_fcmpgt599; SOFT-NEXT:    movs r7, #0600; SOFT-NEXT:    mvns r6, r7601; SOFT-NEXT:    cmp r0, #0602; SOFT-NEXT:    beq .LBB6_7603; SOFT-NEXT:  @ %bb.6:604; SOFT-NEXT:    ldr r0, .LCPI6_2605; SOFT-NEXT:    str r0, [sp] @ 4-byte Spill606; SOFT-NEXT:  .LBB6_7:607; SOFT-NEXT:    bne .LBB6_9608; SOFT-NEXT:  @ %bb.8:609; SOFT-NEXT:    mov r6, r5610; SOFT-NEXT:  .LBB6_9:611; SOFT-NEXT:    mov r0, r4612; SOFT-NEXT:    mov r1, r4613; SOFT-NEXT:    bl __aeabi_fcmpun614; SOFT-NEXT:    cmp r0, #0615; SOFT-NEXT:    mov r0, r7616; SOFT-NEXT:    bne .LBB6_11617; SOFT-NEXT:  @ %bb.10:618; SOFT-NEXT:    mov r0, r6619; SOFT-NEXT:  .LBB6_11:620; SOFT-NEXT:    bne .LBB6_13621; SOFT-NEXT:  @ %bb.12:622; SOFT-NEXT:    ldr r7, [sp] @ 4-byte Reload623; SOFT-NEXT:  .LBB6_13:624; SOFT-NEXT:    mov r1, r7625; SOFT-NEXT:    add sp, #4626; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}627; SOFT-NEXT:    .p2align 2628; SOFT-NEXT:  @ %bb.14:629; SOFT-NEXT:  .LCPI6_0:630; SOFT-NEXT:    .long 4294836224 @ 0xfffe0000631; SOFT-NEXT:  .LCPI6_1:632; SOFT-NEXT:    .long 1476395007 @ 0x57ffffff633; SOFT-NEXT:  .LCPI6_2:634; SOFT-NEXT:    .long 131071 @ 0x1ffff635;636; VFP-LABEL: test_signed_i50_f32:637; VFP:       @ %bb.0:638; VFP-NEXT:    .save {r4, lr}639; VFP-NEXT:    push {r4, lr}640; VFP-NEXT:    mov r4, r0641; VFP-NEXT:    bl __aeabi_f2lz642; VFP-NEXT:    vldr s0, .LCPI6_0643; VFP-NEXT:    vmov s2, r4644; VFP-NEXT:    vldr s4, .LCPI6_1645; VFP-NEXT:    vcmp.f32 s2, s0646; VFP-NEXT:    vmrs APSR_nzcv, fpscr647; VFP-NEXT:    ittt lt648; VFP-NEXT:    movlt r1, #0649; VFP-NEXT:    movtlt r1, #65534650; VFP-NEXT:    movlt r0, #0651; VFP-NEXT:    vcmp.f32 s2, s4652; VFP-NEXT:    vmrs APSR_nzcv, fpscr653; VFP-NEXT:    it gt654; VFP-NEXT:    movgt.w r0, #-1655; VFP-NEXT:    vcmp.f32 s2, s2656; VFP-NEXT:    itt gt657; VFP-NEXT:    movwgt r1, #65535658; VFP-NEXT:    movtgt r1, #1659; VFP-NEXT:    vmrs APSR_nzcv, fpscr660; VFP-NEXT:    itt vs661; VFP-NEXT:    movvs r0, #0662; VFP-NEXT:    movvs r1, #0663; VFP-NEXT:    pop {r4, pc}664; VFP-NEXT:    .p2align 2665; VFP-NEXT:  @ %bb.1:666; VFP-NEXT:  .LCPI6_0:667; VFP-NEXT:    .long 0xd8000000 @ float -5.62949953E+14668; VFP-NEXT:  .LCPI6_1:669; VFP-NEXT:    .long 0x57ffffff @ float 5.6294992E+14670    %x = call i50 @llvm.fptosi.sat.i50.f32(float %f)671    ret i50 %x672}673 674define i64 @test_signed_i64_f32(float %f) nounwind {675; SOFT-LABEL: test_signed_i64_f32:676; SOFT:       @ %bb.0:677; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}678; SOFT-NEXT:    push {r4, r5, r6, r7, lr}679; SOFT-NEXT:    .pad #4680; SOFT-NEXT:    sub sp, #4681; SOFT-NEXT:    mov r4, r0682; SOFT-NEXT:    movs r0, #223683; SOFT-NEXT:    lsls r1, r0, #24684; SOFT-NEXT:    mov r0, r4685; SOFT-NEXT:    bl __aeabi_fcmpge686; SOFT-NEXT:    mov r6, r0687; SOFT-NEXT:    mov r0, r4688; SOFT-NEXT:    bl __aeabi_f2lz689; SOFT-NEXT:    movs r2, #1690; SOFT-NEXT:    lsls r7, r2, #31691; SOFT-NEXT:    cmp r6, #0692; SOFT-NEXT:    bne .LBB7_2693; SOFT-NEXT:  @ %bb.1:694; SOFT-NEXT:    mov r0, r6695; SOFT-NEXT:  .LBB7_2:696; SOFT-NEXT:    str r0, [sp] @ 4-byte Spill697; SOFT-NEXT:    beq .LBB7_4698; SOFT-NEXT:  @ %bb.3:699; SOFT-NEXT:    mov r7, r1700; SOFT-NEXT:  .LBB7_4:701; SOFT-NEXT:    ldr r1, .LCPI7_0702; SOFT-NEXT:    mov r0, r4703; SOFT-NEXT:    bl __aeabi_fcmpgt704; SOFT-NEXT:    movs r6, #0705; SOFT-NEXT:    mvns r5, r6706; SOFT-NEXT:    cmp r0, #0707; SOFT-NEXT:    beq .LBB7_6708; SOFT-NEXT:  @ %bb.5:709; SOFT-NEXT:    ldr r7, .LCPI7_1710; SOFT-NEXT:  .LBB7_6:711; SOFT-NEXT:    bne .LBB7_8712; SOFT-NEXT:  @ %bb.7:713; SOFT-NEXT:    ldr r5, [sp] @ 4-byte Reload714; SOFT-NEXT:  .LBB7_8:715; SOFT-NEXT:    mov r0, r4716; SOFT-NEXT:    mov r1, r4717; SOFT-NEXT:    bl __aeabi_fcmpun718; SOFT-NEXT:    cmp r0, #0719; SOFT-NEXT:    mov r0, r6720; SOFT-NEXT:    bne .LBB7_10721; SOFT-NEXT:  @ %bb.9:722; SOFT-NEXT:    mov r0, r5723; SOFT-NEXT:  .LBB7_10:724; SOFT-NEXT:    bne .LBB7_12725; SOFT-NEXT:  @ %bb.11:726; SOFT-NEXT:    mov r6, r7727; SOFT-NEXT:  .LBB7_12:728; SOFT-NEXT:    mov r1, r6729; SOFT-NEXT:    add sp, #4730; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}731; SOFT-NEXT:    .p2align 2732; SOFT-NEXT:  @ %bb.13:733; SOFT-NEXT:  .LCPI7_0:734; SOFT-NEXT:    .long 1593835519 @ 0x5effffff735; SOFT-NEXT:  .LCPI7_1:736; SOFT-NEXT:    .long 2147483647 @ 0x7fffffff737;738; VFP-LABEL: test_signed_i64_f32:739; VFP:       @ %bb.0:740; VFP-NEXT:    .save {r4, lr}741; VFP-NEXT:    push {r4, lr}742; VFP-NEXT:    mov r4, r0743; VFP-NEXT:    bl __aeabi_f2lz744; VFP-NEXT:    vldr s0, .LCPI7_0745; VFP-NEXT:    vmov s2, r4746; VFP-NEXT:    vldr s4, .LCPI7_1747; VFP-NEXT:    vcmp.f32 s2, s0748; VFP-NEXT:    vmrs APSR_nzcv, fpscr749; VFP-NEXT:    itt lt750; VFP-NEXT:    movlt r0, #0751; VFP-NEXT:    movlt.w r1, #-2147483648752; VFP-NEXT:    vcmp.f32 s2, s4753; VFP-NEXT:    vmrs APSR_nzcv, fpscr754; VFP-NEXT:    itt gt755; VFP-NEXT:    mvngt r1, #-2147483648756; VFP-NEXT:    movgt.w r0, #-1757; VFP-NEXT:    vcmp.f32 s2, s2758; VFP-NEXT:    vmrs APSR_nzcv, fpscr759; VFP-NEXT:    itt vs760; VFP-NEXT:    movvs r0, #0761; VFP-NEXT:    movvs r1, #0762; VFP-NEXT:    pop {r4, pc}763; VFP-NEXT:    .p2align 2764; VFP-NEXT:  @ %bb.1:765; VFP-NEXT:  .LCPI7_0:766; VFP-NEXT:    .long 0xdf000000 @ float -9.22337203E+18767; VFP-NEXT:  .LCPI7_1:768; VFP-NEXT:    .long 0x5effffff @ float 9.22337149E+18769    %x = call i64 @llvm.fptosi.sat.i64.f32(float %f)770    ret i64 %x771}772 773define i100 @test_signed_i100_f32(float %f) nounwind {774; SOFT-LABEL: test_signed_i100_f32:775; SOFT:       @ %bb.0:776; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}777; SOFT-NEXT:    push {r4, r5, r6, r7, lr}778; SOFT-NEXT:    .pad #20779; SOFT-NEXT:    sub sp, #20780; SOFT-NEXT:    mov r4, r0781; SOFT-NEXT:    movs r0, #241782; SOFT-NEXT:    lsls r1, r0, #24783; SOFT-NEXT:    mov r0, r4784; SOFT-NEXT:    bl __aeabi_fcmpge785; SOFT-NEXT:    mov r6, r0786; SOFT-NEXT:    mov r0, r4787; SOFT-NEXT:    bl __fixsfti788; SOFT-NEXT:    movs r5, #7789; SOFT-NEXT:    str r5, [sp, #16] @ 4-byte Spill790; SOFT-NEXT:    mvns r7, r5791; SOFT-NEXT:    cmp r6, #0792; SOFT-NEXT:    beq .LBB8_17793; SOFT-NEXT:  @ %bb.1:794; SOFT-NEXT:    beq .LBB8_18795; SOFT-NEXT:  .LBB8_2:796; SOFT-NEXT:    bne .LBB8_4797; SOFT-NEXT:  .LBB8_3:798; SOFT-NEXT:    mov r2, r6799; SOFT-NEXT:  .LBB8_4:800; SOFT-NEXT:    str r2, [sp, #4] @ 4-byte Spill801; SOFT-NEXT:    str r1, [sp, #8] @ 4-byte Spill802; SOFT-NEXT:    str r0, [sp, #12] @ 4-byte Spill803; SOFT-NEXT:    beq .LBB8_6804; SOFT-NEXT:  @ %bb.5:805; SOFT-NEXT:    mov r7, r3806; SOFT-NEXT:  .LBB8_6:807; SOFT-NEXT:    ldr r1, .LCPI8_0808; SOFT-NEXT:    mov r0, r4809; SOFT-NEXT:    bl __aeabi_fcmpgt810; SOFT-NEXT:    movs r6, #0811; SOFT-NEXT:    mvns r5, r6812; SOFT-NEXT:    cmp r0, #0813; SOFT-NEXT:    beq .LBB8_19814; SOFT-NEXT:  @ %bb.7:815; SOFT-NEXT:    mov r0, r5816; SOFT-NEXT:    beq .LBB8_20817; SOFT-NEXT:  .LBB8_8:818; SOFT-NEXT:    mov r7, r5819; SOFT-NEXT:    beq .LBB8_21820; SOFT-NEXT:  .LBB8_9:821; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill822; SOFT-NEXT:    bne .LBB8_11823; SOFT-NEXT:  .LBB8_10:824; SOFT-NEXT:    ldr r5, [sp, #12] @ 4-byte Reload825; SOFT-NEXT:  .LBB8_11:826; SOFT-NEXT:    mov r0, r4827; SOFT-NEXT:    mov r1, r4828; SOFT-NEXT:    bl __aeabi_fcmpun829; SOFT-NEXT:    cmp r0, #0830; SOFT-NEXT:    mov r0, r6831; SOFT-NEXT:    beq .LBB8_22832; SOFT-NEXT:  @ %bb.12:833; SOFT-NEXT:    mov r1, r6834; SOFT-NEXT:    beq .LBB8_23835; SOFT-NEXT:  .LBB8_13:836; SOFT-NEXT:    mov r2, r6837; SOFT-NEXT:    beq .LBB8_24838; SOFT-NEXT:  .LBB8_14:839; SOFT-NEXT:    bne .LBB8_16840; SOFT-NEXT:  .LBB8_15:841; SOFT-NEXT:    ldr r6, [sp, #16] @ 4-byte Reload842; SOFT-NEXT:  .LBB8_16:843; SOFT-NEXT:    mov r3, r6844; SOFT-NEXT:    add sp, #20845; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}846; SOFT-NEXT:  .LBB8_17:847; SOFT-NEXT:    mov r0, r6848; SOFT-NEXT:    bne .LBB8_2849; SOFT-NEXT:  .LBB8_18:850; SOFT-NEXT:    mov r1, r6851; SOFT-NEXT:    beq .LBB8_3852; SOFT-NEXT:    b .LBB8_4853; SOFT-NEXT:  .LBB8_19:854; SOFT-NEXT:    str r7, [sp, #16] @ 4-byte Spill855; SOFT-NEXT:    mov r0, r5856; SOFT-NEXT:    bne .LBB8_8857; SOFT-NEXT:  .LBB8_20:858; SOFT-NEXT:    ldr r0, [sp, #4] @ 4-byte Reload859; SOFT-NEXT:    mov r7, r5860; SOFT-NEXT:    bne .LBB8_9861; SOFT-NEXT:  .LBB8_21:862; SOFT-NEXT:    ldr r7, [sp, #8] @ 4-byte Reload863; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill864; SOFT-NEXT:    beq .LBB8_10865; SOFT-NEXT:    b .LBB8_11866; SOFT-NEXT:  .LBB8_22:867; SOFT-NEXT:    mov r0, r5868; SOFT-NEXT:    mov r1, r6869; SOFT-NEXT:    bne .LBB8_13870; SOFT-NEXT:  .LBB8_23:871; SOFT-NEXT:    mov r1, r7872; SOFT-NEXT:    mov r2, r6873; SOFT-NEXT:    bne .LBB8_14874; SOFT-NEXT:  .LBB8_24:875; SOFT-NEXT:    ldr r2, [sp, #8] @ 4-byte Reload876; SOFT-NEXT:    beq .LBB8_15877; SOFT-NEXT:    b .LBB8_16878; SOFT-NEXT:    .p2align 2879; SOFT-NEXT:  @ %bb.25:880; SOFT-NEXT:  .LCPI8_0:881; SOFT-NEXT:    .long 1895825407 @ 0x70ffffff882;883; VFP-LABEL: test_signed_i100_f32:884; VFP:       @ %bb.0:885; VFP-NEXT:    .save {r4, lr}886; VFP-NEXT:    push {r4, lr}887; VFP-NEXT:    mov r4, r0888; VFP-NEXT:    bl __fixsfti889; VFP-NEXT:    vldr s0, .LCPI8_0890; VFP-NEXT:    vmov s2, r4891; VFP-NEXT:    vldr s4, .LCPI8_1892; VFP-NEXT:    vcmp.f32 s2, s0893; VFP-NEXT:    vmrs APSR_nzcv, fpscr894; VFP-NEXT:    itttt lt895; VFP-NEXT:    movlt r0, #0896; VFP-NEXT:    movlt r1, #0897; VFP-NEXT:    movlt r2, #0898; VFP-NEXT:    mvnlt r3, #7899; VFP-NEXT:    vcmp.f32 s2, s4900; VFP-NEXT:    vmrs APSR_nzcv, fpscr901; VFP-NEXT:    itttt gt902; VFP-NEXT:    movgt r3, #7903; VFP-NEXT:    movgt.w r2, #-1904; VFP-NEXT:    movgt.w r1, #-1905; VFP-NEXT:    movgt.w r0, #-1906; VFP-NEXT:    vcmp.f32 s2, s2907; VFP-NEXT:    vmrs APSR_nzcv, fpscr908; VFP-NEXT:    itttt vs909; VFP-NEXT:    movvs r0, #0910; VFP-NEXT:    movvs r1, #0911; VFP-NEXT:    movvs r2, #0912; VFP-NEXT:    movvs r3, #0913; VFP-NEXT:    pop {r4, pc}914; VFP-NEXT:    .p2align 2915; VFP-NEXT:  @ %bb.1:916; VFP-NEXT:  .LCPI8_0:917; VFP-NEXT:    .long 0xf1000000 @ float -6.338253E+29918; VFP-NEXT:  .LCPI8_1:919; VFP-NEXT:    .long 0x70ffffff @ float 6.33825262E+29920    %x = call i100 @llvm.fptosi.sat.i100.f32(float %f)921    ret i100 %x922}923 924define i128 @test_signed_i128_f32(float %f) nounwind {925; SOFT-LABEL: test_signed_i128_f32:926; SOFT:       @ %bb.0:927; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}928; SOFT-NEXT:    push {r4, r5, r6, r7, lr}929; SOFT-NEXT:    .pad #20930; SOFT-NEXT:    sub sp, #20931; SOFT-NEXT:    mov r4, r0932; SOFT-NEXT:    movs r0, #255933; SOFT-NEXT:    lsls r1, r0, #24934; SOFT-NEXT:    mov r0, r4935; SOFT-NEXT:    bl __aeabi_fcmpge936; SOFT-NEXT:    mov r6, r0937; SOFT-NEXT:    mov r0, r4938; SOFT-NEXT:    bl __fixsfti939; SOFT-NEXT:    movs r5, #1940; SOFT-NEXT:    lsls r7, r5, #31941; SOFT-NEXT:    cmp r6, #0942; SOFT-NEXT:    beq .LBB9_18943; SOFT-NEXT:  @ %bb.1:944; SOFT-NEXT:    beq .LBB9_19945; SOFT-NEXT:  .LBB9_2:946; SOFT-NEXT:    bne .LBB9_4947; SOFT-NEXT:  .LBB9_3:948; SOFT-NEXT:    mov r2, r6949; SOFT-NEXT:  .LBB9_4:950; SOFT-NEXT:    str r2, [sp, #4] @ 4-byte Spill951; SOFT-NEXT:    str r1, [sp, #8] @ 4-byte Spill952; SOFT-NEXT:    str r0, [sp, #12] @ 4-byte Spill953; SOFT-NEXT:    beq .LBB9_6954; SOFT-NEXT:  @ %bb.5:955; SOFT-NEXT:    mov r7, r3956; SOFT-NEXT:  .LBB9_6:957; SOFT-NEXT:    ldr r1, .LCPI9_0958; SOFT-NEXT:    mov r0, r4959; SOFT-NEXT:    bl __aeabi_fcmpgt960; SOFT-NEXT:    movs r6, #0961; SOFT-NEXT:    mvns r5, r6962; SOFT-NEXT:    cmp r0, #0963; SOFT-NEXT:    beq .LBB9_8964; SOFT-NEXT:  @ %bb.7:965; SOFT-NEXT:    ldr r7, .LCPI9_1966; SOFT-NEXT:  .LBB9_8:967; SOFT-NEXT:    str r7, [sp, #16] @ 4-byte Spill968; SOFT-NEXT:    mov r0, r5969; SOFT-NEXT:    beq .LBB9_20970; SOFT-NEXT:  @ %bb.9:971; SOFT-NEXT:    mov r7, r5972; SOFT-NEXT:    beq .LBB9_21973; SOFT-NEXT:  .LBB9_10:974; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill975; SOFT-NEXT:    bne .LBB9_12976; SOFT-NEXT:  .LBB9_11:977; SOFT-NEXT:    ldr r5, [sp, #12] @ 4-byte Reload978; SOFT-NEXT:  .LBB9_12:979; SOFT-NEXT:    mov r0, r4980; SOFT-NEXT:    mov r1, r4981; SOFT-NEXT:    bl __aeabi_fcmpun982; SOFT-NEXT:    cmp r0, #0983; SOFT-NEXT:    mov r0, r6984; SOFT-NEXT:    beq .LBB9_22985; SOFT-NEXT:  @ %bb.13:986; SOFT-NEXT:    mov r1, r6987; SOFT-NEXT:    beq .LBB9_23988; SOFT-NEXT:  .LBB9_14:989; SOFT-NEXT:    mov r2, r6990; SOFT-NEXT:    beq .LBB9_24991; SOFT-NEXT:  .LBB9_15:992; SOFT-NEXT:    ldr r3, [sp, #16] @ 4-byte Reload993; SOFT-NEXT:    bne .LBB9_17994; SOFT-NEXT:  .LBB9_16:995; SOFT-NEXT:    mov r6, r3996; SOFT-NEXT:  .LBB9_17:997; SOFT-NEXT:    mov r3, r6998; SOFT-NEXT:    add sp, #20999; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}1000; SOFT-NEXT:  .LBB9_18:1001; SOFT-NEXT:    mov r0, r61002; SOFT-NEXT:    bne .LBB9_21003; SOFT-NEXT:  .LBB9_19:1004; SOFT-NEXT:    mov r1, r61005; SOFT-NEXT:    beq .LBB9_31006; SOFT-NEXT:    b .LBB9_41007; SOFT-NEXT:  .LBB9_20:1008; SOFT-NEXT:    ldr r0, [sp, #4] @ 4-byte Reload1009; SOFT-NEXT:    mov r7, r51010; SOFT-NEXT:    bne .LBB9_101011; SOFT-NEXT:  .LBB9_21:1012; SOFT-NEXT:    ldr r7, [sp, #8] @ 4-byte Reload1013; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill1014; SOFT-NEXT:    beq .LBB9_111015; SOFT-NEXT:    b .LBB9_121016; SOFT-NEXT:  .LBB9_22:1017; SOFT-NEXT:    mov r0, r51018; SOFT-NEXT:    mov r1, r61019; SOFT-NEXT:    bne .LBB9_141020; SOFT-NEXT:  .LBB9_23:1021; SOFT-NEXT:    mov r1, r71022; SOFT-NEXT:    mov r2, r61023; SOFT-NEXT:    bne .LBB9_151024; SOFT-NEXT:  .LBB9_24:1025; SOFT-NEXT:    ldr r2, [sp, #8] @ 4-byte Reload1026; SOFT-NEXT:    ldr r3, [sp, #16] @ 4-byte Reload1027; SOFT-NEXT:    beq .LBB9_161028; SOFT-NEXT:    b .LBB9_171029; SOFT-NEXT:    .p2align 21030; SOFT-NEXT:  @ %bb.25:1031; SOFT-NEXT:  .LCPI9_0:1032; SOFT-NEXT:    .long 2130706431 @ 0x7effffff1033; SOFT-NEXT:  .LCPI9_1:1034; SOFT-NEXT:    .long 2147483647 @ 0x7fffffff1035;1036; VFP-LABEL: test_signed_i128_f32:1037; VFP:       @ %bb.0:1038; VFP-NEXT:    .save {r4, lr}1039; VFP-NEXT:    push {r4, lr}1040; VFP-NEXT:    mov r4, r01041; VFP-NEXT:    bl __fixsfti1042; VFP-NEXT:    vldr s0, .LCPI9_01043; VFP-NEXT:    vmov s2, r41044; VFP-NEXT:    vldr s4, .LCPI9_11045; VFP-NEXT:    vcmp.f32 s2, s01046; VFP-NEXT:    vmrs APSR_nzcv, fpscr1047; VFP-NEXT:    itttt lt1048; VFP-NEXT:    movlt r0, #01049; VFP-NEXT:    movlt r1, #01050; VFP-NEXT:    movlt r2, #01051; VFP-NEXT:    movlt.w r3, #-21474836481052; VFP-NEXT:    vcmp.f32 s2, s41053; VFP-NEXT:    vmrs APSR_nzcv, fpscr1054; VFP-NEXT:    itttt gt1055; VFP-NEXT:    mvngt r3, #-21474836481056; VFP-NEXT:    movgt.w r2, #-11057; VFP-NEXT:    movgt.w r1, #-11058; VFP-NEXT:    movgt.w r0, #-11059; VFP-NEXT:    vcmp.f32 s2, s21060; VFP-NEXT:    vmrs APSR_nzcv, fpscr1061; VFP-NEXT:    itttt vs1062; VFP-NEXT:    movvs r0, #01063; VFP-NEXT:    movvs r1, #01064; VFP-NEXT:    movvs r2, #01065; VFP-NEXT:    movvs r3, #01066; VFP-NEXT:    pop {r4, pc}1067; VFP-NEXT:    .p2align 21068; VFP-NEXT:  @ %bb.1:1069; VFP-NEXT:  .LCPI9_0:1070; VFP-NEXT:    .long 0xff000000 @ float -1.70141183E+381071; VFP-NEXT:  .LCPI9_1:1072; VFP-NEXT:    .long 0x7effffff @ float 1.70141173E+381073    %x = call i128 @llvm.fptosi.sat.i128.f32(float %f)1074    ret i128 %x1075}1076 1077;1078; 64-bit float to signed integer1079;1080 1081declare   i1 @llvm.fptosi.sat.i1.f64  (double)1082declare   i8 @llvm.fptosi.sat.i8.f64  (double)1083declare  i13 @llvm.fptosi.sat.i13.f64 (double)1084declare  i16 @llvm.fptosi.sat.i16.f64 (double)1085declare  i19 @llvm.fptosi.sat.i19.f64 (double)1086declare  i32 @llvm.fptosi.sat.i32.f64 (double)1087declare  i50 @llvm.fptosi.sat.i50.f64 (double)1088declare  i64 @llvm.fptosi.sat.i64.f64 (double)1089declare i100 @llvm.fptosi.sat.i100.f64(double)1090declare i128 @llvm.fptosi.sat.i128.f64(double)1091 1092define i1 @test_signed_i1_f64(double %f) nounwind {1093; SOFT-LABEL: test_signed_i1_f64:1094; SOFT:       @ %bb.0:1095; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}1096; SOFT-NEXT:    push {r4, r5, r6, r7, lr}1097; SOFT-NEXT:    .pad #41098; SOFT-NEXT:    sub sp, #41099; SOFT-NEXT:    mov r5, r11100; SOFT-NEXT:    mov r6, r01101; SOFT-NEXT:    movs r4, #01102; SOFT-NEXT:    ldr r3, .LCPI10_01103; SOFT-NEXT:    mov r2, r41104; SOFT-NEXT:    bl __aeabi_dcmpge1105; SOFT-NEXT:    mov r7, r01106; SOFT-NEXT:    mov r0, r61107; SOFT-NEXT:    mov r1, r51108; SOFT-NEXT:    bl __aeabi_d2iz1109; SOFT-NEXT:    cmp r7, #01110; SOFT-NEXT:    bne .LBB10_21111; SOFT-NEXT:  @ %bb.1:1112; SOFT-NEXT:    mvns r0, r41113; SOFT-NEXT:  .LBB10_2:1114; SOFT-NEXT:    str r0, [sp] @ 4-byte Spill1115; SOFT-NEXT:    mov r0, r61116; SOFT-NEXT:    mov r1, r51117; SOFT-NEXT:    mov r2, r41118; SOFT-NEXT:    mov r3, r41119; SOFT-NEXT:    bl __aeabi_dcmpgt1120; SOFT-NEXT:    cmp r0, #01121; SOFT-NEXT:    mov r7, r41122; SOFT-NEXT:    bne .LBB10_41123; SOFT-NEXT:  @ %bb.3:1124; SOFT-NEXT:    ldr r7, [sp] @ 4-byte Reload1125; SOFT-NEXT:  .LBB10_4:1126; SOFT-NEXT:    mov r0, r61127; SOFT-NEXT:    mov r1, r51128; SOFT-NEXT:    mov r2, r61129; SOFT-NEXT:    mov r3, r51130; SOFT-NEXT:    bl __aeabi_dcmpun1131; SOFT-NEXT:    cmp r0, #01132; SOFT-NEXT:    bne .LBB10_61133; SOFT-NEXT:  @ %bb.5:1134; SOFT-NEXT:    mov r4, r71135; SOFT-NEXT:  .LBB10_6:1136; SOFT-NEXT:    mov r0, r41137; SOFT-NEXT:    add sp, #41138; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}1139; SOFT-NEXT:    .p2align 21140; SOFT-NEXT:  @ %bb.7:1141; SOFT-NEXT:  .LCPI10_0:1142; SOFT-NEXT:    .long 3220176896 @ 0xbff000001143;1144; VFP2-LABEL: test_signed_i1_f64:1145; VFP2:       @ %bb.0:1146; VFP2-NEXT:    vmov.f64 d17, #-1.000000e+001147; VFP2-NEXT:    vmov d16, r0, r11148; VFP2-NEXT:    vcmp.f64 d16, d171149; VFP2-NEXT:    vcvt.s32.f64 s0, d161150; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1151; VFP2-NEXT:    vmov r0, s01152; VFP2-NEXT:    vcmp.f64 d16, #01153; VFP2-NEXT:    it lt1154; VFP2-NEXT:    movlt.w r0, #-11155; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1156; VFP2-NEXT:    it gt1157; VFP2-NEXT:    movgt r0, #01158; VFP2-NEXT:    vcmp.f64 d16, d161159; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1160; VFP2-NEXT:    it vs1161; VFP2-NEXT:    movvs r0, #01162; VFP2-NEXT:    bx lr1163;1164; FP16-LABEL: test_signed_i1_f64:1165; FP16:       @ %bb.0:1166; FP16-NEXT:    vmov.f64 d0, #-1.000000e+001167; FP16-NEXT:    vmov d1, r0, r11168; FP16-NEXT:    vldr d2, .LCPI10_01169; FP16-NEXT:    vmaxnm.f64 d0, d1, d01170; FP16-NEXT:    vminnm.f64 d0, d0, d21171; FP16-NEXT:    vcmp.f64 d1, d11172; FP16-NEXT:    vcvt.s32.f64 s0, d01173; FP16-NEXT:    vmov r0, s01174; FP16-NEXT:    vmrs APSR_nzcv, fpscr1175; FP16-NEXT:    it vs1176; FP16-NEXT:    movvs r0, #01177; FP16-NEXT:    bx lr1178; FP16-NEXT:    .p2align 31179; FP16-NEXT:  @ %bb.1:1180; FP16-NEXT:  .LCPI10_0:1181; FP16-NEXT:    .long 0 @ double 01182; FP16-NEXT:    .long 01183    %x = call i1 @llvm.fptosi.sat.i1.f64(double %f)1184    ret i1 %x1185}1186 1187define i8 @test_signed_i8_f64(double %f) nounwind {1188; SOFT-LABEL: test_signed_i8_f64:1189; SOFT:       @ %bb.0:1190; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}1191; SOFT-NEXT:    push {r4, r5, r6, r7, lr}1192; SOFT-NEXT:    .pad #41193; SOFT-NEXT:    sub sp, #41194; SOFT-NEXT:    mov r5, r11195; SOFT-NEXT:    mov r6, r01196; SOFT-NEXT:    movs r4, #01197; SOFT-NEXT:    ldr r3, .LCPI11_01198; SOFT-NEXT:    mov r2, r41199; SOFT-NEXT:    bl __aeabi_dcmpge1200; SOFT-NEXT:    mov r7, r01201; SOFT-NEXT:    mov r0, r61202; SOFT-NEXT:    mov r1, r51203; SOFT-NEXT:    bl __aeabi_d2iz1204; SOFT-NEXT:    movs r1, #1271205; SOFT-NEXT:    cmp r7, #01206; SOFT-NEXT:    beq .LBB11_21207; SOFT-NEXT:  @ %bb.1:1208; SOFT-NEXT:    str r0, [sp] @ 4-byte Spill1209; SOFT-NEXT:    mov r7, r11210; SOFT-NEXT:    b .LBB11_31211; SOFT-NEXT:  .LBB11_2:1212; SOFT-NEXT:    mov r7, r11213; SOFT-NEXT:    mvns r0, r11214; SOFT-NEXT:    str r0, [sp] @ 4-byte Spill1215; SOFT-NEXT:  .LBB11_3:1216; SOFT-NEXT:    ldr r3, .LCPI11_11217; SOFT-NEXT:    mov r0, r61218; SOFT-NEXT:    mov r1, r51219; SOFT-NEXT:    mov r2, r41220; SOFT-NEXT:    bl __aeabi_dcmpgt1221; SOFT-NEXT:    cmp r0, #01222; SOFT-NEXT:    bne .LBB11_51223; SOFT-NEXT:  @ %bb.4:1224; SOFT-NEXT:    ldr r7, [sp] @ 4-byte Reload1225; SOFT-NEXT:  .LBB11_5:1226; SOFT-NEXT:    mov r0, r61227; SOFT-NEXT:    mov r1, r51228; SOFT-NEXT:    mov r2, r61229; SOFT-NEXT:    mov r3, r51230; SOFT-NEXT:    bl __aeabi_dcmpun1231; SOFT-NEXT:    cmp r0, #01232; SOFT-NEXT:    bne .LBB11_71233; SOFT-NEXT:  @ %bb.6:1234; SOFT-NEXT:    mov r4, r71235; SOFT-NEXT:  .LBB11_7:1236; SOFT-NEXT:    mov r0, r41237; SOFT-NEXT:    add sp, #41238; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}1239; SOFT-NEXT:    .p2align 21240; SOFT-NEXT:  @ %bb.8:1241; SOFT-NEXT:  .LCPI11_0:1242; SOFT-NEXT:    .long 3227516928 @ 0xc06000001243; SOFT-NEXT:  .LCPI11_1:1244; SOFT-NEXT:    .long 1080016896 @ 0x405fc0001245;1246; VFP2-LABEL: test_signed_i8_f64:1247; VFP2:       @ %bb.0:1248; VFP2-NEXT:    vmov d16, r0, r11249; VFP2-NEXT:    vldr d17, .LCPI11_01250; VFP2-NEXT:    vldr d18, .LCPI11_11251; VFP2-NEXT:    vcvt.s32.f64 s0, d161252; VFP2-NEXT:    vcmp.f64 d16, d171253; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1254; VFP2-NEXT:    vmov r0, s01255; VFP2-NEXT:    vcmp.f64 d16, d181256; VFP2-NEXT:    it lt1257; VFP2-NEXT:    mvnlt r0, #1271258; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1259; VFP2-NEXT:    it gt1260; VFP2-NEXT:    movgt r0, #1271261; VFP2-NEXT:    vcmp.f64 d16, d161262; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1263; VFP2-NEXT:    it vs1264; VFP2-NEXT:    movvs r0, #01265; VFP2-NEXT:    bx lr1266; VFP2-NEXT:    .p2align 31267; VFP2-NEXT:  @ %bb.1:1268; VFP2-NEXT:  .LCPI11_0:1269; VFP2-NEXT:    .long 0 @ double -1281270; VFP2-NEXT:    .long 32275169281271; VFP2-NEXT:  .LCPI11_1:1272; VFP2-NEXT:    .long 0 @ double 1271273; VFP2-NEXT:    .long 10800168961274;1275; FP16-LABEL: test_signed_i8_f64:1276; FP16:       @ %bb.0:1277; FP16-NEXT:    vldr d0, .LCPI11_01278; FP16-NEXT:    vmov d1, r0, r11279; FP16-NEXT:    vldr d2, .LCPI11_11280; FP16-NEXT:    vmaxnm.f64 d0, d1, d01281; FP16-NEXT:    vcmp.f64 d1, d11282; FP16-NEXT:    vminnm.f64 d0, d0, d21283; FP16-NEXT:    vcvt.s32.f64 s0, d01284; FP16-NEXT:    vmov r0, s01285; FP16-NEXT:    vmrs APSR_nzcv, fpscr1286; FP16-NEXT:    it vs1287; FP16-NEXT:    movvs r0, #01288; FP16-NEXT:    bx lr1289; FP16-NEXT:    .p2align 31290; FP16-NEXT:  @ %bb.1:1291; FP16-NEXT:  .LCPI11_0:1292; FP16-NEXT:    .long 0 @ double -1281293; FP16-NEXT:    .long 32275169281294; FP16-NEXT:  .LCPI11_1:1295; FP16-NEXT:    .long 0 @ double 1271296; FP16-NEXT:    .long 10800168961297    %x = call i8 @llvm.fptosi.sat.i8.f64(double %f)1298    ret i8 %x1299}1300 1301define i13 @test_signed_i13_f64(double %f) nounwind {1302; SOFT-LABEL: test_signed_i13_f64:1303; SOFT:       @ %bb.0:1304; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}1305; SOFT-NEXT:    push {r4, r5, r6, r7, lr}1306; SOFT-NEXT:    .pad #41307; SOFT-NEXT:    sub sp, #41308; SOFT-NEXT:    mov r5, r11309; SOFT-NEXT:    mov r6, r01310; SOFT-NEXT:    movs r4, #01311; SOFT-NEXT:    ldr r3, .LCPI12_01312; SOFT-NEXT:    mov r2, r41313; SOFT-NEXT:    bl __aeabi_dcmpge1314; SOFT-NEXT:    mov r7, r01315; SOFT-NEXT:    mov r0, r61316; SOFT-NEXT:    mov r1, r51317; SOFT-NEXT:    bl __aeabi_d2iz1318; SOFT-NEXT:    cmp r7, #01319; SOFT-NEXT:    beq .LBB12_21320; SOFT-NEXT:  @ %bb.1:1321; SOFT-NEXT:    mov r7, r01322; SOFT-NEXT:    b .LBB12_31323; SOFT-NEXT:  .LBB12_2:1324; SOFT-NEXT:    ldr r7, .LCPI12_11325; SOFT-NEXT:  .LBB12_3:1326; SOFT-NEXT:    ldr r3, .LCPI12_21327; SOFT-NEXT:    mov r0, r61328; SOFT-NEXT:    mov r1, r51329; SOFT-NEXT:    mov r2, r41330; SOFT-NEXT:    bl __aeabi_dcmpgt1331; SOFT-NEXT:    cmp r0, #01332; SOFT-NEXT:    beq .LBB12_51333; SOFT-NEXT:  @ %bb.4:1334; SOFT-NEXT:    ldr r7, .LCPI12_31335; SOFT-NEXT:  .LBB12_5:1336; SOFT-NEXT:    mov r0, r61337; SOFT-NEXT:    mov r1, r51338; SOFT-NEXT:    mov r2, r61339; SOFT-NEXT:    mov r3, r51340; SOFT-NEXT:    bl __aeabi_dcmpun1341; SOFT-NEXT:    cmp r0, #01342; SOFT-NEXT:    bne .LBB12_71343; SOFT-NEXT:  @ %bb.6:1344; SOFT-NEXT:    mov r4, r71345; SOFT-NEXT:  .LBB12_7:1346; SOFT-NEXT:    mov r0, r41347; SOFT-NEXT:    add sp, #41348; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}1349; SOFT-NEXT:    .p2align 21350; SOFT-NEXT:  @ %bb.8:1351; SOFT-NEXT:  .LCPI12_0:1352; SOFT-NEXT:    .long 3232759808 @ 0xc0b000001353; SOFT-NEXT:  .LCPI12_1:1354; SOFT-NEXT:    .long 4294963200 @ 0xfffff0001355; SOFT-NEXT:  .LCPI12_2:1356; SOFT-NEXT:    .long 1085275648 @ 0x40affe001357; SOFT-NEXT:  .LCPI12_3:1358; SOFT-NEXT:    .long 4095 @ 0xfff1359;1360; VFP2-LABEL: test_signed_i13_f64:1361; VFP2:       @ %bb.0:1362; VFP2-NEXT:    vmov d16, r0, r11363; VFP2-NEXT:    vldr d17, .LCPI12_01364; VFP2-NEXT:    vldr d18, .LCPI12_11365; VFP2-NEXT:    vcvt.s32.f64 s0, d161366; VFP2-NEXT:    vcmp.f64 d16, d171367; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1368; VFP2-NEXT:    vmov r0, s01369; VFP2-NEXT:    vcmp.f64 d16, d181370; VFP2-NEXT:    itt lt1371; VFP2-NEXT:    movwlt r0, #614401372; VFP2-NEXT:    movtlt r0, #655351373; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1374; VFP2-NEXT:    it gt1375; VFP2-NEXT:    movwgt r0, #40951376; VFP2-NEXT:    vcmp.f64 d16, d161377; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1378; VFP2-NEXT:    it vs1379; VFP2-NEXT:    movvs r0, #01380; VFP2-NEXT:    bx lr1381; VFP2-NEXT:    .p2align 31382; VFP2-NEXT:  @ %bb.1:1383; VFP2-NEXT:  .LCPI12_0:1384; VFP2-NEXT:    .long 0 @ double -40961385; VFP2-NEXT:    .long 32327598081386; VFP2-NEXT:  .LCPI12_1:1387; VFP2-NEXT:    .long 0 @ double 40951388; VFP2-NEXT:    .long 10852756481389;1390; FP16-LABEL: test_signed_i13_f64:1391; FP16:       @ %bb.0:1392; FP16-NEXT:    vldr d0, .LCPI12_01393; FP16-NEXT:    vmov d1, r0, r11394; FP16-NEXT:    vldr d2, .LCPI12_11395; FP16-NEXT:    vmaxnm.f64 d0, d1, d01396; FP16-NEXT:    vcmp.f64 d1, d11397; FP16-NEXT:    vminnm.f64 d0, d0, d21398; FP16-NEXT:    vcvt.s32.f64 s0, d01399; FP16-NEXT:    vmov r0, s01400; FP16-NEXT:    vmrs APSR_nzcv, fpscr1401; FP16-NEXT:    it vs1402; FP16-NEXT:    movvs r0, #01403; FP16-NEXT:    bx lr1404; FP16-NEXT:    .p2align 31405; FP16-NEXT:  @ %bb.1:1406; FP16-NEXT:  .LCPI12_0:1407; FP16-NEXT:    .long 0 @ double -40961408; FP16-NEXT:    .long 32327598081409; FP16-NEXT:  .LCPI12_1:1410; FP16-NEXT:    .long 0 @ double 40951411; FP16-NEXT:    .long 10852756481412    %x = call i13 @llvm.fptosi.sat.i13.f64(double %f)1413    ret i13 %x1414}1415 1416define i16 @test_signed_i16_f64(double %f) nounwind {1417; SOFT-LABEL: test_signed_i16_f64:1418; SOFT:       @ %bb.0:1419; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}1420; SOFT-NEXT:    push {r4, r5, r6, r7, lr}1421; SOFT-NEXT:    .pad #41422; SOFT-NEXT:    sub sp, #41423; SOFT-NEXT:    mov r5, r11424; SOFT-NEXT:    mov r6, r01425; SOFT-NEXT:    movs r4, #01426; SOFT-NEXT:    ldr r3, .LCPI13_01427; SOFT-NEXT:    mov r2, r41428; SOFT-NEXT:    bl __aeabi_dcmpge1429; SOFT-NEXT:    mov r7, r01430; SOFT-NEXT:    mov r0, r61431; SOFT-NEXT:    mov r1, r51432; SOFT-NEXT:    bl __aeabi_d2iz1433; SOFT-NEXT:    cmp r7, #01434; SOFT-NEXT:    beq .LBB13_21435; SOFT-NEXT:  @ %bb.1:1436; SOFT-NEXT:    mov r7, r01437; SOFT-NEXT:    b .LBB13_31438; SOFT-NEXT:  .LBB13_2:1439; SOFT-NEXT:    ldr r7, .LCPI13_11440; SOFT-NEXT:  .LBB13_3:1441; SOFT-NEXT:    ldr r3, .LCPI13_21442; SOFT-NEXT:    mov r0, r61443; SOFT-NEXT:    mov r1, r51444; SOFT-NEXT:    mov r2, r41445; SOFT-NEXT:    bl __aeabi_dcmpgt1446; SOFT-NEXT:    cmp r0, #01447; SOFT-NEXT:    beq .LBB13_51448; SOFT-NEXT:  @ %bb.4:1449; SOFT-NEXT:    ldr r7, .LCPI13_31450; SOFT-NEXT:  .LBB13_5:1451; SOFT-NEXT:    mov r0, r61452; SOFT-NEXT:    mov r1, r51453; SOFT-NEXT:    mov r2, r61454; SOFT-NEXT:    mov r3, r51455; SOFT-NEXT:    bl __aeabi_dcmpun1456; SOFT-NEXT:    cmp r0, #01457; SOFT-NEXT:    bne .LBB13_71458; SOFT-NEXT:  @ %bb.6:1459; SOFT-NEXT:    mov r4, r71460; SOFT-NEXT:  .LBB13_7:1461; SOFT-NEXT:    mov r0, r41462; SOFT-NEXT:    add sp, #41463; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}1464; SOFT-NEXT:    .p2align 21465; SOFT-NEXT:  @ %bb.8:1466; SOFT-NEXT:  .LCPI13_0:1467; SOFT-NEXT:    .long 3235905536 @ 0xc0e000001468; SOFT-NEXT:  .LCPI13_1:1469; SOFT-NEXT:    .long 4294934528 @ 0xffff80001470; SOFT-NEXT:  .LCPI13_2:1471; SOFT-NEXT:    .long 1088421824 @ 0x40dfffc01472; SOFT-NEXT:  .LCPI13_3:1473; SOFT-NEXT:    .long 32767 @ 0x7fff1474;1475; VFP2-LABEL: test_signed_i16_f64:1476; VFP2:       @ %bb.0:1477; VFP2-NEXT:    vmov d16, r0, r11478; VFP2-NEXT:    vldr d17, .LCPI13_01479; VFP2-NEXT:    vldr d18, .LCPI13_11480; VFP2-NEXT:    vcvt.s32.f64 s0, d161481; VFP2-NEXT:    vcmp.f64 d16, d171482; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1483; VFP2-NEXT:    vmov r0, s01484; VFP2-NEXT:    vcmp.f64 d16, d181485; VFP2-NEXT:    itt lt1486; VFP2-NEXT:    movwlt r0, #327681487; VFP2-NEXT:    movtlt r0, #655351488; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1489; VFP2-NEXT:    it gt1490; VFP2-NEXT:    movwgt r0, #327671491; VFP2-NEXT:    vcmp.f64 d16, d161492; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1493; VFP2-NEXT:    it vs1494; VFP2-NEXT:    movvs r0, #01495; VFP2-NEXT:    bx lr1496; VFP2-NEXT:    .p2align 31497; VFP2-NEXT:  @ %bb.1:1498; VFP2-NEXT:  .LCPI13_0:1499; VFP2-NEXT:    .long 0 @ double -327681500; VFP2-NEXT:    .long 32359055361501; VFP2-NEXT:  .LCPI13_1:1502; VFP2-NEXT:    .long 0 @ double 327671503; VFP2-NEXT:    .long 10884218241504;1505; FP16-LABEL: test_signed_i16_f64:1506; FP16:       @ %bb.0:1507; FP16-NEXT:    vldr d0, .LCPI13_01508; FP16-NEXT:    vmov d1, r0, r11509; FP16-NEXT:    vldr d2, .LCPI13_11510; FP16-NEXT:    vmaxnm.f64 d0, d1, d01511; FP16-NEXT:    vcmp.f64 d1, d11512; FP16-NEXT:    vminnm.f64 d0, d0, d21513; FP16-NEXT:    vcvt.s32.f64 s0, d01514; FP16-NEXT:    vmov r0, s01515; FP16-NEXT:    vmrs APSR_nzcv, fpscr1516; FP16-NEXT:    it vs1517; FP16-NEXT:    movvs r0, #01518; FP16-NEXT:    bx lr1519; FP16-NEXT:    .p2align 31520; FP16-NEXT:  @ %bb.1:1521; FP16-NEXT:  .LCPI13_0:1522; FP16-NEXT:    .long 0 @ double -327681523; FP16-NEXT:    .long 32359055361524; FP16-NEXT:  .LCPI13_1:1525; FP16-NEXT:    .long 0 @ double 327671526; FP16-NEXT:    .long 10884218241527    %x = call i16 @llvm.fptosi.sat.i16.f64(double %f)1528    ret i16 %x1529}1530 1531define i19 @test_signed_i19_f64(double %f) nounwind {1532; SOFT-LABEL: test_signed_i19_f64:1533; SOFT:       @ %bb.0:1534; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}1535; SOFT-NEXT:    push {r4, r5, r6, r7, lr}1536; SOFT-NEXT:    .pad #41537; SOFT-NEXT:    sub sp, #41538; SOFT-NEXT:    mov r5, r11539; SOFT-NEXT:    mov r6, r01540; SOFT-NEXT:    movs r4, #01541; SOFT-NEXT:    ldr r3, .LCPI14_01542; SOFT-NEXT:    mov r2, r41543; SOFT-NEXT:    bl __aeabi_dcmpge1544; SOFT-NEXT:    mov r7, r01545; SOFT-NEXT:    mov r0, r61546; SOFT-NEXT:    mov r1, r51547; SOFT-NEXT:    bl __aeabi_d2iz1548; SOFT-NEXT:    cmp r7, #01549; SOFT-NEXT:    beq .LBB14_21550; SOFT-NEXT:  @ %bb.1:1551; SOFT-NEXT:    mov r7, r01552; SOFT-NEXT:    b .LBB14_31553; SOFT-NEXT:  .LBB14_2:1554; SOFT-NEXT:    ldr r7, .LCPI14_11555; SOFT-NEXT:  .LBB14_3:1556; SOFT-NEXT:    ldr r3, .LCPI14_21557; SOFT-NEXT:    mov r0, r61558; SOFT-NEXT:    mov r1, r51559; SOFT-NEXT:    mov r2, r41560; SOFT-NEXT:    bl __aeabi_dcmpgt1561; SOFT-NEXT:    cmp r0, #01562; SOFT-NEXT:    beq .LBB14_51563; SOFT-NEXT:  @ %bb.4:1564; SOFT-NEXT:    ldr r7, .LCPI14_31565; SOFT-NEXT:  .LBB14_5:1566; SOFT-NEXT:    mov r0, r61567; SOFT-NEXT:    mov r1, r51568; SOFT-NEXT:    mov r2, r61569; SOFT-NEXT:    mov r3, r51570; SOFT-NEXT:    bl __aeabi_dcmpun1571; SOFT-NEXT:    cmp r0, #01572; SOFT-NEXT:    bne .LBB14_71573; SOFT-NEXT:  @ %bb.6:1574; SOFT-NEXT:    mov r4, r71575; SOFT-NEXT:  .LBB14_7:1576; SOFT-NEXT:    mov r0, r41577; SOFT-NEXT:    add sp, #41578; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}1579; SOFT-NEXT:    .p2align 21580; SOFT-NEXT:  @ %bb.8:1581; SOFT-NEXT:  .LCPI14_0:1582; SOFT-NEXT:    .long 3239051264 @ 0xc11000001583; SOFT-NEXT:  .LCPI14_1:1584; SOFT-NEXT:    .long 4294705152 @ 0xfffc00001585; SOFT-NEXT:  .LCPI14_2:1586; SOFT-NEXT:    .long 1091567608 @ 0x410ffff81587; SOFT-NEXT:  .LCPI14_3:1588; SOFT-NEXT:    .long 262143 @ 0x3ffff1589;1590; VFP2-LABEL: test_signed_i19_f64:1591; VFP2:       @ %bb.0:1592; VFP2-NEXT:    vmov d16, r0, r11593; VFP2-NEXT:    vldr d17, .LCPI14_01594; VFP2-NEXT:    vldr d18, .LCPI14_11595; VFP2-NEXT:    vcvt.s32.f64 s0, d161596; VFP2-NEXT:    vcmp.f64 d16, d171597; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1598; VFP2-NEXT:    vmov r0, s01599; VFP2-NEXT:    vcmp.f64 d16, d181600; VFP2-NEXT:    itt lt1601; VFP2-NEXT:    movlt r0, #01602; VFP2-NEXT:    movtlt r0, #655321603; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1604; VFP2-NEXT:    itt gt1605; VFP2-NEXT:    movwgt r0, #655351606; VFP2-NEXT:    movtgt r0, #31607; VFP2-NEXT:    vcmp.f64 d16, d161608; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1609; VFP2-NEXT:    it vs1610; VFP2-NEXT:    movvs r0, #01611; VFP2-NEXT:    bx lr1612; VFP2-NEXT:    .p2align 31613; VFP2-NEXT:  @ %bb.1:1614; VFP2-NEXT:  .LCPI14_0:1615; VFP2-NEXT:    .long 0 @ double -2621441616; VFP2-NEXT:    .long 32390512641617; VFP2-NEXT:  .LCPI14_1:1618; VFP2-NEXT:    .long 0 @ double 2621431619; VFP2-NEXT:    .long 10915676081620;1621; FP16-LABEL: test_signed_i19_f64:1622; FP16:       @ %bb.0:1623; FP16-NEXT:    vldr d0, .LCPI14_01624; FP16-NEXT:    vmov d1, r0, r11625; FP16-NEXT:    vldr d2, .LCPI14_11626; FP16-NEXT:    vmaxnm.f64 d0, d1, d01627; FP16-NEXT:    vcmp.f64 d1, d11628; FP16-NEXT:    vminnm.f64 d0, d0, d21629; FP16-NEXT:    vcvt.s32.f64 s0, d01630; FP16-NEXT:    vmov r0, s01631; FP16-NEXT:    vmrs APSR_nzcv, fpscr1632; FP16-NEXT:    it vs1633; FP16-NEXT:    movvs r0, #01634; FP16-NEXT:    bx lr1635; FP16-NEXT:    .p2align 31636; FP16-NEXT:  @ %bb.1:1637; FP16-NEXT:  .LCPI14_0:1638; FP16-NEXT:    .long 0 @ double -2621441639; FP16-NEXT:    .long 32390512641640; FP16-NEXT:  .LCPI14_1:1641; FP16-NEXT:    .long 0 @ double 2621431642; FP16-NEXT:    .long 10915676081643    %x = call i19 @llvm.fptosi.sat.i19.f64(double %f)1644    ret i19 %x1645}1646 1647define i32 @test_signed_i32_f64(double %f) nounwind {1648; SOFT-LABEL: test_signed_i32_f64:1649; SOFT:       @ %bb.0:1650; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}1651; SOFT-NEXT:    push {r4, r5, r6, r7, lr}1652; SOFT-NEXT:    .pad #41653; SOFT-NEXT:    sub sp, #41654; SOFT-NEXT:    mov r5, r11655; SOFT-NEXT:    mov r6, r01656; SOFT-NEXT:    movs r4, #01657; SOFT-NEXT:    ldr r3, .LCPI15_01658; SOFT-NEXT:    mov r2, r41659; SOFT-NEXT:    bl __aeabi_dcmpge1660; SOFT-NEXT:    mov r7, r01661; SOFT-NEXT:    mov r0, r61662; SOFT-NEXT:    mov r1, r51663; SOFT-NEXT:    bl __aeabi_d2iz1664; SOFT-NEXT:    cmp r7, #01665; SOFT-NEXT:    beq .LBB15_21666; SOFT-NEXT:  @ %bb.1:1667; SOFT-NEXT:    mov r7, r01668; SOFT-NEXT:    b .LBB15_31669; SOFT-NEXT:  .LBB15_2:1670; SOFT-NEXT:    movs r0, #11671; SOFT-NEXT:    lsls r7, r0, #311672; SOFT-NEXT:  .LBB15_3:1673; SOFT-NEXT:    ldr r2, .LCPI15_11674; SOFT-NEXT:    ldr r3, .LCPI15_21675; SOFT-NEXT:    mov r0, r61676; SOFT-NEXT:    mov r1, r51677; SOFT-NEXT:    bl __aeabi_dcmpgt1678; SOFT-NEXT:    cmp r0, #01679; SOFT-NEXT:    beq .LBB15_51680; SOFT-NEXT:  @ %bb.4:1681; SOFT-NEXT:    ldr r7, .LCPI15_31682; SOFT-NEXT:  .LBB15_5:1683; SOFT-NEXT:    mov r0, r61684; SOFT-NEXT:    mov r1, r51685; SOFT-NEXT:    mov r2, r61686; SOFT-NEXT:    mov r3, r51687; SOFT-NEXT:    bl __aeabi_dcmpun1688; SOFT-NEXT:    cmp r0, #01689; SOFT-NEXT:    bne .LBB15_71690; SOFT-NEXT:  @ %bb.6:1691; SOFT-NEXT:    mov r4, r71692; SOFT-NEXT:  .LBB15_7:1693; SOFT-NEXT:    mov r0, r41694; SOFT-NEXT:    add sp, #41695; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}1696; SOFT-NEXT:    .p2align 21697; SOFT-NEXT:  @ %bb.8:1698; SOFT-NEXT:  .LCPI15_0:1699; SOFT-NEXT:    .long 3252682752 @ 0xc1e000001700; SOFT-NEXT:  .LCPI15_1:1701; SOFT-NEXT:    .long 4290772992 @ 0xffc000001702; SOFT-NEXT:  .LCPI15_2:1703; SOFT-NEXT:    .long 1105199103 @ 0x41dfffff1704; SOFT-NEXT:  .LCPI15_3:1705; SOFT-NEXT:    .long 2147483647 @ 0x7fffffff1706;1707; VFP2-LABEL: test_signed_i32_f64:1708; VFP2:       @ %bb.0:1709; VFP2-NEXT:    vmov d16, r0, r11710; VFP2-NEXT:    vcvt.s32.f64 s0, d161711; VFP2-NEXT:    vmov r0, s01712; VFP2-NEXT:    bx lr1713;1714; FP16-LABEL: test_signed_i32_f64:1715; FP16:       @ %bb.0:1716; FP16-NEXT:    vmov d0, r0, r11717; FP16-NEXT:    vcvt.s32.f64 s0, d01718; FP16-NEXT:    vmov r0, s01719; FP16-NEXT:    bx lr1720    %x = call i32 @llvm.fptosi.sat.i32.f64(double %f)1721    ret i32 %x1722}1723 1724define i50 @test_signed_i50_f64(double %f) nounwind {1725; SOFT-LABEL: test_signed_i50_f64:1726; SOFT:       @ %bb.0:1727; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}1728; SOFT-NEXT:    push {r4, r5, r6, r7, lr}1729; SOFT-NEXT:    .pad #121730; SOFT-NEXT:    sub sp, #121731; SOFT-NEXT:    mov r5, r11732; SOFT-NEXT:    mov r6, r01733; SOFT-NEXT:    movs r0, #1951734; SOFT-NEXT:    lsls r3, r0, #241735; SOFT-NEXT:    movs r4, #01736; SOFT-NEXT:    mov r0, r61737; SOFT-NEXT:    mov r2, r41738; SOFT-NEXT:    bl __aeabi_dcmpge1739; SOFT-NEXT:    mov r7, r01740; SOFT-NEXT:    mov r0, r61741; SOFT-NEXT:    mov r1, r51742; SOFT-NEXT:    bl __aeabi_d2lz1743; SOFT-NEXT:    str r0, [sp, #4] @ 4-byte Spill1744; SOFT-NEXT:    cmp r7, #01745; SOFT-NEXT:    bne .LBB16_21746; SOFT-NEXT:  @ %bb.1:1747; SOFT-NEXT:    str r7, [sp, #4] @ 4-byte Spill1748; SOFT-NEXT:  .LBB16_2:1749; SOFT-NEXT:    beq .LBB16_41750; SOFT-NEXT:  @ %bb.3:1751; SOFT-NEXT:    str r1, [sp, #8] @ 4-byte Spill1752; SOFT-NEXT:    b .LBB16_51753; SOFT-NEXT:  .LBB16_4:1754; SOFT-NEXT:    ldr r0, .LCPI16_01755; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill1756; SOFT-NEXT:  .LBB16_5:1757; SOFT-NEXT:    movs r0, #151758; SOFT-NEXT:    mvns r2, r01759; SOFT-NEXT:    ldr r3, .LCPI16_11760; SOFT-NEXT:    mov r0, r61761; SOFT-NEXT:    mov r1, r51762; SOFT-NEXT:    bl __aeabi_dcmpgt1763; SOFT-NEXT:    mvns r7, r41764; SOFT-NEXT:    cmp r0, #01765; SOFT-NEXT:    beq .LBB16_71766; SOFT-NEXT:  @ %bb.6:1767; SOFT-NEXT:    ldr r0, .LCPI16_21768; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill1769; SOFT-NEXT:  .LBB16_7:1770; SOFT-NEXT:    bne .LBB16_91771; SOFT-NEXT:  @ %bb.8:1772; SOFT-NEXT:    ldr r7, [sp, #4] @ 4-byte Reload1773; SOFT-NEXT:  .LBB16_9:1774; SOFT-NEXT:    mov r0, r61775; SOFT-NEXT:    mov r1, r51776; SOFT-NEXT:    mov r2, r61777; SOFT-NEXT:    mov r3, r51778; SOFT-NEXT:    bl __aeabi_dcmpun1779; SOFT-NEXT:    cmp r0, #01780; SOFT-NEXT:    mov r0, r41781; SOFT-NEXT:    bne .LBB16_111782; SOFT-NEXT:  @ %bb.10:1783; SOFT-NEXT:    mov r0, r71784; SOFT-NEXT:  .LBB16_11:1785; SOFT-NEXT:    bne .LBB16_131786; SOFT-NEXT:  @ %bb.12:1787; SOFT-NEXT:    ldr r4, [sp, #8] @ 4-byte Reload1788; SOFT-NEXT:  .LBB16_13:1789; SOFT-NEXT:    mov r1, r41790; SOFT-NEXT:    add sp, #121791; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}1792; SOFT-NEXT:    .p2align 21793; SOFT-NEXT:  @ %bb.14:1794; SOFT-NEXT:  .LCPI16_0:1795; SOFT-NEXT:    .long 4294836224 @ 0xfffe00001796; SOFT-NEXT:  .LCPI16_1:1797; SOFT-NEXT:    .long 1124073471 @ 0x42ffffff1798; SOFT-NEXT:  .LCPI16_2:1799; SOFT-NEXT:    .long 131071 @ 0x1ffff1800;1801; VFP2-LABEL: test_signed_i50_f64:1802; VFP2:       @ %bb.0:1803; VFP2-NEXT:    .save {r4, r5, r7, lr}1804; VFP2-NEXT:    push {r4, r5, r7, lr}1805; VFP2-NEXT:    mov r4, r11806; VFP2-NEXT:    mov r5, r01807; VFP2-NEXT:    bl __aeabi_d2lz1808; VFP2-NEXT:    vldr d16, .LCPI16_01809; VFP2-NEXT:    vmov d17, r5, r41810; VFP2-NEXT:    vldr d18, .LCPI16_11811; VFP2-NEXT:    vcmp.f64 d17, d161812; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1813; VFP2-NEXT:    ittt lt1814; VFP2-NEXT:    movlt r1, #01815; VFP2-NEXT:    movtlt r1, #655341816; VFP2-NEXT:    movlt r0, #01817; VFP2-NEXT:    vcmp.f64 d17, d181818; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1819; VFP2-NEXT:    it gt1820; VFP2-NEXT:    movgt.w r0, #-11821; VFP2-NEXT:    vcmp.f64 d17, d171822; VFP2-NEXT:    itt gt1823; VFP2-NEXT:    movwgt r1, #655351824; VFP2-NEXT:    movtgt r1, #11825; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1826; VFP2-NEXT:    itt vs1827; VFP2-NEXT:    movvs r0, #01828; VFP2-NEXT:    movvs r1, #01829; VFP2-NEXT:    pop {r4, r5, r7, pc}1830; VFP2-NEXT:    .p2align 31831; VFP2-NEXT:  @ %bb.1:1832; VFP2-NEXT:  .LCPI16_0:1833; VFP2-NEXT:    .long 0 @ double -5629499534213121834; VFP2-NEXT:    .long 32715571201835; VFP2-NEXT:  .LCPI16_1:1836; VFP2-NEXT:    .long 4294967280 @ double 5629499534213111837; VFP2-NEXT:    .long 11240734711838;1839; FP16-LABEL: test_signed_i50_f64:1840; FP16:       @ %bb.0:1841; FP16-NEXT:    .save {r7, lr}1842; FP16-NEXT:    push {r7, lr}1843; FP16-NEXT:    .vsave {d8}1844; FP16-NEXT:    vpush {d8}1845; FP16-NEXT:    vldr d0, .LCPI16_01846; FP16-NEXT:    vmov d8, r0, r11847; FP16-NEXT:    vldr d1, .LCPI16_11848; FP16-NEXT:    vmaxnm.f64 d0, d8, d01849; FP16-NEXT:    vminnm.f64 d0, d0, d11850; FP16-NEXT:    vmov r0, r1, d01851; FP16-NEXT:    bl __aeabi_d2lz1852; FP16-NEXT:    vcmp.f64 d8, d81853; FP16-NEXT:    vmrs APSR_nzcv, fpscr1854; FP16-NEXT:    itt vs1855; FP16-NEXT:    movvs r0, #01856; FP16-NEXT:    movvs r1, #01857; FP16-NEXT:    vpop {d8}1858; FP16-NEXT:    pop {r7, pc}1859; FP16-NEXT:    .p2align 31860; FP16-NEXT:  @ %bb.1:1861; FP16-NEXT:  .LCPI16_0:1862; FP16-NEXT:    .long 0 @ double -5629499534213121863; FP16-NEXT:    .long 32715571201864; FP16-NEXT:  .LCPI16_1:1865; FP16-NEXT:    .long 4294967280 @ double 5629499534213111866; FP16-NEXT:    .long 11240734711867    %x = call i50 @llvm.fptosi.sat.i50.f64(double %f)1868    ret i50 %x1869}1870 1871define i64 @test_signed_i64_f64(double %f) nounwind {1872; SOFT-LABEL: test_signed_i64_f64:1873; SOFT:       @ %bb.0:1874; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}1875; SOFT-NEXT:    push {r4, r5, r6, r7, lr}1876; SOFT-NEXT:    .pad #121877; SOFT-NEXT:    sub sp, #121878; SOFT-NEXT:    mov r5, r11879; SOFT-NEXT:    mov r6, r01880; SOFT-NEXT:    movs r4, #01881; SOFT-NEXT:    ldr r3, .LCPI17_01882; SOFT-NEXT:    mov r2, r41883; SOFT-NEXT:    bl __aeabi_dcmpge1884; SOFT-NEXT:    mov r7, r01885; SOFT-NEXT:    mov r0, r61886; SOFT-NEXT:    mov r1, r51887; SOFT-NEXT:    bl __aeabi_d2lz1888; SOFT-NEXT:    str r0, [sp, #4] @ 4-byte Spill1889; SOFT-NEXT:    movs r0, #11890; SOFT-NEXT:    lsls r0, r0, #311891; SOFT-NEXT:    cmp r7, #01892; SOFT-NEXT:    bne .LBB17_21893; SOFT-NEXT:  @ %bb.1:1894; SOFT-NEXT:    str r7, [sp, #4] @ 4-byte Spill1895; SOFT-NEXT:  .LBB17_2:1896; SOFT-NEXT:    beq .LBB17_41897; SOFT-NEXT:  @ %bb.3:1898; SOFT-NEXT:    mov r0, r11899; SOFT-NEXT:  .LBB17_4:1900; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill1901; SOFT-NEXT:    mvns r7, r41902; SOFT-NEXT:    ldr r3, .LCPI17_11903; SOFT-NEXT:    mov r0, r61904; SOFT-NEXT:    mov r1, r51905; SOFT-NEXT:    mov r2, r71906; SOFT-NEXT:    bl __aeabi_dcmpgt1907; SOFT-NEXT:    cmp r0, #01908; SOFT-NEXT:    beq .LBB17_61909; SOFT-NEXT:  @ %bb.5:1910; SOFT-NEXT:    ldr r0, .LCPI17_21911; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill1912; SOFT-NEXT:  .LBB17_6:1913; SOFT-NEXT:    bne .LBB17_81914; SOFT-NEXT:  @ %bb.7:1915; SOFT-NEXT:    ldr r7, [sp, #4] @ 4-byte Reload1916; SOFT-NEXT:  .LBB17_8:1917; SOFT-NEXT:    mov r0, r61918; SOFT-NEXT:    mov r1, r51919; SOFT-NEXT:    mov r2, r61920; SOFT-NEXT:    mov r3, r51921; SOFT-NEXT:    bl __aeabi_dcmpun1922; SOFT-NEXT:    cmp r0, #01923; SOFT-NEXT:    mov r0, r41924; SOFT-NEXT:    bne .LBB17_101925; SOFT-NEXT:  @ %bb.9:1926; SOFT-NEXT:    mov r0, r71927; SOFT-NEXT:  .LBB17_10:1928; SOFT-NEXT:    bne .LBB17_121929; SOFT-NEXT:  @ %bb.11:1930; SOFT-NEXT:    ldr r4, [sp, #8] @ 4-byte Reload1931; SOFT-NEXT:  .LBB17_12:1932; SOFT-NEXT:    mov r1, r41933; SOFT-NEXT:    add sp, #121934; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}1935; SOFT-NEXT:    .p2align 21936; SOFT-NEXT:  @ %bb.13:1937; SOFT-NEXT:  .LCPI17_0:1938; SOFT-NEXT:    .long 3286237184 @ 0xc3e000001939; SOFT-NEXT:  .LCPI17_1:1940; SOFT-NEXT:    .long 1138753535 @ 0x43dfffff1941; SOFT-NEXT:  .LCPI17_2:1942; SOFT-NEXT:    .long 2147483647 @ 0x7fffffff1943;1944; VFP2-LABEL: test_signed_i64_f64:1945; VFP2:       @ %bb.0:1946; VFP2-NEXT:    .save {r4, r5, r7, lr}1947; VFP2-NEXT:    push {r4, r5, r7, lr}1948; VFP2-NEXT:    mov r4, r11949; VFP2-NEXT:    mov r5, r01950; VFP2-NEXT:    bl __aeabi_d2lz1951; VFP2-NEXT:    vldr d16, .LCPI17_01952; VFP2-NEXT:    vmov d17, r5, r41953; VFP2-NEXT:    vldr d18, .LCPI17_11954; VFP2-NEXT:    vcmp.f64 d17, d161955; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1956; VFP2-NEXT:    itt lt1957; VFP2-NEXT:    movlt r0, #01958; VFP2-NEXT:    movlt.w r1, #-21474836481959; VFP2-NEXT:    vcmp.f64 d17, d181960; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1961; VFP2-NEXT:    itt gt1962; VFP2-NEXT:    mvngt r1, #-21474836481963; VFP2-NEXT:    movgt.w r0, #-11964; VFP2-NEXT:    vcmp.f64 d17, d171965; VFP2-NEXT:    vmrs APSR_nzcv, fpscr1966; VFP2-NEXT:    itt vs1967; VFP2-NEXT:    movvs r0, #01968; VFP2-NEXT:    movvs r1, #01969; VFP2-NEXT:    pop {r4, r5, r7, pc}1970; VFP2-NEXT:    .p2align 31971; VFP2-NEXT:  @ %bb.1:1972; VFP2-NEXT:  .LCPI17_0:1973; VFP2-NEXT:    .long 0 @ double -9.2233720368547758E+181974; VFP2-NEXT:    .long 32862371841975; VFP2-NEXT:  .LCPI17_1:1976; VFP2-NEXT:    .long 4294967295 @ double 9.2233720368547748E+181977; VFP2-NEXT:    .long 11387535351978;1979; FP16-LABEL: test_signed_i64_f64:1980; FP16:       @ %bb.0:1981; FP16-NEXT:    .save {r4, r5, r7, lr}1982; FP16-NEXT:    push {r4, r5, r7, lr}1983; FP16-NEXT:    mov r4, r11984; FP16-NEXT:    mov r5, r01985; FP16-NEXT:    bl __aeabi_d2lz1986; FP16-NEXT:    vldr d0, .LCPI17_01987; FP16-NEXT:    vmov d1, r5, r41988; FP16-NEXT:    vldr d2, .LCPI17_11989; FP16-NEXT:    vcmp.f64 d1, d01990; FP16-NEXT:    vmrs APSR_nzcv, fpscr1991; FP16-NEXT:    itt lt1992; FP16-NEXT:    movlt r0, #01993; FP16-NEXT:    movlt.w r1, #-21474836481994; FP16-NEXT:    vcmp.f64 d1, d21995; FP16-NEXT:    vmrs APSR_nzcv, fpscr1996; FP16-NEXT:    itt gt1997; FP16-NEXT:    mvngt r1, #-21474836481998; FP16-NEXT:    movgt.w r0, #-11999; FP16-NEXT:    vcmp.f64 d1, d12000; FP16-NEXT:    vmrs APSR_nzcv, fpscr2001; FP16-NEXT:    itt vs2002; FP16-NEXT:    movvs r0, #02003; FP16-NEXT:    movvs r1, #02004; FP16-NEXT:    pop {r4, r5, r7, pc}2005; FP16-NEXT:    .p2align 32006; FP16-NEXT:  @ %bb.1:2007; FP16-NEXT:  .LCPI17_0:2008; FP16-NEXT:    .long 0 @ double -9.2233720368547758E+182009; FP16-NEXT:    .long 32862371842010; FP16-NEXT:  .LCPI17_1:2011; FP16-NEXT:    .long 4294967295 @ double 9.2233720368547748E+182012; FP16-NEXT:    .long 11387535352013    %x = call i64 @llvm.fptosi.sat.i64.f64(double %f)2014    ret i64 %x2015}2016 2017define i100 @test_signed_i100_f64(double %f) nounwind {2018; SOFT-LABEL: test_signed_i100_f64:2019; SOFT:       @ %bb.0:2020; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}2021; SOFT-NEXT:    push {r4, r5, r6, r7, lr}2022; SOFT-NEXT:    .pad #202023; SOFT-NEXT:    sub sp, #202024; SOFT-NEXT:    mov r5, r12025; SOFT-NEXT:    mov r6, r02026; SOFT-NEXT:    movs r4, #02027; SOFT-NEXT:    ldr r3, .LCPI18_02028; SOFT-NEXT:    mov r2, r42029; SOFT-NEXT:    bl __aeabi_dcmpge2030; SOFT-NEXT:    mov r7, r02031; SOFT-NEXT:    mov r0, r62032; SOFT-NEXT:    mov r1, r52033; SOFT-NEXT:    bl __fixdfti2034; SOFT-NEXT:    str r0, [sp, #12] @ 4-byte Spill2035; SOFT-NEXT:    str r1, [sp, #8] @ 4-byte Spill2036; SOFT-NEXT:    str r2, [sp, #4] @ 4-byte Spill2037; SOFT-NEXT:    movs r0, #72038; SOFT-NEXT:    str r0, [sp, #16] @ 4-byte Spill2039; SOFT-NEXT:    mvns r0, r02040; SOFT-NEXT:    cmp r7, #02041; SOFT-NEXT:    beq .LBB18_172042; SOFT-NEXT:  @ %bb.1:2043; SOFT-NEXT:    beq .LBB18_182044; SOFT-NEXT:  .LBB18_2:2045; SOFT-NEXT:    beq .LBB18_192046; SOFT-NEXT:  .LBB18_3:2047; SOFT-NEXT:    beq .LBB18_52048; SOFT-NEXT:  .LBB18_4:2049; SOFT-NEXT:    mov r0, r32050; SOFT-NEXT:  .LBB18_5:2051; SOFT-NEXT:    str r0, [sp] @ 4-byte Spill2052; SOFT-NEXT:    mvns r7, r42053; SOFT-NEXT:    ldr r3, .LCPI18_12054; SOFT-NEXT:    mov r0, r62055; SOFT-NEXT:    mov r1, r52056; SOFT-NEXT:    mov r2, r72057; SOFT-NEXT:    bl __aeabi_dcmpgt2058; SOFT-NEXT:    cmp r0, #02059; SOFT-NEXT:    beq .LBB18_202060; SOFT-NEXT:  @ %bb.6:2061; SOFT-NEXT:    mov r0, r72062; SOFT-NEXT:    beq .LBB18_212063; SOFT-NEXT:  .LBB18_7:2064; SOFT-NEXT:    mov r1, r72065; SOFT-NEXT:    bne .LBB18_92066; SOFT-NEXT:  .LBB18_8:2067; SOFT-NEXT:    ldr r1, [sp, #8] @ 4-byte Reload2068; SOFT-NEXT:  .LBB18_9:2069; SOFT-NEXT:    str r1, [sp, #4] @ 4-byte Spill2070; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill2071; SOFT-NEXT:    bne .LBB18_112072; SOFT-NEXT:  @ %bb.10:2073; SOFT-NEXT:    ldr r7, [sp, #12] @ 4-byte Reload2074; SOFT-NEXT:  .LBB18_11:2075; SOFT-NEXT:    mov r0, r62076; SOFT-NEXT:    mov r1, r52077; SOFT-NEXT:    mov r2, r62078; SOFT-NEXT:    mov r3, r52079; SOFT-NEXT:    bl __aeabi_dcmpun2080; SOFT-NEXT:    cmp r0, #02081; SOFT-NEXT:    mov r0, r42082; SOFT-NEXT:    beq .LBB18_222083; SOFT-NEXT:  @ %bb.12:2084; SOFT-NEXT:    mov r1, r42085; SOFT-NEXT:    beq .LBB18_232086; SOFT-NEXT:  .LBB18_13:2087; SOFT-NEXT:    mov r2, r42088; SOFT-NEXT:    beq .LBB18_242089; SOFT-NEXT:  .LBB18_14:2090; SOFT-NEXT:    bne .LBB18_162091; SOFT-NEXT:  .LBB18_15:2092; SOFT-NEXT:    ldr r4, [sp, #16] @ 4-byte Reload2093; SOFT-NEXT:  .LBB18_16:2094; SOFT-NEXT:    mov r3, r42095; SOFT-NEXT:    add sp, #202096; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}2097; SOFT-NEXT:  .LBB18_17:2098; SOFT-NEXT:    str r7, [sp, #12] @ 4-byte Spill2099; SOFT-NEXT:    bne .LBB18_22100; SOFT-NEXT:  .LBB18_18:2101; SOFT-NEXT:    str r7, [sp, #8] @ 4-byte Spill2102; SOFT-NEXT:    bne .LBB18_32103; SOFT-NEXT:  .LBB18_19:2104; SOFT-NEXT:    str r7, [sp, #4] @ 4-byte Spill2105; SOFT-NEXT:    bne .LBB18_42106; SOFT-NEXT:    b .LBB18_52107; SOFT-NEXT:  .LBB18_20:2108; SOFT-NEXT:    ldr r0, [sp] @ 4-byte Reload2109; SOFT-NEXT:    str r0, [sp, #16] @ 4-byte Spill2110; SOFT-NEXT:    mov r0, r72111; SOFT-NEXT:    bne .LBB18_72112; SOFT-NEXT:  .LBB18_21:2113; SOFT-NEXT:    ldr r0, [sp, #4] @ 4-byte Reload2114; SOFT-NEXT:    mov r1, r72115; SOFT-NEXT:    beq .LBB18_82116; SOFT-NEXT:    b .LBB18_92117; SOFT-NEXT:  .LBB18_22:2118; SOFT-NEXT:    mov r0, r72119; SOFT-NEXT:    mov r1, r42120; SOFT-NEXT:    bne .LBB18_132121; SOFT-NEXT:  .LBB18_23:2122; SOFT-NEXT:    ldr r1, [sp, #4] @ 4-byte Reload2123; SOFT-NEXT:    mov r2, r42124; SOFT-NEXT:    bne .LBB18_142125; SOFT-NEXT:  .LBB18_24:2126; SOFT-NEXT:    ldr r2, [sp, #8] @ 4-byte Reload2127; SOFT-NEXT:    beq .LBB18_152128; SOFT-NEXT:    b .LBB18_162129; SOFT-NEXT:    .p2align 22130; SOFT-NEXT:  @ %bb.25:2131; SOFT-NEXT:  .LCPI18_0:2132; SOFT-NEXT:    .long 3323985920 @ 0xc62000002133; SOFT-NEXT:  .LCPI18_1:2134; SOFT-NEXT:    .long 1176502271 @ 0x461fffff2135;2136; VFP2-LABEL: test_signed_i100_f64:2137; VFP2:       @ %bb.0:2138; VFP2-NEXT:    .save {r4, r5, r7, lr}2139; VFP2-NEXT:    push {r4, r5, r7, lr}2140; VFP2-NEXT:    mov r4, r12141; VFP2-NEXT:    mov r5, r02142; VFP2-NEXT:    bl __fixdfti2143; VFP2-NEXT:    vldr d16, .LCPI18_02144; VFP2-NEXT:    vmov d17, r5, r42145; VFP2-NEXT:    vldr d18, .LCPI18_12146; VFP2-NEXT:    vcmp.f64 d17, d162147; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2148; VFP2-NEXT:    itttt lt2149; VFP2-NEXT:    movlt r0, #02150; VFP2-NEXT:    movlt r1, #02151; VFP2-NEXT:    movlt r2, #02152; VFP2-NEXT:    mvnlt r3, #72153; VFP2-NEXT:    vcmp.f64 d17, d182154; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2155; VFP2-NEXT:    itttt gt2156; VFP2-NEXT:    movgt r3, #72157; VFP2-NEXT:    movgt.w r2, #-12158; VFP2-NEXT:    movgt.w r1, #-12159; VFP2-NEXT:    movgt.w r0, #-12160; VFP2-NEXT:    vcmp.f64 d17, d172161; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2162; VFP2-NEXT:    itttt vs2163; VFP2-NEXT:    movvs r0, #02164; VFP2-NEXT:    movvs r1, #02165; VFP2-NEXT:    movvs r2, #02166; VFP2-NEXT:    movvs r3, #02167; VFP2-NEXT:    pop {r4, r5, r7, pc}2168; VFP2-NEXT:    .p2align 32169; VFP2-NEXT:  @ %bb.1:2170; VFP2-NEXT:  .LCPI18_0:2171; VFP2-NEXT:    .long 0 @ double -6.338253001141147E+292172; VFP2-NEXT:    .long 33239859202173; VFP2-NEXT:  .LCPI18_1:2174; VFP2-NEXT:    .long 4294967295 @ double 6.3382530011411463E+292175; VFP2-NEXT:    .long 11765022712176;2177; FP16-LABEL: test_signed_i100_f64:2178; FP16:       @ %bb.0:2179; FP16-NEXT:    .save {r4, r5, r7, lr}2180; FP16-NEXT:    push {r4, r5, r7, lr}2181; FP16-NEXT:    mov r4, r12182; FP16-NEXT:    mov r5, r02183; FP16-NEXT:    bl __fixdfti2184; FP16-NEXT:    vldr d0, .LCPI18_02185; FP16-NEXT:    vmov d1, r5, r42186; FP16-NEXT:    vldr d2, .LCPI18_12187; FP16-NEXT:    vcmp.f64 d1, d02188; FP16-NEXT:    vmrs APSR_nzcv, fpscr2189; FP16-NEXT:    itttt lt2190; FP16-NEXT:    movlt r0, #02191; FP16-NEXT:    movlt r1, #02192; FP16-NEXT:    movlt r2, #02193; FP16-NEXT:    mvnlt r3, #72194; FP16-NEXT:    vcmp.f64 d1, d22195; FP16-NEXT:    vmrs APSR_nzcv, fpscr2196; FP16-NEXT:    itttt gt2197; FP16-NEXT:    movgt r3, #72198; FP16-NEXT:    movgt.w r2, #-12199; FP16-NEXT:    movgt.w r1, #-12200; FP16-NEXT:    movgt.w r0, #-12201; FP16-NEXT:    vcmp.f64 d1, d12202; FP16-NEXT:    vmrs APSR_nzcv, fpscr2203; FP16-NEXT:    itttt vs2204; FP16-NEXT:    movvs r0, #02205; FP16-NEXT:    movvs r1, #02206; FP16-NEXT:    movvs r2, #02207; FP16-NEXT:    movvs r3, #02208; FP16-NEXT:    pop {r4, r5, r7, pc}2209; FP16-NEXT:    .p2align 32210; FP16-NEXT:  @ %bb.1:2211; FP16-NEXT:  .LCPI18_0:2212; FP16-NEXT:    .long 0 @ double -6.338253001141147E+292213; FP16-NEXT:    .long 33239859202214; FP16-NEXT:  .LCPI18_1:2215; FP16-NEXT:    .long 4294967295 @ double 6.3382530011411463E+292216; FP16-NEXT:    .long 11765022712217    %x = call i100 @llvm.fptosi.sat.i100.f64(double %f)2218    ret i100 %x2219}2220 2221define i128 @test_signed_i128_f64(double %f) nounwind {2222; SOFT-LABEL: test_signed_i128_f64:2223; SOFT:       @ %bb.0:2224; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}2225; SOFT-NEXT:    push {r4, r5, r6, r7, lr}2226; SOFT-NEXT:    .pad #202227; SOFT-NEXT:    sub sp, #202228; SOFT-NEXT:    mov r5, r12229; SOFT-NEXT:    mov r6, r02230; SOFT-NEXT:    movs r4, #02231; SOFT-NEXT:    ldr r3, .LCPI19_02232; SOFT-NEXT:    mov r2, r42233; SOFT-NEXT:    bl __aeabi_dcmpge2234; SOFT-NEXT:    mov r7, r02235; SOFT-NEXT:    mov r0, r62236; SOFT-NEXT:    mov r1, r52237; SOFT-NEXT:    bl __fixdfti2238; SOFT-NEXT:    str r0, [sp, #12] @ 4-byte Spill2239; SOFT-NEXT:    str r1, [sp, #8] @ 4-byte Spill2240; SOFT-NEXT:    str r2, [sp, #4] @ 4-byte Spill2241; SOFT-NEXT:    movs r0, #12242; SOFT-NEXT:    lsls r0, r0, #312243; SOFT-NEXT:    str r0, [sp, #16] @ 4-byte Spill2244; SOFT-NEXT:    cmp r7, #02245; SOFT-NEXT:    beq .LBB19_172246; SOFT-NEXT:  @ %bb.1:2247; SOFT-NEXT:    beq .LBB19_182248; SOFT-NEXT:  .LBB19_2:2249; SOFT-NEXT:    beq .LBB19_192250; SOFT-NEXT:  .LBB19_3:2251; SOFT-NEXT:    beq .LBB19_52252; SOFT-NEXT:  .LBB19_4:2253; SOFT-NEXT:    str r3, [sp, #16] @ 4-byte Spill2254; SOFT-NEXT:  .LBB19_5:2255; SOFT-NEXT:    mvns r7, r42256; SOFT-NEXT:    ldr r3, .LCPI19_12257; SOFT-NEXT:    mov r0, r62258; SOFT-NEXT:    mov r1, r52259; SOFT-NEXT:    mov r2, r72260; SOFT-NEXT:    bl __aeabi_dcmpgt2261; SOFT-NEXT:    cmp r0, #02262; SOFT-NEXT:    bne .LBB19_202263; SOFT-NEXT:  @ %bb.6:2264; SOFT-NEXT:    mov r0, r72265; SOFT-NEXT:    beq .LBB19_212266; SOFT-NEXT:  .LBB19_7:2267; SOFT-NEXT:    mov r1, r72268; SOFT-NEXT:    bne .LBB19_92269; SOFT-NEXT:  .LBB19_8:2270; SOFT-NEXT:    ldr r1, [sp, #8] @ 4-byte Reload2271; SOFT-NEXT:  .LBB19_9:2272; SOFT-NEXT:    str r1, [sp, #4] @ 4-byte Spill2273; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill2274; SOFT-NEXT:    bne .LBB19_112275; SOFT-NEXT:  @ %bb.10:2276; SOFT-NEXT:    ldr r7, [sp, #12] @ 4-byte Reload2277; SOFT-NEXT:  .LBB19_11:2278; SOFT-NEXT:    mov r0, r62279; SOFT-NEXT:    mov r1, r52280; SOFT-NEXT:    mov r2, r62281; SOFT-NEXT:    mov r3, r52282; SOFT-NEXT:    bl __aeabi_dcmpun2283; SOFT-NEXT:    cmp r0, #02284; SOFT-NEXT:    mov r0, r42285; SOFT-NEXT:    beq .LBB19_222286; SOFT-NEXT:  @ %bb.12:2287; SOFT-NEXT:    mov r1, r42288; SOFT-NEXT:    beq .LBB19_232289; SOFT-NEXT:  .LBB19_13:2290; SOFT-NEXT:    mov r2, r42291; SOFT-NEXT:    beq .LBB19_242292; SOFT-NEXT:  .LBB19_14:2293; SOFT-NEXT:    bne .LBB19_162294; SOFT-NEXT:  .LBB19_15:2295; SOFT-NEXT:    ldr r4, [sp, #16] @ 4-byte Reload2296; SOFT-NEXT:  .LBB19_16:2297; SOFT-NEXT:    mov r3, r42298; SOFT-NEXT:    add sp, #202299; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}2300; SOFT-NEXT:  .LBB19_17:2301; SOFT-NEXT:    str r7, [sp, #12] @ 4-byte Spill2302; SOFT-NEXT:    bne .LBB19_22303; SOFT-NEXT:  .LBB19_18:2304; SOFT-NEXT:    str r7, [sp, #8] @ 4-byte Spill2305; SOFT-NEXT:    bne .LBB19_32306; SOFT-NEXT:  .LBB19_19:2307; SOFT-NEXT:    str r7, [sp, #4] @ 4-byte Spill2308; SOFT-NEXT:    bne .LBB19_42309; SOFT-NEXT:    b .LBB19_52310; SOFT-NEXT:  .LBB19_20:2311; SOFT-NEXT:    ldr r0, .LCPI19_22312; SOFT-NEXT:    str r0, [sp, #16] @ 4-byte Spill2313; SOFT-NEXT:    mov r0, r72314; SOFT-NEXT:    bne .LBB19_72315; SOFT-NEXT:  .LBB19_21:2316; SOFT-NEXT:    ldr r0, [sp, #4] @ 4-byte Reload2317; SOFT-NEXT:    mov r1, r72318; SOFT-NEXT:    beq .LBB19_82319; SOFT-NEXT:    b .LBB19_92320; SOFT-NEXT:  .LBB19_22:2321; SOFT-NEXT:    mov r0, r72322; SOFT-NEXT:    mov r1, r42323; SOFT-NEXT:    bne .LBB19_132324; SOFT-NEXT:  .LBB19_23:2325; SOFT-NEXT:    ldr r1, [sp, #4] @ 4-byte Reload2326; SOFT-NEXT:    mov r2, r42327; SOFT-NEXT:    bne .LBB19_142328; SOFT-NEXT:  .LBB19_24:2329; SOFT-NEXT:    ldr r2, [sp, #8] @ 4-byte Reload2330; SOFT-NEXT:    beq .LBB19_152331; SOFT-NEXT:    b .LBB19_162332; SOFT-NEXT:    .p2align 22333; SOFT-NEXT:  @ %bb.25:2334; SOFT-NEXT:  .LCPI19_0:2335; SOFT-NEXT:    .long 3353346048 @ 0xc7e000002336; SOFT-NEXT:  .LCPI19_1:2337; SOFT-NEXT:    .long 1205862399 @ 0x47dfffff2338; SOFT-NEXT:  .LCPI19_2:2339; SOFT-NEXT:    .long 2147483647 @ 0x7fffffff2340;2341; VFP2-LABEL: test_signed_i128_f64:2342; VFP2:       @ %bb.0:2343; VFP2-NEXT:    .save {r4, r5, r7, lr}2344; VFP2-NEXT:    push {r4, r5, r7, lr}2345; VFP2-NEXT:    mov r4, r12346; VFP2-NEXT:    mov r5, r02347; VFP2-NEXT:    bl __fixdfti2348; VFP2-NEXT:    vldr d16, .LCPI19_02349; VFP2-NEXT:    vmov d17, r5, r42350; VFP2-NEXT:    vldr d18, .LCPI19_12351; VFP2-NEXT:    vcmp.f64 d17, d162352; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2353; VFP2-NEXT:    itttt lt2354; VFP2-NEXT:    movlt r0, #02355; VFP2-NEXT:    movlt r1, #02356; VFP2-NEXT:    movlt r2, #02357; VFP2-NEXT:    movlt.w r3, #-21474836482358; VFP2-NEXT:    vcmp.f64 d17, d182359; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2360; VFP2-NEXT:    itttt gt2361; VFP2-NEXT:    mvngt r3, #-21474836482362; VFP2-NEXT:    movgt.w r2, #-12363; VFP2-NEXT:    movgt.w r1, #-12364; VFP2-NEXT:    movgt.w r0, #-12365; VFP2-NEXT:    vcmp.f64 d17, d172366; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2367; VFP2-NEXT:    itttt vs2368; VFP2-NEXT:    movvs r0, #02369; VFP2-NEXT:    movvs r1, #02370; VFP2-NEXT:    movvs r2, #02371; VFP2-NEXT:    movvs r3, #02372; VFP2-NEXT:    pop {r4, r5, r7, pc}2373; VFP2-NEXT:    .p2align 32374; VFP2-NEXT:  @ %bb.1:2375; VFP2-NEXT:  .LCPI19_0:2376; VFP2-NEXT:    .long 0 @ double -1.7014118346046923E+382377; VFP2-NEXT:    .long 33533460482378; VFP2-NEXT:  .LCPI19_1:2379; VFP2-NEXT:    .long 4294967295 @ double 1.7014118346046921E+382380; VFP2-NEXT:    .long 12058623992381;2382; FP16-LABEL: test_signed_i128_f64:2383; FP16:       @ %bb.0:2384; FP16-NEXT:    .save {r4, r5, r7, lr}2385; FP16-NEXT:    push {r4, r5, r7, lr}2386; FP16-NEXT:    mov r4, r12387; FP16-NEXT:    mov r5, r02388; FP16-NEXT:    bl __fixdfti2389; FP16-NEXT:    vldr d0, .LCPI19_02390; FP16-NEXT:    vmov d1, r5, r42391; FP16-NEXT:    vldr d2, .LCPI19_12392; FP16-NEXT:    vcmp.f64 d1, d02393; FP16-NEXT:    vmrs APSR_nzcv, fpscr2394; FP16-NEXT:    itttt lt2395; FP16-NEXT:    movlt r0, #02396; FP16-NEXT:    movlt r1, #02397; FP16-NEXT:    movlt r2, #02398; FP16-NEXT:    movlt.w r3, #-21474836482399; FP16-NEXT:    vcmp.f64 d1, d22400; FP16-NEXT:    vmrs APSR_nzcv, fpscr2401; FP16-NEXT:    itttt gt2402; FP16-NEXT:    mvngt r3, #-21474836482403; FP16-NEXT:    movgt.w r2, #-12404; FP16-NEXT:    movgt.w r1, #-12405; FP16-NEXT:    movgt.w r0, #-12406; FP16-NEXT:    vcmp.f64 d1, d12407; FP16-NEXT:    vmrs APSR_nzcv, fpscr2408; FP16-NEXT:    itttt vs2409; FP16-NEXT:    movvs r0, #02410; FP16-NEXT:    movvs r1, #02411; FP16-NEXT:    movvs r2, #02412; FP16-NEXT:    movvs r3, #02413; FP16-NEXT:    pop {r4, r5, r7, pc}2414; FP16-NEXT:    .p2align 32415; FP16-NEXT:  @ %bb.1:2416; FP16-NEXT:  .LCPI19_0:2417; FP16-NEXT:    .long 0 @ double -1.7014118346046923E+382418; FP16-NEXT:    .long 33533460482419; FP16-NEXT:  .LCPI19_1:2420; FP16-NEXT:    .long 4294967295 @ double 1.7014118346046921E+382421; FP16-NEXT:    .long 12058623992422    %x = call i128 @llvm.fptosi.sat.i128.f64(double %f)2423    ret i128 %x2424}2425 2426;2427; 16-bit float to signed integer2428;2429 2430declare   i1 @llvm.fptosi.sat.i1.f16  (half)2431declare   i8 @llvm.fptosi.sat.i8.f16  (half)2432declare  i13 @llvm.fptosi.sat.i13.f16 (half)2433declare  i16 @llvm.fptosi.sat.i16.f16 (half)2434declare  i19 @llvm.fptosi.sat.i19.f16 (half)2435declare  i32 @llvm.fptosi.sat.i32.f16 (half)2436declare  i50 @llvm.fptosi.sat.i50.f16 (half)2437declare  i64 @llvm.fptosi.sat.i64.f16 (half)2438declare i100 @llvm.fptosi.sat.i100.f16(half)2439declare i128 @llvm.fptosi.sat.i128.f16(half)2440 2441define i1 @test_signed_i1_f16(half %f) nounwind {2442; SOFT-LABEL: test_signed_i1_f16:2443; SOFT:       @ %bb.0:2444; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}2445; SOFT-NEXT:    push {r4, r5, r6, r7, lr}2446; SOFT-NEXT:    .pad #42447; SOFT-NEXT:    sub sp, #42448; SOFT-NEXT:    uxth r0, r02449; SOFT-NEXT:    bl __aeabi_h2f2450; SOFT-NEXT:    mov r4, r02451; SOFT-NEXT:    ldr r1, .LCPI20_02452; SOFT-NEXT:    bl __aeabi_fcmpge2453; SOFT-NEXT:    mov r7, r02454; SOFT-NEXT:    mov r0, r42455; SOFT-NEXT:    bl __aeabi_f2iz2456; SOFT-NEXT:    movs r5, #02457; SOFT-NEXT:    cmp r7, #02458; SOFT-NEXT:    beq .LBB20_22459; SOFT-NEXT:  @ %bb.1:2460; SOFT-NEXT:    mov r6, r02461; SOFT-NEXT:    b .LBB20_32462; SOFT-NEXT:  .LBB20_2:2463; SOFT-NEXT:    mvns r6, r52464; SOFT-NEXT:  .LBB20_3:2465; SOFT-NEXT:    mov r0, r42466; SOFT-NEXT:    mov r1, r52467; SOFT-NEXT:    bl __aeabi_fcmpgt2468; SOFT-NEXT:    cmp r0, #02469; SOFT-NEXT:    mov r7, r52470; SOFT-NEXT:    bne .LBB20_52471; SOFT-NEXT:  @ %bb.4:2472; SOFT-NEXT:    mov r7, r62473; SOFT-NEXT:  .LBB20_5:2474; SOFT-NEXT:    mov r0, r42475; SOFT-NEXT:    mov r1, r42476; SOFT-NEXT:    bl __aeabi_fcmpun2477; SOFT-NEXT:    cmp r0, #02478; SOFT-NEXT:    bne .LBB20_72479; SOFT-NEXT:  @ %bb.6:2480; SOFT-NEXT:    mov r5, r72481; SOFT-NEXT:  .LBB20_7:2482; SOFT-NEXT:    mov r0, r52483; SOFT-NEXT:    add sp, #42484; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}2485; SOFT-NEXT:    .p2align 22486; SOFT-NEXT:  @ %bb.8:2487; SOFT-NEXT:  .LCPI20_0:2488; SOFT-NEXT:    .long 3212836864 @ 0xbf8000002489;2490; VFP2-LABEL: test_signed_i1_f16:2491; VFP2:       @ %bb.0:2492; VFP2-NEXT:    .save {r7, lr}2493; VFP2-NEXT:    push {r7, lr}2494; VFP2-NEXT:    bl __aeabi_h2f2495; VFP2-NEXT:    vmov s2, r02496; VFP2-NEXT:    vmov.f32 s0, #-1.000000e+002497; VFP2-NEXT:    vcvt.s32.f32 s4, s22498; VFP2-NEXT:    vcmp.f32 s2, s02499; VFP2-NEXT:    vmov r0, s42500; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2501; VFP2-NEXT:    it lt2502; VFP2-NEXT:    movlt.w r0, #-12503; VFP2-NEXT:    vcmp.f32 s2, #02504; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2505; VFP2-NEXT:    it gt2506; VFP2-NEXT:    movgt r0, #02507; VFP2-NEXT:    vcmp.f32 s2, s22508; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2509; VFP2-NEXT:    it vs2510; VFP2-NEXT:    movvs r0, #02511; VFP2-NEXT:    pop {r7, pc}2512;2513; FP16-LABEL: test_signed_i1_f16:2514; FP16:       @ %bb.0:2515; FP16-NEXT:    vmov.f16 s0, r02516; FP16-NEXT:    vldr s2, .LCPI20_02517; FP16-NEXT:    vcvtb.f32.f16 s0, s02518; FP16-NEXT:    vmov.f32 s4, #-1.000000e+002519; FP16-NEXT:    vmaxnm.f32 s4, s0, s42520; FP16-NEXT:    vcmp.f32 s0, s02521; FP16-NEXT:    vminnm.f32 s2, s4, s22522; FP16-NEXT:    vmrs APSR_nzcv, fpscr2523; FP16-NEXT:    vcvt.s32.f32 s2, s22524; FP16-NEXT:    vmov r0, s22525; FP16-NEXT:    it vs2526; FP16-NEXT:    movvs r0, #02527; FP16-NEXT:    bx lr2528; FP16-NEXT:    .p2align 22529; FP16-NEXT:  @ %bb.1:2530; FP16-NEXT:  .LCPI20_0:2531; FP16-NEXT:    .long 0x00000000 @ float 02532    %x = call i1 @llvm.fptosi.sat.i1.f16(half %f)2533    ret i1 %x2534}2535 2536define i8 @test_signed_i8_f16(half %f) nounwind {2537; SOFT-LABEL: test_signed_i8_f16:2538; SOFT:       @ %bb.0:2539; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}2540; SOFT-NEXT:    push {r4, r5, r6, r7, lr}2541; SOFT-NEXT:    .pad #42542; SOFT-NEXT:    sub sp, #42543; SOFT-NEXT:    uxth r0, r02544; SOFT-NEXT:    bl __aeabi_h2f2545; SOFT-NEXT:    mov r4, r02546; SOFT-NEXT:    movs r0, #1952547; SOFT-NEXT:    lsls r1, r0, #242548; SOFT-NEXT:    mov r0, r42549; SOFT-NEXT:    bl __aeabi_fcmpge2550; SOFT-NEXT:    mov r7, r02551; SOFT-NEXT:    mov r0, r42552; SOFT-NEXT:    bl __aeabi_f2iz2553; SOFT-NEXT:    movs r5, #1272554; SOFT-NEXT:    cmp r7, #02555; SOFT-NEXT:    beq .LBB21_22556; SOFT-NEXT:  @ %bb.1:2557; SOFT-NEXT:    mov r6, r02558; SOFT-NEXT:    b .LBB21_32559; SOFT-NEXT:  .LBB21_2:2560; SOFT-NEXT:    mvns r6, r52561; SOFT-NEXT:  .LBB21_3:2562; SOFT-NEXT:    ldr r1, .LCPI21_02563; SOFT-NEXT:    mov r0, r42564; SOFT-NEXT:    bl __aeabi_fcmpgt2565; SOFT-NEXT:    cmp r0, #02566; SOFT-NEXT:    bne .LBB21_52567; SOFT-NEXT:  @ %bb.4:2568; SOFT-NEXT:    mov r5, r62569; SOFT-NEXT:  .LBB21_5:2570; SOFT-NEXT:    mov r0, r42571; SOFT-NEXT:    mov r1, r42572; SOFT-NEXT:    bl __aeabi_fcmpun2573; SOFT-NEXT:    cmp r0, #02574; SOFT-NEXT:    beq .LBB21_72575; SOFT-NEXT:  @ %bb.6:2576; SOFT-NEXT:    movs r5, #02577; SOFT-NEXT:  .LBB21_7:2578; SOFT-NEXT:    mov r0, r52579; SOFT-NEXT:    add sp, #42580; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}2581; SOFT-NEXT:    .p2align 22582; SOFT-NEXT:  @ %bb.8:2583; SOFT-NEXT:  .LCPI21_0:2584; SOFT-NEXT:    .long 1123942400 @ 0x42fe00002585;2586; VFP2-LABEL: test_signed_i8_f16:2587; VFP2:       @ %bb.0:2588; VFP2-NEXT:    .save {r7, lr}2589; VFP2-NEXT:    push {r7, lr}2590; VFP2-NEXT:    bl __aeabi_h2f2591; VFP2-NEXT:    vmov s0, r02592; VFP2-NEXT:    vldr s2, .LCPI21_02593; VFP2-NEXT:    vldr s6, .LCPI21_12594; VFP2-NEXT:    vcvt.s32.f32 s4, s02595; VFP2-NEXT:    vcmp.f32 s0, s22596; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2597; VFP2-NEXT:    vcmp.f32 s0, s62598; VFP2-NEXT:    vmov r0, s42599; VFP2-NEXT:    it lt2600; VFP2-NEXT:    mvnlt r0, #1272601; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2602; VFP2-NEXT:    it gt2603; VFP2-NEXT:    movgt r0, #1272604; VFP2-NEXT:    vcmp.f32 s0, s02605; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2606; VFP2-NEXT:    it vs2607; VFP2-NEXT:    movvs r0, #02608; VFP2-NEXT:    pop {r7, pc}2609; VFP2-NEXT:    .p2align 22610; VFP2-NEXT:  @ %bb.1:2611; VFP2-NEXT:  .LCPI21_0:2612; VFP2-NEXT:    .long 0xc3000000 @ float -1282613; VFP2-NEXT:  .LCPI21_1:2614; VFP2-NEXT:    .long 0x42fe0000 @ float 1272615;2616; FP16-LABEL: test_signed_i8_f16:2617; FP16:       @ %bb.0:2618; FP16-NEXT:    vmov.f16 s0, r02619; FP16-NEXT:    vldr s4, .LCPI21_12620; FP16-NEXT:    vcvtb.f32.f16 s0, s02621; FP16-NEXT:    vldr s2, .LCPI21_02622; FP16-NEXT:    vmaxnm.f32 s4, s0, s42623; FP16-NEXT:    vcmp.f32 s0, s02624; FP16-NEXT:    vminnm.f32 s2, s4, s22625; FP16-NEXT:    vmrs APSR_nzcv, fpscr2626; FP16-NEXT:    vcvt.s32.f32 s2, s22627; FP16-NEXT:    vmov r0, s22628; FP16-NEXT:    it vs2629; FP16-NEXT:    movvs r0, #02630; FP16-NEXT:    bx lr2631; FP16-NEXT:    .p2align 22632; FP16-NEXT:  @ %bb.1:2633; FP16-NEXT:  .LCPI21_0:2634; FP16-NEXT:    .long 0x42fe0000 @ float 1272635; FP16-NEXT:  .LCPI21_1:2636; FP16-NEXT:    .long 0xc3000000 @ float -1282637    %x = call i8 @llvm.fptosi.sat.i8.f16(half %f)2638    ret i8 %x2639}2640 2641define i13 @test_signed_i13_f16(half %f) nounwind {2642; SOFT-LABEL: test_signed_i13_f16:2643; SOFT:       @ %bb.0:2644; SOFT-NEXT:    .save {r4, r5, r6, lr}2645; SOFT-NEXT:    push {r4, r5, r6, lr}2646; SOFT-NEXT:    uxth r0, r02647; SOFT-NEXT:    bl __aeabi_h2f2648; SOFT-NEXT:    mov r4, r02649; SOFT-NEXT:    ldr r1, .LCPI22_02650; SOFT-NEXT:    bl __aeabi_fcmpge2651; SOFT-NEXT:    mov r6, r02652; SOFT-NEXT:    mov r0, r42653; SOFT-NEXT:    bl __aeabi_f2iz2654; SOFT-NEXT:    cmp r6, #02655; SOFT-NEXT:    beq .LBB22_22656; SOFT-NEXT:  @ %bb.1:2657; SOFT-NEXT:    mov r5, r02658; SOFT-NEXT:    b .LBB22_32659; SOFT-NEXT:  .LBB22_2:2660; SOFT-NEXT:    ldr r5, .LCPI22_12661; SOFT-NEXT:  .LBB22_3:2662; SOFT-NEXT:    ldr r1, .LCPI22_22663; SOFT-NEXT:    mov r0, r42664; SOFT-NEXT:    bl __aeabi_fcmpgt2665; SOFT-NEXT:    cmp r0, #02666; SOFT-NEXT:    beq .LBB22_52667; SOFT-NEXT:  @ %bb.4:2668; SOFT-NEXT:    ldr r5, .LCPI22_32669; SOFT-NEXT:  .LBB22_5:2670; SOFT-NEXT:    mov r0, r42671; SOFT-NEXT:    mov r1, r42672; SOFT-NEXT:    bl __aeabi_fcmpun2673; SOFT-NEXT:    cmp r0, #02674; SOFT-NEXT:    beq .LBB22_72675; SOFT-NEXT:  @ %bb.6:2676; SOFT-NEXT:    movs r5, #02677; SOFT-NEXT:  .LBB22_7:2678; SOFT-NEXT:    mov r0, r52679; SOFT-NEXT:    pop {r4, r5, r6, pc}2680; SOFT-NEXT:    .p2align 22681; SOFT-NEXT:  @ %bb.8:2682; SOFT-NEXT:  .LCPI22_0:2683; SOFT-NEXT:    .long 3313500160 @ 0xc58000002684; SOFT-NEXT:  .LCPI22_1:2685; SOFT-NEXT:    .long 4294963200 @ 0xfffff0002686; SOFT-NEXT:  .LCPI22_2:2687; SOFT-NEXT:    .long 1166012416 @ 0x457ff0002688; SOFT-NEXT:  .LCPI22_3:2689; SOFT-NEXT:    .long 4095 @ 0xfff2690;2691; VFP2-LABEL: test_signed_i13_f16:2692; VFP2:       @ %bb.0:2693; VFP2-NEXT:    .save {r7, lr}2694; VFP2-NEXT:    push {r7, lr}2695; VFP2-NEXT:    bl __aeabi_h2f2696; VFP2-NEXT:    vmov s0, r02697; VFP2-NEXT:    vldr s2, .LCPI22_02698; VFP2-NEXT:    vldr s6, .LCPI22_12699; VFP2-NEXT:    vcvt.s32.f32 s4, s02700; VFP2-NEXT:    vcmp.f32 s0, s22701; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2702; VFP2-NEXT:    vcmp.f32 s0, s62703; VFP2-NEXT:    vmov r0, s42704; VFP2-NEXT:    itt lt2705; VFP2-NEXT:    movwlt r0, #614402706; VFP2-NEXT:    movtlt r0, #655352707; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2708; VFP2-NEXT:    it gt2709; VFP2-NEXT:    movwgt r0, #40952710; VFP2-NEXT:    vcmp.f32 s0, s02711; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2712; VFP2-NEXT:    it vs2713; VFP2-NEXT:    movvs r0, #02714; VFP2-NEXT:    pop {r7, pc}2715; VFP2-NEXT:    .p2align 22716; VFP2-NEXT:  @ %bb.1:2717; VFP2-NEXT:  .LCPI22_0:2718; VFP2-NEXT:    .long 0xc5800000 @ float -40962719; VFP2-NEXT:  .LCPI22_1:2720; VFP2-NEXT:    .long 0x457ff000 @ float 40952721;2722; FP16-LABEL: test_signed_i13_f16:2723; FP16:       @ %bb.0:2724; FP16-NEXT:    vmov.f16 s0, r02725; FP16-NEXT:    vldr s4, .LCPI22_12726; FP16-NEXT:    vcvtb.f32.f16 s0, s02727; FP16-NEXT:    vldr s2, .LCPI22_02728; FP16-NEXT:    vmaxnm.f32 s4, s0, s42729; FP16-NEXT:    vcmp.f32 s0, s02730; FP16-NEXT:    vminnm.f32 s2, s4, s22731; FP16-NEXT:    vmrs APSR_nzcv, fpscr2732; FP16-NEXT:    vcvt.s32.f32 s2, s22733; FP16-NEXT:    vmov r0, s22734; FP16-NEXT:    it vs2735; FP16-NEXT:    movvs r0, #02736; FP16-NEXT:    bx lr2737; FP16-NEXT:    .p2align 22738; FP16-NEXT:  @ %bb.1:2739; FP16-NEXT:  .LCPI22_0:2740; FP16-NEXT:    .long 0x457ff000 @ float 40952741; FP16-NEXT:  .LCPI22_1:2742; FP16-NEXT:    .long 0xc5800000 @ float -40962743    %x = call i13 @llvm.fptosi.sat.i13.f16(half %f)2744    ret i13 %x2745}2746 2747define i16 @test_signed_i16_f16(half %f) nounwind {2748; SOFT-LABEL: test_signed_i16_f16:2749; SOFT:       @ %bb.0:2750; SOFT-NEXT:    .save {r4, r5, r6, lr}2751; SOFT-NEXT:    push {r4, r5, r6, lr}2752; SOFT-NEXT:    uxth r0, r02753; SOFT-NEXT:    bl __aeabi_h2f2754; SOFT-NEXT:    mov r4, r02755; SOFT-NEXT:    movs r0, #1992756; SOFT-NEXT:    lsls r1, r0, #242757; SOFT-NEXT:    mov r0, r42758; SOFT-NEXT:    bl __aeabi_fcmpge2759; SOFT-NEXT:    mov r6, r02760; SOFT-NEXT:    mov r0, r42761; SOFT-NEXT:    bl __aeabi_f2iz2762; SOFT-NEXT:    cmp r6, #02763; SOFT-NEXT:    beq .LBB23_22764; SOFT-NEXT:  @ %bb.1:2765; SOFT-NEXT:    mov r5, r02766; SOFT-NEXT:    b .LBB23_32767; SOFT-NEXT:  .LBB23_2:2768; SOFT-NEXT:    ldr r5, .LCPI23_02769; SOFT-NEXT:  .LBB23_3:2770; SOFT-NEXT:    ldr r1, .LCPI23_12771; SOFT-NEXT:    mov r0, r42772; SOFT-NEXT:    bl __aeabi_fcmpgt2773; SOFT-NEXT:    cmp r0, #02774; SOFT-NEXT:    beq .LBB23_52775; SOFT-NEXT:  @ %bb.4:2776; SOFT-NEXT:    ldr r5, .LCPI23_22777; SOFT-NEXT:  .LBB23_5:2778; SOFT-NEXT:    mov r0, r42779; SOFT-NEXT:    mov r1, r42780; SOFT-NEXT:    bl __aeabi_fcmpun2781; SOFT-NEXT:    cmp r0, #02782; SOFT-NEXT:    beq .LBB23_72783; SOFT-NEXT:  @ %bb.6:2784; SOFT-NEXT:    movs r5, #02785; SOFT-NEXT:  .LBB23_7:2786; SOFT-NEXT:    mov r0, r52787; SOFT-NEXT:    pop {r4, r5, r6, pc}2788; SOFT-NEXT:    .p2align 22789; SOFT-NEXT:  @ %bb.8:2790; SOFT-NEXT:  .LCPI23_0:2791; SOFT-NEXT:    .long 4294934528 @ 0xffff80002792; SOFT-NEXT:  .LCPI23_1:2793; SOFT-NEXT:    .long 1191181824 @ 0x46fffe002794; SOFT-NEXT:  .LCPI23_2:2795; SOFT-NEXT:    .long 32767 @ 0x7fff2796;2797; VFP2-LABEL: test_signed_i16_f16:2798; VFP2:       @ %bb.0:2799; VFP2-NEXT:    .save {r7, lr}2800; VFP2-NEXT:    push {r7, lr}2801; VFP2-NEXT:    bl __aeabi_h2f2802; VFP2-NEXT:    vmov s0, r02803; VFP2-NEXT:    vldr s2, .LCPI23_02804; VFP2-NEXT:    vldr s6, .LCPI23_12805; VFP2-NEXT:    vcvt.s32.f32 s4, s02806; VFP2-NEXT:    vcmp.f32 s0, s22807; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2808; VFP2-NEXT:    vcmp.f32 s0, s62809; VFP2-NEXT:    vmov r0, s42810; VFP2-NEXT:    itt lt2811; VFP2-NEXT:    movwlt r0, #327682812; VFP2-NEXT:    movtlt r0, #655352813; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2814; VFP2-NEXT:    it gt2815; VFP2-NEXT:    movwgt r0, #327672816; VFP2-NEXT:    vcmp.f32 s0, s02817; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2818; VFP2-NEXT:    it vs2819; VFP2-NEXT:    movvs r0, #02820; VFP2-NEXT:    pop {r7, pc}2821; VFP2-NEXT:    .p2align 22822; VFP2-NEXT:  @ %bb.1:2823; VFP2-NEXT:  .LCPI23_0:2824; VFP2-NEXT:    .long 0xc7000000 @ float -327682825; VFP2-NEXT:  .LCPI23_1:2826; VFP2-NEXT:    .long 0x46fffe00 @ float 327672827;2828; FP16-LABEL: test_signed_i16_f16:2829; FP16:       @ %bb.0:2830; FP16-NEXT:    vmov.f16 s0, r02831; FP16-NEXT:    vldr s4, .LCPI23_12832; FP16-NEXT:    vcvtb.f32.f16 s0, s02833; FP16-NEXT:    vldr s2, .LCPI23_02834; FP16-NEXT:    vmaxnm.f32 s4, s0, s42835; FP16-NEXT:    vcmp.f32 s0, s02836; FP16-NEXT:    vminnm.f32 s2, s4, s22837; FP16-NEXT:    vmrs APSR_nzcv, fpscr2838; FP16-NEXT:    vcvt.s32.f32 s2, s22839; FP16-NEXT:    vmov r0, s22840; FP16-NEXT:    it vs2841; FP16-NEXT:    movvs r0, #02842; FP16-NEXT:    bx lr2843; FP16-NEXT:    .p2align 22844; FP16-NEXT:  @ %bb.1:2845; FP16-NEXT:  .LCPI23_0:2846; FP16-NEXT:    .long 0x46fffe00 @ float 327672847; FP16-NEXT:  .LCPI23_1:2848; FP16-NEXT:    .long 0xc7000000 @ float -327682849    %x = call i16 @llvm.fptosi.sat.i16.f16(half %f)2850    ret i16 %x2851}2852 2853define i19 @test_signed_i19_f16(half %f) nounwind {2854; SOFT-LABEL: test_signed_i19_f16:2855; SOFT:       @ %bb.0:2856; SOFT-NEXT:    .save {r4, r5, r6, lr}2857; SOFT-NEXT:    push {r4, r5, r6, lr}2858; SOFT-NEXT:    uxth r0, r02859; SOFT-NEXT:    bl __aeabi_h2f2860; SOFT-NEXT:    mov r4, r02861; SOFT-NEXT:    ldr r1, .LCPI24_02862; SOFT-NEXT:    bl __aeabi_fcmpge2863; SOFT-NEXT:    mov r6, r02864; SOFT-NEXT:    mov r0, r42865; SOFT-NEXT:    bl __aeabi_f2iz2866; SOFT-NEXT:    cmp r6, #02867; SOFT-NEXT:    beq .LBB24_22868; SOFT-NEXT:  @ %bb.1:2869; SOFT-NEXT:    mov r5, r02870; SOFT-NEXT:    b .LBB24_32871; SOFT-NEXT:  .LBB24_2:2872; SOFT-NEXT:    ldr r5, .LCPI24_12873; SOFT-NEXT:  .LBB24_3:2874; SOFT-NEXT:    ldr r1, .LCPI24_22875; SOFT-NEXT:    mov r0, r42876; SOFT-NEXT:    bl __aeabi_fcmpgt2877; SOFT-NEXT:    cmp r0, #02878; SOFT-NEXT:    beq .LBB24_52879; SOFT-NEXT:  @ %bb.4:2880; SOFT-NEXT:    ldr r5, .LCPI24_32881; SOFT-NEXT:  .LBB24_5:2882; SOFT-NEXT:    mov r0, r42883; SOFT-NEXT:    mov r1, r42884; SOFT-NEXT:    bl __aeabi_fcmpun2885; SOFT-NEXT:    cmp r0, #02886; SOFT-NEXT:    beq .LBB24_72887; SOFT-NEXT:  @ %bb.6:2888; SOFT-NEXT:    movs r5, #02889; SOFT-NEXT:  .LBB24_7:2890; SOFT-NEXT:    mov r0, r52891; SOFT-NEXT:    pop {r4, r5, r6, pc}2892; SOFT-NEXT:    .p2align 22893; SOFT-NEXT:  @ %bb.8:2894; SOFT-NEXT:  .LCPI24_0:2895; SOFT-NEXT:    .long 3363831808 @ 0xc88000002896; SOFT-NEXT:  .LCPI24_1:2897; SOFT-NEXT:    .long 4294705152 @ 0xfffc00002898; SOFT-NEXT:  .LCPI24_2:2899; SOFT-NEXT:    .long 1216348096 @ 0x487fffc02900; SOFT-NEXT:  .LCPI24_3:2901; SOFT-NEXT:    .long 262143 @ 0x3ffff2902;2903; VFP2-LABEL: test_signed_i19_f16:2904; VFP2:       @ %bb.0:2905; VFP2-NEXT:    .save {r7, lr}2906; VFP2-NEXT:    push {r7, lr}2907; VFP2-NEXT:    bl __aeabi_h2f2908; VFP2-NEXT:    vmov s0, r02909; VFP2-NEXT:    vldr s2, .LCPI24_02910; VFP2-NEXT:    vldr s6, .LCPI24_12911; VFP2-NEXT:    vcvt.s32.f32 s4, s02912; VFP2-NEXT:    vcmp.f32 s0, s22913; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2914; VFP2-NEXT:    vcmp.f32 s0, s62915; VFP2-NEXT:    vmov r0, s42916; VFP2-NEXT:    itt lt2917; VFP2-NEXT:    movlt r0, #02918; VFP2-NEXT:    movtlt r0, #655322919; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2920; VFP2-NEXT:    vcmp.f32 s0, s02921; VFP2-NEXT:    itt gt2922; VFP2-NEXT:    movwgt r0, #655352923; VFP2-NEXT:    movtgt r0, #32924; VFP2-NEXT:    vmrs APSR_nzcv, fpscr2925; VFP2-NEXT:    it vs2926; VFP2-NEXT:    movvs r0, #02927; VFP2-NEXT:    pop {r7, pc}2928; VFP2-NEXT:    .p2align 22929; VFP2-NEXT:  @ %bb.1:2930; VFP2-NEXT:  .LCPI24_0:2931; VFP2-NEXT:    .long 0xc8800000 @ float -2621442932; VFP2-NEXT:  .LCPI24_1:2933; VFP2-NEXT:    .long 0x487fffc0 @ float 2621432934;2935; FP16-LABEL: test_signed_i19_f16:2936; FP16:       @ %bb.0:2937; FP16-NEXT:    vmov.f16 s0, r02938; FP16-NEXT:    vldr s4, .LCPI24_12939; FP16-NEXT:    vcvtb.f32.f16 s0, s02940; FP16-NEXT:    vldr s2, .LCPI24_02941; FP16-NEXT:    vmaxnm.f32 s4, s0, s42942; FP16-NEXT:    vcmp.f32 s0, s02943; FP16-NEXT:    vminnm.f32 s2, s4, s22944; FP16-NEXT:    vmrs APSR_nzcv, fpscr2945; FP16-NEXT:    vcvt.s32.f32 s2, s22946; FP16-NEXT:    vmov r0, s22947; FP16-NEXT:    it vs2948; FP16-NEXT:    movvs r0, #02949; FP16-NEXT:    bx lr2950; FP16-NEXT:    .p2align 22951; FP16-NEXT:  @ %bb.1:2952; FP16-NEXT:  .LCPI24_0:2953; FP16-NEXT:    .long 0x487fffc0 @ float 2621432954; FP16-NEXT:  .LCPI24_1:2955; FP16-NEXT:    .long 0xc8800000 @ float -2621442956    %x = call i19 @llvm.fptosi.sat.i19.f16(half %f)2957    ret i19 %x2958}2959 2960define i32 @test_signed_i32_f16(half %f) nounwind {2961; SOFT-LABEL: test_signed_i32_f16:2962; SOFT:       @ %bb.0:2963; SOFT-NEXT:    .save {r4, r5, r6, lr}2964; SOFT-NEXT:    push {r4, r5, r6, lr}2965; SOFT-NEXT:    uxth r0, r02966; SOFT-NEXT:    bl __aeabi_h2f2967; SOFT-NEXT:    mov r4, r02968; SOFT-NEXT:    movs r0, #2072969; SOFT-NEXT:    lsls r1, r0, #242970; SOFT-NEXT:    mov r0, r42971; SOFT-NEXT:    bl __aeabi_fcmpge2972; SOFT-NEXT:    mov r6, r02973; SOFT-NEXT:    mov r0, r42974; SOFT-NEXT:    bl __aeabi_f2iz2975; SOFT-NEXT:    cmp r6, #02976; SOFT-NEXT:    beq .LBB25_22977; SOFT-NEXT:  @ %bb.1:2978; SOFT-NEXT:    mov r5, r02979; SOFT-NEXT:    b .LBB25_32980; SOFT-NEXT:  .LBB25_2:2981; SOFT-NEXT:    movs r0, #12982; SOFT-NEXT:    lsls r5, r0, #312983; SOFT-NEXT:  .LBB25_3:2984; SOFT-NEXT:    ldr r1, .LCPI25_02985; SOFT-NEXT:    mov r0, r42986; SOFT-NEXT:    bl __aeabi_fcmpgt2987; SOFT-NEXT:    cmp r0, #02988; SOFT-NEXT:    beq .LBB25_52989; SOFT-NEXT:  @ %bb.4:2990; SOFT-NEXT:    ldr r5, .LCPI25_12991; SOFT-NEXT:  .LBB25_5:2992; SOFT-NEXT:    mov r0, r42993; SOFT-NEXT:    mov r1, r42994; SOFT-NEXT:    bl __aeabi_fcmpun2995; SOFT-NEXT:    cmp r0, #02996; SOFT-NEXT:    beq .LBB25_72997; SOFT-NEXT:  @ %bb.6:2998; SOFT-NEXT:    movs r5, #02999; SOFT-NEXT:  .LBB25_7:3000; SOFT-NEXT:    mov r0, r53001; SOFT-NEXT:    pop {r4, r5, r6, pc}3002; SOFT-NEXT:    .p2align 23003; SOFT-NEXT:  @ %bb.8:3004; SOFT-NEXT:  .LCPI25_0:3005; SOFT-NEXT:    .long 1325400063 @ 0x4effffff3006; SOFT-NEXT:  .LCPI25_1:3007; SOFT-NEXT:    .long 2147483647 @ 0x7fffffff3008;3009; VFP2-LABEL: test_signed_i32_f16:3010; VFP2:       @ %bb.0:3011; VFP2-NEXT:    .save {r7, lr}3012; VFP2-NEXT:    push {r7, lr}3013; VFP2-NEXT:    bl __aeabi_h2f3014; VFP2-NEXT:    vmov s0, r03015; VFP2-NEXT:    vcvt.s32.f32 s0, s03016; VFP2-NEXT:    vmov r0, s03017; VFP2-NEXT:    pop {r7, pc}3018;3019; FP16-LABEL: test_signed_i32_f16:3020; FP16:       @ %bb.0:3021; FP16-NEXT:    vmov.f16 s0, r03022; FP16-NEXT:    vcvt.s32.f16 s0, s03023; FP16-NEXT:    vmov r0, s03024; FP16-NEXT:    bx lr3025    %x = call i32 @llvm.fptosi.sat.i32.f16(half %f)3026    ret i32 %x3027}3028 3029define i50 @test_signed_i50_f16(half %f) nounwind {3030; SOFT-LABEL: test_signed_i50_f16:3031; SOFT:       @ %bb.0:3032; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}3033; SOFT-NEXT:    push {r4, r5, r6, r7, lr}3034; SOFT-NEXT:    .pad #43035; SOFT-NEXT:    sub sp, #43036; SOFT-NEXT:    uxth r0, r03037; SOFT-NEXT:    bl __aeabi_h2f3038; SOFT-NEXT:    mov r4, r03039; SOFT-NEXT:    movs r0, #273040; SOFT-NEXT:    lsls r1, r0, #273041; SOFT-NEXT:    mov r0, r43042; SOFT-NEXT:    bl __aeabi_fcmpge3043; SOFT-NEXT:    mov r7, r03044; SOFT-NEXT:    mov r0, r43045; SOFT-NEXT:    bl __aeabi_f2lz3046; SOFT-NEXT:    mov r5, r03047; SOFT-NEXT:    cmp r7, #03048; SOFT-NEXT:    bne .LBB26_23049; SOFT-NEXT:  @ %bb.1:3050; SOFT-NEXT:    mov r5, r73051; SOFT-NEXT:  .LBB26_2:3052; SOFT-NEXT:    beq .LBB26_43053; SOFT-NEXT:  @ %bb.3:3054; SOFT-NEXT:    str r1, [sp] @ 4-byte Spill3055; SOFT-NEXT:    b .LBB26_53056; SOFT-NEXT:  .LBB26_4:3057; SOFT-NEXT:    ldr r0, .LCPI26_03058; SOFT-NEXT:    str r0, [sp] @ 4-byte Spill3059; SOFT-NEXT:  .LBB26_5:3060; SOFT-NEXT:    ldr r1, .LCPI26_13061; SOFT-NEXT:    mov r0, r43062; SOFT-NEXT:    bl __aeabi_fcmpgt3063; SOFT-NEXT:    movs r7, #03064; SOFT-NEXT:    mvns r6, r73065; SOFT-NEXT:    cmp r0, #03066; SOFT-NEXT:    beq .LBB26_73067; SOFT-NEXT:  @ %bb.6:3068; SOFT-NEXT:    ldr r0, .LCPI26_23069; SOFT-NEXT:    str r0, [sp] @ 4-byte Spill3070; SOFT-NEXT:  .LBB26_7:3071; SOFT-NEXT:    bne .LBB26_93072; SOFT-NEXT:  @ %bb.8:3073; SOFT-NEXT:    mov r6, r53074; SOFT-NEXT:  .LBB26_9:3075; SOFT-NEXT:    mov r0, r43076; SOFT-NEXT:    mov r1, r43077; SOFT-NEXT:    bl __aeabi_fcmpun3078; SOFT-NEXT:    cmp r0, #03079; SOFT-NEXT:    mov r0, r73080; SOFT-NEXT:    bne .LBB26_113081; SOFT-NEXT:  @ %bb.10:3082; SOFT-NEXT:    mov r0, r63083; SOFT-NEXT:  .LBB26_11:3084; SOFT-NEXT:    bne .LBB26_133085; SOFT-NEXT:  @ %bb.12:3086; SOFT-NEXT:    ldr r7, [sp] @ 4-byte Reload3087; SOFT-NEXT:  .LBB26_13:3088; SOFT-NEXT:    mov r1, r73089; SOFT-NEXT:    add sp, #43090; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}3091; SOFT-NEXT:    .p2align 23092; SOFT-NEXT:  @ %bb.14:3093; SOFT-NEXT:  .LCPI26_0:3094; SOFT-NEXT:    .long 4294836224 @ 0xfffe00003095; SOFT-NEXT:  .LCPI26_1:3096; SOFT-NEXT:    .long 1476395007 @ 0x57ffffff3097; SOFT-NEXT:  .LCPI26_2:3098; SOFT-NEXT:    .long 131071 @ 0x1ffff3099;3100; VFP2-LABEL: test_signed_i50_f16:3101; VFP2:       @ %bb.0:3102; VFP2-NEXT:    .save {r4, lr}3103; VFP2-NEXT:    push {r4, lr}3104; VFP2-NEXT:    bl __aeabi_h2f3105; VFP2-NEXT:    mov r4, r03106; VFP2-NEXT:    bl __aeabi_f2lz3107; VFP2-NEXT:    vldr s0, .LCPI26_03108; VFP2-NEXT:    vmov s2, r43109; VFP2-NEXT:    vldr s4, .LCPI26_13110; VFP2-NEXT:    vcmp.f32 s2, s03111; VFP2-NEXT:    vmrs APSR_nzcv, fpscr3112; VFP2-NEXT:    ittt lt3113; VFP2-NEXT:    movlt r1, #03114; VFP2-NEXT:    movtlt r1, #655343115; VFP2-NEXT:    movlt r0, #03116; VFP2-NEXT:    vcmp.f32 s2, s43117; VFP2-NEXT:    vmrs APSR_nzcv, fpscr3118; VFP2-NEXT:    it gt3119; VFP2-NEXT:    movgt.w r0, #-13120; VFP2-NEXT:    vcmp.f32 s2, s23121; VFP2-NEXT:    itt gt3122; VFP2-NEXT:    movwgt r1, #655353123; VFP2-NEXT:    movtgt r1, #13124; VFP2-NEXT:    vmrs APSR_nzcv, fpscr3125; VFP2-NEXT:    itt vs3126; VFP2-NEXT:    movvs r0, #03127; VFP2-NEXT:    movvs r1, #03128; VFP2-NEXT:    pop {r4, pc}3129; VFP2-NEXT:    .p2align 23130; VFP2-NEXT:  @ %bb.1:3131; VFP2-NEXT:  .LCPI26_0:3132; VFP2-NEXT:    .long 0xd8000000 @ float -5.62949953E+143133; VFP2-NEXT:  .LCPI26_1:3134; VFP2-NEXT:    .long 0x57ffffff @ float 5.6294992E+143135;3136; FP16-LABEL: test_signed_i50_f16:3137; FP16:       @ %bb.0:3138; FP16-NEXT:    .save {r7, lr}3139; FP16-NEXT:    push {r7, lr}3140; FP16-NEXT:    .vsave {d8}3141; FP16-NEXT:    vpush {d8}3142; FP16-NEXT:    vmov.f16 s0, r03143; FP16-NEXT:    vcvtb.f32.f16 s16, s03144; FP16-NEXT:    vmov r0, s163145; FP16-NEXT:    bl __aeabi_f2lz3146; FP16-NEXT:    vldr s0, .LCPI26_03147; FP16-NEXT:    vldr s2, .LCPI26_13148; FP16-NEXT:    vcmp.f32 s16, s03149; FP16-NEXT:    vmrs APSR_nzcv, fpscr3150; FP16-NEXT:    ittt lt3151; FP16-NEXT:    movlt r1, #03152; FP16-NEXT:    movtlt r1, #655343153; FP16-NEXT:    movlt r0, #03154; FP16-NEXT:    vcmp.f32 s16, s23155; FP16-NEXT:    vmrs APSR_nzcv, fpscr3156; FP16-NEXT:    it gt3157; FP16-NEXT:    movgt.w r0, #-13158; FP16-NEXT:    vcmp.f32 s16, s163159; FP16-NEXT:    itt gt3160; FP16-NEXT:    movwgt r1, #655353161; FP16-NEXT:    movtgt r1, #13162; FP16-NEXT:    vmrs APSR_nzcv, fpscr3163; FP16-NEXT:    itt vs3164; FP16-NEXT:    movvs r0, #03165; FP16-NEXT:    movvs r1, #03166; FP16-NEXT:    vpop {d8}3167; FP16-NEXT:    pop {r7, pc}3168; FP16-NEXT:    .p2align 23169; FP16-NEXT:  @ %bb.1:3170; FP16-NEXT:  .LCPI26_0:3171; FP16-NEXT:    .long 0xd8000000 @ float -5.62949953E+143172; FP16-NEXT:  .LCPI26_1:3173; FP16-NEXT:    .long 0x57ffffff @ float 5.6294992E+143174    %x = call i50 @llvm.fptosi.sat.i50.f16(half %f)3175    ret i50 %x3176}3177 3178define i64 @test_signed_i64_f16(half %f) nounwind {3179; SOFT-LABEL: test_signed_i64_f16:3180; SOFT:       @ %bb.0:3181; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}3182; SOFT-NEXT:    push {r4, r5, r6, r7, lr}3183; SOFT-NEXT:    .pad #43184; SOFT-NEXT:    sub sp, #43185; SOFT-NEXT:    uxth r0, r03186; SOFT-NEXT:    bl __aeabi_h2f3187; SOFT-NEXT:    mov r4, r03188; SOFT-NEXT:    movs r0, #2233189; SOFT-NEXT:    lsls r1, r0, #243190; SOFT-NEXT:    mov r0, r43191; SOFT-NEXT:    bl __aeabi_fcmpge3192; SOFT-NEXT:    mov r6, r03193; SOFT-NEXT:    mov r0, r43194; SOFT-NEXT:    bl __aeabi_f2lz3195; SOFT-NEXT:    movs r2, #13196; SOFT-NEXT:    lsls r7, r2, #313197; SOFT-NEXT:    cmp r6, #03198; SOFT-NEXT:    bne .LBB27_23199; SOFT-NEXT:  @ %bb.1:3200; SOFT-NEXT:    mov r0, r63201; SOFT-NEXT:  .LBB27_2:3202; SOFT-NEXT:    str r0, [sp] @ 4-byte Spill3203; SOFT-NEXT:    beq .LBB27_43204; SOFT-NEXT:  @ %bb.3:3205; SOFT-NEXT:    mov r7, r13206; SOFT-NEXT:  .LBB27_4:3207; SOFT-NEXT:    ldr r1, .LCPI27_03208; SOFT-NEXT:    mov r0, r43209; SOFT-NEXT:    bl __aeabi_fcmpgt3210; SOFT-NEXT:    movs r6, #03211; SOFT-NEXT:    mvns r5, r63212; SOFT-NEXT:    cmp r0, #03213; SOFT-NEXT:    beq .LBB27_63214; SOFT-NEXT:  @ %bb.5:3215; SOFT-NEXT:    ldr r7, .LCPI27_13216; SOFT-NEXT:  .LBB27_6:3217; SOFT-NEXT:    bne .LBB27_83218; SOFT-NEXT:  @ %bb.7:3219; SOFT-NEXT:    ldr r5, [sp] @ 4-byte Reload3220; SOFT-NEXT:  .LBB27_8:3221; SOFT-NEXT:    mov r0, r43222; SOFT-NEXT:    mov r1, r43223; SOFT-NEXT:    bl __aeabi_fcmpun3224; SOFT-NEXT:    cmp r0, #03225; SOFT-NEXT:    mov r0, r63226; SOFT-NEXT:    bne .LBB27_103227; SOFT-NEXT:  @ %bb.9:3228; SOFT-NEXT:    mov r0, r53229; SOFT-NEXT:  .LBB27_10:3230; SOFT-NEXT:    bne .LBB27_123231; SOFT-NEXT:  @ %bb.11:3232; SOFT-NEXT:    mov r6, r73233; SOFT-NEXT:  .LBB27_12:3234; SOFT-NEXT:    mov r1, r63235; SOFT-NEXT:    add sp, #43236; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}3237; SOFT-NEXT:    .p2align 23238; SOFT-NEXT:  @ %bb.13:3239; SOFT-NEXT:  .LCPI27_0:3240; SOFT-NEXT:    .long 1593835519 @ 0x5effffff3241; SOFT-NEXT:  .LCPI27_1:3242; SOFT-NEXT:    .long 2147483647 @ 0x7fffffff3243;3244; VFP2-LABEL: test_signed_i64_f16:3245; VFP2:       @ %bb.0:3246; VFP2-NEXT:    .save {r4, lr}3247; VFP2-NEXT:    push {r4, lr}3248; VFP2-NEXT:    bl __aeabi_h2f3249; VFP2-NEXT:    mov r4, r03250; VFP2-NEXT:    bl __aeabi_f2lz3251; VFP2-NEXT:    vldr s0, .LCPI27_03252; VFP2-NEXT:    vmov s2, r43253; VFP2-NEXT:    vldr s4, .LCPI27_13254; VFP2-NEXT:    vcmp.f32 s2, s03255; VFP2-NEXT:    vmrs APSR_nzcv, fpscr3256; VFP2-NEXT:    itt lt3257; VFP2-NEXT:    movlt r0, #03258; VFP2-NEXT:    movlt.w r1, #-21474836483259; VFP2-NEXT:    vcmp.f32 s2, s43260; VFP2-NEXT:    vmrs APSR_nzcv, fpscr3261; VFP2-NEXT:    itt gt3262; VFP2-NEXT:    mvngt r1, #-21474836483263; VFP2-NEXT:    movgt.w r0, #-13264; VFP2-NEXT:    vcmp.f32 s2, s23265; VFP2-NEXT:    vmrs APSR_nzcv, fpscr3266; VFP2-NEXT:    itt vs3267; VFP2-NEXT:    movvs r0, #03268; VFP2-NEXT:    movvs r1, #03269; VFP2-NEXT:    pop {r4, pc}3270; VFP2-NEXT:    .p2align 23271; VFP2-NEXT:  @ %bb.1:3272; VFP2-NEXT:  .LCPI27_0:3273; VFP2-NEXT:    .long 0xdf000000 @ float -9.22337203E+183274; VFP2-NEXT:  .LCPI27_1:3275; VFP2-NEXT:    .long 0x5effffff @ float 9.22337149E+183276;3277; FP16-LABEL: test_signed_i64_f16:3278; FP16:       @ %bb.0:3279; FP16-NEXT:    .save {r7, lr}3280; FP16-NEXT:    push {r7, lr}3281; FP16-NEXT:    .vsave {d8}3282; FP16-NEXT:    vpush {d8}3283; FP16-NEXT:    vmov.f16 s0, r03284; FP16-NEXT:    vcvtb.f32.f16 s16, s03285; FP16-NEXT:    vmov r0, s163286; FP16-NEXT:    bl __aeabi_f2lz3287; FP16-NEXT:    vldr s0, .LCPI27_03288; FP16-NEXT:    vldr s2, .LCPI27_13289; FP16-NEXT:    vcmp.f32 s16, s03290; FP16-NEXT:    vmrs APSR_nzcv, fpscr3291; FP16-NEXT:    itt lt3292; FP16-NEXT:    movlt r0, #03293; FP16-NEXT:    movlt.w r1, #-21474836483294; FP16-NEXT:    vcmp.f32 s16, s23295; FP16-NEXT:    vmrs APSR_nzcv, fpscr3296; FP16-NEXT:    itt gt3297; FP16-NEXT:    mvngt r1, #-21474836483298; FP16-NEXT:    movgt.w r0, #-13299; FP16-NEXT:    vcmp.f32 s16, s163300; FP16-NEXT:    vmrs APSR_nzcv, fpscr3301; FP16-NEXT:    itt vs3302; FP16-NEXT:    movvs r0, #03303; FP16-NEXT:    movvs r1, #03304; FP16-NEXT:    vpop {d8}3305; FP16-NEXT:    pop {r7, pc}3306; FP16-NEXT:    .p2align 23307; FP16-NEXT:  @ %bb.1:3308; FP16-NEXT:  .LCPI27_0:3309; FP16-NEXT:    .long 0xdf000000 @ float -9.22337203E+183310; FP16-NEXT:  .LCPI27_1:3311; FP16-NEXT:    .long 0x5effffff @ float 9.22337149E+183312    %x = call i64 @llvm.fptosi.sat.i64.f16(half %f)3313    ret i64 %x3314}3315 3316define i100 @test_signed_i100_f16(half %f) nounwind {3317; SOFT-LABEL: test_signed_i100_f16:3318; SOFT:       @ %bb.0:3319; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}3320; SOFT-NEXT:    push {r4, r5, r6, r7, lr}3321; SOFT-NEXT:    .pad #203322; SOFT-NEXT:    sub sp, #203323; SOFT-NEXT:    uxth r0, r03324; SOFT-NEXT:    bl __aeabi_h2f3325; SOFT-NEXT:    mov r4, r03326; SOFT-NEXT:    movs r0, #2413327; SOFT-NEXT:    lsls r1, r0, #243328; SOFT-NEXT:    mov r0, r43329; SOFT-NEXT:    bl __aeabi_fcmpge3330; SOFT-NEXT:    mov r6, r03331; SOFT-NEXT:    mov r0, r43332; SOFT-NEXT:    bl __fixsfti3333; SOFT-NEXT:    movs r5, #73334; SOFT-NEXT:    str r5, [sp, #16] @ 4-byte Spill3335; SOFT-NEXT:    mvns r7, r53336; SOFT-NEXT:    cmp r6, #03337; SOFT-NEXT:    beq .LBB28_173338; SOFT-NEXT:  @ %bb.1:3339; SOFT-NEXT:    beq .LBB28_183340; SOFT-NEXT:  .LBB28_2:3341; SOFT-NEXT:    bne .LBB28_43342; SOFT-NEXT:  .LBB28_3:3343; SOFT-NEXT:    mov r2, r63344; SOFT-NEXT:  .LBB28_4:3345; SOFT-NEXT:    str r2, [sp, #4] @ 4-byte Spill3346; SOFT-NEXT:    str r1, [sp, #8] @ 4-byte Spill3347; SOFT-NEXT:    str r0, [sp, #12] @ 4-byte Spill3348; SOFT-NEXT:    beq .LBB28_63349; SOFT-NEXT:  @ %bb.5:3350; SOFT-NEXT:    mov r7, r33351; SOFT-NEXT:  .LBB28_6:3352; SOFT-NEXT:    ldr r1, .LCPI28_03353; SOFT-NEXT:    mov r0, r43354; SOFT-NEXT:    bl __aeabi_fcmpgt3355; SOFT-NEXT:    movs r6, #03356; SOFT-NEXT:    mvns r5, r63357; SOFT-NEXT:    cmp r0, #03358; SOFT-NEXT:    beq .LBB28_193359; SOFT-NEXT:  @ %bb.7:3360; SOFT-NEXT:    mov r0, r53361; SOFT-NEXT:    beq .LBB28_203362; SOFT-NEXT:  .LBB28_8:3363; SOFT-NEXT:    mov r7, r53364; SOFT-NEXT:    beq .LBB28_213365; SOFT-NEXT:  .LBB28_9:3366; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill3367; SOFT-NEXT:    bne .LBB28_113368; SOFT-NEXT:  .LBB28_10:3369; SOFT-NEXT:    ldr r5, [sp, #12] @ 4-byte Reload3370; SOFT-NEXT:  .LBB28_11:3371; SOFT-NEXT:    mov r0, r43372; SOFT-NEXT:    mov r1, r43373; SOFT-NEXT:    bl __aeabi_fcmpun3374; SOFT-NEXT:    cmp r0, #03375; SOFT-NEXT:    mov r0, r63376; SOFT-NEXT:    beq .LBB28_223377; SOFT-NEXT:  @ %bb.12:3378; SOFT-NEXT:    mov r1, r63379; SOFT-NEXT:    beq .LBB28_233380; SOFT-NEXT:  .LBB28_13:3381; SOFT-NEXT:    mov r2, r63382; SOFT-NEXT:    beq .LBB28_243383; SOFT-NEXT:  .LBB28_14:3384; SOFT-NEXT:    bne .LBB28_163385; SOFT-NEXT:  .LBB28_15:3386; SOFT-NEXT:    ldr r6, [sp, #16] @ 4-byte Reload3387; SOFT-NEXT:  .LBB28_16:3388; SOFT-NEXT:    mov r3, r63389; SOFT-NEXT:    add sp, #203390; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}3391; SOFT-NEXT:  .LBB28_17:3392; SOFT-NEXT:    mov r0, r63393; SOFT-NEXT:    bne .LBB28_23394; SOFT-NEXT:  .LBB28_18:3395; SOFT-NEXT:    mov r1, r63396; SOFT-NEXT:    beq .LBB28_33397; SOFT-NEXT:    b .LBB28_43398; SOFT-NEXT:  .LBB28_19:3399; SOFT-NEXT:    str r7, [sp, #16] @ 4-byte Spill3400; SOFT-NEXT:    mov r0, r53401; SOFT-NEXT:    bne .LBB28_83402; SOFT-NEXT:  .LBB28_20:3403; SOFT-NEXT:    ldr r0, [sp, #4] @ 4-byte Reload3404; SOFT-NEXT:    mov r7, r53405; SOFT-NEXT:    bne .LBB28_93406; SOFT-NEXT:  .LBB28_21:3407; SOFT-NEXT:    ldr r7, [sp, #8] @ 4-byte Reload3408; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill3409; SOFT-NEXT:    beq .LBB28_103410; SOFT-NEXT:    b .LBB28_113411; SOFT-NEXT:  .LBB28_22:3412; SOFT-NEXT:    mov r0, r53413; SOFT-NEXT:    mov r1, r63414; SOFT-NEXT:    bne .LBB28_133415; SOFT-NEXT:  .LBB28_23:3416; SOFT-NEXT:    mov r1, r73417; SOFT-NEXT:    mov r2, r63418; SOFT-NEXT:    bne .LBB28_143419; SOFT-NEXT:  .LBB28_24:3420; SOFT-NEXT:    ldr r2, [sp, #8] @ 4-byte Reload3421; SOFT-NEXT:    beq .LBB28_153422; SOFT-NEXT:    b .LBB28_163423; SOFT-NEXT:    .p2align 23424; SOFT-NEXT:  @ %bb.25:3425; SOFT-NEXT:  .LCPI28_0:3426; SOFT-NEXT:    .long 1895825407 @ 0x70ffffff3427;3428; VFP2-LABEL: test_signed_i100_f16:3429; VFP2:       @ %bb.0:3430; VFP2-NEXT:    .save {r4, lr}3431; VFP2-NEXT:    push {r4, lr}3432; VFP2-NEXT:    bl __aeabi_h2f3433; VFP2-NEXT:    mov r4, r03434; VFP2-NEXT:    bl __fixsfti3435; VFP2-NEXT:    vldr s0, .LCPI28_03436; VFP2-NEXT:    vmov s2, r43437; VFP2-NEXT:    vldr s4, .LCPI28_13438; VFP2-NEXT:    vcmp.f32 s2, s03439; VFP2-NEXT:    vmrs APSR_nzcv, fpscr3440; VFP2-NEXT:    itttt lt3441; VFP2-NEXT:    movlt r0, #03442; VFP2-NEXT:    movlt r1, #03443; VFP2-NEXT:    movlt r2, #03444; VFP2-NEXT:    mvnlt r3, #73445; VFP2-NEXT:    vcmp.f32 s2, s43446; VFP2-NEXT:    vmrs APSR_nzcv, fpscr3447; VFP2-NEXT:    itttt gt3448; VFP2-NEXT:    movgt r3, #73449; VFP2-NEXT:    movgt.w r2, #-13450; VFP2-NEXT:    movgt.w r1, #-13451; VFP2-NEXT:    movgt.w r0, #-13452; VFP2-NEXT:    vcmp.f32 s2, s23453; VFP2-NEXT:    vmrs APSR_nzcv, fpscr3454; VFP2-NEXT:    itttt vs3455; VFP2-NEXT:    movvs r0, #03456; VFP2-NEXT:    movvs r1, #03457; VFP2-NEXT:    movvs r2, #03458; VFP2-NEXT:    movvs r3, #03459; VFP2-NEXT:    pop {r4, pc}3460; VFP2-NEXT:    .p2align 23461; VFP2-NEXT:  @ %bb.1:3462; VFP2-NEXT:  .LCPI28_0:3463; VFP2-NEXT:    .long 0xf1000000 @ float -6.338253E+293464; VFP2-NEXT:  .LCPI28_1:3465; VFP2-NEXT:    .long 0x70ffffff @ float 6.33825262E+293466;3467; FP16-LABEL: test_signed_i100_f16:3468; FP16:       @ %bb.0:3469; FP16-NEXT:    .save {r7, lr}3470; FP16-NEXT:    push {r7, lr}3471; FP16-NEXT:    .vsave {d8}3472; FP16-NEXT:    vpush {d8}3473; FP16-NEXT:    vmov.f16 s0, r03474; FP16-NEXT:    vcvtb.f32.f16 s16, s03475; FP16-NEXT:    vmov r0, s163476; FP16-NEXT:    bl __fixsfti3477; FP16-NEXT:    vldr s0, .LCPI28_03478; FP16-NEXT:    vldr s2, .LCPI28_13479; FP16-NEXT:    vcmp.f32 s16, s03480; FP16-NEXT:    vmrs APSR_nzcv, fpscr3481; FP16-NEXT:    itttt lt3482; FP16-NEXT:    movlt r0, #03483; FP16-NEXT:    movlt r1, #03484; FP16-NEXT:    movlt r2, #03485; FP16-NEXT:    mvnlt r3, #73486; FP16-NEXT:    vcmp.f32 s16, s23487; FP16-NEXT:    vmrs APSR_nzcv, fpscr3488; FP16-NEXT:    itttt gt3489; FP16-NEXT:    movgt r3, #73490; FP16-NEXT:    movgt.w r2, #-13491; FP16-NEXT:    movgt.w r1, #-13492; FP16-NEXT:    movgt.w r0, #-13493; FP16-NEXT:    vcmp.f32 s16, s163494; FP16-NEXT:    vmrs APSR_nzcv, fpscr3495; FP16-NEXT:    itttt vs3496; FP16-NEXT:    movvs r0, #03497; FP16-NEXT:    movvs r1, #03498; FP16-NEXT:    movvs r2, #03499; FP16-NEXT:    movvs r3, #03500; FP16-NEXT:    vpop {d8}3501; FP16-NEXT:    pop {r7, pc}3502; FP16-NEXT:    .p2align 23503; FP16-NEXT:  @ %bb.1:3504; FP16-NEXT:  .LCPI28_0:3505; FP16-NEXT:    .long 0xf1000000 @ float -6.338253E+293506; FP16-NEXT:  .LCPI28_1:3507; FP16-NEXT:    .long 0x70ffffff @ float 6.33825262E+293508    %x = call i100 @llvm.fptosi.sat.i100.f16(half %f)3509    ret i100 %x3510}3511 3512define i128 @test_signed_i128_f16(half %f) nounwind {3513; SOFT-LABEL: test_signed_i128_f16:3514; SOFT:       @ %bb.0:3515; SOFT-NEXT:    .save {r4, r5, r6, r7, lr}3516; SOFT-NEXT:    push {r4, r5, r6, r7, lr}3517; SOFT-NEXT:    .pad #203518; SOFT-NEXT:    sub sp, #203519; SOFT-NEXT:    uxth r0, r03520; SOFT-NEXT:    bl __aeabi_h2f3521; SOFT-NEXT:    mov r4, r03522; SOFT-NEXT:    movs r0, #2553523; SOFT-NEXT:    lsls r1, r0, #243524; SOFT-NEXT:    mov r0, r43525; SOFT-NEXT:    bl __aeabi_fcmpge3526; SOFT-NEXT:    mov r6, r03527; SOFT-NEXT:    mov r0, r43528; SOFT-NEXT:    bl __fixsfti3529; SOFT-NEXT:    movs r5, #13530; SOFT-NEXT:    lsls r7, r5, #313531; SOFT-NEXT:    cmp r6, #03532; SOFT-NEXT:    beq .LBB29_183533; SOFT-NEXT:  @ %bb.1:3534; SOFT-NEXT:    beq .LBB29_193535; SOFT-NEXT:  .LBB29_2:3536; SOFT-NEXT:    bne .LBB29_43537; SOFT-NEXT:  .LBB29_3:3538; SOFT-NEXT:    mov r2, r63539; SOFT-NEXT:  .LBB29_4:3540; SOFT-NEXT:    str r2, [sp, #4] @ 4-byte Spill3541; SOFT-NEXT:    str r1, [sp, #8] @ 4-byte Spill3542; SOFT-NEXT:    str r0, [sp, #12] @ 4-byte Spill3543; SOFT-NEXT:    beq .LBB29_63544; SOFT-NEXT:  @ %bb.5:3545; SOFT-NEXT:    mov r7, r33546; SOFT-NEXT:  .LBB29_6:3547; SOFT-NEXT:    ldr r1, .LCPI29_03548; SOFT-NEXT:    mov r0, r43549; SOFT-NEXT:    bl __aeabi_fcmpgt3550; SOFT-NEXT:    movs r6, #03551; SOFT-NEXT:    mvns r5, r63552; SOFT-NEXT:    cmp r0, #03553; SOFT-NEXT:    beq .LBB29_83554; SOFT-NEXT:  @ %bb.7:3555; SOFT-NEXT:    ldr r7, .LCPI29_13556; SOFT-NEXT:  .LBB29_8:3557; SOFT-NEXT:    str r7, [sp, #16] @ 4-byte Spill3558; SOFT-NEXT:    mov r0, r53559; SOFT-NEXT:    beq .LBB29_203560; SOFT-NEXT:  @ %bb.9:3561; SOFT-NEXT:    mov r7, r53562; SOFT-NEXT:    beq .LBB29_213563; SOFT-NEXT:  .LBB29_10:3564; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill3565; SOFT-NEXT:    bne .LBB29_123566; SOFT-NEXT:  .LBB29_11:3567; SOFT-NEXT:    ldr r5, [sp, #12] @ 4-byte Reload3568; SOFT-NEXT:  .LBB29_12:3569; SOFT-NEXT:    mov r0, r43570; SOFT-NEXT:    mov r1, r43571; SOFT-NEXT:    bl __aeabi_fcmpun3572; SOFT-NEXT:    cmp r0, #03573; SOFT-NEXT:    mov r0, r63574; SOFT-NEXT:    beq .LBB29_223575; SOFT-NEXT:  @ %bb.13:3576; SOFT-NEXT:    mov r1, r63577; SOFT-NEXT:    beq .LBB29_233578; SOFT-NEXT:  .LBB29_14:3579; SOFT-NEXT:    mov r2, r63580; SOFT-NEXT:    beq .LBB29_243581; SOFT-NEXT:  .LBB29_15:3582; SOFT-NEXT:    ldr r3, [sp, #16] @ 4-byte Reload3583; SOFT-NEXT:    bne .LBB29_173584; SOFT-NEXT:  .LBB29_16:3585; SOFT-NEXT:    mov r6, r33586; SOFT-NEXT:  .LBB29_17:3587; SOFT-NEXT:    mov r3, r63588; SOFT-NEXT:    add sp, #203589; SOFT-NEXT:    pop {r4, r5, r6, r7, pc}3590; SOFT-NEXT:  .LBB29_18:3591; SOFT-NEXT:    mov r0, r63592; SOFT-NEXT:    bne .LBB29_23593; SOFT-NEXT:  .LBB29_19:3594; SOFT-NEXT:    mov r1, r63595; SOFT-NEXT:    beq .LBB29_33596; SOFT-NEXT:    b .LBB29_43597; SOFT-NEXT:  .LBB29_20:3598; SOFT-NEXT:    ldr r0, [sp, #4] @ 4-byte Reload3599; SOFT-NEXT:    mov r7, r53600; SOFT-NEXT:    bne .LBB29_103601; SOFT-NEXT:  .LBB29_21:3602; SOFT-NEXT:    ldr r7, [sp, #8] @ 4-byte Reload3603; SOFT-NEXT:    str r0, [sp, #8] @ 4-byte Spill3604; SOFT-NEXT:    beq .LBB29_113605; SOFT-NEXT:    b .LBB29_123606; SOFT-NEXT:  .LBB29_22:3607; SOFT-NEXT:    mov r0, r53608; SOFT-NEXT:    mov r1, r63609; SOFT-NEXT:    bne .LBB29_143610; SOFT-NEXT:  .LBB29_23:3611; SOFT-NEXT:    mov r1, r73612; SOFT-NEXT:    mov r2, r63613; SOFT-NEXT:    bne .LBB29_153614; SOFT-NEXT:  .LBB29_24:3615; SOFT-NEXT:    ldr r2, [sp, #8] @ 4-byte Reload3616; SOFT-NEXT:    ldr r3, [sp, #16] @ 4-byte Reload3617; SOFT-NEXT:    beq .LBB29_163618; SOFT-NEXT:    b .LBB29_173619; SOFT-NEXT:    .p2align 23620; SOFT-NEXT:  @ %bb.25:3621; SOFT-NEXT:  .LCPI29_0:3622; SOFT-NEXT:    .long 2130706431 @ 0x7effffff3623; SOFT-NEXT:  .LCPI29_1:3624; SOFT-NEXT:    .long 2147483647 @ 0x7fffffff3625;3626; VFP2-LABEL: test_signed_i128_f16:3627; VFP2:       @ %bb.0:3628; VFP2-NEXT:    .save {r4, lr}3629; VFP2-NEXT:    push {r4, lr}3630; VFP2-NEXT:    bl __aeabi_h2f3631; VFP2-NEXT:    mov r4, r03632; VFP2-NEXT:    bl __fixsfti3633; VFP2-NEXT:    vldr s0, .LCPI29_03634; VFP2-NEXT:    vmov s2, r43635; VFP2-NEXT:    vldr s4, .LCPI29_13636; VFP2-NEXT:    vcmp.f32 s2, s03637; VFP2-NEXT:    vmrs APSR_nzcv, fpscr3638; VFP2-NEXT:    itttt lt3639; VFP2-NEXT:    movlt r0, #03640; VFP2-NEXT:    movlt r1, #03641; VFP2-NEXT:    movlt r2, #03642; VFP2-NEXT:    movlt.w r3, #-21474836483643; VFP2-NEXT:    vcmp.f32 s2, s43644; VFP2-NEXT:    vmrs APSR_nzcv, fpscr3645; VFP2-NEXT:    itttt gt3646; VFP2-NEXT:    mvngt r3, #-21474836483647; VFP2-NEXT:    movgt.w r2, #-13648; VFP2-NEXT:    movgt.w r1, #-13649; VFP2-NEXT:    movgt.w r0, #-13650; VFP2-NEXT:    vcmp.f32 s2, s23651; VFP2-NEXT:    vmrs APSR_nzcv, fpscr3652; VFP2-NEXT:    itttt vs3653; VFP2-NEXT:    movvs r0, #03654; VFP2-NEXT:    movvs r1, #03655; VFP2-NEXT:    movvs r2, #03656; VFP2-NEXT:    movvs r3, #03657; VFP2-NEXT:    pop {r4, pc}3658; VFP2-NEXT:    .p2align 23659; VFP2-NEXT:  @ %bb.1:3660; VFP2-NEXT:  .LCPI29_0:3661; VFP2-NEXT:    .long 0xff000000 @ float -1.70141183E+383662; VFP2-NEXT:  .LCPI29_1:3663; VFP2-NEXT:    .long 0x7effffff @ float 1.70141173E+383664;3665; FP16-LABEL: test_signed_i128_f16:3666; FP16:       @ %bb.0:3667; FP16-NEXT:    .save {r7, lr}3668; FP16-NEXT:    push {r7, lr}3669; FP16-NEXT:    .vsave {d8}3670; FP16-NEXT:    vpush {d8}3671; FP16-NEXT:    vmov.f16 s0, r03672; FP16-NEXT:    vcvtb.f32.f16 s16, s03673; FP16-NEXT:    vmov r0, s163674; FP16-NEXT:    bl __fixsfti3675; FP16-NEXT:    vldr s0, .LCPI29_03676; FP16-NEXT:    vldr s2, .LCPI29_13677; FP16-NEXT:    vcmp.f32 s16, s03678; FP16-NEXT:    vmrs APSR_nzcv, fpscr3679; FP16-NEXT:    itttt lt3680; FP16-NEXT:    movlt r0, #03681; FP16-NEXT:    movlt r1, #03682; FP16-NEXT:    movlt r2, #03683; FP16-NEXT:    movlt.w r3, #-21474836483684; FP16-NEXT:    vcmp.f32 s16, s23685; FP16-NEXT:    vmrs APSR_nzcv, fpscr3686; FP16-NEXT:    itttt gt3687; FP16-NEXT:    mvngt r3, #-21474836483688; FP16-NEXT:    movgt.w r2, #-13689; FP16-NEXT:    movgt.w r1, #-13690; FP16-NEXT:    movgt.w r0, #-13691; FP16-NEXT:    vcmp.f32 s16, s163692; FP16-NEXT:    vmrs APSR_nzcv, fpscr3693; FP16-NEXT:    itttt vs3694; FP16-NEXT:    movvs r0, #03695; FP16-NEXT:    movvs r1, #03696; FP16-NEXT:    movvs r2, #03697; FP16-NEXT:    movvs r3, #03698; FP16-NEXT:    vpop {d8}3699; FP16-NEXT:    pop {r7, pc}3700; FP16-NEXT:    .p2align 23701; FP16-NEXT:  @ %bb.1:3702; FP16-NEXT:  .LCPI29_0:3703; FP16-NEXT:    .long 0xff000000 @ float -1.70141183E+383704; FP16-NEXT:  .LCPI29_1:3705; FP16-NEXT:    .long 0x7effffff @ float 1.70141173E+383706    %x = call i128 @llvm.fptosi.sat.i128.f16(half %f)3707    ret i128 %x3708}3709