mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-12 07:40:58 +00:00
Add AVX SSE4.1 Extract Integer instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107740 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c66e150b2c
commit
4fd32db6a6
@ -4450,6 +4450,9 @@ multiclass SS41I_extract8<bits<8> opc, string OpcodeStr> {
|
||||
// (store (i8 (trunc (X86pextrb (v16i8 VR128:$src1), imm:$src2))), addr:$dst)
|
||||
}
|
||||
|
||||
let isAsmParserOnly = 1, Predicates = [HasAVX, HasSSE41] in
|
||||
defm VPEXTRB : SS41I_extract8<0x14, "vpextrb">, VEX;
|
||||
|
||||
defm PEXTRB : SS41I_extract8<0x14, "pextrb">;
|
||||
|
||||
|
||||
@ -4465,6 +4468,9 @@ multiclass SS41I_extract16<bits<8> opc, string OpcodeStr> {
|
||||
// (store (i16 (trunc (X86pextrw (v16i8 VR128:$src1), imm:$src2))), addr:$dst)
|
||||
}
|
||||
|
||||
let isAsmParserOnly = 1, Predicates = [HasAVX, HasSSE41] in
|
||||
defm VPEXTRW : SS41I_extract16<0x15, "vpextrw">, VEX;
|
||||
|
||||
defm PEXTRW : SS41I_extract16<0x15, "pextrw">;
|
||||
|
||||
|
||||
@ -4484,8 +4490,13 @@ multiclass SS41I_extract32<bits<8> opc, string OpcodeStr> {
|
||||
addr:$dst)]>, OpSize;
|
||||
}
|
||||
|
||||
let isAsmParserOnly = 1, Predicates = [HasAVX, HasSSE41] in
|
||||
defm VPEXTRD : SS41I_extract32<0x16, "vpextrd">, VEX;
|
||||
|
||||
defm PEXTRD : SS41I_extract32<0x16, "pextrd">;
|
||||
|
||||
let isAsmParserOnly = 1, Predicates = [HasAVX, HasSSE41] in
|
||||
defm VPEXTRQ : SS41I_extract64<0x16, "vpextrq">, VEX, VEX_W;
|
||||
|
||||
/// SS41I_extractf32 - SSE 4.1 extract 32 bits fp value to int reg or memory
|
||||
/// destination
|
||||
|
@ -12046,3 +12046,27 @@
|
||||
// CHECK: encoding: [0xc4,0xe2,0x79,0x34,0x10]
|
||||
vpmovzxwq (%eax), %xmm2
|
||||
|
||||
// CHECK: vpextrw $7, %xmm2, %eax
|
||||
// CHECK: encoding: [0xc5,0xf9,0xc5,0xc2,0x07]
|
||||
vpextrw $7, %xmm2, %eax
|
||||
|
||||
// CHECK: vpextrw $7, %xmm2, (%eax)
|
||||
// CHECK: encoding: [0xc4,0xe3,0x79,0x15,0x10,0x07]
|
||||
vpextrw $7, %xmm2, (%eax)
|
||||
|
||||
// CHECK: vpextrd $7, %xmm2, %eax
|
||||
// CHECK: encoding: [0xc4,0xe3,0x79,0x16,0xd0,0x07]
|
||||
vpextrd $7, %xmm2, %eax
|
||||
|
||||
// CHECK: vpextrd $7, %xmm2, (%eax)
|
||||
// CHECK: encoding: [0xc4,0xe3,0x79,0x16,0x10,0x07]
|
||||
vpextrd $7, %xmm2, (%eax)
|
||||
|
||||
// CHECK: vpextrb $7, %xmm2, %eax
|
||||
// CHECK: encoding: [0xc4,0xe3,0x79,0x14,0xd0,0x07]
|
||||
vpextrb $7, %xmm2, %eax
|
||||
|
||||
// CHECK: vpextrb $7, %xmm2, (%eax)
|
||||
// CHECK: encoding: [0xc4,0xe3,0x79,0x14,0x10,0x07]
|
||||
vpextrb $7, %xmm2, (%eax)
|
||||
|
||||
|
@ -2094,3 +2094,35 @@ pshufb CPI1_0(%rip), %xmm1
|
||||
// CHECK: encoding: [0xc4,0x62,0x79,0x34,0x20]
|
||||
vpmovzxwq (%rax), %xmm12
|
||||
|
||||
// CHECK: vpextrw $7, %xmm12, %eax
|
||||
// CHECK: encoding: [0xc4,0xc1,0x79,0xc5,0xc4,0x07]
|
||||
vpextrw $7, %xmm12, %eax
|
||||
|
||||
// CHECK: vpextrw $7, %xmm12, (%rax)
|
||||
// CHECK: encoding: [0xc4,0x63,0x79,0x15,0x20,0x07]
|
||||
vpextrw $7, %xmm12, (%rax)
|
||||
|
||||
// CHECK: vpextrd $7, %xmm12, %eax
|
||||
// CHECK: encoding: [0xc4,0x63,0x79,0x16,0xe0,0x07]
|
||||
vpextrd $7, %xmm12, %eax
|
||||
|
||||
// CHECK: vpextrd $7, %xmm12, (%rax)
|
||||
// CHECK: encoding: [0xc4,0x63,0x79,0x16,0x20,0x07]
|
||||
vpextrd $7, %xmm12, (%rax)
|
||||
|
||||
// CHECK: vpextrb $7, %xmm12, %eax
|
||||
// CHECK: encoding: [0xc4,0x63,0x79,0x14,0xe0,0x07]
|
||||
vpextrb $7, %xmm12, %eax
|
||||
|
||||
// CHECK: vpextrb $7, %xmm12, (%rax)
|
||||
// CHECK: encoding: [0xc4,0x63,0x79,0x14,0x20,0x07]
|
||||
vpextrb $7, %xmm12, (%rax)
|
||||
|
||||
// CHECK: vpextrq $7, %xmm12, %rcx
|
||||
// CHECK: encoding: [0xc4,0x63,0xf9,0x16,0xe1,0x07]
|
||||
vpextrq $7, %xmm12, %rcx
|
||||
|
||||
// CHECK: vpextrq $7, %xmm12, (%rcx)
|
||||
// CHECK: encoding: [0xc4,0x63,0xf9,0x16,0x21,0x07]
|
||||
vpextrq $7, %xmm12, (%rcx)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user