1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=i686-- -mcpu=core2 | FileCheck %s 3 4define <4 x i16> @a(ptr %x1) nounwind { 5; CHECK-LABEL: a: 6; CHECK: # %bb.0: 7; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax 8; CHECK-NEXT: movl (%eax), %eax 9; CHECK-NEXT: shrl %eax 10; CHECK-NEXT: movzwl %ax, %eax 11; CHECK-NEXT: movd %eax, %xmm0 12; CHECK-NEXT: retl 13 14 %x2 = load i32, ptr %x1 15 %x3 = lshr i32 %x2, 1 16 %x = trunc i32 %x3 to i16 17 %r = insertelement <4 x i16> zeroinitializer, i16 %x, i32 0 18 ret <4 x i16> %r 19} 20 21define <8 x i16> @b(ptr %x1) nounwind { 22; CHECK-LABEL: b: 23; CHECK: # %bb.0: 24; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax 25; CHECK-NEXT: movl (%eax), %eax 26; CHECK-NEXT: shrl %eax 27; CHECK-NEXT: movzwl %ax, %eax 28; CHECK-NEXT: movd %eax, %xmm0 29; CHECK-NEXT: retl 30 31 %x2 = load i32, ptr %x1 32 %x3 = lshr i32 %x2, 1 33 %x = trunc i32 %x3 to i16 34 %r = insertelement <8 x i16> zeroinitializer, i16 %x, i32 0 35 ret <8 x i16> %r 36} 37 38define <8 x i8> @c(ptr %x1) nounwind { 39; CHECK-LABEL: c: 40; CHECK: # %bb.0: 41; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax 42; CHECK-NEXT: movl (%eax), %eax 43; CHECK-NEXT: shrl %eax 44; CHECK-NEXT: movzbl %al, %eax 45; CHECK-NEXT: movd %eax, %xmm0 46; CHECK-NEXT: retl 47 48 %x2 = load i32, ptr %x1 49 %x3 = lshr i32 %x2, 1 50 %x = trunc i32 %x3 to i8 51 %r = insertelement <8 x i8> zeroinitializer, i8 %x, i32 0 52 ret <8 x i8> %r 53} 54 55define <16 x i8> @d(ptr %x1) nounwind { 56; CHECK-LABEL: d: 57; CHECK: # %bb.0: 58; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax 59; CHECK-NEXT: movl (%eax), %eax 60; CHECK-NEXT: shrl %eax 61; CHECK-NEXT: movzbl %al, %eax 62; CHECK-NEXT: movd %eax, %xmm0 63; CHECK-NEXT: retl 64 65 %x2 = load i32, ptr %x1 66 %x3 = lshr i32 %x2, 1 67 %x = trunc i32 %x3 to i8 68 %r = insertelement <16 x i8> zeroinitializer, i8 %x, i32 0 69 ret <16 x i8> %r 70} 71 72