mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-29 07:53:33 +00:00
pcmpeqd and friends are Commutable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106886 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ee278437e6
commit
ca5b8553ea
@ -2060,9 +2060,9 @@ let Constraints = "$src1 = $dst", ExeDomain = SSEPackedInt in {
|
||||
}
|
||||
|
||||
// SSE2 Integer comparison
|
||||
defm PCMPEQB : PDI_binop_rm_int<0x74, "pcmpeqb", int_x86_sse2_pcmpeq_b>;
|
||||
defm PCMPEQW : PDI_binop_rm_int<0x75, "pcmpeqw", int_x86_sse2_pcmpeq_w>;
|
||||
defm PCMPEQD : PDI_binop_rm_int<0x76, "pcmpeqd", int_x86_sse2_pcmpeq_d>;
|
||||
defm PCMPEQB : PDI_binop_rm_int<0x74, "pcmpeqb", int_x86_sse2_pcmpeq_b, 1>;
|
||||
defm PCMPEQW : PDI_binop_rm_int<0x75, "pcmpeqw", int_x86_sse2_pcmpeq_w, 1>;
|
||||
defm PCMPEQD : PDI_binop_rm_int<0x76, "pcmpeqd", int_x86_sse2_pcmpeq_d, 1>;
|
||||
defm PCMPGTB : PDI_binop_rm_int<0x64, "pcmpgtb", int_x86_sse2_pcmpgt_b>;
|
||||
defm PCMPGTW : PDI_binop_rm_int<0x65, "pcmpgtw", int_x86_sse2_pcmpgt_w>;
|
||||
defm PCMPGTD : PDI_binop_rm_int<0x66, "pcmpgtd", int_x86_sse2_pcmpgt_d>;
|
||||
|
20
test/CodeGen/X86/sse-commute.ll
Normal file
20
test/CodeGen/X86/sse-commute.ll
Normal file
@ -0,0 +1,20 @@
|
||||
; RUN: llc -march=x86-64 < %s | FileCheck %s
|
||||
|
||||
; Commute the comparison to avoid a move.
|
||||
; PR7500.
|
||||
|
||||
; CHECK: a:
|
||||
; CHECK-NOT: mov
|
||||
; CHECK: pcmpeqd
|
||||
define <2 x double> @a(<2 x double>, <2 x double>) nounwind readnone {
|
||||
entry:
|
||||
%tmp6 = bitcast <2 x double> %0 to <4 x i32> ; <<4 x i32>> [#uses=2]
|
||||
%tmp4 = bitcast <2 x double> %1 to <4 x i32> ; <<4 x i32>> [#uses=1]
|
||||
%cmp = icmp eq <4 x i32> %tmp6, %tmp4 ; <<4 x i1>> [#uses=1]
|
||||
%sext = sext <4 x i1> %cmp to <4 x i32> ; <<4 x i32>> [#uses=1]
|
||||
%and = and <4 x i32> %tmp6, %sext ; <<4 x i32>> [#uses=1]
|
||||
%tmp8 = bitcast <4 x i32> %and to <2 x double> ; <<2 x double>> [#uses=1]
|
||||
ret <2 x double> %tmp8
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user