brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.9 KiB · 7397271 Raw
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