brintos

brintos / llvm-project-archived public Read only

0
0
Text · 76.9 KiB · 5f4e391 Raw
2395 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2 3; RUN: llc %s -o - -mtriple=armv7-unknown-none-eabihf                | FileCheck %s --check-prefixes=LE4; RUN: llc %s -o - -mtriple=armv7-unknown-none-eabihf -mattr=+neon   | FileCheck %s --check-prefixes=LE5; RUN: llc %s -o - -mtriple=armebv7-unknown-none-eabihf              | FileCheck %s --check-prefixes=BE6; RUN: llc %s -o - -mtriple=armebv7-unknown-none-eabihf -mattr=+neon | FileCheck %s --check-prefixes=BE7 8define <1 x i64> @llrint_v1i64_v1f16(<1 x half> %x) {9; LE-LABEL: llrint_v1i64_v1f16:10; LE:       @ %bb.0:11; LE-NEXT:    .save {r11, lr}12; LE-NEXT:    push {r11, lr}13; LE-NEXT:    vmov r0, s014; LE-NEXT:    bl __aeabi_f2h15; LE-NEXT:    bl __aeabi_h2f16; LE-NEXT:    vmov s0, r017; LE-NEXT:    bl llrintf18; LE-NEXT:    vmov.32 d0[0], r019; LE-NEXT:    vmov.32 d0[1], r120; LE-NEXT:    pop {r11, pc}21;22; BE-LABEL: llrint_v1i64_v1f16:23; BE:       @ %bb.0:24; BE-NEXT:    .save {r11, lr}25; BE-NEXT:    push {r11, lr}26; BE-NEXT:    vmov r0, s027; BE-NEXT:    bl __aeabi_f2h28; BE-NEXT:    bl __aeabi_h2f29; BE-NEXT:    vmov s0, r030; BE-NEXT:    bl llrintf31; BE-NEXT:    vmov.32 d16[0], r032; BE-NEXT:    vmov.32 d16[1], r133; BE-NEXT:    vrev64.32 d0, d1634; BE-NEXT:    pop {r11, pc}35  %a = call <1 x i64> @llvm.llrint.v1i64.v1f16(<1 x half> %x)36  ret <1 x i64> %a37}38declare <1 x i64> @llvm.llrint.v1i64.v1f16(<1 x half>)39 40define <2 x i64> @llrint_v1i64_v2f16(<2 x half> %x) {41; LE-LABEL: llrint_v1i64_v2f16:42; LE:       @ %bb.0:43; LE-NEXT:    .save {r4, r5, r11, lr}44; LE-NEXT:    push {r4, r5, r11, lr}45; LE-NEXT:    .vsave {d8, d9}46; LE-NEXT:    vpush {d8, d9}47; LE-NEXT:    vmov r0, s148; LE-NEXT:    vmov.f32 s16, s049; LE-NEXT:    bl __aeabi_h2f50; LE-NEXT:    vmov s0, r051; LE-NEXT:    bl llrintf52; LE-NEXT:    mov r4, r053; LE-NEXT:    vmov r0, s1654; LE-NEXT:    mov r5, r155; LE-NEXT:    bl __aeabi_h2f56; LE-NEXT:    vmov s0, r057; LE-NEXT:    vmov.32 d9[0], r458; LE-NEXT:    bl llrintf59; LE-NEXT:    vmov.32 d8[0], r060; LE-NEXT:    vmov.32 d9[1], r561; LE-NEXT:    vmov.32 d8[1], r162; LE-NEXT:    vorr q0, q4, q463; LE-NEXT:    vpop {d8, d9}64; LE-NEXT:    pop {r4, r5, r11, pc}65;66; BE-LABEL: llrint_v1i64_v2f16:67; BE:       @ %bb.0:68; BE-NEXT:    .save {r4, r5, r11, lr}69; BE-NEXT:    push {r4, r5, r11, lr}70; BE-NEXT:    .vsave {d8}71; BE-NEXT:    vpush {d8}72; BE-NEXT:    vmov r0, s173; BE-NEXT:    vmov.f32 s16, s074; BE-NEXT:    bl __aeabi_h2f75; BE-NEXT:    vmov s0, r076; BE-NEXT:    bl llrintf77; BE-NEXT:    mov r4, r078; BE-NEXT:    vmov r0, s1679; BE-NEXT:    mov r5, r180; BE-NEXT:    bl __aeabi_h2f81; BE-NEXT:    vmov s0, r082; BE-NEXT:    vmov.32 d8[0], r483; BE-NEXT:    bl llrintf84; BE-NEXT:    vmov.32 d16[0], r085; BE-NEXT:    vmov.32 d8[1], r586; BE-NEXT:    vmov.32 d16[1], r187; BE-NEXT:    vrev64.32 d1, d888; BE-NEXT:    vrev64.32 d0, d1689; BE-NEXT:    vpop {d8}90; BE-NEXT:    pop {r4, r5, r11, pc}91  %a = call <2 x i64> @llvm.llrint.v2i64.v2f16(<2 x half> %x)92  ret <2 x i64> %a93}94declare <2 x i64> @llvm.llrint.v2i64.v2f16(<2 x half>)95 96define <4 x i64> @llrint_v4i64_v4f16(<4 x half> %x) {97; LE-LABEL: llrint_v4i64_v4f16:98; LE:       @ %bb.0:99; LE-NEXT:    .save {r4, r5, r6, r7, r11, lr}100; LE-NEXT:    push {r4, r5, r6, r7, r11, lr}101; LE-NEXT:    .vsave {d12, d13}102; LE-NEXT:    vpush {d12, d13}103; LE-NEXT:    .vsave {d8, d9, d10}104; LE-NEXT:    vpush {d8, d9, d10}105; LE-NEXT:    vmov r0, s1106; LE-NEXT:    vmov.f32 s16, s3107; LE-NEXT:    vmov.f32 s20, s2108; LE-NEXT:    vmov.f32 s18, s0109; LE-NEXT:    bl __aeabi_h2f110; LE-NEXT:    vmov s0, r0111; LE-NEXT:    bl llrintf112; LE-NEXT:    mov r5, r0113; LE-NEXT:    vmov r0, s18114; LE-NEXT:    mov r4, r1115; LE-NEXT:    bl __aeabi_h2f116; LE-NEXT:    mov r7, r0117; LE-NEXT:    vmov r0, s16118; LE-NEXT:    bl __aeabi_h2f119; LE-NEXT:    vmov s0, r0120; LE-NEXT:    bl llrintf121; LE-NEXT:    vmov s0, r7122; LE-NEXT:    mov r6, r1123; LE-NEXT:    vmov.32 d9[0], r0124; LE-NEXT:    bl llrintf125; LE-NEXT:    vmov.32 d12[0], r0126; LE-NEXT:    vmov r0, s20127; LE-NEXT:    mov r7, r1128; LE-NEXT:    bl __aeabi_h2f129; LE-NEXT:    vmov s0, r0130; LE-NEXT:    vmov.32 d13[0], r5131; LE-NEXT:    bl llrintf132; LE-NEXT:    vmov.32 d8[0], r0133; LE-NEXT:    vmov.32 d13[1], r4134; LE-NEXT:    vmov.32 d9[1], r6135; LE-NEXT:    vmov.32 d12[1], r7136; LE-NEXT:    vmov.32 d8[1], r1137; LE-NEXT:    vorr q0, q6, q6138; LE-NEXT:    vorr q1, q4, q4139; LE-NEXT:    vpop {d8, d9, d10}140; LE-NEXT:    vpop {d12, d13}141; LE-NEXT:    pop {r4, r5, r6, r7, r11, pc}142;143; BE-LABEL: llrint_v4i64_v4f16:144; BE:       @ %bb.0:145; BE-NEXT:    .save {r4, r5, r6, r7, r11, lr}146; BE-NEXT:    push {r4, r5, r6, r7, r11, lr}147; BE-NEXT:    .vsave {d8, d9, d10}148; BE-NEXT:    vpush {d8, d9, d10}149; BE-NEXT:    vmov r0, s1150; BE-NEXT:    vmov.f32 s16, s3151; BE-NEXT:    vmov.f32 s18, s2152; BE-NEXT:    vmov.f32 s20, s0153; BE-NEXT:    bl __aeabi_h2f154; BE-NEXT:    vmov s0, r0155; BE-NEXT:    bl llrintf156; BE-NEXT:    mov r5, r0157; BE-NEXT:    vmov r0, s20158; BE-NEXT:    mov r4, r1159; BE-NEXT:    bl __aeabi_h2f160; BE-NEXT:    mov r7, r0161; BE-NEXT:    vmov r0, s16162; BE-NEXT:    bl __aeabi_h2f163; BE-NEXT:    vmov s0, r0164; BE-NEXT:    bl llrintf165; BE-NEXT:    vmov s0, r7166; BE-NEXT:    mov r6, r1167; BE-NEXT:    vmov.32 d8[0], r0168; BE-NEXT:    bl llrintf169; BE-NEXT:    vmov.32 d10[0], r0170; BE-NEXT:    vmov r0, s18171; BE-NEXT:    mov r7, r1172; BE-NEXT:    bl __aeabi_h2f173; BE-NEXT:    vmov s0, r0174; BE-NEXT:    vmov.32 d9[0], r5175; BE-NEXT:    bl llrintf176; BE-NEXT:    vmov.32 d16[0], r0177; BE-NEXT:    vmov.32 d9[1], r4178; BE-NEXT:    vmov.32 d8[1], r6179; BE-NEXT:    vmov.32 d10[1], r7180; BE-NEXT:    vmov.32 d16[1], r1181; BE-NEXT:    vrev64.32 d1, d9182; BE-NEXT:    vrev64.32 d3, d8183; BE-NEXT:    vrev64.32 d0, d10184; BE-NEXT:    vrev64.32 d2, d16185; BE-NEXT:    vpop {d8, d9, d10}186; BE-NEXT:    pop {r4, r5, r6, r7, r11, pc}187  %a = call <4 x i64> @llvm.llrint.v4i64.v4f16(<4 x half> %x)188  ret <4 x i64> %a189}190declare <4 x i64> @llvm.llrint.v4i64.v4f16(<4 x half>)191 192define <8 x i64> @llrint_v8i64_v8f16(<8 x half> %x) {193; LE-LABEL: llrint_v8i64_v8f16:194; LE:       @ %bb.0:195; LE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}196; LE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, r11, lr}197; LE-NEXT:    .pad #4198; LE-NEXT:    sub sp, sp, #4199; LE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}200; LE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}201; LE-NEXT:    .pad #8202; LE-NEXT:    sub sp, sp, #8203; LE-NEXT:    vmov r0, s1204; LE-NEXT:    vstr s6, [sp, #4] @ 4-byte Spill205; LE-NEXT:    vmov.f32 s16, s7206; LE-NEXT:    vmov.f32 s18, s5207; LE-NEXT:    vmov.f32 s20, s4208; LE-NEXT:    vmov.f32 s22, s3209; LE-NEXT:    vmov.f32 s24, s2210; LE-NEXT:    vmov.f32 s26, s0211; LE-NEXT:    bl __aeabi_h2f212; LE-NEXT:    vmov s0, r0213; LE-NEXT:    bl llrintf214; LE-NEXT:    mov r9, r0215; LE-NEXT:    vmov r0, s26216; LE-NEXT:    str r1, [sp] @ 4-byte Spill217; LE-NEXT:    bl __aeabi_h2f218; LE-NEXT:    mov r10, r0219; LE-NEXT:    vmov r0, s22220; LE-NEXT:    bl __aeabi_h2f221; LE-NEXT:    mov r5, r0222; LE-NEXT:    vmov r0, s24223; LE-NEXT:    bl __aeabi_h2f224; LE-NEXT:    mov r7, r0225; LE-NEXT:    vmov r0, s18226; LE-NEXT:    bl __aeabi_h2f227; LE-NEXT:    mov r6, r0228; LE-NEXT:    vmov r0, s20229; LE-NEXT:    bl __aeabi_h2f230; LE-NEXT:    mov r4, r0231; LE-NEXT:    vmov r0, s16232; LE-NEXT:    bl __aeabi_h2f233; LE-NEXT:    vmov s0, r0234; LE-NEXT:    bl llrintf235; LE-NEXT:    vmov s0, r4236; LE-NEXT:    mov r11, r1237; LE-NEXT:    vmov.32 d11[0], r0238; LE-NEXT:    bl llrintf239; LE-NEXT:    vmov s0, r6240; LE-NEXT:    mov r8, r1241; LE-NEXT:    vmov.32 d12[0], r0242; LE-NEXT:    bl llrintf243; LE-NEXT:    vmov s0, r7244; LE-NEXT:    mov r6, r1245; LE-NEXT:    vmov.32 d13[0], r0246; LE-NEXT:    bl llrintf247; LE-NEXT:    vmov s0, r5248; LE-NEXT:    mov r7, r1249; LE-NEXT:    vmov.32 d14[0], r0250; LE-NEXT:    bl llrintf251; LE-NEXT:    vmov s0, r10252; LE-NEXT:    mov r5, r1253; LE-NEXT:    vmov.32 d15[0], r0254; LE-NEXT:    bl llrintf255; LE-NEXT:    vldr s0, [sp, #4] @ 4-byte Reload256; LE-NEXT:    mov r4, r1257; LE-NEXT:    vmov.32 d8[0], r0258; LE-NEXT:    vmov r0, s0259; LE-NEXT:    bl __aeabi_h2f260; LE-NEXT:    vmov s0, r0261; LE-NEXT:    vmov.32 d9[0], r9262; LE-NEXT:    bl llrintf263; LE-NEXT:    vmov.32 d10[0], r0264; LE-NEXT:    ldr r0, [sp] @ 4-byte Reload265; LE-NEXT:    vmov.32 d15[1], r5266; LE-NEXT:    vmov.32 d9[1], r0267; LE-NEXT:    vmov.32 d13[1], r6268; LE-NEXT:    vmov.32 d11[1], r11269; LE-NEXT:    vmov.32 d8[1], r4270; LE-NEXT:    vmov.32 d14[1], r7271; LE-NEXT:    vorr q0, q4, q4272; LE-NEXT:    vmov.32 d12[1], r8273; LE-NEXT:    vorr q1, q7, q7274; LE-NEXT:    vmov.32 d10[1], r1275; LE-NEXT:    vorr q2, q6, q6276; LE-NEXT:    vorr q3, q5, q5277; LE-NEXT:    add sp, sp, #8278; LE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}279; LE-NEXT:    add sp, sp, #4280; LE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}281;282; BE-LABEL: llrint_v8i64_v8f16:283; BE:       @ %bb.0:284; BE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}285; BE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, r11, lr}286; BE-NEXT:    .pad #4287; BE-NEXT:    sub sp, sp, #4288; BE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14}289; BE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14}290; BE-NEXT:    .pad #8291; BE-NEXT:    sub sp, sp, #8292; BE-NEXT:    vmov r0, s1293; BE-NEXT:    vmov.f32 s18, s7294; BE-NEXT:    vmov.f32 s16, s6295; BE-NEXT:    vmov.f32 s20, s5296; BE-NEXT:    vmov.f32 s22, s4297; BE-NEXT:    vmov.f32 s24, s3298; BE-NEXT:    vmov.f32 s26, s2299; BE-NEXT:    vmov.f32 s28, s0300; BE-NEXT:    bl __aeabi_h2f301; BE-NEXT:    vmov s0, r0302; BE-NEXT:    bl llrintf303; BE-NEXT:    mov r9, r0304; BE-NEXT:    vmov r0, s28305; BE-NEXT:    str r1, [sp, #4] @ 4-byte Spill306; BE-NEXT:    bl __aeabi_h2f307; BE-NEXT:    mov r10, r0308; BE-NEXT:    vmov r0, s24309; BE-NEXT:    bl __aeabi_h2f310; BE-NEXT:    mov r5, r0311; BE-NEXT:    vmov r0, s26312; BE-NEXT:    bl __aeabi_h2f313; BE-NEXT:    mov r7, r0314; BE-NEXT:    vmov r0, s20315; BE-NEXT:    bl __aeabi_h2f316; BE-NEXT:    mov r6, r0317; BE-NEXT:    vmov r0, s22318; BE-NEXT:    bl __aeabi_h2f319; BE-NEXT:    mov r4, r0320; BE-NEXT:    vmov r0, s18321; BE-NEXT:    bl __aeabi_h2f322; BE-NEXT:    vmov s0, r0323; BE-NEXT:    bl llrintf324; BE-NEXT:    vmov s0, r4325; BE-NEXT:    mov r11, r1326; BE-NEXT:    vmov.32 d9[0], r0327; BE-NEXT:    bl llrintf328; BE-NEXT:    vmov s0, r6329; BE-NEXT:    mov r8, r1330; BE-NEXT:    vmov.32 d10[0], r0331; BE-NEXT:    bl llrintf332; BE-NEXT:    vmov s0, r7333; BE-NEXT:    mov r6, r1334; BE-NEXT:    vmov.32 d11[0], r0335; BE-NEXT:    bl llrintf336; BE-NEXT:    vmov s0, r5337; BE-NEXT:    mov r7, r1338; BE-NEXT:    vmov.32 d12[0], r0339; BE-NEXT:    bl llrintf340; BE-NEXT:    vmov s0, r10341; BE-NEXT:    mov r5, r1342; BE-NEXT:    vmov.32 d13[0], r0343; BE-NEXT:    bl llrintf344; BE-NEXT:    vmov.32 d14[0], r0345; BE-NEXT:    vmov r0, s16346; BE-NEXT:    mov r4, r1347; BE-NEXT:    bl __aeabi_h2f348; BE-NEXT:    vmov s0, r0349; BE-NEXT:    vmov.32 d8[0], r9350; BE-NEXT:    bl llrintf351; BE-NEXT:    vmov.32 d16[0], r0352; BE-NEXT:    ldr r0, [sp, #4] @ 4-byte Reload353; BE-NEXT:    vmov.32 d13[1], r5354; BE-NEXT:    vmov.32 d8[1], r0355; BE-NEXT:    vmov.32 d11[1], r6356; BE-NEXT:    vmov.32 d9[1], r11357; BE-NEXT:    vmov.32 d14[1], r4358; BE-NEXT:    vmov.32 d12[1], r7359; BE-NEXT:    vmov.32 d10[1], r8360; BE-NEXT:    vmov.32 d16[1], r1361; BE-NEXT:    vrev64.32 d1, d8362; BE-NEXT:    vrev64.32 d3, d13363; BE-NEXT:    vrev64.32 d5, d11364; BE-NEXT:    vrev64.32 d7, d9365; BE-NEXT:    vrev64.32 d0, d14366; BE-NEXT:    vrev64.32 d2, d12367; BE-NEXT:    vrev64.32 d4, d10368; BE-NEXT:    vrev64.32 d6, d16369; BE-NEXT:    add sp, sp, #8370; BE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14}371; BE-NEXT:    add sp, sp, #4372; BE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}373  %a = call <8 x i64> @llvm.llrint.v8i64.v8f16(<8 x half> %x)374  ret <8 x i64> %a375}376declare <8 x i64> @llvm.llrint.v8i64.v8f16(<8 x half>)377 378define <16 x i64> @llrint_v16i64_v16f16(<16 x half> %x) {379; LE-LABEL: llrint_v16i64_v16f16:380; LE:       @ %bb.0:381; LE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}382; LE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, r11, lr}383; LE-NEXT:    .pad #4384; LE-NEXT:    sub sp, sp, #4385; LE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}386; LE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}387; LE-NEXT:    .pad #120388; LE-NEXT:    sub sp, sp, #120389; LE-NEXT:    mov r11, r0390; LE-NEXT:    vmov r0, s7391; LE-NEXT:    vstr s15, [sp, #24] @ 4-byte Spill392; LE-NEXT:    vmov.f32 s23, s13393; LE-NEXT:    vstr s14, [sp, #100] @ 4-byte Spill394; LE-NEXT:    vmov.f32 s25, s12395; LE-NEXT:    vmov.f32 s27, s11396; LE-NEXT:    vstr s10, [sp, #104] @ 4-byte Spill397; LE-NEXT:    vstr s9, [sp, #108] @ 4-byte Spill398; LE-NEXT:    vmov.f32 s24, s8399; LE-NEXT:    vmov.f32 s19, s6400; LE-NEXT:    vmov.f32 s29, s5401; LE-NEXT:    vmov.f32 s17, s4402; LE-NEXT:    vmov.f32 s16, s3403; LE-NEXT:    vmov.f32 s21, s2404; LE-NEXT:    vmov.f32 s26, s1405; LE-NEXT:    vmov.f32 s18, s0406; LE-NEXT:    bl __aeabi_h2f407; LE-NEXT:    vmov s0, r0408; LE-NEXT:    bl llrintf409; LE-NEXT:    mov r7, r0410; LE-NEXT:    vmov r0, s25411; LE-NEXT:    str r1, [sp, #56] @ 4-byte Spill412; LE-NEXT:    bl __aeabi_h2f413; LE-NEXT:    vmov s0, r0414; LE-NEXT:    bl llrintf415; LE-NEXT:    mov r5, r0416; LE-NEXT:    vmov r0, s27417; LE-NEXT:    str r1, [sp, #116] @ 4-byte Spill418; LE-NEXT:    bl __aeabi_h2f419; LE-NEXT:    vmov s0, r0420; LE-NEXT:    bl llrintf421; LE-NEXT:    mov r6, r0422; LE-NEXT:    vmov r0, s29423; LE-NEXT:    str r1, [sp, #112] @ 4-byte Spill424; LE-NEXT:    bl __aeabi_h2f425; LE-NEXT:    vmov s0, r0426; LE-NEXT:    bl llrintf427; LE-NEXT:    vmov.32 d15[0], r0428; LE-NEXT:    vmov r0, s23429; LE-NEXT:    mov r4, r1430; LE-NEXT:    bl __aeabi_h2f431; LE-NEXT:    vmov s0, r0432; LE-NEXT:    add lr, sp, #80433; LE-NEXT:    vmov.32 d17[0], r6434; LE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill435; LE-NEXT:    bl llrintf436; LE-NEXT:    mov r6, r0437; LE-NEXT:    vmov r0, s17438; LE-NEXT:    vmov r8, s21439; LE-NEXT:    str r1, [sp, #76] @ 4-byte Spill440; LE-NEXT:    vmov r10, s19441; LE-NEXT:    vmov.32 d10[0], r5442; LE-NEXT:    bl __aeabi_h2f443; LE-NEXT:    vmov s0, r0444; LE-NEXT:    add lr, sp, #40445; LE-NEXT:    vmov.32 d11[0], r6446; LE-NEXT:    vstmia lr, {d10, d11} @ 16-byte Spill447; LE-NEXT:    bl llrintf448; LE-NEXT:    vmov.32 d14[0], r0449; LE-NEXT:    mov r0, r10450; LE-NEXT:    mov r9, r1451; LE-NEXT:    bl __aeabi_h2f452; LE-NEXT:    vmov s0, r0453; LE-NEXT:    vmov.32 d11[0], r7454; LE-NEXT:    bl llrintf455; LE-NEXT:    vmov.32 d10[0], r0456; LE-NEXT:    mov r0, r8457; LE-NEXT:    mov r7, r1458; LE-NEXT:    bl __aeabi_h2f459; LE-NEXT:    mov r6, r0460; LE-NEXT:    ldr r0, [sp, #56] @ 4-byte Reload461; LE-NEXT:    vmov.32 d11[1], r0462; LE-NEXT:    vmov r0, s18463; LE-NEXT:    bl __aeabi_h2f464; LE-NEXT:    mov r5, r0465; LE-NEXT:    vmov r0, s16466; LE-NEXT:    vmov.32 d10[1], r7467; LE-NEXT:    add lr, sp, #56468; LE-NEXT:    vstmia lr, {d10, d11} @ 16-byte Spill469; LE-NEXT:    bl __aeabi_h2f470; LE-NEXT:    vmov s0, r0471; LE-NEXT:    vmov.32 d15[1], r4472; LE-NEXT:    bl llrintf473; LE-NEXT:    vmov.32 d9[0], r0474; LE-NEXT:    vmov r0, s26475; LE-NEXT:    add lr, sp, #24476; LE-NEXT:    vmov r8, s24477; LE-NEXT:    vmov.32 d14[1], r9478; LE-NEXT:    mov r10, r1479; LE-NEXT:    vmov s24, r5480; LE-NEXT:    vldr s0, [sp, #24] @ 4-byte Reload481; LE-NEXT:    vstmia lr, {d14, d15} @ 16-byte Spill482; LE-NEXT:    vmov r7, s0483; LE-NEXT:    bl __aeabi_h2f484; LE-NEXT:    vmov.f32 s0, s24485; LE-NEXT:    vmov s22, r0486; LE-NEXT:    bl llrintf487; LE-NEXT:    vmov.f32 s0, s22488; LE-NEXT:    mov r5, r1489; LE-NEXT:    vmov.32 d14[0], r0490; LE-NEXT:    vmov s24, r6491; LE-NEXT:    bl llrintf492; LE-NEXT:    vmov.32 d15[0], r0493; LE-NEXT:    mov r0, r7494; LE-NEXT:    mov r6, r1495; LE-NEXT:    bl __aeabi_h2f496; LE-NEXT:    vmov.f32 s0, s24497; LE-NEXT:    vmov s22, r0498; LE-NEXT:    bl llrintf499; LE-NEXT:    vmov.f32 s0, s22500; LE-NEXT:    vmov.32 d8[0], r0501; LE-NEXT:    add lr, sp, #8502; LE-NEXT:    mov r9, r1503; LE-NEXT:    vmov.32 d15[1], r6504; LE-NEXT:    vstmia lr, {d8, d9} @ 16-byte Spill505; LE-NEXT:    bl llrintf506; LE-NEXT:    vmov.32 d13[0], r0507; LE-NEXT:    mov r0, r8508; LE-NEXT:    mov r6, r1509; LE-NEXT:    bl __aeabi_h2f510; LE-NEXT:    vldr s0, [sp, #100] @ 4-byte Reload511; LE-NEXT:    mov r7, r0512; LE-NEXT:    vmov.32 d14[1], r5513; LE-NEXT:    vmov r0, s0514; LE-NEXT:    bl __aeabi_h2f515; LE-NEXT:    vldr s0, [sp, #104] @ 4-byte Reload516; LE-NEXT:    vmov s20, r0517; LE-NEXT:    vmov.32 d13[1], r6518; LE-NEXT:    vmov r4, s0519; LE-NEXT:    vldr s0, [sp, #108] @ 4-byte Reload520; LE-NEXT:    vmov r0, s0521; LE-NEXT:    bl __aeabi_h2f522; LE-NEXT:    vmov.f32 s0, s20523; LE-NEXT:    vmov s16, r0524; LE-NEXT:    bl llrintf525; LE-NEXT:    vmov.f32 s0, s16526; LE-NEXT:    mov r5, r1527; LE-NEXT:    vmov.32 d12[0], r0528; LE-NEXT:    vmov s18, r7529; LE-NEXT:    bl llrintf530; LE-NEXT:    vmov.32 d11[0], r0531; LE-NEXT:    mov r0, r4532; LE-NEXT:    mov r6, r1533; LE-NEXT:    bl __aeabi_h2f534; LE-NEXT:    vmov.f32 s0, s18535; LE-NEXT:    vmov s16, r0536; LE-NEXT:    bl llrintf537; LE-NEXT:    vmov.f32 s0, s16538; LE-NEXT:    vmov.32 d10[0], r0539; LE-NEXT:    mov r4, r1540; LE-NEXT:    vmov.32 d11[1], r6541; LE-NEXT:    bl llrintf542; LE-NEXT:    add lr, sp, #80543; LE-NEXT:    vmov.32 d10[1], r4544; LE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload545; LE-NEXT:    add lr, sp, #40546; LE-NEXT:    vldmia lr, {d18, d19} @ 16-byte Reload547; LE-NEXT:    add lr, sp, #8548; LE-NEXT:    vmov.32 d16[0], r0549; LE-NEXT:    ldr r0, [sp, #76] @ 4-byte Reload550; LE-NEXT:    vldmia lr, {d20, d21} @ 16-byte Reload551; LE-NEXT:    add lr, sp, #24552; LE-NEXT:    vmov.32 d19[1], r0553; LE-NEXT:    ldr r0, [sp, #116] @ 4-byte Reload554; LE-NEXT:    vmov.32 d21[1], r10555; LE-NEXT:    vmov.32 d18[1], r0556; LE-NEXT:    ldr r0, [sp, #112] @ 4-byte Reload557; LE-NEXT:    vmov.32 d12[1], r5558; LE-NEXT:    vmov.32 d17[1], r0559; LE-NEXT:    add r0, r11, #64560; LE-NEXT:    vmov.32 d16[1], r1561; LE-NEXT:    vst1.64 {d10, d11}, [r0:128]!562; LE-NEXT:    vst1.64 {d16, d17}, [r0:128]!563; LE-NEXT:    vst1.64 {d18, d19}, [r0:128]!564; LE-NEXT:    vmov.32 d20[1], r9565; LE-NEXT:    vst1.64 {d12, d13}, [r0:128]566; LE-NEXT:    vst1.64 {d14, d15}, [r11:128]!567; LE-NEXT:    vst1.64 {d20, d21}, [r11:128]!568; LE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload569; LE-NEXT:    add lr, sp, #56570; LE-NEXT:    vst1.64 {d16, d17}, [r11:128]!571; LE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload572; LE-NEXT:    vst1.64 {d16, d17}, [r11:128]573; LE-NEXT:    add sp, sp, #120574; LE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}575; LE-NEXT:    add sp, sp, #4576; LE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}577;578; BE-LABEL: llrint_v16i64_v16f16:579; BE:       @ %bb.0:580; BE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}581; BE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, r11, lr}582; BE-NEXT:    .pad #4583; BE-NEXT:    sub sp, sp, #4584; BE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}585; BE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}586; BE-NEXT:    .pad #112587; BE-NEXT:    sub sp, sp, #112588; BE-NEXT:    mov r11, r0589; BE-NEXT:    vmov r0, s14590; BE-NEXT:    vmov.f32 s17, s15591; BE-NEXT:    vstr s13, [sp, #52] @ 4-byte Spill592; BE-NEXT:    vmov.f32 s21, s12593; BE-NEXT:    vstr s10, [sp, #68] @ 4-byte Spill594; BE-NEXT:    vmov.f32 s23, s11595; BE-NEXT:    vstr s7, [sp, #72] @ 4-byte Spill596; BE-NEXT:    vmov.f32 s19, s9597; BE-NEXT:    vstr s4, [sp, #28] @ 4-byte Spill598; BE-NEXT:    vmov.f32 s26, s8599; BE-NEXT:    vmov.f32 s24, s6600; BE-NEXT:    vmov.f32 s18, s5601; BE-NEXT:    vmov.f32 s25, s3602; BE-NEXT:    vmov.f32 s16, s2603; BE-NEXT:    vmov.f32 s27, s1604; BE-NEXT:    vmov.f32 s29, s0605; BE-NEXT:    bl __aeabi_h2f606; BE-NEXT:    vmov s0, r0607; BE-NEXT:    bl llrintf608; BE-NEXT:    mov r8, r0609; BE-NEXT:    vmov r0, s29610; BE-NEXT:    mov r4, r1611; BE-NEXT:    bl __aeabi_h2f612; BE-NEXT:    mov r9, r0613; BE-NEXT:    vmov r0, s27614; BE-NEXT:    bl __aeabi_h2f615; BE-NEXT:    mov r7, r0616; BE-NEXT:    vmov r0, s21617; BE-NEXT:    bl __aeabi_h2f618; BE-NEXT:    mov r6, r0619; BE-NEXT:    vmov r0, s25620; BE-NEXT:    bl __aeabi_h2f621; BE-NEXT:    mov r5, r0622; BE-NEXT:    vmov r0, s23623; BE-NEXT:    bl __aeabi_h2f624; BE-NEXT:    vmov s0, r0625; BE-NEXT:    bl llrintf626; BE-NEXT:    vmov.32 d16[0], r0627; BE-NEXT:    vmov s0, r5628; BE-NEXT:    str r1, [sp, #108] @ 4-byte Spill629; BE-NEXT:    vstr d16, [sp, #96] @ 8-byte Spill630; BE-NEXT:    bl llrintf631; BE-NEXT:    vmov.32 d16[0], r0632; BE-NEXT:    vmov s0, r6633; BE-NEXT:    str r1, [sp, #92] @ 4-byte Spill634; BE-NEXT:    vstr d16, [sp, #80] @ 8-byte Spill635; BE-NEXT:    bl llrintf636; BE-NEXT:    vmov.32 d16[0], r0637; BE-NEXT:    vmov s0, r7638; BE-NEXT:    str r1, [sp, #76] @ 4-byte Spill639; BE-NEXT:    vstr d16, [sp, #56] @ 8-byte Spill640; BE-NEXT:    bl llrintf641; BE-NEXT:    vmov s0, r9642; BE-NEXT:    mov r10, r1643; BE-NEXT:    vmov.32 d14[0], r0644; BE-NEXT:    bl llrintf645; BE-NEXT:    vmov.32 d15[0], r0646; BE-NEXT:    vmov r0, s17647; BE-NEXT:    mov r5, r1648; BE-NEXT:    bl __aeabi_h2f649; BE-NEXT:    vmov s0, r0650; BE-NEXT:    vmov.32 d10[0], r8651; BE-NEXT:    vmov r6, s19652; BE-NEXT:    bl llrintf653; BE-NEXT:    vmov.32 d11[0], r0654; BE-NEXT:    mov r0, r6655; BE-NEXT:    mov r7, r1656; BE-NEXT:    bl __aeabi_h2f657; BE-NEXT:    mov r6, r0658; BE-NEXT:    vmov r0, s18659; BE-NEXT:    vmov.32 d10[1], r4660; BE-NEXT:    vstr d10, [sp, #40] @ 8-byte Spill661; BE-NEXT:    bl __aeabi_h2f662; BE-NEXT:    mov r4, r0663; BE-NEXT:    vmov r0, s16664; BE-NEXT:    vmov.32 d11[1], r7665; BE-NEXT:    vstr d11, [sp, #32] @ 8-byte Spill666; BE-NEXT:    bl __aeabi_h2f667; BE-NEXT:    vmov.32 d15[1], r5668; BE-NEXT:    vmov s0, r0669; BE-NEXT:    vstr d15, [sp, #16] @ 8-byte Spill670; BE-NEXT:    bl llrintf671; BE-NEXT:    vldr s0, [sp, #28] @ 4-byte Reload672; BE-NEXT:    vmov r5, s26673; BE-NEXT:    vmov.32 d16[0], r0674; BE-NEXT:    vmov s26, r4675; BE-NEXT:    vmov r0, s0676; BE-NEXT:    mov r8, r1677; BE-NEXT:    vmov.32 d14[1], r10678; BE-NEXT:    vmov r4, s24679; BE-NEXT:    vstr d16, [sp] @ 8-byte Spill680; BE-NEXT:    vstr d14, [sp, #8] @ 8-byte Spill681; BE-NEXT:    bl __aeabi_h2f682; BE-NEXT:    vmov.f32 s0, s26683; BE-NEXT:    vmov s22, r0684; BE-NEXT:    bl llrintf685; BE-NEXT:    vmov.f32 s0, s22686; BE-NEXT:    mov r7, r1687; BE-NEXT:    vmov.32 d13[0], r0688; BE-NEXT:    vmov s24, r6689; BE-NEXT:    bl llrintf690; BE-NEXT:    vmov.32 d14[0], r0691; BE-NEXT:    mov r0, r4692; BE-NEXT:    mov r6, r1693; BE-NEXT:    bl __aeabi_h2f694; BE-NEXT:    vmov.f32 s0, s24695; BE-NEXT:    vmov s22, r0696; BE-NEXT:    bl llrintf697; BE-NEXT:    vmov.f32 s0, s22698; BE-NEXT:    mov r9, r1699; BE-NEXT:    vmov.32 d12[0], r0700; BE-NEXT:    vmov.32 d14[1], r6701; BE-NEXT:    bl llrintf702; BE-NEXT:    vmov.32 d11[0], r0703; BE-NEXT:    mov r0, r5704; BE-NEXT:    mov r6, r1705; BE-NEXT:    bl __aeabi_h2f706; BE-NEXT:    vldr s0, [sp, #52] @ 4-byte Reload707; BE-NEXT:    mov r4, r0708; BE-NEXT:    vmov.32 d13[1], r7709; BE-NEXT:    vmov r0, s0710; BE-NEXT:    bl __aeabi_h2f711; BE-NEXT:    vldr s0, [sp, #68] @ 4-byte Reload712; BE-NEXT:    vmov s20, r0713; BE-NEXT:    vmov.32 d11[1], r6714; BE-NEXT:    vmov r7, s0715; BE-NEXT:    vldr s0, [sp, #72] @ 4-byte Reload716; BE-NEXT:    vmov r0, s0717; BE-NEXT:    bl __aeabi_h2f718; BE-NEXT:    vmov.f32 s0, s20719; BE-NEXT:    vmov s16, r0720; BE-NEXT:    bl llrintf721; BE-NEXT:    vmov.f32 s0, s16722; BE-NEXT:    mov r5, r1723; BE-NEXT:    vmov.32 d10[0], r0724; BE-NEXT:    vmov s18, r4725; BE-NEXT:    bl llrintf726; BE-NEXT:    vmov.32 d15[0], r0727; BE-NEXT:    mov r0, r7728; BE-NEXT:    mov r4, r1729; BE-NEXT:    bl __aeabi_h2f730; BE-NEXT:    vmov.f32 s0, s18731; BE-NEXT:    vmov s16, r0732; BE-NEXT:    bl llrintf733; BE-NEXT:    vmov.f32 s0, s16734; BE-NEXT:    mov r6, r1735; BE-NEXT:    vmov.32 d9[0], r0736; BE-NEXT:    vmov.32 d15[1], r4737; BE-NEXT:    bl llrintf738; BE-NEXT:    vmov.32 d24[0], r0739; BE-NEXT:    ldr r0, [sp, #76] @ 4-byte Reload740; BE-NEXT:    vldr d23, [sp, #56] @ 8-byte Reload741; BE-NEXT:    vldr d20, [sp, #8] @ 8-byte Reload742; BE-NEXT:    vmov.32 d23[1], r0743; BE-NEXT:    ldr r0, [sp, #92] @ 4-byte Reload744; BE-NEXT:    vldr d22, [sp, #80] @ 8-byte Reload745; BE-NEXT:    vldr d26, [sp, #16] @ 8-byte Reload746; BE-NEXT:    vrev64.32 d21, d20747; BE-NEXT:    vmov.32 d22[1], r0748; BE-NEXT:    ldr r0, [sp, #108] @ 4-byte Reload749; BE-NEXT:    vldr d30, [sp] @ 8-byte Reload750; BE-NEXT:    vldr d25, [sp, #96] @ 8-byte Reload751; BE-NEXT:    vrev64.32 d20, d26752; BE-NEXT:    vldr d26, [sp, #32] @ 8-byte Reload753; BE-NEXT:    vmov.32 d10[1], r5754; BE-NEXT:    vmov.32 d12[1], r9755; BE-NEXT:    vldr d28, [sp, #40] @ 8-byte Reload756; BE-NEXT:    vrev64.32 d27, d26757; BE-NEXT:    vmov.32 d25[1], r0758; BE-NEXT:    add r0, r11, #64759; BE-NEXT:    vmov.32 d30[1], r8760; BE-NEXT:    vmov.32 d9[1], r6761; BE-NEXT:    vrev64.32 d26, d28762; BE-NEXT:    vrev64.32 d29, d10763; BE-NEXT:    vmov.32 d24[1], r1764; BE-NEXT:    vrev64.32 d1, d12765; BE-NEXT:    vrev64.32 d28, d23766; BE-NEXT:    vrev64.32 d23, d22767; BE-NEXT:    vrev64.32 d22, d30768; BE-NEXT:    vrev64.32 d31, d25769; BE-NEXT:    vrev64.32 d0, d9770; BE-NEXT:    vrev64.32 d30, d24771; BE-NEXT:    vst1.64 {d0, d1}, [r0:128]!772; BE-NEXT:    vst1.64 {d30, d31}, [r0:128]!773; BE-NEXT:    vst1.64 {d28, d29}, [r0:128]!774; BE-NEXT:    vrev64.32 d19, d13775; BE-NEXT:    vst1.64 {d26, d27}, [r0:128]776; BE-NEXT:    vst1.64 {d20, d21}, [r11:128]!777; BE-NEXT:    vrev64.32 d18, d14778; BE-NEXT:    vst1.64 {d22, d23}, [r11:128]!779; BE-NEXT:    vrev64.32 d17, d15780; BE-NEXT:    vrev64.32 d16, d11781; BE-NEXT:    vst1.64 {d18, d19}, [r11:128]!782; BE-NEXT:    vst1.64 {d16, d17}, [r11:128]783; BE-NEXT:    add sp, sp, #112784; BE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}785; BE-NEXT:    add sp, sp, #4786; BE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}787  %a = call <16 x i64> @llvm.llrint.v16i64.v16f16(<16 x half> %x)788  ret <16 x i64> %a789}790declare <16 x i64> @llvm.llrint.v16i64.v16f16(<16 x half>)791 792define <1 x i64> @llrint_v1i64_v1f32(<1 x float> %x) {793; LE-LABEL: llrint_v1i64_v1f32:794; LE:       @ %bb.0:795; LE-NEXT:    .save {r11, lr}796; LE-NEXT:    push {r11, lr}797; LE-NEXT:    bl llrintf798; LE-NEXT:    vmov.32 d0[0], r0799; LE-NEXT:    vmov.32 d0[1], r1800; LE-NEXT:    pop {r11, pc}801;802; BE-LABEL: llrint_v1i64_v1f32:803; BE:       @ %bb.0:804; BE-NEXT:    .save {r11, lr}805; BE-NEXT:    push {r11, lr}806; BE-NEXT:    bl llrintf807; BE-NEXT:    vmov.32 d16[0], r0808; BE-NEXT:    vmov.32 d16[1], r1809; BE-NEXT:    vrev64.32 d0, d16810; BE-NEXT:    pop {r11, pc}811  %a = call <1 x i64> @llvm.llrint.v1i64.v1f32(<1 x float> %x)812  ret <1 x i64> %a813}814declare <1 x i64> @llvm.llrint.v1i64.v1f32(<1 x float>)815 816define <2 x i64> @llrint_v2i64_v2f32(<2 x float> %x) {817; LE-LABEL: llrint_v2i64_v2f32:818; LE:       @ %bb.0:819; LE-NEXT:    .save {r4, lr}820; LE-NEXT:    push {r4, lr}821; LE-NEXT:    .vsave {d10, d11}822; LE-NEXT:    vpush {d10, d11}823; LE-NEXT:    .vsave {d8}824; LE-NEXT:    vpush {d8}825; LE-NEXT:    vmov.f64 d8, d0826; LE-NEXT:    vmov.f32 s0, s17827; LE-NEXT:    bl llrintf828; LE-NEXT:    vmov.f32 s0, s16829; LE-NEXT:    mov r4, r1830; LE-NEXT:    vmov.32 d11[0], r0831; LE-NEXT:    bl llrintf832; LE-NEXT:    vmov.32 d10[0], r0833; LE-NEXT:    vmov.32 d11[1], r4834; LE-NEXT:    vmov.32 d10[1], r1835; LE-NEXT:    vorr q0, q5, q5836; LE-NEXT:    vpop {d8}837; LE-NEXT:    vpop {d10, d11}838; LE-NEXT:    pop {r4, pc}839;840; BE-LABEL: llrint_v2i64_v2f32:841; BE:       @ %bb.0:842; BE-NEXT:    .save {r4, lr}843; BE-NEXT:    push {r4, lr}844; BE-NEXT:    .vsave {d10, d11}845; BE-NEXT:    vpush {d10, d11}846; BE-NEXT:    .vsave {d8}847; BE-NEXT:    vpush {d8}848; BE-NEXT:    vrev64.32 d8, d0849; BE-NEXT:    vmov.f32 s0, s17850; BE-NEXT:    bl llrintf851; BE-NEXT:    vmov.f32 s0, s16852; BE-NEXT:    mov r4, r1853; BE-NEXT:    vmov.32 d11[0], r0854; BE-NEXT:    bl llrintf855; BE-NEXT:    vmov.32 d10[0], r0856; BE-NEXT:    vmov.32 d11[1], r4857; BE-NEXT:    vmov.32 d10[1], r1858; BE-NEXT:    vrev64.32 q0, q5859; BE-NEXT:    vpop {d8}860; BE-NEXT:    vpop {d10, d11}861; BE-NEXT:    pop {r4, pc}862  %a = call <2 x i64> @llvm.llrint.v2i64.v2f32(<2 x float> %x)863  ret <2 x i64> %a864}865declare <2 x i64> @llvm.llrint.v2i64.v2f32(<2 x float>)866 867define <4 x i64> @llrint_v4i64_v4f32(<4 x float> %x) {868; LE-LABEL: llrint_v4i64_v4f32:869; LE:       @ %bb.0:870; LE-NEXT:    .save {r4, r5, r6, lr}871; LE-NEXT:    push {r4, r5, r6, lr}872; LE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13}873; LE-NEXT:    vpush {d8, d9, d10, d11, d12, d13}874; LE-NEXT:    vorr q5, q0, q0875; LE-NEXT:    vmov.f32 s0, s23876; LE-NEXT:    bl llrintf877; LE-NEXT:    vmov.f32 s0, s20878; LE-NEXT:    mov r4, r1879; LE-NEXT:    vmov.32 d9[0], r0880; LE-NEXT:    bl llrintf881; LE-NEXT:    vmov.f32 s0, s21882; LE-NEXT:    mov r5, r1883; LE-NEXT:    vmov.32 d12[0], r0884; LE-NEXT:    bl llrintf885; LE-NEXT:    vmov.f32 s0, s22886; LE-NEXT:    mov r6, r1887; LE-NEXT:    vmov.32 d13[0], r0888; LE-NEXT:    bl llrintf889; LE-NEXT:    vmov.32 d8[0], r0890; LE-NEXT:    vmov.32 d13[1], r6891; LE-NEXT:    vmov.32 d9[1], r4892; LE-NEXT:    vmov.32 d12[1], r5893; LE-NEXT:    vmov.32 d8[1], r1894; LE-NEXT:    vorr q0, q6, q6895; LE-NEXT:    vorr q1, q4, q4896; LE-NEXT:    vpop {d8, d9, d10, d11, d12, d13}897; LE-NEXT:    pop {r4, r5, r6, pc}898;899; BE-LABEL: llrint_v4i64_v4f32:900; BE:       @ %bb.0:901; BE-NEXT:    .save {r4, r5, r6, lr}902; BE-NEXT:    push {r4, r5, r6, lr}903; BE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13}904; BE-NEXT:    vpush {d8, d9, d10, d11, d12, d13}905; BE-NEXT:    vrev64.32 d8, d1906; BE-NEXT:    vrev64.32 d9, d0907; BE-NEXT:    vmov.f32 s0, s17908; BE-NEXT:    bl llrintf909; BE-NEXT:    vmov.f32 s0, s18910; BE-NEXT:    mov r4, r1911; BE-NEXT:    vmov.32 d11[0], r0912; BE-NEXT:    bl llrintf913; BE-NEXT:    vmov.f32 s0, s19914; BE-NEXT:    mov r5, r1915; BE-NEXT:    vmov.32 d12[0], r0916; BE-NEXT:    bl llrintf917; BE-NEXT:    vmov.f32 s0, s16918; BE-NEXT:    mov r6, r1919; BE-NEXT:    vmov.32 d13[0], r0920; BE-NEXT:    bl llrintf921; BE-NEXT:    vmov.32 d10[0], r0922; BE-NEXT:    vmov.32 d13[1], r6923; BE-NEXT:    vmov.32 d11[1], r4924; BE-NEXT:    vmov.32 d12[1], r5925; BE-NEXT:    vmov.32 d10[1], r1926; BE-NEXT:    vrev64.32 q0, q6927; BE-NEXT:    vrev64.32 q1, q5928; BE-NEXT:    vpop {d8, d9, d10, d11, d12, d13}929; BE-NEXT:    pop {r4, r5, r6, pc}930  %a = call <4 x i64> @llvm.llrint.v4i64.v4f32(<4 x float> %x)931  ret <4 x i64> %a932}933declare <4 x i64> @llvm.llrint.v4i64.v4f32(<4 x float>)934 935define <8 x i64> @llrint_v8i64_v8f32(<8 x float> %x) {936; LE-LABEL: llrint_v8i64_v8f32:937; LE:       @ %bb.0:938; LE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, lr}939; LE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, lr}940; LE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}941; LE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}942; LE-NEXT:    .pad #40943; LE-NEXT:    sub sp, sp, #40944; LE-NEXT:    vorr q6, q1, q1945; LE-NEXT:    add lr, sp, #24946; LE-NEXT:    vorr q7, q0, q0947; LE-NEXT:    vstmia lr, {d2, d3} @ 16-byte Spill948; LE-NEXT:    vmov.f32 s0, s27949; LE-NEXT:    bl llrintf950; LE-NEXT:    vmov.f32 s0, s24951; LE-NEXT:    mov r8, r1952; LE-NEXT:    vmov.32 d9[0], r0953; LE-NEXT:    bl llrintf954; LE-NEXT:    vmov.f32 s0, s25955; LE-NEXT:    mov r9, r1956; LE-NEXT:    vmov.32 d10[0], r0957; LE-NEXT:    bl llrintf958; LE-NEXT:    vorr q6, q7, q7959; LE-NEXT:    add lr, sp, #8960; LE-NEXT:    mov r10, r1961; LE-NEXT:    vmov.32 d11[0], r0962; LE-NEXT:    vmov.f32 s0, s26963; LE-NEXT:    vstmia lr, {d14, d15} @ 16-byte Spill964; LE-NEXT:    bl llrintf965; LE-NEXT:    vmov.f32 s0, s27966; LE-NEXT:    mov r7, r1967; LE-NEXT:    vmov.32 d14[0], r0968; LE-NEXT:    bl llrintf969; LE-NEXT:    vmov.f32 s0, s24970; LE-NEXT:    mov r4, r1971; LE-NEXT:    vmov.32 d15[0], r0972; LE-NEXT:    bl llrintf973; LE-NEXT:    add lr, sp, #8974; LE-NEXT:    mov r5, r1975; LE-NEXT:    vmov.32 d12[0], r0976; LE-NEXT:    vldmia lr, {d0, d1} @ 16-byte Reload977; LE-NEXT:    vmov.f32 s0, s1978; LE-NEXT:    bl llrintf979; LE-NEXT:    add lr, sp, #24980; LE-NEXT:    mov r6, r1981; LE-NEXT:    vmov.32 d13[0], r0982; LE-NEXT:    vldmia lr, {d0, d1} @ 16-byte Reload983; LE-NEXT:    vmov.f32 s0, s2984; LE-NEXT:    bl llrintf985; LE-NEXT:    vmov.32 d8[0], r0986; LE-NEXT:    vmov.32 d13[1], r6987; LE-NEXT:    vmov.32 d15[1], r4988; LE-NEXT:    vmov.32 d11[1], r10989; LE-NEXT:    vmov.32 d9[1], r8990; LE-NEXT:    vmov.32 d12[1], r5991; LE-NEXT:    vmov.32 d14[1], r7992; LE-NEXT:    vorr q0, q6, q6993; LE-NEXT:    vmov.32 d10[1], r9994; LE-NEXT:    vorr q1, q7, q7995; LE-NEXT:    vmov.32 d8[1], r1996; LE-NEXT:    vorr q2, q5, q5997; LE-NEXT:    vorr q3, q4, q4998; LE-NEXT:    add sp, sp, #40999; LE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}1000; LE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, pc}1001;1002; BE-LABEL: llrint_v8i64_v8f32:1003; BE:       @ %bb.0:1004; BE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, lr}1005; BE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, lr}1006; BE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}1007; BE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}1008; BE-NEXT:    .pad #321009; BE-NEXT:    sub sp, sp, #321010; BE-NEXT:    vorr q4, q1, q11011; BE-NEXT:    add lr, sp, #81012; BE-NEXT:    vorr q5, q0, q01013; BE-NEXT:    vstmia lr, {d0, d1} @ 16-byte Spill1014; BE-NEXT:    vrev64.32 d12, d81015; BE-NEXT:    vmov.f32 s0, s251016; BE-NEXT:    bl llrintf1017; BE-NEXT:    vmov.f32 s0, s241018; BE-NEXT:    mov r8, r11019; BE-NEXT:    vmov.32 d15[0], r01020; BE-NEXT:    bl llrintf1021; BE-NEXT:    vrev64.32 d0, d111022; BE-NEXT:    mov r9, r11023; BE-NEXT:    vrev64.32 d8, d91024; BE-NEXT:    vorr d9, d0, d01025; BE-NEXT:    vmov.32 d14[0], r01026; BE-NEXT:    vstr d8, [sp, #24] @ 8-byte Spill1027; BE-NEXT:    bl llrintf1028; BE-NEXT:    vmov.f32 s0, s171029; BE-NEXT:    mov r10, r11030; BE-NEXT:    vmov.32 d10[0], r01031; BE-NEXT:    bl llrintf1032; BE-NEXT:    add lr, sp, #81033; BE-NEXT:    vmov.f32 s0, s191034; BE-NEXT:    mov r7, r11035; BE-NEXT:    vmov.32 d13[0], r01036; BE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1037; BE-NEXT:    vrev64.32 d8, d161038; BE-NEXT:    vstr d8, [sp, #8] @ 8-byte Spill1039; BE-NEXT:    bl llrintf1040; BE-NEXT:    vmov.f32 s0, s161041; BE-NEXT:    mov r4, r11042; BE-NEXT:    vmov.32 d11[0], r01043; BE-NEXT:    bl llrintf1044; BE-NEXT:    vldr d0, [sp, #8] @ 8-byte Reload1045; BE-NEXT:    mov r5, r11046; BE-NEXT:    vmov.32 d8[0], r01047; BE-NEXT:    vmov.f32 s0, s11048; BE-NEXT:    bl llrintf1049; BE-NEXT:    vldr d0, [sp, #24] @ 8-byte Reload1050; BE-NEXT:    mov r6, r11051; BE-NEXT:    @ kill: def $s0 killed $s0 killed $d01052; BE-NEXT:    vmov.32 d9[0], r01053; BE-NEXT:    bl llrintf1054; BE-NEXT:    vmov.32 d12[0], r01055; BE-NEXT:    vmov.32 d9[1], r61056; BE-NEXT:    vmov.32 d11[1], r41057; BE-NEXT:    vmov.32 d15[1], r81058; BE-NEXT:    vmov.32 d13[1], r71059; BE-NEXT:    vmov.32 d8[1], r51060; BE-NEXT:    vmov.32 d10[1], r101061; BE-NEXT:    vmov.32 d14[1], r91062; BE-NEXT:    vmov.32 d12[1], r11063; BE-NEXT:    vrev64.32 q0, q41064; BE-NEXT:    vrev64.32 q1, q51065; BE-NEXT:    vrev64.32 q2, q71066; BE-NEXT:    vrev64.32 q3, q61067; BE-NEXT:    add sp, sp, #321068; BE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}1069; BE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, pc}1070  %a = call <8 x i64> @llvm.llrint.v8i64.v8f32(<8 x float> %x)1071  ret <8 x i64> %a1072}1073declare <8 x i64> @llvm.llrint.v8i64.v8f32(<8 x float>)1074 1075define <16 x i64> @llrint_v16i64_v16f32(<16 x float> %x) {1076; LE-LABEL: llrint_v16i64_v16f32:1077; LE:       @ %bb.0:1078; LE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}1079; LE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, r11, lr}1080; LE-NEXT:    .pad #41081; LE-NEXT:    sub sp, sp, #41082; LE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}1083; LE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}1084; LE-NEXT:    .pad #1601085; LE-NEXT:    sub sp, sp, #1601086; LE-NEXT:    add lr, sp, #1121087; LE-NEXT:    vorr q5, q3, q31088; LE-NEXT:    vorr q6, q0, q01089; LE-NEXT:    mov r4, r01090; LE-NEXT:    vstmia lr, {d4, d5} @ 16-byte Spill1091; LE-NEXT:    add lr, sp, #481092; LE-NEXT:    vorr q7, q1, q11093; LE-NEXT:    vstmia lr, {d0, d1} @ 16-byte Spill1094; LE-NEXT:    vmov.f32 s0, s231095; LE-NEXT:    bl llrintf1096; LE-NEXT:    vmov.f32 s0, s241097; LE-NEXT:    add lr, sp, #1441098; LE-NEXT:    vmov.32 d17[0], r01099; LE-NEXT:    str r1, [sp, #108] @ 4-byte Spill1100; LE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1101; LE-NEXT:    bl llrintf1102; LE-NEXT:    vmov.f32 s0, s251103; LE-NEXT:    str r1, [sp, #84] @ 4-byte Spill1104; LE-NEXT:    vmov.32 d8[0], r01105; LE-NEXT:    bl llrintf1106; LE-NEXT:    vmov.f32 s0, s281107; LE-NEXT:    add lr, sp, #1281108; LE-NEXT:    vmov.32 d9[0], r01109; LE-NEXT:    str r1, [sp, #44] @ 4-byte Spill1110; LE-NEXT:    vstmia lr, {d8, d9} @ 16-byte Spill1111; LE-NEXT:    bl llrintf1112; LE-NEXT:    vmov.f32 s0, s291113; LE-NEXT:    mov r9, r11114; LE-NEXT:    vmov.32 d8[0], r01115; LE-NEXT:    bl llrintf1116; LE-NEXT:    vmov.f32 s0, s301117; LE-NEXT:    mov r6, r11118; LE-NEXT:    vmov.32 d9[0], r01119; LE-NEXT:    bl llrintf1120; LE-NEXT:    vmov.f32 s0, s311121; LE-NEXT:    mov r5, r11122; LE-NEXT:    vmov.32 d12[0], r01123; LE-NEXT:    bl llrintf1124; LE-NEXT:    add lr, sp, #1121125; LE-NEXT:    mov r7, r11126; LE-NEXT:    vmov.32 d13[0], r01127; LE-NEXT:    vldmia lr, {d14, d15} @ 16-byte Reload1128; LE-NEXT:    vmov.f32 s0, s291129; LE-NEXT:    bl llrintf1130; LE-NEXT:    vmov.f32 s0, s221131; LE-NEXT:    add lr, sp, #241132; LE-NEXT:    vmov.32 d17[0], r01133; LE-NEXT:    mov r11, r11134; LE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1135; LE-NEXT:    vmov.32 d13[1], r71136; LE-NEXT:    bl llrintf1137; LE-NEXT:    add lr, sp, #1441138; LE-NEXT:    vmov.f32 s0, s211139; LE-NEXT:    vmov.32 d12[1], r51140; LE-NEXT:    str r1, [sp, #40] @ 4-byte Spill1141; LE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1142; LE-NEXT:    vmov.32 d16[0], r01143; LE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1144; LE-NEXT:    add lr, sp, #881145; LE-NEXT:    vstmia lr, {d12, d13} @ 16-byte Spill1146; LE-NEXT:    bl llrintf1147; LE-NEXT:    vmov.f32 s0, s201148; LE-NEXT:    mov r10, r11149; LE-NEXT:    vmov.32 d13[0], r01150; LE-NEXT:    vmov.32 d9[1], r61151; LE-NEXT:    bl llrintf1152; LE-NEXT:    vmov.f32 s0, s311153; LE-NEXT:    vmov.32 d12[0], r01154; LE-NEXT:    add lr, sp, #81155; LE-NEXT:    mov r8, r11156; LE-NEXT:    vmov.32 d8[1], r91157; LE-NEXT:    vstmia lr, {d12, d13} @ 16-byte Spill1158; LE-NEXT:    add lr, sp, #641159; LE-NEXT:    vstmia lr, {d8, d9} @ 16-byte Spill1160; LE-NEXT:    bl llrintf1161; LE-NEXT:    add lr, sp, #1281162; LE-NEXT:    vmov.32 d9[0], r01163; LE-NEXT:    ldr r0, [sp, #44] @ 4-byte Reload1164; LE-NEXT:    mov r9, r11165; LE-NEXT:    vldmia lr, {d10, d11} @ 16-byte Reload1166; LE-NEXT:    add lr, sp, #481167; LE-NEXT:    vldmia lr, {d12, d13} @ 16-byte Reload1168; LE-NEXT:    vmov.f32 s0, s271169; LE-NEXT:    vmov.32 d11[1], r01170; LE-NEXT:    bl llrintf1171; LE-NEXT:    vmov.f32 s0, s261172; LE-NEXT:    vmov.32 d15[0], r01173; LE-NEXT:    ldr r0, [sp, #84] @ 4-byte Reload1174; LE-NEXT:    add lr, sp, #1281175; LE-NEXT:    mov r7, r11176; LE-NEXT:    vmov.32 d10[1], r01177; LE-NEXT:    vstmia lr, {d10, d11} @ 16-byte Spill1178; LE-NEXT:    bl llrintf1179; LE-NEXT:    vmov.32 d14[0], r01180; LE-NEXT:    add lr, sp, #1441181; LE-NEXT:    ldr r0, [sp, #108] @ 4-byte Reload1182; LE-NEXT:    mov r5, r11183; LE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1184; LE-NEXT:    vmov.32 d17[1], r01185; LE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1186; LE-NEXT:    add lr, sp, #1121187; LE-NEXT:    vldmia lr, {d10, d11} @ 16-byte Reload1188; LE-NEXT:    vmov.f32 s0, s201189; LE-NEXT:    bl llrintf1190; LE-NEXT:    add lr, sp, #241191; LE-NEXT:    vmov.f32 s0, s221192; LE-NEXT:    mov r6, r11193; LE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1194; LE-NEXT:    vmov.32 d16[0], r01195; LE-NEXT:    vmov.32 d17[1], r111196; LE-NEXT:    vorr q6, q8, q81197; LE-NEXT:    bl llrintf1198; LE-NEXT:    add lr, sp, #1441199; LE-NEXT:    vmov.32 d8[0], r01200; LE-NEXT:    ldr r0, [sp, #40] @ 4-byte Reload1201; LE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1202; LE-NEXT:    add lr, sp, #81203; LE-NEXT:    vldmia lr, {d18, d19} @ 16-byte Reload1204; LE-NEXT:    add lr, sp, #1281205; LE-NEXT:    vmov.32 d9[1], r91206; LE-NEXT:    vmov.32 d12[1], r61207; LE-NEXT:    vmov.32 d19[1], r101208; LE-NEXT:    vmov.32 d8[1], r11209; LE-NEXT:    vmov.32 d16[1], r01210; LE-NEXT:    add r0, r4, #641211; LE-NEXT:    vmov.32 d18[1], r81212; LE-NEXT:    vst1.64 {d12, d13}, [r0:128]!1213; LE-NEXT:    vst1.64 {d8, d9}, [r0:128]!1214; LE-NEXT:    vst1.64 {d18, d19}, [r0:128]!1215; LE-NEXT:    vst1.64 {d16, d17}, [r0:128]1216; LE-NEXT:    vmov.32 d15[1], r71217; LE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1218; LE-NEXT:    add lr, sp, #641219; LE-NEXT:    vmov.32 d14[1], r51220; LE-NEXT:    vst1.64 {d16, d17}, [r4:128]!1221; LE-NEXT:    vst1.64 {d14, d15}, [r4:128]!1222; LE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1223; LE-NEXT:    add lr, sp, #881224; LE-NEXT:    vst1.64 {d16, d17}, [r4:128]!1225; LE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1226; LE-NEXT:    vst1.64 {d16, d17}, [r4:128]1227; LE-NEXT:    add sp, sp, #1601228; LE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}1229; LE-NEXT:    add sp, sp, #41230; LE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}1231;1232; BE-LABEL: llrint_v16i64_v16f32:1233; BE:       @ %bb.0:1234; BE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}1235; BE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, r11, lr}1236; BE-NEXT:    .pad #41237; BE-NEXT:    sub sp, sp, #41238; BE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}1239; BE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}1240; BE-NEXT:    .pad #1441241; BE-NEXT:    sub sp, sp, #1441242; BE-NEXT:    vorr q6, q3, q31243; BE-NEXT:    add lr, sp, #1121244; BE-NEXT:    vorr q7, q0, q01245; BE-NEXT:    mov r4, r01246; BE-NEXT:    vstmia lr, {d4, d5} @ 16-byte Spill1247; BE-NEXT:    add lr, sp, #961248; BE-NEXT:    vrev64.32 d8, d131249; BE-NEXT:    vstmia lr, {d2, d3} @ 16-byte Spill1250; BE-NEXT:    vmov.f32 s0, s171251; BE-NEXT:    bl llrintf1252; BE-NEXT:    vmov.f32 s0, s161253; BE-NEXT:    str r1, [sp, #88] @ 4-byte Spill1254; BE-NEXT:    vmov.32 d11[0], r01255; BE-NEXT:    bl llrintf1256; BE-NEXT:    vrev64.32 d8, d141257; BE-NEXT:    add lr, sp, #1281258; BE-NEXT:    vmov.32 d10[0], r01259; BE-NEXT:    str r1, [sp, #92] @ 4-byte Spill1260; BE-NEXT:    vmov.f32 s0, s161261; BE-NEXT:    vrev64.32 d9, d121262; BE-NEXT:    vstmia lr, {d10, d11} @ 16-byte Spill1263; BE-NEXT:    vstr d9, [sp, #64] @ 8-byte Spill1264; BE-NEXT:    bl llrintf1265; BE-NEXT:    vmov.f32 s0, s191266; BE-NEXT:    mov r9, r11267; BE-NEXT:    vmov.32 d12[0], r01268; BE-NEXT:    bl llrintf1269; BE-NEXT:    vmov.f32 s0, s171270; BE-NEXT:    str r1, [sp, #84] @ 4-byte Spill1271; BE-NEXT:    vmov.32 d11[0], r01272; BE-NEXT:    vrev64.32 d9, d151273; BE-NEXT:    bl llrintf1274; BE-NEXT:    vmov.f32 s0, s181275; BE-NEXT:    mov r6, r11276; BE-NEXT:    vmov.32 d13[0], r01277; BE-NEXT:    bl llrintf1278; BE-NEXT:    vmov.f32 s0, s191279; BE-NEXT:    mov r5, r11280; BE-NEXT:    vmov.32 d14[0], r01281; BE-NEXT:    bl llrintf1282; BE-NEXT:    vldr d0, [sp, #64] @ 8-byte Reload1283; BE-NEXT:    mov r7, r11284; BE-NEXT:    @ kill: def $s0 killed $s0 killed $d01285; BE-NEXT:    vmov.32 d15[0], r01286; BE-NEXT:    bl llrintf1287; BE-NEXT:    vmov.32 d10[0], r01288; BE-NEXT:    add lr, sp, #401289; BE-NEXT:    str r1, [sp, #60] @ 4-byte Spill1290; BE-NEXT:    vmov.32 d15[1], r71291; BE-NEXT:    vstmia lr, {d10, d11} @ 16-byte Spill1292; BE-NEXT:    add lr, sp, #961293; BE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1294; BE-NEXT:    vrev64.32 d8, d161295; BE-NEXT:    vmov.f32 s0, s171296; BE-NEXT:    bl llrintf1297; BE-NEXT:    vmov.f32 s0, s161298; BE-NEXT:    vmov.32 d14[1], r51299; BE-NEXT:    add lr, sp, #641300; BE-NEXT:    mov r10, r11301; BE-NEXT:    vmov.32 d11[0], r01302; BE-NEXT:    vstmia lr, {d14, d15} @ 16-byte Spill1303; BE-NEXT:    bl llrintf1304; BE-NEXT:    vmov.32 d10[0], r01305; BE-NEXT:    add lr, sp, #241306; BE-NEXT:    mov r11, r11307; BE-NEXT:    vmov.32 d13[1], r61308; BE-NEXT:    vstmia lr, {d10, d11} @ 16-byte Spill1309; BE-NEXT:    add lr, sp, #961310; BE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1311; BE-NEXT:    vrev64.32 d8, d171312; BE-NEXT:    vmov.f32 s0, s171313; BE-NEXT:    bl llrintf1314; BE-NEXT:    vmov.f32 s0, s161315; BE-NEXT:    vmov.32 d12[1], r91316; BE-NEXT:    add lr, sp, #961317; BE-NEXT:    mov r8, r11318; BE-NEXT:    vmov.32 d11[0], r01319; BE-NEXT:    vstmia lr, {d12, d13} @ 16-byte Spill1320; BE-NEXT:    bl llrintf1321; BE-NEXT:    vmov.32 d10[0], r01322; BE-NEXT:    add lr, sp, #81323; BE-NEXT:    ldr r0, [sp, #88] @ 4-byte Reload1324; BE-NEXT:    mov r9, r11325; BE-NEXT:    vstmia lr, {d10, d11} @ 16-byte Spill1326; BE-NEXT:    add lr, sp, #1121327; BE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1328; BE-NEXT:    add lr, sp, #1281329; BE-NEXT:    vldmia lr, {d10, d11} @ 16-byte Reload1330; BE-NEXT:    vrev64.32 d8, d161331; BE-NEXT:    vmov.32 d11[1], r01332; BE-NEXT:    vmov.f32 s0, s171333; BE-NEXT:    bl llrintf1334; BE-NEXT:    vmov.f32 s0, s161335; BE-NEXT:    vmov.32 d15[0], r01336; BE-NEXT:    ldr r0, [sp, #92] @ 4-byte Reload1337; BE-NEXT:    add lr, sp, #1281338; BE-NEXT:    mov r7, r11339; BE-NEXT:    vmov.32 d10[1], r01340; BE-NEXT:    vstmia lr, {d10, d11} @ 16-byte Spill1341; BE-NEXT:    bl llrintf1342; BE-NEXT:    add lr, sp, #1121343; BE-NEXT:    vmov.32 d14[0], r01344; BE-NEXT:    ldr r0, [sp, #84] @ 4-byte Reload1345; BE-NEXT:    mov r5, r11346; BE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1347; BE-NEXT:    add lr, sp, #401348; BE-NEXT:    vrev64.32 d8, d171349; BE-NEXT:    vldmia lr, {d12, d13} @ 16-byte Reload1350; BE-NEXT:    vmov.f32 s0, s171351; BE-NEXT:    vmov.32 d13[1], r01352; BE-NEXT:    bl llrintf1353; BE-NEXT:    vmov.f32 s0, s161354; BE-NEXT:    vmov.32 d11[0], r01355; BE-NEXT:    ldr r0, [sp, #60] @ 4-byte Reload1356; BE-NEXT:    mov r6, r11357; BE-NEXT:    vmov.32 d12[1], r01358; BE-NEXT:    bl llrintf1359; BE-NEXT:    add lr, sp, #241360; BE-NEXT:    vmov.32 d10[0], r01361; BE-NEXT:    add r0, r4, #641362; BE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1363; BE-NEXT:    add lr, sp, #81364; BE-NEXT:    vmov.32 d17[1], r101365; BE-NEXT:    vmov.32 d16[1], r111366; BE-NEXT:    vorr q12, q8, q81367; BE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1368; BE-NEXT:    add lr, sp, #1281369; BE-NEXT:    vmov.32 d15[1], r71370; BE-NEXT:    vmov.32 d11[1], r61371; BE-NEXT:    vmov.32 d14[1], r51372; BE-NEXT:    vldmia lr, {d18, d19} @ 16-byte Reload1373; BE-NEXT:    add lr, sp, #961374; BE-NEXT:    vmov.32 d10[1], r11375; BE-NEXT:    vmov.32 d17[1], r81376; BE-NEXT:    vldmia lr, {d20, d21} @ 16-byte Reload1377; BE-NEXT:    add lr, sp, #641378; BE-NEXT:    vmov.32 d16[1], r91379; BE-NEXT:    vrev64.32 q14, q71380; BE-NEXT:    vorr q13, q8, q81381; BE-NEXT:    vrev64.32 q15, q51382; BE-NEXT:    vldmia lr, {d22, d23} @ 16-byte Reload1383; BE-NEXT:    vrev64.32 q8, q61384; BE-NEXT:    vst1.64 {d28, d29}, [r0:128]!1385; BE-NEXT:    vst1.64 {d30, d31}, [r0:128]!1386; BE-NEXT:    vrev64.32 q9, q91387; BE-NEXT:    vrev64.32 q10, q101388; BE-NEXT:    vst1.64 {d16, d17}, [r0:128]!1389; BE-NEXT:    vrev64.32 q11, q111390; BE-NEXT:    vrev64.32 q12, q121391; BE-NEXT:    vst1.64 {d18, d19}, [r0:128]1392; BE-NEXT:    vst1.64 {d20, d21}, [r4:128]!1393; BE-NEXT:    vst1.64 {d22, d23}, [r4:128]!1394; BE-NEXT:    vrev64.32 q13, q131395; BE-NEXT:    vst1.64 {d24, d25}, [r4:128]!1396; BE-NEXT:    vst1.64 {d26, d27}, [r4:128]1397; BE-NEXT:    add sp, sp, #1441398; BE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}1399; BE-NEXT:    add sp, sp, #41400; BE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}1401  %a = call <16 x i64> @llvm.llrint.v16i64.v16f32(<16 x float> %x)1402  ret <16 x i64> %a1403}1404declare <16 x i64> @llvm.llrint.v16i64.v16f32(<16 x float>)1405 1406define <1 x i64> @llrint_v1i64_v1f64(<1 x double> %x) {1407; LE-LABEL: llrint_v1i64_v1f64:1408; LE:       @ %bb.0:1409; LE-NEXT:    .save {r11, lr}1410; LE-NEXT:    push {r11, lr}1411; LE-NEXT:    bl llrint1412; LE-NEXT:    vmov.32 d0[0], r01413; LE-NEXT:    vmov.32 d0[1], r11414; LE-NEXT:    pop {r11, pc}1415;1416; BE-LABEL: llrint_v1i64_v1f64:1417; BE:       @ %bb.0:1418; BE-NEXT:    .save {r11, lr}1419; BE-NEXT:    push {r11, lr}1420; BE-NEXT:    bl llrint1421; BE-NEXT:    vmov.32 d16[0], r01422; BE-NEXT:    vmov.32 d16[1], r11423; BE-NEXT:    vrev64.32 d0, d161424; BE-NEXT:    pop {r11, pc}1425  %a = call <1 x i64> @llvm.llrint.v1i64.v1f64(<1 x double> %x)1426  ret <1 x i64> %a1427}1428declare <1 x i64> @llvm.llrint.v1i64.v1f64(<1 x double>)1429 1430define <2 x i64> @llrint_v2i64_v2f64(<2 x double> %x) {1431; LE-LABEL: llrint_v2i64_v2f64:1432; LE:       @ %bb.0:1433; LE-NEXT:    .save {r4, lr}1434; LE-NEXT:    push {r4, lr}1435; LE-NEXT:    .vsave {d8, d9, d10, d11}1436; LE-NEXT:    vpush {d8, d9, d10, d11}1437; LE-NEXT:    vorr q4, q0, q01438; LE-NEXT:    vorr d0, d9, d91439; LE-NEXT:    bl llrint1440; LE-NEXT:    vorr d0, d8, d81441; LE-NEXT:    mov r4, r11442; LE-NEXT:    vmov.32 d11[0], r01443; LE-NEXT:    bl llrint1444; LE-NEXT:    vmov.32 d10[0], r01445; LE-NEXT:    vmov.32 d11[1], r41446; LE-NEXT:    vmov.32 d10[1], r11447; LE-NEXT:    vorr q0, q5, q51448; LE-NEXT:    vpop {d8, d9, d10, d11}1449; LE-NEXT:    pop {r4, pc}1450;1451; BE-LABEL: llrint_v2i64_v2f64:1452; BE:       @ %bb.0:1453; BE-NEXT:    .save {r4, lr}1454; BE-NEXT:    push {r4, lr}1455; BE-NEXT:    .vsave {d8, d9, d10, d11}1456; BE-NEXT:    vpush {d8, d9, d10, d11}1457; BE-NEXT:    vorr q4, q0, q01458; BE-NEXT:    vorr d0, d9, d91459; BE-NEXT:    bl llrint1460; BE-NEXT:    vorr d0, d8, d81461; BE-NEXT:    mov r4, r11462; BE-NEXT:    vmov.32 d11[0], r01463; BE-NEXT:    bl llrint1464; BE-NEXT:    vmov.32 d10[0], r01465; BE-NEXT:    vmov.32 d11[1], r41466; BE-NEXT:    vmov.32 d10[1], r11467; BE-NEXT:    vrev64.32 q0, q51468; BE-NEXT:    vpop {d8, d9, d10, d11}1469; BE-NEXT:    pop {r4, pc}1470  %a = call <2 x i64> @llvm.llrint.v2i64.v2f64(<2 x double> %x)1471  ret <2 x i64> %a1472}1473declare <2 x i64> @llvm.llrint.v2i64.v2f64(<2 x double>)1474 1475define <4 x i64> @llrint_v4i64_v4f64(<4 x double> %x) {1476; LE-LABEL: llrint_v4i64_v4f64:1477; LE:       @ %bb.0:1478; LE-NEXT:    .save {r4, r5, r6, lr}1479; LE-NEXT:    push {r4, r5, r6, lr}1480; LE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}1481; LE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}1482; LE-NEXT:    vorr q5, q1, q11483; LE-NEXT:    vorr q6, q0, q01484; LE-NEXT:    vorr d0, d11, d111485; LE-NEXT:    bl llrint1486; LE-NEXT:    vorr d0, d12, d121487; LE-NEXT:    mov r4, r11488; LE-NEXT:    vmov.32 d9[0], r01489; LE-NEXT:    bl llrint1490; LE-NEXT:    vorr d0, d13, d131491; LE-NEXT:    mov r5, r11492; LE-NEXT:    vmov.32 d14[0], r01493; LE-NEXT:    bl llrint1494; LE-NEXT:    vorr d0, d10, d101495; LE-NEXT:    mov r6, r11496; LE-NEXT:    vmov.32 d15[0], r01497; LE-NEXT:    bl llrint1498; LE-NEXT:    vmov.32 d8[0], r01499; LE-NEXT:    vmov.32 d15[1], r61500; LE-NEXT:    vmov.32 d9[1], r41501; LE-NEXT:    vmov.32 d14[1], r51502; LE-NEXT:    vmov.32 d8[1], r11503; LE-NEXT:    vorr q0, q7, q71504; LE-NEXT:    vorr q1, q4, q41505; LE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}1506; LE-NEXT:    pop {r4, r5, r6, pc}1507;1508; BE-LABEL: llrint_v4i64_v4f64:1509; BE:       @ %bb.0:1510; BE-NEXT:    .save {r4, r5, r6, lr}1511; BE-NEXT:    push {r4, r5, r6, lr}1512; BE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}1513; BE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}1514; BE-NEXT:    vorr q4, q1, q11515; BE-NEXT:    vorr q5, q0, q01516; BE-NEXT:    vorr d0, d9, d91517; BE-NEXT:    bl llrint1518; BE-NEXT:    vorr d0, d10, d101519; BE-NEXT:    mov r4, r11520; BE-NEXT:    vmov.32 d13[0], r01521; BE-NEXT:    bl llrint1522; BE-NEXT:    vorr d0, d11, d111523; BE-NEXT:    mov r5, r11524; BE-NEXT:    vmov.32 d14[0], r01525; BE-NEXT:    bl llrint1526; BE-NEXT:    vorr d0, d8, d81527; BE-NEXT:    mov r6, r11528; BE-NEXT:    vmov.32 d15[0], r01529; BE-NEXT:    bl llrint1530; BE-NEXT:    vmov.32 d12[0], r01531; BE-NEXT:    vmov.32 d15[1], r61532; BE-NEXT:    vmov.32 d13[1], r41533; BE-NEXT:    vmov.32 d14[1], r51534; BE-NEXT:    vmov.32 d12[1], r11535; BE-NEXT:    vrev64.32 q0, q71536; BE-NEXT:    vrev64.32 q1, q61537; BE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}1538; BE-NEXT:    pop {r4, r5, r6, pc}1539  %a = call <4 x i64> @llvm.llrint.v4i64.v4f64(<4 x double> %x)1540  ret <4 x i64> %a1541}1542declare <4 x i64> @llvm.llrint.v4i64.v4f64(<4 x double>)1543 1544define <8 x i64> @llrint_v8i64_v8f64(<8 x double> %x) {1545; LE-LABEL: llrint_v8i64_v8f64:1546; LE:       @ %bb.0:1547; LE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, lr}1548; LE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, lr}1549; LE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}1550; LE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}1551; LE-NEXT:    .pad #401552; LE-NEXT:    sub sp, sp, #401553; LE-NEXT:    vorr q4, q0, q01554; LE-NEXT:    add lr, sp, #241555; LE-NEXT:    vorr d0, d7, d71556; LE-NEXT:    vstmia lr, {d6, d7} @ 16-byte Spill1557; LE-NEXT:    vorr q7, q2, q21558; LE-NEXT:    vorr q6, q1, q11559; LE-NEXT:    bl llrint1560; LE-NEXT:    vorr d0, d14, d141561; LE-NEXT:    add lr, sp, #81562; LE-NEXT:    vmov.32 d17[0], r01563; LE-NEXT:    mov r8, r11564; LE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1565; LE-NEXT:    bl llrint1566; LE-NEXT:    vorr d0, d15, d151567; LE-NEXT:    mov r9, r11568; LE-NEXT:    vmov.32 d10[0], r01569; LE-NEXT:    bl llrint1570; LE-NEXT:    vorr d0, d12, d121571; LE-NEXT:    mov r10, r11572; LE-NEXT:    vmov.32 d11[0], r01573; LE-NEXT:    bl llrint1574; LE-NEXT:    vorr d0, d13, d131575; LE-NEXT:    mov r7, r11576; LE-NEXT:    vmov.32 d14[0], r01577; LE-NEXT:    bl llrint1578; LE-NEXT:    vorr d0, d8, d81579; LE-NEXT:    mov r4, r11580; LE-NEXT:    vmov.32 d15[0], r01581; LE-NEXT:    bl llrint1582; LE-NEXT:    vorr d0, d9, d91583; LE-NEXT:    mov r5, r11584; LE-NEXT:    vmov.32 d12[0], r01585; LE-NEXT:    bl llrint1586; LE-NEXT:    add lr, sp, #241587; LE-NEXT:    mov r6, r11588; LE-NEXT:    vmov.32 d13[0], r01589; LE-NEXT:    vldmia lr, {d0, d1} @ 16-byte Reload1590; LE-NEXT:    @ kill: def $d0 killed $d0 killed $q01591; LE-NEXT:    bl llrint1592; LE-NEXT:    add lr, sp, #81593; LE-NEXT:    vmov.32 d13[1], r61594; LE-NEXT:    vldmia lr, {d6, d7} @ 16-byte Reload1595; LE-NEXT:    vmov.32 d15[1], r41596; LE-NEXT:    vmov.32 d11[1], r101597; LE-NEXT:    vmov.32 d6[0], r01598; LE-NEXT:    vmov.32 d12[1], r51599; LE-NEXT:    vmov.32 d14[1], r71600; LE-NEXT:    vorr q0, q6, q61601; LE-NEXT:    vmov.32 d10[1], r91602; LE-NEXT:    vorr q1, q7, q71603; LE-NEXT:    vmov.32 d7[1], r81604; LE-NEXT:    vorr q2, q5, q51605; LE-NEXT:    vmov.32 d6[1], r11606; LE-NEXT:    add sp, sp, #401607; LE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}1608; LE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, pc}1609;1610; BE-LABEL: llrint_v8i64_v8f64:1611; BE:       @ %bb.0:1612; BE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, lr}1613; BE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, lr}1614; BE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}1615; BE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}1616; BE-NEXT:    .pad #401617; BE-NEXT:    sub sp, sp, #401618; BE-NEXT:    vorr q4, q0, q01619; BE-NEXT:    add lr, sp, #241620; BE-NEXT:    vorr d0, d7, d71621; BE-NEXT:    vstmia lr, {d6, d7} @ 16-byte Spill1622; BE-NEXT:    vorr q7, q2, q21623; BE-NEXT:    vorr q6, q1, q11624; BE-NEXT:    bl llrint1625; BE-NEXT:    vorr d0, d14, d141626; BE-NEXT:    add lr, sp, #81627; BE-NEXT:    vmov.32 d17[0], r01628; BE-NEXT:    mov r8, r11629; BE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1630; BE-NEXT:    bl llrint1631; BE-NEXT:    vorr d0, d15, d151632; BE-NEXT:    mov r9, r11633; BE-NEXT:    vmov.32 d10[0], r01634; BE-NEXT:    bl llrint1635; BE-NEXT:    vorr d0, d12, d121636; BE-NEXT:    mov r10, r11637; BE-NEXT:    vmov.32 d11[0], r01638; BE-NEXT:    bl llrint1639; BE-NEXT:    vorr d0, d13, d131640; BE-NEXT:    mov r7, r11641; BE-NEXT:    vmov.32 d14[0], r01642; BE-NEXT:    bl llrint1643; BE-NEXT:    vorr d0, d8, d81644; BE-NEXT:    mov r4, r11645; BE-NEXT:    vmov.32 d15[0], r01646; BE-NEXT:    bl llrint1647; BE-NEXT:    vorr d0, d9, d91648; BE-NEXT:    mov r5, r11649; BE-NEXT:    vmov.32 d12[0], r01650; BE-NEXT:    bl llrint1651; BE-NEXT:    add lr, sp, #241652; BE-NEXT:    mov r6, r11653; BE-NEXT:    vmov.32 d13[0], r01654; BE-NEXT:    vldmia lr, {d0, d1} @ 16-byte Reload1655; BE-NEXT:    @ kill: def $d0 killed $d0 killed $q01656; BE-NEXT:    bl llrint1657; BE-NEXT:    add lr, sp, #81658; BE-NEXT:    vmov.32 d13[1], r61659; BE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1660; BE-NEXT:    vmov.32 d15[1], r41661; BE-NEXT:    vmov.32 d16[0], r01662; BE-NEXT:    vmov.32 d11[1], r101663; BE-NEXT:    vmov.32 d17[1], r81664; BE-NEXT:    vmov.32 d12[1], r51665; BE-NEXT:    vmov.32 d14[1], r71666; BE-NEXT:    vmov.32 d10[1], r91667; BE-NEXT:    vmov.32 d16[1], r11668; BE-NEXT:    vrev64.32 q0, q61669; BE-NEXT:    vrev64.32 q1, q71670; BE-NEXT:    vrev64.32 q2, q51671; BE-NEXT:    vrev64.32 q3, q81672; BE-NEXT:    add sp, sp, #401673; BE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}1674; BE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, pc}1675  %a = call <8 x i64> @llvm.llrint.v8i64.v8f64(<8 x double> %x)1676  ret <8 x i64> %a1677}1678declare <8 x i64> @llvm.llrint.v8i64.v8f64(<8 x double>)1679 1680define <16 x i64> @llrint_v16f64(<16 x double> %x) {1681; LE-LABEL: llrint_v16f64:1682; LE:       @ %bb.0:1683; LE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}1684; LE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, r11, lr}1685; LE-NEXT:    .pad #41686; LE-NEXT:    sub sp, sp, #41687; LE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}1688; LE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}1689; LE-NEXT:    .pad #1761690; LE-NEXT:    sub sp, sp, #1761691; LE-NEXT:    add lr, sp, #401692; LE-NEXT:    str r0, [sp, #140] @ 4-byte Spill1693; LE-NEXT:    add r0, sp, #3121694; LE-NEXT:    vorr q6, q2, q21695; LE-NEXT:    vstmia lr, {d6, d7} @ 16-byte Spill1696; LE-NEXT:    add lr, sp, #961697; LE-NEXT:    vorr q7, q1, q11698; LE-NEXT:    vstmia lr, {d0, d1} @ 16-byte Spill1699; LE-NEXT:    add lr, sp, #1441700; LE-NEXT:    vorr d0, d1, d11701; LE-NEXT:    vld1.64 {d16, d17}, [r0]1702; LE-NEXT:    add r0, sp, #2801703; LE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1704; LE-NEXT:    add lr, sp, #801705; LE-NEXT:    vld1.64 {d16, d17}, [r0]1706; LE-NEXT:    add r0, sp, #2961707; LE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1708; LE-NEXT:    add lr, sp, #1201709; LE-NEXT:    vld1.64 {d16, d17}, [r0]1710; LE-NEXT:    add r0, sp, #3281711; LE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1712; LE-NEXT:    add lr, sp, #561713; LE-NEXT:    vld1.64 {d16, d17}, [r0]1714; LE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1715; LE-NEXT:    bl llrint1716; LE-NEXT:    vorr d0, d14, d141717; LE-NEXT:    str r1, [sp, #116] @ 4-byte Spill1718; LE-NEXT:    vmov.32 d11[0], r01719; LE-NEXT:    bl llrint1720; LE-NEXT:    vorr d0, d15, d151721; LE-NEXT:    str r1, [sp, #76] @ 4-byte Spill1722; LE-NEXT:    vmov.32 d8[0], r01723; LE-NEXT:    bl llrint1724; LE-NEXT:    vorr d0, d12, d121725; LE-NEXT:    add lr, sp, #1601726; LE-NEXT:    vmov.32 d9[0], r01727; LE-NEXT:    str r1, [sp, #72] @ 4-byte Spill1728; LE-NEXT:    vstmia lr, {d8, d9} @ 16-byte Spill1729; LE-NEXT:    bl llrint1730; LE-NEXT:    vorr d0, d13, d131731; LE-NEXT:    mov r6, r11732; LE-NEXT:    vmov.32 d14[0], r01733; LE-NEXT:    bl llrint1734; LE-NEXT:    add lr, sp, #401735; LE-NEXT:    mov r4, r11736; LE-NEXT:    vmov.32 d15[0], r01737; LE-NEXT:    vldmia lr, {d8, d9} @ 16-byte Reload1738; LE-NEXT:    vorr d0, d8, d81739; LE-NEXT:    bl llrint1740; LE-NEXT:    vorr d0, d9, d91741; LE-NEXT:    mov r7, r11742; LE-NEXT:    vmov.32 d12[0], r01743; LE-NEXT:    bl llrint1744; LE-NEXT:    add lr, sp, #961745; LE-NEXT:    mov r5, r11746; LE-NEXT:    vmov.32 d13[0], r01747; LE-NEXT:    vldmia lr, {d0, d1} @ 16-byte Reload1748; LE-NEXT:    @ kill: def $d0 killed $d0 killed $q01749; LE-NEXT:    bl llrint1750; LE-NEXT:    vmov.32 d10[0], r01751; LE-NEXT:    add lr, sp, #401752; LE-NEXT:    mov r10, r11753; LE-NEXT:    vmov.32 d13[1], r51754; LE-NEXT:    vstmia lr, {d10, d11} @ 16-byte Spill1755; LE-NEXT:    add lr, sp, #561756; LE-NEXT:    vldmia lr, {d8, d9} @ 16-byte Reload1757; LE-NEXT:    vorr d0, d9, d91758; LE-NEXT:    bl llrint1759; LE-NEXT:    vorr d0, d8, d81760; LE-NEXT:    vmov.32 d12[1], r71761; LE-NEXT:    add lr, sp, #961762; LE-NEXT:    mov r9, r11763; LE-NEXT:    vmov.32 d11[0], r01764; LE-NEXT:    vstmia lr, {d12, d13} @ 16-byte Spill1765; LE-NEXT:    bl llrint1766; LE-NEXT:    vmov.32 d10[0], r01767; LE-NEXT:    add lr, sp, #241768; LE-NEXT:    mov r11, r11769; LE-NEXT:    vmov.32 d15[1], r41770; LE-NEXT:    vstmia lr, {d10, d11} @ 16-byte Spill1771; LE-NEXT:    add lr, sp, #1441772; LE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1773; LE-NEXT:    vorr d0, d17, d171774; LE-NEXT:    bl llrint1775; LE-NEXT:    add lr, sp, #81776; LE-NEXT:    vmov.32 d14[1], r61777; LE-NEXT:    mov r8, r11778; LE-NEXT:    vmov.32 d17[0], r01779; LE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1780; LE-NEXT:    add lr, sp, #561781; LE-NEXT:    vstmia lr, {d14, d15} @ 16-byte Spill1782; LE-NEXT:    add lr, sp, #801783; LE-NEXT:    vldmia lr, {d10, d11} @ 16-byte Reload1784; LE-NEXT:    vorr d0, d11, d111785; LE-NEXT:    bl llrint1786; LE-NEXT:    vmov.32 d15[0], r01787; LE-NEXT:    add lr, sp, #1601788; LE-NEXT:    vorr d0, d10, d101789; LE-NEXT:    ldr r0, [sp, #72] @ 4-byte Reload1790; LE-NEXT:    vldmia lr, {d8, d9} @ 16-byte Reload1791; LE-NEXT:    mov r6, r11792; LE-NEXT:    vmov.32 d9[1], r01793; LE-NEXT:    bl llrint1794; LE-NEXT:    vmov.32 d14[0], r01795; LE-NEXT:    ldr r0, [sp, #76] @ 4-byte Reload1796; LE-NEXT:    add lr, sp, #1601797; LE-NEXT:    mov r4, r11798; LE-NEXT:    vmov.32 d8[1], r01799; LE-NEXT:    vstmia lr, {d8, d9} @ 16-byte Spill1800; LE-NEXT:    add lr, sp, #1201801; LE-NEXT:    vldmia lr, {d10, d11} @ 16-byte Reload1802; LE-NEXT:    vorr d0, d11, d111803; LE-NEXT:    bl llrint1804; LE-NEXT:    vmov.32 d13[0], r01805; LE-NEXT:    add lr, sp, #401806; LE-NEXT:    vorr d0, d10, d101807; LE-NEXT:    ldr r0, [sp, #116] @ 4-byte Reload1808; LE-NEXT:    vldmia lr, {d8, d9} @ 16-byte Reload1809; LE-NEXT:    mov r5, r11810; LE-NEXT:    vmov.32 d9[1], r01811; LE-NEXT:    bl llrint1812; LE-NEXT:    add lr, sp, #1441813; LE-NEXT:    mov r7, r11814; LE-NEXT:    vmov.32 d12[0], r01815; LE-NEXT:    vldmia lr, {d0, d1} @ 16-byte Reload1816; LE-NEXT:    @ kill: def $d0 killed $d0 killed $q01817; LE-NEXT:    vmov.32 d8[1], r101818; LE-NEXT:    bl llrint1819; LE-NEXT:    add lr, sp, #81820; LE-NEXT:    vmov.32 d15[1], r61821; LE-NEXT:    vldmia lr, {d20, d21} @ 16-byte Reload1822; LE-NEXT:    add lr, sp, #241823; LE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1824; LE-NEXT:    add lr, sp, #1601825; LE-NEXT:    vmov.32 d20[0], r01826; LE-NEXT:    vmov.32 d21[1], r81827; LE-NEXT:    vmov.32 d20[1], r11828; LE-NEXT:    ldr r1, [sp, #140] @ 4-byte Reload1829; LE-NEXT:    vmov.32 d13[1], r51830; LE-NEXT:    mov r0, r11831; LE-NEXT:    vst1.64 {d8, d9}, [r0:128]!1832; LE-NEXT:    vldmia lr, {d18, d19} @ 16-byte Reload1833; LE-NEXT:    add lr, sp, #561834; LE-NEXT:    vmov.32 d14[1], r41835; LE-NEXT:    vst1.64 {d18, d19}, [r0:128]!1836; LE-NEXT:    vldmia lr, {d18, d19} @ 16-byte Reload1837; LE-NEXT:    add lr, sp, #961838; LE-NEXT:    vmov.32 d12[1], r71839; LE-NEXT:    vst1.64 {d18, d19}, [r0:128]!1840; LE-NEXT:    vldmia lr, {d18, d19} @ 16-byte Reload1841; LE-NEXT:    vmov.32 d17[1], r91842; LE-NEXT:    vst1.64 {d18, d19}, [r0:128]1843; LE-NEXT:    add r0, r1, #641844; LE-NEXT:    vst1.64 {d14, d15}, [r0:128]!1845; LE-NEXT:    vst1.64 {d12, d13}, [r0:128]!1846; LE-NEXT:    vmov.32 d16[1], r111847; LE-NEXT:    vst1.64 {d20, d21}, [r0:128]!1848; LE-NEXT:    vst1.64 {d16, d17}, [r0:128]1849; LE-NEXT:    add sp, sp, #1761850; LE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}1851; LE-NEXT:    add sp, sp, #41852; LE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}1853;1854; BE-LABEL: llrint_v16f64:1855; BE:       @ %bb.0:1856; BE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}1857; BE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, r11, lr}1858; BE-NEXT:    .pad #41859; BE-NEXT:    sub sp, sp, #41860; BE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}1861; BE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}1862; BE-NEXT:    .pad #1681863; BE-NEXT:    sub sp, sp, #1681864; BE-NEXT:    add lr, sp, #641865; BE-NEXT:    str r0, [sp, #132] @ 4-byte Spill1866; BE-NEXT:    add r0, sp, #3041867; BE-NEXT:    vorr q4, q3, q31868; BE-NEXT:    vstmia lr, {d0, d1} @ 16-byte Spill1869; BE-NEXT:    add lr, sp, #481870; BE-NEXT:    vorr d0, d1, d11871; BE-NEXT:    vld1.64 {d16, d17}, [r0]1872; BE-NEXT:    add r0, sp, #3201873; BE-NEXT:    vorr q6, q2, q21874; BE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1875; BE-NEXT:    add lr, sp, #881876; BE-NEXT:    vorr q7, q1, q11877; BE-NEXT:    vld1.64 {d16, d17}, [r0]1878; BE-NEXT:    add r0, sp, #2721879; BE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1880; BE-NEXT:    add lr, sp, #1121881; BE-NEXT:    vld1.64 {d16, d17}, [r0]1882; BE-NEXT:    add r0, sp, #2881883; BE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1884; BE-NEXT:    add lr, sp, #241885; BE-NEXT:    vld1.64 {d16, d17}, [r0]1886; BE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1887; BE-NEXT:    bl llrint1888; BE-NEXT:    vorr d0, d14, d141889; BE-NEXT:    add lr, sp, #1361890; BE-NEXT:    vmov.32 d17[0], r01891; BE-NEXT:    str r1, [sp, #108] @ 4-byte Spill1892; BE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1893; BE-NEXT:    bl llrint1894; BE-NEXT:    vorr d0, d15, d151895; BE-NEXT:    str r1, [sp, #84] @ 4-byte Spill1896; BE-NEXT:    vmov.32 d10[0], r01897; BE-NEXT:    bl llrint1898; BE-NEXT:    vorr d0, d12, d121899; BE-NEXT:    add lr, sp, #1521900; BE-NEXT:    vmov.32 d11[0], r01901; BE-NEXT:    str r1, [sp, #44] @ 4-byte Spill1902; BE-NEXT:    vstmia lr, {d10, d11} @ 16-byte Spill1903; BE-NEXT:    bl llrint1904; BE-NEXT:    vorr d0, d13, d131905; BE-NEXT:    mov r6, r11906; BE-NEXT:    vmov.32 d10[0], r01907; BE-NEXT:    bl llrint1908; BE-NEXT:    vorr d0, d8, d81909; BE-NEXT:    mov r4, r11910; BE-NEXT:    vmov.32 d11[0], r01911; BE-NEXT:    bl llrint1912; BE-NEXT:    vorr d0, d9, d91913; BE-NEXT:    mov r7, r11914; BE-NEXT:    vmov.32 d12[0], r01915; BE-NEXT:    bl llrint1916; BE-NEXT:    add lr, sp, #641917; BE-NEXT:    mov r5, r11918; BE-NEXT:    vmov.32 d13[0], r01919; BE-NEXT:    vldmia lr, {d0, d1} @ 16-byte Reload1920; BE-NEXT:    @ kill: def $d0 killed $d0 killed $q01921; BE-NEXT:    bl llrint1922; BE-NEXT:    add lr, sp, #1361923; BE-NEXT:    mov r9, r11924; BE-NEXT:    vmov.32 d13[1], r51925; BE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1926; BE-NEXT:    vmov.32 d16[0], r01927; BE-NEXT:    vstmia lr, {d16, d17} @ 16-byte Spill1928; BE-NEXT:    add lr, sp, #241929; BE-NEXT:    vldmia lr, {d8, d9} @ 16-byte Reload1930; BE-NEXT:    vorr d0, d9, d91931; BE-NEXT:    bl llrint1932; BE-NEXT:    vorr d0, d8, d81933; BE-NEXT:    vmov.32 d12[1], r71934; BE-NEXT:    add lr, sp, #641935; BE-NEXT:    mov r10, r11936; BE-NEXT:    vmov.32 d15[0], r01937; BE-NEXT:    vstmia lr, {d12, d13} @ 16-byte Spill1938; BE-NEXT:    bl llrint1939; BE-NEXT:    vmov.32 d14[0], r01940; BE-NEXT:    add lr, sp, #81941; BE-NEXT:    mov r11, r11942; BE-NEXT:    vmov.32 d11[1], r41943; BE-NEXT:    vstmia lr, {d14, d15} @ 16-byte Spill1944; BE-NEXT:    add lr, sp, #481945; BE-NEXT:    vorr q6, q5, q51946; BE-NEXT:    vldmia lr, {d8, d9} @ 16-byte Reload1947; BE-NEXT:    vorr d0, d9, d91948; BE-NEXT:    bl llrint1949; BE-NEXT:    vorr d0, d8, d81950; BE-NEXT:    vmov.32 d12[1], r61951; BE-NEXT:    add lr, sp, #241952; BE-NEXT:    mov r8, r11953; BE-NEXT:    vmov.32 d11[0], r01954; BE-NEXT:    vstmia lr, {d12, d13} @ 16-byte Spill1955; BE-NEXT:    bl llrint1956; BE-NEXT:    vmov.32 d10[0], r01957; BE-NEXT:    add lr, sp, #481958; BE-NEXT:    ldr r0, [sp, #44] @ 4-byte Reload1959; BE-NEXT:    mov r6, r11960; BE-NEXT:    vstmia lr, {d10, d11} @ 16-byte Spill1961; BE-NEXT:    add lr, sp, #1521962; BE-NEXT:    vldmia lr, {d8, d9} @ 16-byte Reload1963; BE-NEXT:    add lr, sp, #881964; BE-NEXT:    vldmia lr, {d12, d13} @ 16-byte Reload1965; BE-NEXT:    vorr d0, d13, d131966; BE-NEXT:    vmov.32 d9[1], r01967; BE-NEXT:    bl llrint1968; BE-NEXT:    vmov.32 d15[0], r01969; BE-NEXT:    ldr r0, [sp, #84] @ 4-byte Reload1970; BE-NEXT:    vorr d0, d12, d121971; BE-NEXT:    add lr, sp, #1521972; BE-NEXT:    mov r4, r11973; BE-NEXT:    vmov.32 d8[1], r01974; BE-NEXT:    vstmia lr, {d8, d9} @ 16-byte Spill1975; BE-NEXT:    bl llrint1976; BE-NEXT:    add lr, sp, #1361977; BE-NEXT:    vmov.32 d14[0], r01978; BE-NEXT:    ldr r0, [sp, #108] @ 4-byte Reload1979; BE-NEXT:    mov r5, r11980; BE-NEXT:    vldmia lr, {d10, d11} @ 16-byte Reload1981; BE-NEXT:    add lr, sp, #1121982; BE-NEXT:    vldmia lr, {d8, d9} @ 16-byte Reload1983; BE-NEXT:    vorr d0, d9, d91984; BE-NEXT:    vmov.32 d11[1], r01985; BE-NEXT:    bl llrint1986; BE-NEXT:    vorr d0, d8, d81987; BE-NEXT:    mov r7, r11988; BE-NEXT:    vmov.32 d13[0], r01989; BE-NEXT:    vmov.32 d10[1], r91990; BE-NEXT:    bl llrint1991; BE-NEXT:    add lr, sp, #81992; BE-NEXT:    vmov.32 d12[0], r01993; BE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1994; BE-NEXT:    add lr, sp, #481995; BE-NEXT:    vmov.32 d17[1], r101996; BE-NEXT:    vmov.32 d16[1], r111997; BE-NEXT:    vorr q12, q8, q81998; BE-NEXT:    vldmia lr, {d16, d17} @ 16-byte Reload1999; BE-NEXT:    add lr, sp, #1522000; BE-NEXT:    vmov.32 d17[1], r82001; BE-NEXT:    vldmia lr, {d18, d19} @ 16-byte Reload2002; BE-NEXT:    add lr, sp, #242003; BE-NEXT:    vmov.32 d13[1], r72004; BE-NEXT:    vmov.32 d16[1], r62005; BE-NEXT:    vldmia lr, {d20, d21} @ 16-byte Reload2006; BE-NEXT:    add lr, sp, #642007; BE-NEXT:    vorr q13, q8, q82008; BE-NEXT:    vmov.32 d12[1], r12009; BE-NEXT:    ldr r1, [sp, #132] @ 4-byte Reload2010; BE-NEXT:    vrev64.32 q8, q52011; BE-NEXT:    mov r0, r12012; BE-NEXT:    vldmia lr, {d22, d23} @ 16-byte Reload2013; BE-NEXT:    vrev64.32 q9, q92014; BE-NEXT:    vrev64.32 q10, q102015; BE-NEXT:    vst1.64 {d16, d17}, [r0:128]!2016; BE-NEXT:    vst1.64 {d18, d19}, [r0:128]!2017; BE-NEXT:    vrev64.32 q11, q112018; BE-NEXT:    vmov.32 d15[1], r42019; BE-NEXT:    vst1.64 {d20, d21}, [r0:128]!2020; BE-NEXT:    vrev64.32 q15, q62021; BE-NEXT:    vmov.32 d14[1], r52022; BE-NEXT:    vrev64.32 q12, q122023; BE-NEXT:    vst1.64 {d22, d23}, [r0:128]2024; BE-NEXT:    add r0, r1, #642025; BE-NEXT:    vrev64.32 q13, q132026; BE-NEXT:    vst1.64 {d30, d31}, [r0:128]!2027; BE-NEXT:    vst1.64 {d24, d25}, [r0:128]!2028; BE-NEXT:    vrev64.32 q14, q72029; BE-NEXT:    vst1.64 {d26, d27}, [r0:128]!2030; BE-NEXT:    vst1.64 {d28, d29}, [r0:128]2031; BE-NEXT:    add sp, sp, #1682032; BE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}2033; BE-NEXT:    add sp, sp, #42034; BE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}2035  %a = call <16 x i64> @llvm.llrint.v16i64.v16f64(<16 x double> %x)2036  ret <16 x i64> %a2037}2038declare <16 x i64> @llvm.llrint.v16i64.v16f64(<16 x double>)2039 2040define <1 x i64> @llrint_v1i64_v1f128(<1 x fp128> %x) {2041; LE-LABEL: llrint_v1i64_v1f128:2042; LE:       @ %bb.0:2043; LE-NEXT:    .save {r11, lr}2044; LE-NEXT:    push {r11, lr}2045; LE-NEXT:    bl llrintl2046; LE-NEXT:    vmov.32 d0[0], r02047; LE-NEXT:    vmov.32 d0[1], r12048; LE-NEXT:    pop {r11, pc}2049;2050; BE-LABEL: llrint_v1i64_v1f128:2051; BE:       @ %bb.0:2052; BE-NEXT:    .save {r11, lr}2053; BE-NEXT:    push {r11, lr}2054; BE-NEXT:    bl llrintl2055; BE-NEXT:    vmov.32 d16[0], r02056; BE-NEXT:    vmov.32 d16[1], r12057; BE-NEXT:    vrev64.32 d0, d162058; BE-NEXT:    pop {r11, pc}2059  %a = call <1 x i64> @llvm.llrint.v1i64.v1f128(<1 x fp128> %x)2060  ret <1 x i64> %a2061}2062declare <1 x i64> @llvm.llrint.v1i64.v1f128(<1 x fp128>)2063 2064define <2 x i64> @llrint_v2i64_v2f128(<2 x fp128> %x) {2065; LE-LABEL: llrint_v2i64_v2f128:2066; LE:       @ %bb.0:2067; LE-NEXT:    .save {r4, r5, r6, r7, r8, lr}2068; LE-NEXT:    push {r4, r5, r6, r7, r8, lr}2069; LE-NEXT:    .vsave {d8, d9}2070; LE-NEXT:    vpush {d8, d9}2071; LE-NEXT:    mov r8, r32072; LE-NEXT:    add r3, sp, #402073; LE-NEXT:    mov r5, r22074; LE-NEXT:    mov r6, r12075; LE-NEXT:    mov r7, r02076; LE-NEXT:    ldm r3, {r0, r1, r2, r3}2077; LE-NEXT:    bl llrintl2078; LE-NEXT:    mov r4, r12079; LE-NEXT:    vmov.32 d9[0], r02080; LE-NEXT:    mov r0, r72081; LE-NEXT:    mov r1, r62082; LE-NEXT:    mov r2, r52083; LE-NEXT:    mov r3, r82084; LE-NEXT:    bl llrintl2085; LE-NEXT:    vmov.32 d8[0], r02086; LE-NEXT:    vmov.32 d9[1], r42087; LE-NEXT:    vmov.32 d8[1], r12088; LE-NEXT:    vorr q0, q4, q42089; LE-NEXT:    vpop {d8, d9}2090; LE-NEXT:    pop {r4, r5, r6, r7, r8, pc}2091;2092; BE-LABEL: llrint_v2i64_v2f128:2093; BE:       @ %bb.0:2094; BE-NEXT:    .save {r4, r5, r6, r7, r8, lr}2095; BE-NEXT:    push {r4, r5, r6, r7, r8, lr}2096; BE-NEXT:    .vsave {d8}2097; BE-NEXT:    vpush {d8}2098; BE-NEXT:    mov r8, r32099; BE-NEXT:    add r3, sp, #322100; BE-NEXT:    mov r5, r22101; BE-NEXT:    mov r6, r12102; BE-NEXT:    mov r7, r02103; BE-NEXT:    ldm r3, {r0, r1, r2, r3}2104; BE-NEXT:    bl llrintl2105; BE-NEXT:    mov r4, r12106; BE-NEXT:    vmov.32 d8[0], r02107; BE-NEXT:    mov r0, r72108; BE-NEXT:    mov r1, r62109; BE-NEXT:    mov r2, r52110; BE-NEXT:    mov r3, r82111; BE-NEXT:    bl llrintl2112; BE-NEXT:    vmov.32 d16[0], r02113; BE-NEXT:    vmov.32 d8[1], r42114; BE-NEXT:    vmov.32 d16[1], r12115; BE-NEXT:    vrev64.32 d1, d82116; BE-NEXT:    vrev64.32 d0, d162117; BE-NEXT:    vpop {d8}2118; BE-NEXT:    pop {r4, r5, r6, r7, r8, pc}2119  %a = call <2 x i64> @llvm.llrint.v2i64.v2f128(<2 x fp128> %x)2120  ret <2 x i64> %a2121}2122declare <2 x i64> @llvm.llrint.v2i64.v2f128(<2 x fp128>)2123 2124define <4 x i64> @llrint_v4i64_v4f128(<4 x fp128> %x) {2125; LE-LABEL: llrint_v4i64_v4f128:2126; LE:       @ %bb.0:2127; LE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, lr}2128; LE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, lr}2129; LE-NEXT:    .vsave {d8, d9, d10, d11}2130; LE-NEXT:    vpush {d8, d9, d10, d11}2131; LE-NEXT:    mov r5, r32132; LE-NEXT:    add r3, sp, #962133; LE-NEXT:    mov r7, r22134; LE-NEXT:    mov r6, r12135; LE-NEXT:    mov r4, r02136; LE-NEXT:    ldm r3, {r0, r1, r2, r3}2137; LE-NEXT:    bl llrintl2138; LE-NEXT:    mov r9, r12139; LE-NEXT:    vmov.32 d9[0], r02140; LE-NEXT:    mov r0, r42141; LE-NEXT:    mov r1, r62142; LE-NEXT:    mov r2, r72143; LE-NEXT:    mov r3, r52144; LE-NEXT:    ldr r8, [sp, #80]2145; LE-NEXT:    ldr r10, [sp, #64]2146; LE-NEXT:    bl llrintl2147; LE-NEXT:    add r3, sp, #682148; LE-NEXT:    mov r5, r12149; LE-NEXT:    vmov.32 d10[0], r02150; LE-NEXT:    mov r0, r102151; LE-NEXT:    ldm r3, {r1, r2, r3}2152; LE-NEXT:    bl llrintl2153; LE-NEXT:    add r3, sp, #842154; LE-NEXT:    mov r4, r12155; LE-NEXT:    vmov.32 d11[0], r02156; LE-NEXT:    mov r0, r82157; LE-NEXT:    ldm r3, {r1, r2, r3}2158; LE-NEXT:    bl llrintl2159; LE-NEXT:    vmov.32 d8[0], r02160; LE-NEXT:    vmov.32 d11[1], r42161; LE-NEXT:    vmov.32 d9[1], r92162; LE-NEXT:    vmov.32 d10[1], r52163; LE-NEXT:    vmov.32 d8[1], r12164; LE-NEXT:    vorr q0, q5, q52165; LE-NEXT:    vorr q1, q4, q42166; LE-NEXT:    vpop {d8, d9, d10, d11}2167; LE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, pc}2168;2169; BE-LABEL: llrint_v4i64_v4f128:2170; BE:       @ %bb.0:2171; BE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, lr}2172; BE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, lr}2173; BE-NEXT:    .vsave {d8, d9, d10}2174; BE-NEXT:    vpush {d8, d9, d10}2175; BE-NEXT:    mov r5, r32176; BE-NEXT:    add r3, sp, #882177; BE-NEXT:    mov r7, r22178; BE-NEXT:    mov r6, r12179; BE-NEXT:    mov r4, r02180; BE-NEXT:    ldm r3, {r0, r1, r2, r3}2181; BE-NEXT:    bl llrintl2182; BE-NEXT:    mov r9, r12183; BE-NEXT:    vmov.32 d8[0], r02184; BE-NEXT:    mov r0, r42185; BE-NEXT:    mov r1, r62186; BE-NEXT:    mov r2, r72187; BE-NEXT:    mov r3, r52188; BE-NEXT:    ldr r8, [sp, #72]2189; BE-NEXT:    ldr r10, [sp, #56]2190; BE-NEXT:    bl llrintl2191; BE-NEXT:    add r3, sp, #602192; BE-NEXT:    mov r5, r12193; BE-NEXT:    vmov.32 d9[0], r02194; BE-NEXT:    mov r0, r102195; BE-NEXT:    ldm r3, {r1, r2, r3}2196; BE-NEXT:    bl llrintl2197; BE-NEXT:    add r3, sp, #762198; BE-NEXT:    mov r4, r12199; BE-NEXT:    vmov.32 d10[0], r02200; BE-NEXT:    mov r0, r82201; BE-NEXT:    ldm r3, {r1, r2, r3}2202; BE-NEXT:    bl llrintl2203; BE-NEXT:    vmov.32 d16[0], r02204; BE-NEXT:    vmov.32 d10[1], r42205; BE-NEXT:    vmov.32 d8[1], r92206; BE-NEXT:    vmov.32 d9[1], r52207; BE-NEXT:    vmov.32 d16[1], r12208; BE-NEXT:    vrev64.32 d1, d102209; BE-NEXT:    vrev64.32 d3, d82210; BE-NEXT:    vrev64.32 d0, d92211; BE-NEXT:    vrev64.32 d2, d162212; BE-NEXT:    vpop {d8, d9, d10}2213; BE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, pc}2214  %a = call <4 x i64> @llvm.llrint.v4i64.v4f128(<4 x fp128> %x)2215  ret <4 x i64> %a2216}2217declare <4 x i64> @llvm.llrint.v4i64.v4f128(<4 x fp128>)2218 2219define <8 x i64> @llrint_v8i64_v8f128(<8 x fp128> %x) {2220; LE-LABEL: llrint_v8i64_v8f128:2221; LE:       @ %bb.0:2222; LE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}2223; LE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, r11, lr}2224; LE-NEXT:    .pad #42225; LE-NEXT:    sub sp, sp, #42226; LE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14, d15}2227; LE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14, d15}2228; LE-NEXT:    .pad #82229; LE-NEXT:    sub sp, sp, #82230; LE-NEXT:    mov r11, r32231; LE-NEXT:    add r3, sp, #2082232; LE-NEXT:    mov r10, r22233; LE-NEXT:    mov r4, r12234; LE-NEXT:    mov r5, r02235; LE-NEXT:    ldm r3, {r0, r1, r2, r3}2236; LE-NEXT:    bl llrintl2237; LE-NEXT:    add r7, sp, #1642238; LE-NEXT:    ldr r6, [sp, #160]2239; LE-NEXT:    str r1, [sp, #4] @ 4-byte Spill2240; LE-NEXT:    vmov.32 d9[0], r02241; LE-NEXT:    ldm r7, {r1, r2, r3, r7}2242; LE-NEXT:    mov r0, r62243; LE-NEXT:    ldr r8, [sp, #128]2244; LE-NEXT:    ldr r9, [sp, #144]2245; LE-NEXT:    bl llrintl2246; LE-NEXT:    add r3, sp, #1802247; LE-NEXT:    str r1, [sp] @ 4-byte Spill2248; LE-NEXT:    vmov.32 d10[0], r02249; LE-NEXT:    mov r0, r72250; LE-NEXT:    ldm r3, {r1, r2, r3}2251; LE-NEXT:    bl llrintl2252; LE-NEXT:    add r3, sp, #1322253; LE-NEXT:    mov r7, r12254; LE-NEXT:    vmov.32 d11[0], r02255; LE-NEXT:    mov r0, r82256; LE-NEXT:    ldm r3, {r1, r2, r3}2257; LE-NEXT:    bl llrintl2258; LE-NEXT:    add r3, sp, #1482259; LE-NEXT:    mov r8, r12260; LE-NEXT:    vmov.32 d12[0], r02261; LE-NEXT:    mov r0, r92262; LE-NEXT:    ldm r3, {r1, r2, r3}2263; LE-NEXT:    bl llrintl2264; LE-NEXT:    mov r9, r12265; LE-NEXT:    vmov.32 d13[0], r02266; LE-NEXT:    mov r0, r52267; LE-NEXT:    mov r1, r42268; LE-NEXT:    mov r2, r102269; LE-NEXT:    mov r3, r112270; LE-NEXT:    ldr r6, [sp, #112]2271; LE-NEXT:    bl llrintl2272; LE-NEXT:    add r3, sp, #1162273; LE-NEXT:    mov r4, r12274; LE-NEXT:    vmov.32 d14[0], r02275; LE-NEXT:    mov r0, r62276; LE-NEXT:    ldm r3, {r1, r2, r3}2277; LE-NEXT:    bl llrintl2278; LE-NEXT:    add r3, sp, #1962279; LE-NEXT:    vmov.32 d15[0], r02280; LE-NEXT:    ldr r0, [sp, #192]2281; LE-NEXT:    mov r5, r12282; LE-NEXT:    ldm r3, {r1, r2, r3}2283; LE-NEXT:    bl llrintl2284; LE-NEXT:    vmov.32 d8[0], r02285; LE-NEXT:    ldr r0, [sp] @ 4-byte Reload2286; LE-NEXT:    vmov.32 d11[1], r72287; LE-NEXT:    vmov.32 d10[1], r02288; LE-NEXT:    ldr r0, [sp, #4] @ 4-byte Reload2289; LE-NEXT:    vmov.32 d15[1], r52290; LE-NEXT:    vorr q2, q5, q52291; LE-NEXT:    vmov.32 d13[1], r92292; LE-NEXT:    vmov.32 d9[1], r02293; LE-NEXT:    vmov.32 d14[1], r42294; LE-NEXT:    vmov.32 d12[1], r82295; LE-NEXT:    vorr q0, q7, q72296; LE-NEXT:    vmov.32 d8[1], r12297; LE-NEXT:    vorr q1, q6, q62298; LE-NEXT:    vorr q3, q4, q42299; LE-NEXT:    add sp, sp, #82300; LE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14, d15}2301; LE-NEXT:    add sp, sp, #42302; LE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}2303;2304; BE-LABEL: llrint_v8i64_v8f128:2305; BE:       @ %bb.0:2306; BE-NEXT:    .save {r4, r5, r6, r7, r8, r9, r10, r11, lr}2307; BE-NEXT:    push {r4, r5, r6, r7, r8, r9, r10, r11, lr}2308; BE-NEXT:    .pad #42309; BE-NEXT:    sub sp, sp, #42310; BE-NEXT:    .vsave {d8, d9, d10, d11, d12, d13, d14}2311; BE-NEXT:    vpush {d8, d9, d10, d11, d12, d13, d14}2312; BE-NEXT:    .pad #162313; BE-NEXT:    sub sp, sp, #162314; BE-NEXT:    str r3, [sp, #4] @ 4-byte Spill2315; BE-NEXT:    add r3, sp, #2082316; BE-NEXT:    mov r11, r22317; BE-NEXT:    mov r4, r12318; BE-NEXT:    mov r5, r02319; BE-NEXT:    ldm r3, {r0, r1, r2, r3}2320; BE-NEXT:    bl llrintl2321; BE-NEXT:    ldr r7, [sp, #176]2322; BE-NEXT:    add r3, sp, #1802323; BE-NEXT:    str r1, [sp, #12] @ 4-byte Spill2324; BE-NEXT:    vmov.32 d8[0], r02325; BE-NEXT:    ldm r3, {r1, r2, r3}2326; BE-NEXT:    mov r0, r72327; BE-NEXT:    ldr r6, [sp, #128]2328; BE-NEXT:    ldr r8, [sp, #144]2329; BE-NEXT:    bl llrintl2330; BE-NEXT:    add r3, sp, #1322331; BE-NEXT:    str r1, [sp, #8] @ 4-byte Spill2332; BE-NEXT:    vmov.32 d9[0], r02333; BE-NEXT:    mov r0, r62334; BE-NEXT:    ldm r3, {r1, r2, r3}2335; BE-NEXT:    bl llrintl2336; BE-NEXT:    add r3, sp, #1482337; BE-NEXT:    mov r6, r12338; BE-NEXT:    vmov.32 d10[0], r02339; BE-NEXT:    mov r0, r82340; BE-NEXT:    ldm r3, {r1, r2, r3}2341; BE-NEXT:    bl llrintl2342; BE-NEXT:    add r3, sp, #1602343; BE-NEXT:    mov r9, r02344; BE-NEXT:    mov r7, r12345; BE-NEXT:    ldm r3, {r0, r1, r2, r3}2346; BE-NEXT:    bl llrintl2347; BE-NEXT:    ldr r3, [sp, #4] @ 4-byte Reload2348; BE-NEXT:    mov r8, r12349; BE-NEXT:    vmov.32 d11[0], r02350; BE-NEXT:    mov r0, r52351; BE-NEXT:    mov r1, r42352; BE-NEXT:    mov r2, r112353; BE-NEXT:    ldr r10, [sp, #112]2354; BE-NEXT:    vmov.32 d12[0], r92355; BE-NEXT:    bl llrintl2356; BE-NEXT:    add r3, sp, #1162357; BE-NEXT:    mov r4, r12358; BE-NEXT:    vmov.32 d13[0], r02359; BE-NEXT:    mov r0, r102360; BE-NEXT:    ldm r3, {r1, r2, r3}2361; BE-NEXT:    bl llrintl2362; BE-NEXT:    add r3, sp, #1962363; BE-NEXT:    vmov.32 d14[0], r02364; BE-NEXT:    ldr r0, [sp, #192]2365; BE-NEXT:    mov r5, r12366; BE-NEXT:    ldm r3, {r1, r2, r3}2367; BE-NEXT:    bl llrintl2368; BE-NEXT:    vmov.32 d16[0], r02369; BE-NEXT:    ldr r0, [sp, #8] @ 4-byte Reload2370; BE-NEXT:    vmov.32 d14[1], r52371; BE-NEXT:    vmov.32 d9[1], r02372; BE-NEXT:    ldr r0, [sp, #12] @ 4-byte Reload2373; BE-NEXT:    vmov.32 d12[1], r72374; BE-NEXT:    vmov.32 d8[1], r02375; BE-NEXT:    vmov.32 d13[1], r42376; BE-NEXT:    vmov.32 d10[1], r62377; BE-NEXT:    vmov.32 d11[1], r82378; BE-NEXT:    vmov.32 d16[1], r12379; BE-NEXT:    vrev64.32 d1, d142380; BE-NEXT:    vrev64.32 d3, d122381; BE-NEXT:    vrev64.32 d5, d92382; BE-NEXT:    vrev64.32 d7, d82383; BE-NEXT:    vrev64.32 d0, d132384; BE-NEXT:    vrev64.32 d2, d102385; BE-NEXT:    vrev64.32 d4, d112386; BE-NEXT:    vrev64.32 d6, d162387; BE-NEXT:    add sp, sp, #162388; BE-NEXT:    vpop {d8, d9, d10, d11, d12, d13, d14}2389; BE-NEXT:    add sp, sp, #42390; BE-NEXT:    pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}2391  %a = call <8 x i64> @llvm.llrint.v8i64.v8f128(<8 x fp128> %x)2392  ret <8 x i64> %a2393}2394declare <8 x i64> @llvm.llrint.v8i64.v8f128(<8 x fp128>)2395