83 lines · plain
1; RUN: llc < %s -mattr=sse22; ModuleID = 'yyy.c'3target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"4target triple = "i686-apple-darwin8"5 6define <1 x i64> @a(<2 x i64> %__A) {7entry:8 %__A_addr = alloca <2 x i64> ; <ptr> [#uses=2]9 %retval = alloca <1 x i64>, align 8 ; <ptr> [#uses=3]10 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]11 store <2 x i64> %__A, ptr %__A_addr12 %tmp = load <2 x i64>, ptr %__A_addr, align 16 ; <<2 x i64>> [#uses=1]13 %tmp1 = bitcast <2 x i64> %tmp to <2 x i64> ; <<2 x i64>> [#uses=1]14 %tmp2 = extractelement <2 x i64> %tmp1, i32 0 ; <i64> [#uses=1]15 %tmp3 = bitcast i64 %tmp2 to <1 x i64> ; <<1 x i64>> [#uses=1]16 store <1 x i64> %tmp3, ptr %retval, align 817 %tmp4 = load <1 x i64>, ptr %retval, align 8 ; <<1 x i64>> [#uses=0]18 br label %return19 20return: ; preds = %entry21 %retval5 = load <1 x i64>, ptr %retval ; <<1 x i64>> [#uses=1]22 ret <1 x i64> %retval523}24 25define <1 x i64> @b(<2 x i64> %__A) {26entry:27 %__A_addr = alloca <2 x i64> ; <ptr> [#uses=2]28 %retval = alloca <1 x i64>, align 8 ; <ptr> [#uses=3]29 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]30 store <2 x i64> %__A, ptr %__A_addr31 %tmp = load <2 x i64>, ptr %__A_addr, align 16 ; <<2 x i64>> [#uses=1]32 %tmp1 = bitcast <2 x i64> %tmp to <2 x i64> ; <<2 x i64>> [#uses=1]33 %tmp2 = extractelement <2 x i64> %tmp1, i32 1 ; <i64> [#uses=1]34 %tmp3 = bitcast i64 %tmp2 to <1 x i64> ; <<1 x i64>> [#uses=1]35 store <1 x i64> %tmp3, ptr %retval, align 836 %tmp4 = load <1 x i64>, ptr %retval, align 8 ; <<1 x i64>> [#uses=0]37 br label %return38 39return: ; preds = %entry40 %retval5 = load <1 x i64>, ptr %retval ; <<1 x i64>> [#uses=1]41 ret <1 x i64> %retval542}43 44define i64 @c(<2 x i64> %__A) {45entry:46 %__A_addr = alloca <2 x i64> ; <ptr> [#uses=2]47 %retval = alloca i64, align 8 ; <ptr> [#uses=2]48 %tmp = alloca i64, align 8 ; <ptr> [#uses=2]49 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]50 store <2 x i64> %__A, ptr %__A_addr51 %tmp1 = load <2 x i64>, ptr %__A_addr, align 16 ; <<2 x i64>> [#uses=1]52 %tmp2 = bitcast <2 x i64> %tmp1 to <2 x i64> ; <<2 x i64>> [#uses=1]53 %tmp3 = extractelement <2 x i64> %tmp2, i32 0 ; <i64> [#uses=1]54 store i64 %tmp3, ptr %tmp, align 855 %tmp4 = load i64, ptr %tmp, align 8 ; <i64> [#uses=1]56 store i64 %tmp4, ptr %retval, align 857 br label %return58 59return: ; preds = %entry60 %retval5 = load i64, ptr %retval ; <i64> [#uses=1]61 ret i64 %retval562}63 64define i64 @d(<2 x i64> %__A) {65entry:66 %__A_addr = alloca <2 x i64> ; <ptr> [#uses=2]67 %retval = alloca i64, align 8 ; <ptr> [#uses=2]68 %tmp = alloca i64, align 8 ; <ptr> [#uses=2]69 %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]70 store <2 x i64> %__A, ptr %__A_addr71 %tmp1 = load <2 x i64>, ptr %__A_addr, align 16 ; <<2 x i64>> [#uses=1]72 %tmp2 = bitcast <2 x i64> %tmp1 to <2 x i64> ; <<2 x i64>> [#uses=1]73 %tmp3 = extractelement <2 x i64> %tmp2, i32 1 ; <i64> [#uses=1]74 store i64 %tmp3, ptr %tmp, align 875 %tmp4 = load i64, ptr %tmp, align 8 ; <i64> [#uses=1]76 store i64 %tmp4, ptr %retval, align 877 br label %return78 79return: ; preds = %entry80 %retval5 = load i64, ptr %retval ; <i64> [#uses=1]81 ret i64 %retval582}83