Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/AArch64/arm64-neon-copy.ll @ 100:7d135dc70f03 LLVM 3.9
LLVM 3.9
author | Miyagi Mitsuki <e135756@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 26 Jan 2016 22:53:40 +0900 |
parents | afa8332a0e37 |
children | 1172e4bd9c6f |
comparison
equal
deleted
inserted
replaced
96:6418606d0ead | 100:7d135dc70f03 |
---|---|
318 %tmp4 = sext i16 %tmp3 to i32 | 318 %tmp4 = sext i16 %tmp3 to i32 |
319 %tmp5 = add i32 %tmp4, %tmp4 | 319 %tmp5 = add i32 %tmp4, %tmp4 |
320 ret i32 %tmp5 | 320 ret i32 %tmp5 |
321 } | 321 } |
322 | 322 |
323 define i32 @smovx16b(<16 x i8> %tmp1) { | 323 define i64 @smovx16b(<16 x i8> %tmp1) { |
324 ; CHECK-LABEL: smovx16b: | 324 ; CHECK-LABEL: smovx16b: |
325 ; CHECK: smov {{[xw][0-9]+}}, {{v[0-9]+}}.b[8] | 325 ; CHECK: smov {{x[0-9]+}}, {{v[0-9]+}}.b[8] |
326 %tmp3 = extractelement <16 x i8> %tmp1, i32 8 | 326 %tmp3 = extractelement <16 x i8> %tmp1, i32 8 |
327 %tmp4 = sext i8 %tmp3 to i32 | 327 %tmp4 = sext i8 %tmp3 to i64 |
328 %tmp5 = add i32 %tmp4, %tmp4 | 328 ret i64 %tmp4 |
329 ret i32 %tmp5 | 329 } |
330 } | 330 |
331 | 331 define i64 @smovx8h(<8 x i16> %tmp1) { |
332 define i32 @smovx8h(<8 x i16> %tmp1) { | |
333 ; CHECK-LABEL: smovx8h: | 332 ; CHECK-LABEL: smovx8h: |
334 ; CHECK: smov {{[xw][0-9]+}}, {{v[0-9]+}}.h[2] | 333 ; CHECK: smov {{x[0-9]+}}, {{v[0-9]+}}.h[2] |
335 %tmp3 = extractelement <8 x i16> %tmp1, i32 2 | 334 %tmp3 = extractelement <8 x i16> %tmp1, i32 2 |
336 %tmp4 = sext i16 %tmp3 to i32 | 335 %tmp4 = sext i16 %tmp3 to i64 |
337 ret i32 %tmp4 | 336 ret i64 %tmp4 |
338 } | 337 } |
339 | 338 |
340 define i64 @smovx4s(<4 x i32> %tmp1) { | 339 define i64 @smovx4s(<4 x i32> %tmp1) { |
341 ; CHECK-LABEL: smovx4s: | 340 ; CHECK-LABEL: smovx4s: |
342 ; CHECK: smov {{x[0-9]+}}, {{v[0-9]+}}.s[2] | 341 ; CHECK: smov {{x[0-9]+}}, {{v[0-9]+}}.s[2] |
899 %vecext11 = extractelement <16 x i8> %x, i32 6 | 898 %vecext11 = extractelement <16 x i8> %x, i32 6 |
900 %vecinit12 = insertelement <8 x i8> %vecinit10, i8 %vecext11, i32 6 | 899 %vecinit12 = insertelement <8 x i8> %vecinit10, i8 %vecext11, i32 6 |
901 %vecext13 = extractelement <16 x i8> %x, i32 7 | 900 %vecext13 = extractelement <16 x i8> %x, i32 7 |
902 %vecinit14 = insertelement <8 x i8> %vecinit12, i8 %vecext13, i32 7 | 901 %vecinit14 = insertelement <8 x i8> %vecinit12, i8 %vecext13, i32 7 |
903 ret <8 x i8> %vecinit14 | 902 ret <8 x i8> %vecinit14 |
903 } | |
904 | |
905 ; CHECK-LABEL: test_extracts_inserts_varidx_extract: | |
906 ; CHECK: str q0 | |
907 ; CHECK: add x[[PTR:[0-9]+]], {{.*}}, w0, sxtw #1 | |
908 ; CHECK-DAG: ld1 { v[[R:[0-9]+]].h }[0], [x[[PTR]]] | |
909 ; CHECK-DAG: ins v[[R]].h[1], v0.h[1] | |
910 ; CHECK-DAG: ins v[[R]].h[2], v0.h[2] | |
911 ; CHECK-DAG: ins v[[R]].h[3], v0.h[3] | |
912 define <4 x i16> @test_extracts_inserts_varidx_extract(<8 x i16> %x, i32 %idx) { | |
913 %tmp = extractelement <8 x i16> %x, i32 %idx | |
914 %tmp2 = insertelement <4 x i16> undef, i16 %tmp, i32 0 | |
915 %tmp3 = extractelement <8 x i16> %x, i32 1 | |
916 %tmp4 = insertelement <4 x i16> %tmp2, i16 %tmp3, i32 1 | |
917 %tmp5 = extractelement <8 x i16> %x, i32 2 | |
918 %tmp6 = insertelement <4 x i16> %tmp4, i16 %tmp5, i32 2 | |
919 %tmp7 = extractelement <8 x i16> %x, i32 3 | |
920 %tmp8 = insertelement <4 x i16> %tmp6, i16 %tmp7, i32 3 | |
921 ret <4 x i16> %tmp8 | |
922 } | |
923 | |
924 ; CHECK-LABEL: test_extracts_inserts_varidx_insert: | |
925 ; CHECK: str h0, [{{.*}}, w0, sxtw #1] | |
926 ; CHECK-DAG: ldr d[[R:[0-9]+]] | |
927 ; CHECK-DAG: ins v[[R]].h[1], v0.h[1] | |
928 ; CHECK-DAG: ins v[[R]].h[2], v0.h[2] | |
929 ; CHECK-DAG: ins v[[R]].h[3], v0.h[3] | |
930 define <4 x i16> @test_extracts_inserts_varidx_insert(<8 x i16> %x, i32 %idx) { | |
931 %tmp = extractelement <8 x i16> %x, i32 0 | |
932 %tmp2 = insertelement <4 x i16> undef, i16 %tmp, i32 %idx | |
933 %tmp3 = extractelement <8 x i16> %x, i32 1 | |
934 %tmp4 = insertelement <4 x i16> %tmp2, i16 %tmp3, i32 1 | |
935 %tmp5 = extractelement <8 x i16> %x, i32 2 | |
936 %tmp6 = insertelement <4 x i16> %tmp4, i16 %tmp5, i32 2 | |
937 %tmp7 = extractelement <8 x i16> %x, i32 3 | |
938 %tmp8 = insertelement <4 x i16> %tmp6, i16 %tmp7, i32 3 | |
939 ret <4 x i16> %tmp8 | |
904 } | 940 } |
905 | 941 |
906 define <4 x i16> @test_dup_v2i32_v4i16(<2 x i32> %a) { | 942 define <4 x i16> @test_dup_v2i32_v4i16(<2 x i32> %a) { |
907 ; CHECK-LABEL: test_dup_v2i32_v4i16: | 943 ; CHECK-LABEL: test_dup_v2i32_v4i16: |
908 ; CHECK: dup v0.4h, v0.h[2] | 944 ; CHECK: dup v0.4h, v0.h[2] |