Add AVX SSE2 packed integer shuffle instructions

llvm-svn: 107245
This commit is contained in:
Bruno Cardoso Lopes 2010-06-30 03:47:56 +00:00
parent 5364655e02
commit ec0115c9b7
3 changed files with 62 additions and 0 deletions

View File

@ -2672,6 +2672,20 @@ def mi : Ii8<0x70, MRMSrcMem,
}
} // ExeDomain = SSEPackedInt
let isAsmParserOnly = 1, Predicates = [HasAVX, HasSSE2] in {
let AddedComplexity = 5 in
defm VPSHUFD : sse2_pshuffle<"vpshufd", v4i32, pshufd, bc_v4i32>, OpSize,
VEX;
// SSE2 with ImmT == Imm8 and XS prefix.
defm VPSHUFHW : sse2_pshuffle<"vpshufhw", v8i16, pshufhw, bc_v8i16>, XS,
VEX;
// SSE2 with ImmT == Imm8 and XD prefix.
defm VPSHUFLW : sse2_pshuffle<"vpshuflw", v8i16, pshuflw, bc_v8i16>, XD,
VEX;
}
let Predicates = [HasSSE2] in {
let AddedComplexity = 5 in
defm PSHUFD : sse2_pshuffle<"pshufd", v4i32, pshufd, bc_v4i32>, TB, OpSize;

View File

@ -11394,3 +11394,27 @@
// CHECK: encoding: [0xc5,0xe9,0x67,0x18]
vpackuswb (%eax), %xmm2, %xmm3
// CHECK: vpshufd $4, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xf9,0x70,0xda,0x04]
vpshufd $4, %xmm2, %xmm3
// CHECK: vpshufd $4, (%eax), %xmm3
// CHECK: encoding: [0xc5,0xf9,0x70,0x18,0x04]
vpshufd $4, (%eax), %xmm3
// CHECK: vpshufhw $4, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xfa,0x70,0xda,0x04]
vpshufhw $4, %xmm2, %xmm3
// CHECK: vpshufhw $4, (%eax), %xmm3
// CHECK: encoding: [0xc5,0xfa,0x70,0x18,0x04]
vpshufhw $4, (%eax), %xmm3
// CHECK: vpshuflw $4, %xmm2, %xmm3
// CHECK: encoding: [0xc5,0xfb,0x70,0xda,0x04]
vpshuflw $4, %xmm2, %xmm3
// CHECK: vpshuflw $4, (%eax), %xmm3
// CHECK: encoding: [0xc5,0xfb,0x70,0x18,0x04]
vpshuflw $4, (%eax), %xmm3

View File

@ -1434,3 +1434,27 @@ pshufb CPI1_0(%rip), %xmm1
// CHECK: encoding: [0xc5,0x19,0x67,0x28]
vpackuswb (%rax), %xmm12, %xmm13
// CHECK: vpshufd $4, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x79,0x70,0xec,0x04]
vpshufd $4, %xmm12, %xmm13
// CHECK: vpshufd $4, (%rax), %xmm13
// CHECK: encoding: [0xc5,0x79,0x70,0x28,0x04]
vpshufd $4, (%rax), %xmm13
// CHECK: vpshufhw $4, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x7a,0x70,0xec,0x04]
vpshufhw $4, %xmm12, %xmm13
// CHECK: vpshufhw $4, (%rax), %xmm13
// CHECK: encoding: [0xc5,0x7a,0x70,0x28,0x04]
vpshufhw $4, (%rax), %xmm13
// CHECK: vpshuflw $4, %xmm12, %xmm13
// CHECK: encoding: [0xc4,0x41,0x7b,0x70,0xec,0x04]
vpshuflw $4, %xmm12, %xmm13
// CHECK: vpshuflw $4, (%rax), %xmm13
// CHECK: encoding: [0xc5,0x7b,0x70,0x28,0x04]
vpshuflw $4, (%rax), %xmm13