We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent a7b5a91 commit a6d1244Copy full SHA for a6d1244
4 files changed
cranelift/assembler-x64/meta/src/instructions/cmp.rs
@@ -37,6 +37,9 @@ pub fn list() -> Vec<Inst> {
37
inst("testw", fmt("MR", [r(rm16), r(r16)]).flags(W), rex([0x66, 0x85]), _64b | compat),
38
inst("testl", fmt("MR", [r(rm32), r(r32)]).flags(W), rex([0x85]), _64b | compat),
39
inst("testq", fmt("MR", [r(rm64), r(r64)]).flags(W), rex([0x85]).w(), _64b | compat),
40
+ // `AND` xmm and set flags.
41
+ inst("ptest", fmt("RM", [r(xmm1), r(align(xmm_m128))]).flags(W), rex([0x66, 0x0F, 0x38, 0x17]).r(), _64b | compat | sse41).alt(avx, "vptest_rm"),
42
+ inst("vptest", fmt("RM", [r(xmm1), r(xmm_m128)]).flags(W), vex(L128)._66()._0f38().op(0x17).r(), _64b | compat | avx),
43
// Compare floating point and set flags.
44
inst("ucomiss", fmt("A", [r(xmm1), r(xmm_m32)]).flags(W), rex([0x0F, 0x2E]).r(), _64b | compat | sse).alt(avx, "vucomiss_a"),
45
inst("ucomisd", fmt("A", [r(xmm1), r(xmm_m64)]).flags(W), rex([0x66, 0x0F, 0x2E]).r(), _64b | compat | sse2).alt(avx, "vucomisd_a"),
cranelift/codegen/src/isa/x64/inst.isle
@@ -463,7 +463,6 @@
463
(type SseOpcode extern
464
(enum Insertps
465
Pshufb
466
- Ptest
467
Shufps
468
))
469
@@ -2385,11 +2384,7 @@
2385
2384
2386
;; Helper for creating `ptest` instructions.
2387
(decl x64_ptest (Xmm XmmMem) ProducesFlags)
2388
-(rule (x64_ptest src1 src2)
2389
- (xmm_cmp_rm_r (SseOpcode.Ptest) src1 src2))
2390
-(rule 1 (x64_ptest src1 src2)
2391
- (if-let true (use_avx))
2392
- (xmm_cmp_rm_r_vex (AvxOpcode.Vptest) src1 src2))
+(rule (x64_ptest src1 src2) (x64_ptest_rm_or_avx src1 src2))
2393
2394
;; Helper for creating `cmove` instructions. Note that these instructions do not
2395
;; always result in a single emitted x86 instruction; e.g., XmmCmove uses jumps
cranelift/filetests/filetests/isa/x64/simd-logical-compile-avx.clif
@@ -11,7 +11,7 @@ block0(v0: i32x4):
11
; pushq %rbp
12
; movq %rsp, %rbp
13
; block0:
14
-; vptest %xmm0, %xmm0
+; vptest %xmm0, %xmm0
15
; setne %al
16
; movq %rbp, %rsp
17
; popq %rbp
@@ -41,7 +41,7 @@ block0(v0: i64x2):
; uninit %xmm2
; vpxor %xmm2, %xmm2, %xmm4
; vpcmpeqq %xmm4, %xmm0, %xmm6
-; vptest %xmm6, %xmm6
+; vptest %xmm6, %xmm6
; sete %al
46
47
cranelift/filetests/filetests/isa/x64/simd-logical-compile.clif
@@ -39,7 +39,7 @@ block0(v0: i32x4):
-; ptest %xmm0, %xmm0
+; ptest %xmm0, %xmm0
@@ -69,7 +69,7 @@ block0(v0: i64x2):
69
; uninit %xmm3
70
; pxor %xmm3, %xmm3
71
; pcmpeqq %xmm3, %xmm0
72
73
74
75
0 commit comments