brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · e1ab75b Raw
130 lines · plain
1; RUN: llc < %s -mtriple=thumbv7s-apple-ios7.0.0 | FileCheck %s2 3define arm_aapcs_vfpcc { <8 x half>, <8 x half> } @f1() {4; CHECK-LABEL: _f15; CHECK:      vpush   {d8, d9, d10, d11}6; CHECK-NEXT: vmov.i32        q8, #0x07; CHECK-NEXT: vmov.u16        r0, d16[0]8; CHECK-NEXT: vmov    d4, r0, r09; CHECK-NEXT: vmov.u16        r0, d16[1]10; CHECK-NEXT: vmov    d8, r0, r011; CHECK-NEXT: vmov.u16        r0, d16[2]12; CHECK-NEXT: vmov    d5, r0, r013; CHECK-NEXT: vmov.u16        r0, d16[3]14; CHECK-NEXT: vmov    d9, r0, r015; CHECK-NEXT: vmov.u16        r0, d17[0]16; CHECK-NEXT: vmov    d6, r0, r017; CHECK-NEXT: vmov.u16        r0, d17[1]18; CHECK-NEXT: vmov    d10, r0, r019; CHECK-NEXT: vmov.u16        r0, d17[2]20; CHECK-NEXT: vmov    d7, r0, r021; CHECK-NEXT: vmov.u16        r0, d17[3]22; CHECK-NEXT: vmov    d11, r0, r023; CHECK:      vmov.f32        s0, s824; CHECK:      vmov.f32        s1, s1625; CHECK:      vmov.f32        s2, s1026; CHECK:      vmov.f32        s3, s1827; CHECK:      vmov.f32        s4, s1228; CHECK:      vmov.f32        s5, s2029; CHECK:      vmov.f32        s6, s1430; CHECK:      vmov.f32        s7, s2231; CHECK:      vmov.f32        s9, s1632; CHECK:      vmov.f32        s11, s1833; CHECK:      vmov.f32        s13, s2034; CHECK:      vmov.f32        s15, s2235; CHECK:      vpop    {d8, d9, d10, d11}36; CHECK-NEXT: bx      lr37 38  ret { <8 x half>, <8 x half> } zeroinitializer39}40 41define swiftcc { <8 x half>, <8 x half> } @f2() {42; CHECK-LABEL: _f243; CHECK:      vpush   {d8, d9, d10, d11}44; CHECK-NEXT: vmov.i32        q8, #0x045; CHECK-NEXT: vmov.u16        r0, d16[0]46; CHECK-NEXT: vmov    d4, r0, r047; CHECK-NEXT: vmov.u16        r0, d16[1]48; CHECK-NEXT: vmov    d8, r0, r049; CHECK-NEXT: vmov.u16        r0, d16[2]50; CHECK-NEXT: vmov    d5, r0, r051; CHECK-NEXT: vmov.u16        r0, d16[3]52; CHECK-NEXT: vmov    d9, r0, r053; CHECK-NEXT: vmov.u16        r0, d17[0]54; CHECK-NEXT: vmov    d6, r0, r055; CHECK-NEXT: vmov.u16        r0, d17[1]56; CHECK-NEXT: vmov    d10, r0, r057; CHECK-NEXT: vmov.u16        r0, d17[2]58; CHECK-NEXT: vmov    d7, r0, r059; CHECK-NEXT: vmov.u16        r0, d17[3]60; CHECK-NEXT: vmov    d11, r0, r061; CHECK:      vmov.f32        s0, s862; CHECK:      vmov.f32        s1, s1663; CHECK:      vmov.f32        s2, s1064; CHECK:      vmov.f32        s3, s1865; CHECK:      vmov.f32        s4, s1266; CHECK:      vmov.f32        s5, s2067; CHECK:      vmov.f32        s6, s1468; CHECK:      vmov.f32        s7, s2269; CHECK:      vmov.f32        s9, s1670; CHECK:      vmov.f32        s11, s1871; CHECK:      vmov.f32        s13, s2072; CHECK:      vmov.f32        s15, s2273; CHECK-NEXT: vpop    {d8, d9, d10, d11}74; CHECK-NEXT: bx      lr75 76  ret { <8 x half>, <8 x half> } zeroinitializer77}78 79define fastcc { <8 x half>, <8 x half> } @f3() {80; CHECK-LABEL: _f381; CHECK:      vpush   {d8, d9, d10, d11}82; CHECK-NEXT: vmov.i32        q8, #0x083; CHECK-NEXT: vmov.u16        r0, d16[0]84; CHECK-NEXT: vmov    d4, r0, r085; CHECK-NEXT: vmov.u16        r0, d16[1]86; CHECK-NEXT: vmov    d8, r0, r087; CHECK-NEXT: vmov.u16        r0, d16[2]88; CHECK-NEXT: vmov    d5, r0, r089; CHECK-NEXT: vmov.u16        r0, d16[3]90; CHECK-NEXT: vmov    d9, r0, r091; CHECK-NEXT: vmov.u16        r0, d17[0]92; CHECK-NEXT: vmov    d6, r0, r093; CHECK-NEXT: vmov.u16        r0, d17[1]94; CHECK-NEXT: vmov    d10, r0, r095; CHECK-NEXT: vmov.u16        r0, d17[2]96; CHECK-NEXT: vmov    d7, r0, r097; CHECK-NEXT: vmov.u16        r0, d17[3]98; CHECK-NEXT: vmov    d11, r0, r099; CHECK:      vmov.f32        s0, s8100; CHECK:      vmov.f32        s1, s16101; CHECK:      vmov.f32        s2, s10102; CHECK:      vmov.f32        s3, s18103; CHECK:      vmov.f32        s4, s12104; CHECK:      vmov.f32        s5, s20105; CHECK:      vmov.f32        s6, s14106; CHECK:      vmov.f32        s7, s22107; CHECK:      vmov.f32        s9, s16108; CHECK:      vmov.f32        s11, s18109; CHECK:      vmov.f32        s13, s20110; CHECK:      vmov.f32        s15, s22111; CHECK-NEXT: vpop    {d8, d9, d10, d11}112; CHECK-NEXT: bx      lr113 114  ret { <8 x half>, <8 x half> } zeroinitializer115}116 117define void @extract_insert(ptr %dst) optnone noinline {118; CHECK-LABEL: extract_insert:119; CHECK: vmov.i32 d0, #0x0120; CHECK: vcvtb.f16.f32 s0, s0121; CHECK: vmov r1, s0122; CHECK: strh r1, [r0]123  %splat.splatinsert = insertelement <1 x half> zeroinitializer, half 0xH0000, i32 0124  br label %next125 126next:127  store <1 x half> %splat.splatinsert, ptr %dst128  ret void129}130