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