Mercurial > hg > CbC > CbC_llvm
comparison test/CodeGen/X86/avx2-arith.ll @ 95:afa8332a0e37 LLVM3.8
LLVM 3.8
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 Oct 2015 17:48:58 +0900 |
parents | 95c75e76d11b |
children | 1172e4bd9c6f |
comparison
equal
deleted
inserted
replaced
84:f3e34b893a5f | 95:afa8332a0e37 |
---|---|
56 | 56 |
57 ; CHECK: vpmullw %ymm | 57 ; CHECK: vpmullw %ymm |
58 define <16 x i16> @test_vpmullw(<16 x i16> %i, <16 x i16> %j) nounwind readnone { | 58 define <16 x i16> @test_vpmullw(<16 x i16> %i, <16 x i16> %j) nounwind readnone { |
59 %x = mul <16 x i16> %i, %j | 59 %x = mul <16 x i16> %i, %j |
60 ret <16 x i16> %x | 60 ret <16 x i16> %x |
61 } | |
62 | |
63 ; CHECK: mul-v16i8 | |
64 ; CHECK: # BB#0: | |
65 ; CHECK-NEXT: vpmovsxbw %xmm1, %ymm1 | |
66 ; CHECK-NEXT: vpmovsxbw %xmm0, %ymm0 | |
67 ; CHECK-NEXT: vpmullw %ymm1, %ymm0, %ymm0 | |
68 ; CHECK-NEXT: vextracti128 $1, %ymm0, %xmm1 | |
69 ; CHECK-NEXT: vmovdqa {{.*#+}} xmm2 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> | |
70 ; CHECK-NEXT: vpshufb %xmm2, %xmm1, %xmm1 | |
71 ; CHECK-NEXT: vpshufb %xmm2, %xmm0, %xmm0 | |
72 ; CHECK-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] | |
73 ; CHECK-NEXT: vzeroupper | |
74 ; CHECK-NEXT: retq | |
75 define <16 x i8> @mul-v16i8(<16 x i8> %i, <16 x i8> %j) nounwind readnone { | |
76 %x = mul <16 x i8> %i, %j | |
77 ret <16 x i8> %x | |
78 } | |
79 | |
80 ; CHECK: mul-v32i8 | |
81 ; CHECK: # BB#0: | |
82 ; CHECK-NEXT: vextracti128 $1, %ymm1, %xmm2 | |
83 ; CHECK-NEXT: vpmovsxbw %xmm2, %ymm2 | |
84 ; CHECK-NEXT: vextracti128 $1, %ymm0, %xmm3 | |
85 ; CHECK-NEXT: vpmovsxbw %xmm3, %ymm3 | |
86 ; CHECK-NEXT: vpmullw %ymm2, %ymm3, %ymm2 | |
87 ; CHECK-NEXT: vextracti128 $1, %ymm2, %xmm3 | |
88 ; CHECK-NEXT: vmovdqa {{.*#+}} xmm4 = <0,2,4,6,8,10,12,14,u,u,u,u,u,u,u,u> | |
89 ; CHECK-NEXT: vpshufb %xmm4, %xmm3, %xmm3 | |
90 ; CHECK-NEXT: vpshufb %xmm4, %xmm2, %xmm2 | |
91 ; CHECK-NEXT: vpunpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0] | |
92 ; CHECK-NEXT: vpmovsxbw %xmm1, %ymm1 | |
93 ; CHECK-NEXT: vpmovsxbw %xmm0, %ymm0 | |
94 ; CHECK-NEXT: vpmullw %ymm1, %ymm0, %ymm0 | |
95 ; CHECK-NEXT: vextracti128 $1, %ymm0, %xmm1 | |
96 ; CHECK-NEXT: vpshufb %xmm4, %xmm1, %xmm1 | |
97 ; CHECK-NEXT: vpshufb %xmm4, %xmm0, %xmm0 | |
98 ; CHECK-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0] | |
99 ; CHECK-NEXT: vinserti128 $1, %xmm2, %ymm0, %ymm0 | |
100 ; CHECK-NEXT: retq | |
101 define <32 x i8> @mul-v32i8(<32 x i8> %i, <32 x i8> %j) nounwind readnone { | |
102 %x = mul <32 x i8> %i, %j | |
103 ret <32 x i8> %x | |
61 } | 104 } |
62 | 105 |
63 ; CHECK: mul-v4i64 | 106 ; CHECK: mul-v4i64 |
64 ; CHECK: vpmuludq %ymm | 107 ; CHECK: vpmuludq %ymm |
65 ; CHECK-NEXT: vpsrlq $32, %ymm | 108 ; CHECK-NEXT: vpsrlq $32, %ymm |