Skip to content

Commit 7014615

Browse files
committed
For kicks, I though it would be fun to use the correct opcode.
llvm-svn: 40985
1 parent 0c8aa5c commit 7014615

File tree

1 file changed

+32
-31
lines changed

1 file changed

+32
-31
lines changed

llvm/lib/Target/X86/X86InstrSSE.td

Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2545,44 +2545,45 @@ defm PSIGND : SS3I_binop_rm_int_32<0x09, "psignd",
25452545
int_x86_ssse3_psign_d_128>;
25462546

25472547
let isTwoAddress = 1 in {
2548-
def PALIGN64rr : SS38I<0x0F, MRMSrcReg, (outs VR64:$dst),
2549-
(ins VR64:$src1, VR64:$src2, i16imm:$src3),
2550-
"palignr\t{$src2, $dst|$dst, $src2}",
2551-
[(set VR64:$dst,
2552-
(int_x86_ssse3_palign_r
2553-
VR64:$src1, VR64:$src2,
2554-
imm:$src3))]>;
2555-
def PALIGN64rm : SS38I<0x0F, MRMSrcReg, (outs VR64:$dst),
2556-
(ins VR64:$src1, i64mem:$src2, i16imm:$src3),
2557-
"palignr\t{$src2, $dst|$dst, $src2}",
2558-
[(set VR64:$dst,
2559-
(int_x86_ssse3_palign_r
2560-
VR64:$src1,
2561-
(bitconvert (memopv2i32 addr:$src2)),
2562-
imm:$src3))]>;
2563-
2564-
def PALIGN128rr : SS38I<0x0F, MRMSrcReg, (outs VR128:$dst),
2565-
(ins VR128:$src1, VR128:$src2, i32imm:$src3),
2566-
"palignr\t{$src2, $dst|$dst, $src2}",
2567-
[(set VR128:$dst,
2568-
(int_x86_ssse3_palign_r_128
2569-
VR128:$src1, VR128:$src2,
2570-
imm:$src3))]>, OpSize;
2571-
def PALIGN128rm : SS38I<0x0F, MRMSrcReg, (outs VR128:$dst),
2572-
(ins VR128:$src1, i128mem:$src2, i32imm:$src3),
2573-
"palignr\t{$src2, $dst|$dst, $src2}",
2574-
[(set VR128:$dst,
2575-
(int_x86_ssse3_palign_r_128
2576-
VR128:$src1,
2577-
(bitconvert (memopv4i32 addr:$src2)),
2578-
imm:$src3))]>, OpSize;
2548+
def PALIGNR64rr : SS3AI<0x0F, MRMSrcReg, (outs VR64:$dst),
2549+
(ins VR64:$src1, VR64:$src2, i16imm:$src3),
2550+
"palignr\t{$src2, $dst|$dst, $src2}",
2551+
[(set VR64:$dst,
2552+
(int_x86_ssse3_palign_r
2553+
VR64:$src1, VR64:$src2,
2554+
imm:$src3))]>;
2555+
def PALIGNR64rm : SS3AI<0x0F, MRMSrcReg, (outs VR64:$dst),
2556+
(ins VR64:$src1, i64mem:$src2, i16imm:$src3),
2557+
"palignr\t{$src2, $dst|$dst, $src2}",
2558+
[(set VR64:$dst,
2559+
(int_x86_ssse3_palign_r
2560+
VR64:$src1,
2561+
(bitconvert (memopv2i32 addr:$src2)),
2562+
imm:$src3))]>;
2563+
2564+
def PALIGNR128rr : SS3AI<0x0F, MRMSrcReg, (outs VR128:$dst),
2565+
(ins VR128:$src1, VR128:$src2, i32imm:$src3),
2566+
"palignr\t{$src2, $dst|$dst, $src2}",
2567+
[(set VR128:$dst,
2568+
(int_x86_ssse3_palign_r_128
2569+
VR128:$src1, VR128:$src2,
2570+
imm:$src3))]>, OpSize;
2571+
def PALIGNR128rm : SS3AI<0x0F, MRMSrcReg, (outs VR128:$dst),
2572+
(ins VR128:$src1, i128mem:$src2, i32imm:$src3),
2573+
"palignr\t{$src2, $dst|$dst, $src2}",
2574+
[(set VR128:$dst,
2575+
(int_x86_ssse3_palign_r_128
2576+
VR128:$src1,
2577+
(bitconvert (memopv4i32 addr:$src2)),
2578+
imm:$src3))]>, OpSize;
25792579
}
25802580

25812581
//===----------------------------------------------------------------------===//
25822582
// Non-Instruction Patterns
25832583
//===----------------------------------------------------------------------===//
25842584

25852585
// 128-bit vector undef's.
2586+
def : Pat<(v4f32 (undef)), (IMPLICIT_DEF_VR128)>, Requires<[HasSSE2]>;
25862587
def : Pat<(v2f64 (undef)), (IMPLICIT_DEF_VR128)>, Requires<[HasSSE2]>;
25872588
def : Pat<(v16i8 (undef)), (IMPLICIT_DEF_VR128)>, Requires<[HasSSE2]>;
25882589
def : Pat<(v8i16 (undef)), (IMPLICIT_DEF_VR128)>, Requires<[HasSSE2]>;

0 commit comments

Comments
 (0)