1; RUN: llc < %s -march=arm -mattr=+neon -pre-RA-sched=source | FileCheck %s 2 3define <8 x i8> @sdivi8(<8 x i8>* %A, <8 x i8>* %B) nounwind { 4;CHECK: vrecpe.f32 5;CHECK: vrecpe.f32 6;CHECK: vmovn.i32 7;CHECK: vmovn.i32 8;CHECK: vmovn.i16 9 %tmp1 = load <8 x i8>* %A 10 %tmp2 = load <8 x i8>* %B 11 %tmp3 = sdiv <8 x i8> %tmp1, %tmp2 12 ret <8 x i8> %tmp3 13} 14 15define <8 x i8> @udivi8(<8 x i8>* %A, <8 x i8>* %B) nounwind { 16;CHECK: vrecpe.f32 17;CHECK: vrecps.f32 18;CHECK: vrecpe.f32 19;CHECK: vrecps.f32 20;CHECK: vmovn.i32 21;CHECK: vmovn.i32 22;CHECK: vqmovun.s16 23 %tmp1 = load <8 x i8>* %A 24 %tmp2 = load <8 x i8>* %B 25 %tmp3 = udiv <8 x i8> %tmp1, %tmp2 26 ret <8 x i8> %tmp3 27} 28 29define <4 x i16> @sdivi16(<4 x i16>* %A, <4 x i16>* %B) nounwind { 30;CHECK: vrecpe.f32 31;CHECK: vrecps.f32 32;CHECK: vmovn.i32 33 %tmp1 = load <4 x i16>* %A 34 %tmp2 = load <4 x i16>* %B 35 %tmp3 = sdiv <4 x i16> %tmp1, %tmp2 36 ret <4 x i16> %tmp3 37} 38 39define <4 x i16> @udivi16(<4 x i16>* %A, <4 x i16>* %B) nounwind { 40;CHECK: vrecpe.f32 41;CHECK: vrecps.f32 42;CHECK: vrecps.f32 43;CHECK: vmovn.i32 44 %tmp1 = load <4 x i16>* %A 45 %tmp2 = load <4 x i16>* %B 46 %tmp3 = udiv <4 x i16> %tmp1, %tmp2 47 ret <4 x i16> %tmp3 48} 49