cranelift-codegen: port bnot lowering to ISLE in x64

This commit is contained in:
Nick Fitzgerald
2021-12-08 16:54:02 -08:00
committed by Andrew Brown
parent b5e5366550
commit da73952021
5 changed files with 254 additions and 181 deletions

View File

@@ -66,6 +66,9 @@
(src RegMem)
(dst WritableReg)
(src_size OperandSize))
(Not (size OperandSize)
(src Reg)
(dst WritableReg))
))
(type OperandSize extern
@@ -1216,3 +1219,11 @@
(decl insertps (Reg RegMem u8) Reg)
(rule (insertps src1 src2 lane)
(xmm_rm_r_imm (SseOpcode.Insertps) src1 src2 lane (OperandSize.Size32)))
;; Helper for creating `not` instructions.
(decl not (Type Reg) Reg)
(rule (not ty src)
(let ((dst WritableReg (temp_writable_reg ty))
(size OperandSize (operand_size_of_type ty))
(_ Unit (emit (MInst.Not size src dst))))
(writable_reg_to_reg dst)))