brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 2a86883 Raw
139 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve -verify-machineinstrs %s -o - | FileCheck %s3 4%struct.s_int8_t = type { [16 x i8], [16 x i8] }5%struct.s_int16_t = type { [8 x i16], [8 x i16] }6%struct.s_int32_t = type { [4 x i32], [4 x i32] }7%struct.s_float16_t = type { [8 x half], [8 x half] }8%struct.s_float32_t = type { [4 x float], [4 x float] }9 10define hidden void @fwd_int8_t(ptr noalias %v) local_unnamed_addr #0 {11; CHECK-LABEL: fwd_int8_t:12; CHECK:       @ %bb.0: @ %entry13; CHECK-NEXT:    vldrb.u8 q0, [r0]14; CHECK-NEXT:    vstrb.8 q0, [r0, #16]15; CHECK-NEXT:    bx lr16entry:17  %arrayidx3 = getelementptr inbounds %struct.s_int8_t, ptr %v, i32 0, i32 1, i32 018  %0 = load <16 x i8>, ptr %v, align 119  store <16 x i8> %0, ptr %arrayidx3, align 120  ret void21}22 23define hidden void @fwd_int16_t(ptr noalias nocapture %v) local_unnamed_addr #0 {24; CHECK-LABEL: fwd_int16_t:25; CHECK:       @ %bb.0: @ %entry26; CHECK-NEXT:    vldrh.u16 q0, [r0]27; CHECK-NEXT:    vstrh.16 q0, [r0, #16]28; CHECK-NEXT:    bx lr29entry:30  %arrayidx3 = getelementptr inbounds %struct.s_int16_t, ptr %v, i32 0, i32 1, i32 031  %0 = load <8 x i16>, ptr %v, align 232  store <8 x i16> %0, ptr %arrayidx3, align 233  ret void34}35 36define hidden void @fwd_int32_t(ptr noalias nocapture %v) local_unnamed_addr #0 {37; CHECK-LABEL: fwd_int32_t:38; CHECK:       @ %bb.0: @ %entry39; CHECK-NEXT:    vldrw.u32 q0, [r0]40; CHECK-NEXT:    vstrw.32 q0, [r0, #16]41; CHECK-NEXT:    bx lr42entry:43  %arrayidx3 = getelementptr inbounds %struct.s_int32_t, ptr %v, i32 0, i32 1, i32 044  %0 = load <4 x i32>, ptr %v, align 445  store <4 x i32> %0, ptr %arrayidx3, align 446  ret void47}48 49define hidden void @fwd_float16_t(ptr noalias nocapture %v) local_unnamed_addr #0 {50; CHECK-LABEL: fwd_float16_t:51; CHECK:       @ %bb.0: @ %entry52; CHECK-NEXT:    vldrh.u16 q0, [r0], #1653; CHECK-NEXT:    vstrh.16 q0, [r0]54; CHECK-NEXT:    bx lr55entry:56  %arrayidx3 = getelementptr inbounds %struct.s_float16_t, ptr %v, i32 0, i32 1, i32 057  %0 = load <8 x half>, ptr %v, align 258  store <8 x half> %0, ptr %arrayidx3, align 259  ret void60}61 62define hidden void @fwd_float32_t(ptr noalias nocapture %v) local_unnamed_addr #0 {63; CHECK-LABEL: fwd_float32_t:64; CHECK:       @ %bb.0: @ %entry65; CHECK-NEXT:    vldrw.u32 q0, [r0]66; CHECK-NEXT:    vstrw.32 q0, [r0, #16]67; CHECK-NEXT:    bx lr68entry:69  %d = getelementptr inbounds %struct.s_float32_t, ptr %v, i32 0, i32 170  %0 = load <4 x i32>, ptr %v, align 471  store <4 x i32> %0, ptr %d, align 472  ret void73}74 75define hidden void @bwd_int8_t(ptr noalias %v) local_unnamed_addr #0 {76; CHECK-LABEL: bwd_int8_t:77; CHECK:       @ %bb.0: @ %for.end78; CHECK-NEXT:    vldrb.u8 q0, [r0]79; CHECK-NEXT:    vstrb.8 q0, [r0, #-16]80; CHECK-NEXT:    bx lr81for.end:82  %0 = load <16 x i8>, ptr %v, align 183  %arrayidx3 = getelementptr inbounds %struct.s_int8_t, ptr %v, i32 -1, i32 1, i32 084  store <16 x i8> %0, ptr %arrayidx3, align 185  ret void86}87 88define hidden void @bwd_int16_t(ptr noalias nocapture %v) local_unnamed_addr #0 {89; CHECK-LABEL: bwd_int16_t:90; CHECK:       @ %bb.0: @ %for.end91; CHECK-NEXT:    vldrh.u16 q0, [r0]92; CHECK-NEXT:    vstrh.16 q0, [r0, #-16]93; CHECK-NEXT:    bx lr94for.end:95  %0 = load <8 x i16>, ptr %v, align 296  %arrayidx3 = getelementptr inbounds %struct.s_int16_t, ptr %v, i32 -1, i32 1, i32 097  store <8 x i16> %0, ptr %arrayidx3, align 298  ret void99}100 101define hidden void @bwd_int32_t(ptr noalias nocapture %v) local_unnamed_addr #0 {102; CHECK-LABEL: bwd_int32_t:103; CHECK:       @ %bb.0: @ %for.end104; CHECK-NEXT:    vldrw.u32 q0, [r0]105; CHECK-NEXT:    vstrw.32 q0, [r0, #-16]106; CHECK-NEXT:    bx lr107for.end:108  %0 = load <4 x i32>, ptr %v, align 4109  %arrayidx3 = getelementptr inbounds %struct.s_int32_t, ptr %v, i32 -1, i32 1, i32 0110  store <4 x i32> %0, ptr %arrayidx3, align 4111  ret void112}113 114define hidden void @bwd_float16_t(ptr noalias nocapture %v) local_unnamed_addr #0 {115; CHECK-LABEL: bwd_float16_t:116; CHECK:       @ %bb.0: @ %for.end117; CHECK-NEXT:    vldrh.u16 q0, [r0], #-16118; CHECK-NEXT:    vstrh.16 q0, [r0]119; CHECK-NEXT:    bx lr120for.end:121  %0 = load <8 x half>, ptr %v, align 2122  %arrayidx3 = getelementptr inbounds %struct.s_float16_t, ptr %v, i32 -1, i32 1, i32 0123  store <8 x half> %0, ptr %arrayidx3, align 2124  ret void125}126 127define hidden void @bwd_float32_t(ptr noalias nocapture %v) local_unnamed_addr #0 {128; CHECK-LABEL: bwd_float32_t:129; CHECK:       @ %bb.0: @ %for.end130; CHECK-NEXT:    vldrw.u32 q0, [r0]131; CHECK-NEXT:    vstrw.32 q0, [r0, #-16]132; CHECK-NEXT:    bx lr133for.end:134  %0 = load <4 x i32>, ptr %v, align 4135  %d = getelementptr inbounds %struct.s_float32_t, ptr %v, i32 -1, i32 1136  store <4 x i32> %0, ptr %d, align 4137  ret void138}139