|
194 | 194 | (dst WritableGpr) |
195 | 195 | (imm u8)) |
196 | 196 |
|
197 | | - ;; XMM (scalar) unary op (from integer to float reg): vmovd, vmovq, |
198 | | - ;; vcvtsi2s{s,d} |
199 | | - (GprToXmmVex (op AvxOpcode) |
200 | | - (src GprMem) |
201 | | - (dst WritableXmm) |
202 | | - (src_size OperandSize)) |
203 | | - |
204 | | - ;; XMM (scalar) unary op (from xmm to integer reg): vmovd, vmovq, |
205 | | - ;; vcvtts{s,d}2si |
206 | | - (XmmToGprVex (op AvxOpcode) |
207 | | - (src Xmm) |
208 | | - (dst WritableGpr) |
209 | | - (dst_size OperandSize)) |
210 | | - |
211 | 197 | ;; Float comparisons/tests: cmp (b w l q) (reg addr imm) reg. |
212 | 198 | (XmmCmpRmRVex (op AvxOpcode) |
213 | 199 | (src1 Xmm) |
|
1144 | 1130 | Vpbroadcastw |
1145 | 1131 | Vpbroadcastd |
1146 | 1132 | Vbroadcastss |
1147 | | - Vmovd |
1148 | | - Vmovq |
1149 | | - Vmovmskps |
1150 | | - Vmovmskpd |
1151 | | - Vpmovmskb |
1152 | 1133 | Vsqrtss |
1153 | 1134 | Vsqrtsd |
1154 | 1135 | Vroundss |
|
1728 | 1709 | (_ Unit (emit (MInst.XmmToGprImmVex op src dst imm)))) |
1729 | 1710 | dst)) |
1730 | 1711 |
|
1731 | | -;; Helper for creating `MInst.GprToXmmVex` instructions. |
1732 | | -(decl gpr_to_xmm_vex (AvxOpcode GprMem OperandSize) Xmm) |
1733 | | -(rule (gpr_to_xmm_vex op src size) |
1734 | | - (let ((dst WritableXmm (temp_writable_xmm)) |
1735 | | - (_ Unit (emit (MInst.GprToXmmVex op src dst size)))) |
1736 | | - dst)) |
1737 | | - |
1738 | | -;; Helper for creating `MInst.XmmToGprVex` instructions. |
1739 | | -(decl xmm_to_gpr_vex (AvxOpcode Xmm OperandSize) Gpr) |
1740 | | -(rule (xmm_to_gpr_vex op src size) |
1741 | | - (let ((dst WritableGpr (temp_writable_gpr)) |
1742 | | - (_ Unit (emit (MInst.XmmToGprVex op src dst size)))) |
1743 | | - dst)) |
1744 | | - |
1745 | 1712 | ;; Helper for creating `xmm_min_max_seq` pseudo-instructions. |
1746 | 1713 | (decl xmm_min_max_seq (Type bool Xmm Xmm) Xmm) |
1747 | 1714 | (rule (xmm_min_max_seq ty is_min lhs rhs) |
|
2126 | 2093 | (rule (x64_movd_to_gpr from) (x64_movd_b from)) |
2127 | 2094 | (rule 1 (x64_movd_to_gpr from) |
2128 | 2095 | (if-let true (use_avx)) |
2129 | | - (xmm_to_gpr_vex (AvxOpcode.Vmovd) from (OperandSize.Size32))) |
| 2096 | + (x64_vmovd_b from)) |
2130 | 2097 |
|
2131 | 2098 | ;; Helper for creating `movd` instructions. |
2132 | 2099 | (decl x64_movd_to_xmm (GprMem) Xmm) |
2133 | 2100 | (rule (x64_movd_to_xmm from) (x64_movd_a from)) |
2134 | 2101 | (rule 1 (x64_movd_to_xmm from) |
2135 | 2102 | (if-let true (use_avx)) |
2136 | | - (gpr_to_xmm_vex (AvxOpcode.Vmovd) from (OperandSize.Size32))) |
| 2103 | + (x64_vmovd_a from)) |
2137 | 2104 |
|
2138 | 2105 | ;; Helper for creating `movq` instructions. |
2139 | 2106 | (decl x64_movq_to_xmm (GprMem) Xmm) |
2140 | 2107 | (rule (x64_movq_to_xmm src) (x64_movq_a src)) |
2141 | 2108 | (rule 1 (x64_movq_to_xmm from) |
2142 | 2109 | (if-let true (use_avx)) |
2143 | | - (gpr_to_xmm_vex (AvxOpcode.Vmovq) from (OperandSize.Size64))) |
| 2110 | + (x64_vmovq_a from)) |
2144 | 2111 |
|
2145 | 2112 | ;; Helper for creating `movq` instructions. |
2146 | 2113 | (decl x64_movq_to_gpr (Xmm) Gpr) |
2147 | 2114 | (rule (x64_movq_to_gpr src) (x64_movq_b src)) |
2148 | 2115 | (rule 1 (x64_movq_to_gpr from) |
2149 | 2116 | (if-let true (use_avx)) |
2150 | | - (xmm_to_gpr_vex (AvxOpcode.Vmovq) from (OperandSize.Size64))) |
| 2117 | + (x64_vmovq_b from)) |
2151 | 2118 |
|
2152 | 2119 | (decl x64_movdqu_load (XmmMem) Xmm) |
2153 | 2120 | (rule (x64_movdqu_load from) (x64_movdqu_a from)) |
|
3986 | 3953 | (rule (x64_pmovmskb src) (x64_pmovmskb_rm src)) |
3987 | 3954 | (rule 1 (x64_pmovmskb src) |
3988 | 3955 | (if-let true (use_avx)) |
3989 | | - (xmm_to_gpr_vex (AvxOpcode.Vpmovmskb) src (OperandSize.Size32))) |
| 3956 | + (x64_vpmovmskb_rm src)) |
3990 | 3957 |
|
3991 | 3958 | ;; Helper for creating `movmskps` instructions. |
3992 | 3959 | (decl x64_movmskps (Xmm) Gpr) |
3993 | 3960 | (rule (x64_movmskps src) (x64_movmskps_rm src)) |
3994 | 3961 | (rule 1 (x64_movmskps src) |
3995 | 3962 | (if-let true (use_avx)) |
3996 | | - (xmm_to_gpr_vex (AvxOpcode.Vmovmskps) src (OperandSize.Size32))) |
| 3963 | + (x64_vmovmskps_rm src)) |
3997 | 3964 |
|
3998 | 3965 | ;; Helper for creating `movmskpd` instructions. |
3999 | 3966 | (decl x64_movmskpd (Xmm) Gpr) |
4000 | 3967 | (rule (x64_movmskpd src) (x64_movmskpd_rm src)) |
4001 | 3968 | (rule 1 (x64_movmskpd src) |
4002 | 3969 | (if-let true (use_avx)) |
4003 | | - (xmm_to_gpr_vex (AvxOpcode.Vmovmskpd) src (OperandSize.Size32))) |
| 3970 | + (x64_vmovmskpd_rm src)) |
4004 | 3971 |
|
4005 | 3972 | ;; Helper for creating `not` instructions. |
4006 | 3973 | (decl x64_not (Type Gpr) Gpr) |
|
0 commit comments