99 lines · plain
1; Test that vectors are scalarized/lowered correctly2; (with both legalization methods).3; RUN: llc -mtriple=i686-- < %s4; RUN: llc -mtriple=i686-- < %s5 6; A simple test to check copyToParts and copyFromParts.7 8define <4 x i64> @test_param_0(<4 x i64> %A, <2 x i32> %B, <4 x i8> %C) {9 ret <4 x i64> %A10}11 12define <2 x i32> @test_param_1(<4 x i64> %A, <2 x i32> %B, <4 x i8> %C) {13 ret <2 x i32> %B14}15 16define <4 x i8> @test_param_2(<4 x i64> %A, <2 x i32> %B, <4 x i8> %C) {17 ret <4 x i8> %C18}19 20; Simple tests to check arithmetic and vector operations on types which need to21; be legalized (no loads/stores to/from memory here).22 23define <4 x i64> @test_arith_0(<4 x i64> %A, <2 x i32> %B, <4 x i8> %C) {24 %K = add <4 x i64> %A, <i64 0, i64 1, i64 3, i64 9>25 ret <4 x i64> %K26}27 28define <2 x i32> @test_arith_1(<4 x i64> %A, <2 x i32> %B, <4 x i8> %C) {29 %K = add <2 x i32> %B, <i32 0, i32 1>30 ret <2 x i32> %K31}32 33define <4 x i8> @test_arith_2(<4 x i64> %A, <2 x i32> %B, <4 x i8> %C) {34 %K = add <4 x i8> %C, <i8 0, i8 1, i8 3, i8 9>35 ret <4 x i8> %K36}37 38define i8 @test_arith_3(<4 x i64> %A, <2 x i32> %B, <4 x i8> %C) {39 %K = add <4 x i8> %C, <i8 0, i8 1, i8 3, i8 9>40 %Y = extractelement <4 x i8> %K, i32 141 ret i8 %Y42}43 44define <4 x i8> @test_arith_4(<4 x i64> %A, <2 x i32> %B, <4 x i8> %C) {45 %Y = insertelement <4 x i8> %C, i8 1, i32 046 ret <4 x i8> %Y47}48 49define <4 x i32> @test_arith_5(<4 x i64> %A, <2 x i32> %B, <4 x i32> %C) {50 %Y = insertelement <4 x i32> %C, i32 1, i32 051 ret <4 x i32> %Y52}53 54define <4 x i32> @test_arith_6(<4 x i64> %A, <2 x i32> %B, <4 x i32> %C) {55 %F = extractelement <2 x i32> %B, i32 156 %Y = insertelement <4 x i32> %C, i32 %F, i32 057 ret <4 x i32> %Y58}59 60define <4 x i64> @test_arith_7(<4 x i64> %A, <2 x i32> %B, <4 x i32> %C) {61 %F = extractelement <2 x i32> %B, i32 162 %W = zext i32 %F to i6463 %Y = insertelement <4 x i64> %A, i64 %W, i32 064 ret <4 x i64> %Y65}66 67define i64 @test_arith_8(<4 x i64> %A, <2 x i32> %B, <4 x i32> %C) {68 %F = extractelement <2 x i32> %B, i32 169 %W = zext i32 %F to i6470 %T = add i64 %W , 1171 ret i64 %T72}73 74define <4 x i64> @test_arith_9(<4 x i64> %A, <2 x i32> %B, <4 x i16> %C) {75 %T = add <4 x i16> %C, %C76 %F0 = extractelement <4 x i16> %T, i32 077 %F1 = extractelement <4 x i16> %T, i32 178 %W0 = zext i16 %F0 to i6479 %W1 = zext i16 %F1 to i6480 %Y0 = insertelement <4 x i64> %A, i64 %W0, i32 081 %Y1 = insertelement <4 x i64> %Y0, i64 %W1, i32 282 ret <4 x i64> %Y183}84 85define <4 x i16> @test_arith_10(<4 x i64> %A, <2 x i32> %B, <4 x i32> %C) {86 %F = bitcast <2 x i32> %B to <4 x i16>87 %T = add <4 x i16> %F , <i16 0, i16 1, i16 2, i16 3>88 ret <4 x i16> %T89}90 91 92; Simple tests to check saving/loading from memory93define <4 x i16> @test_mem_0(<4 x i64> %A, <2 x i32> %B, <4 x i32> %C) {94 %F = bitcast <2 x i32> %B to <4 x i16>95 %T = add <4 x i16> %F , <i16 0, i16 1, i16 2, i16 3>96 ret <4 x i16> %T97}98 99