brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · 01615ce Raw
107 lines · plain
1; RUN: llc -mtriple armv7-linux -mattr=+neon %s -o - | FileCheck %s --check-prefix=LE2; RUN: llc -mtriple armebv7-linux -mattr=+neon %s -o - | FileCheck %s --check-prefix=BE3 4; The key is the last vrev64 should be vrev64.16 instead of vrev64.325 6define void @sdiv_shl(ptr %x, ptr %y) nounwind {7; LE-LABEL: sdiv_shl:8; LE:       @ %bb.0: @ %entry9; LE-NEXT:    adr r2, .LCPI0_010; LE-NEXT:    vld1.64 {d18, d19}, [r1]11; LE-NEXT:    adr r1, .LCPI0_112; LE-NEXT:    vld1.64 {d16, d17}, [r2:128]13; LE-NEXT:    vshr.s16 q10, q9, #1514; LE-NEXT:    vneg.s16 q8, q815; LE-NEXT:    vld1.64 {d22, d23}, [r1:128]16; LE-NEXT:    adr r1, .LCPI0_217; LE-NEXT:    vshl.u16 q8, q10, q818; LE-NEXT:    vneg.s16 q10, q1119; LE-NEXT:    vadd.i16 q8, q9, q820; LE-NEXT:    vshl.s16 q8, q8, q1021; LE-NEXT:    vld1.64 {d20, d21}, [r1:128]22; LE-NEXT:    vbit q8, q9, q1023; LE-NEXT:    vst1.64 {d16, d17}, [r0]24; LE:         .LCPI0_0:25; LE-NEXT:    .short 16 @ 0x1026; LE-NEXT:    .short 14 @ 0xe27; LE-NEXT:    .short 15 @ 0xf28; LE-NEXT:    .short 13 @ 0xd29; LE-NEXT:    .short 12 @ 0xc30; LE-NEXT:    .short 10 @ 0xa31; LE-NEXT:    .short 11 @ 0xb32; LE-NEXT:    .short 9 @ 0x933; LE-NEXT:  .LCPI0_1:34; LE-NEXT:    .short 0 @ 0x035; LE-NEXT:    .short 2 @ 0x236; LE-NEXT:    .short 1 @ 0x137; LE-NEXT:    .short 3 @ 0x338; LE-NEXT:    .short 4 @ 0x439; LE-NEXT:    .short 6 @ 0x640; LE-NEXT:    .short 5 @ 0x541; LE-NEXT:    .short 7 @ 0x742; LE-NEXT:  .LCPI0_2:43; LE-NEXT:    .short 65535 @ 0xffff44; LE-NEXT:    .short 0 @ 0x045; LE-NEXT:    .short 0 @ 0x046; LE-NEXT:    .short 0 @ 0x047; LE-NEXT:    .short 0 @ 0x048; LE-NEXT:    .short 0 @ 0x049; LE-NEXT:    .short 0 @ 0x050; LE-NEXT:    .short 0 @ 0x051;52; BE-LABEL: sdiv_shl:53; BE:       @ %bb.0: @ %entry54; BE-NEXT:    adr r2, .LCPI0_055; BE-NEXT:    vld1.64 {d18, d19}, [r1]56; BE-NEXT:    adr r1, .LCPI0_157; BE-NEXT:    vld1.64 {d16, d17}, [r2:128]58; BE-NEXT:    vrev64.16 q8, q859; BE-NEXT:    vrev64.16 q9, q960; BE-NEXT:    vneg.s16 q8, q861; BE-NEXT:    vld1.64 {d20, d21}, [r1:128]62; BE-NEXT:    adr r1, .LCPI0_263; BE-NEXT:    vshr.s16 q11, q9, #1564; BE-NEXT:    vrev64.16 q10, q1065; BE-NEXT:    vshl.u16 q8, q11, q866; BE-NEXT:    vld1.64 {d22, d23}, [r1:128]67; BE-NEXT:    vneg.s16 q10, q1068; BE-NEXT:    vrev64.16 q11, q1169; BE-NEXT:    vadd.i16 q8, q9, q870; BE-NEXT:    vshl.s16 q8, q8, q1071; BE-NEXT:    vbit q8, q9, q1172; BE-NEXT:    vrev64.16 q8, q873; BE-NEXT:    vst1.64 {d16, d17}, [r0]74; BE:         .LCPI0_0:75; BE-NEXT:    .short 16 @ 0x1076; BE-NEXT:    .short 14 @ 0xe77; BE-NEXT:    .short 15 @ 0xf78; BE-NEXT:    .short 13 @ 0xd79; BE-NEXT:    .short 12 @ 0xc80; BE-NEXT:    .short 10 @ 0xa81; BE-NEXT:    .short 11 @ 0xb82; BE-NEXT:    .short 9 @ 0x983; BE-NEXT:  .LCPI0_1:84; BE-NEXT:    .short 0 @ 0x085; BE-NEXT:    .short 2 @ 0x286; BE-NEXT:    .short 1 @ 0x187; BE-NEXT:    .short 3 @ 0x388; BE-NEXT:    .short 4 @ 0x489; BE-NEXT:    .short 6 @ 0x690; BE-NEXT:    .short 5 @ 0x591; BE-NEXT:    .short 7 @ 0x792; BE-NEXT:  .LCPI0_2:93; BE-NEXT:    .short 65535 @ 0xffff94; BE-NEXT:    .short 0 @ 0x095; BE-NEXT:    .short 0 @ 0x096; BE-NEXT:    .short 0 @ 0x097; BE-NEXT:    .short 0 @ 0x098; BE-NEXT:    .short 0 @ 0x099; BE-NEXT:    .short 0 @ 0x0100; BE-NEXT:    .short 0 @ 0x0101entry:102  %0 = load <8 x i16>, ptr %y, align 8103  %div = sdiv <8 x i16> %0, <i16 1, i16 4, i16 2, i16 8, i16 16, i16 64, i16 32, i16 128>104  store <8 x i16> %div, ptr %x, align 8105  ret void106}107