@@ -247,55 +247,55 @@ def BSWAP64r : RI<0xC8, AddRegFrm, (outs GR64:$dst), (ins GR64:$src),
247247} // Constraints = "$src = $dst", SchedRW
248248
249249// Bit scan instructions.
250- let Defs = [EFLAGS] in {
251- def BSF16rr : I<0xBC, MRMSrcReg, (outs GR16:$dst), (ins GR16:$src),
250+ let Defs = [EFLAGS], Constraints = "$fallback = $dst" in {
251+ def BSF16rr : I<0xBC, MRMSrcReg, (outs GR16:$dst), (ins GR16:$fallback, GR16:$ src),
252252 "bsf{w}\t{$src, $dst|$dst, $src}",
253- [(set GR16:$dst, EFLAGS, (X86bsf GR16:$src))]>,
253+ [(set GR16:$dst, EFLAGS, (X86bsf GR16:$fallback, GR16:$ src))]>,
254254 TB, OpSize16, Sched<[WriteBSF]>;
255- def BSF16rm : I<0xBC, MRMSrcMem, (outs GR16:$dst), (ins i16mem:$src),
255+ def BSF16rm : I<0xBC, MRMSrcMem, (outs GR16:$dst), (ins GR16:$fallback, i16mem:$src),
256256 "bsf{w}\t{$src, $dst|$dst, $src}",
257- [(set GR16:$dst, EFLAGS, (X86bsf (loadi16 addr:$src)))]>,
257+ [(set GR16:$dst, EFLAGS, (X86bsf GR16:$fallback, (loadi16 addr:$src)))]>,
258258 TB, OpSize16, Sched<[WriteBSFLd]>;
259- def BSF32rr : I<0xBC, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src),
259+ def BSF32rr : I<0xBC, MRMSrcReg, (outs GR32:$dst), (ins GR32:$fallback, GR32:$ src),
260260 "bsf{l}\t{$src, $dst|$dst, $src}",
261- [(set GR32:$dst, EFLAGS, (X86bsf GR32:$src))]>,
261+ [(set GR32:$dst, EFLAGS, (X86bsf GR32:$fallback, GR32:$ src))]>,
262262 TB, OpSize32, Sched<[WriteBSF]>;
263- def BSF32rm : I<0xBC, MRMSrcMem, (outs GR32:$dst), (ins i32mem:$src),
263+ def BSF32rm : I<0xBC, MRMSrcMem, (outs GR32:$dst), (ins GR32:$fallback, i32mem:$src),
264264 "bsf{l}\t{$src, $dst|$dst, $src}",
265- [(set GR32:$dst, EFLAGS, (X86bsf (loadi32 addr:$src)))]>,
265+ [(set GR32:$dst, EFLAGS, (X86bsf GR32:$fallback, (loadi32 addr:$src)))]>,
266266 TB, OpSize32, Sched<[WriteBSFLd]>;
267- def BSF64rr : RI<0xBC, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src),
267+ def BSF64rr : RI<0xBC, MRMSrcReg, (outs GR64:$dst), (ins GR64:$fallback, GR64:$ src),
268268 "bsf{q}\t{$src, $dst|$dst, $src}",
269- [(set GR64:$dst, EFLAGS, (X86bsf GR64:$src))]>,
269+ [(set GR64:$dst, EFLAGS, (X86bsf GR64:$fallback, GR64:$ src))]>,
270270 TB, Sched<[WriteBSF]>;
271- def BSF64rm : RI<0xBC, MRMSrcMem, (outs GR64:$dst), (ins i64mem:$src),
271+ def BSF64rm : RI<0xBC, MRMSrcMem, (outs GR64:$dst), (ins GR64:$fallback, i64mem:$src),
272272 "bsf{q}\t{$src, $dst|$dst, $src}",
273- [(set GR64:$dst, EFLAGS, (X86bsf (loadi64 addr:$src)))]>,
273+ [(set GR64:$dst, EFLAGS, (X86bsf GR64:$fallback, (loadi64 addr:$src)))]>,
274274 TB, Sched<[WriteBSFLd]>;
275275
276- def BSR16rr : I<0xBD, MRMSrcReg, (outs GR16:$dst), (ins GR16:$src),
276+ def BSR16rr : I<0xBD, MRMSrcReg, (outs GR16:$dst), (ins GR16:$fallback, GR16:$ src),
277277 "bsr{w}\t{$src, $dst|$dst, $src}",
278- [(set GR16:$dst, EFLAGS, (X86bsr GR16:$src))]>,
278+ [(set GR16:$dst, EFLAGS, (X86bsr GR16:$fallback, GR16:$ src))]>,
279279 TB, OpSize16, Sched<[WriteBSR]>;
280- def BSR16rm : I<0xBD, MRMSrcMem, (outs GR16:$dst), (ins i16mem:$src),
280+ def BSR16rm : I<0xBD, MRMSrcMem, (outs GR16:$dst), (ins GR16:$fallback, i16mem:$src),
281281 "bsr{w}\t{$src, $dst|$dst, $src}",
282- [(set GR16:$dst, EFLAGS, (X86bsr (loadi16 addr:$src)))]>,
282+ [(set GR16:$dst, EFLAGS, (X86bsr GR16:$fallback, (loadi16 addr:$src)))]>,
283283 TB, OpSize16, Sched<[WriteBSRLd]>;
284- def BSR32rr : I<0xBD, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src),
284+ def BSR32rr : I<0xBD, MRMSrcReg, (outs GR32:$dst), (ins GR32:$fallback, GR32:$ src),
285285 "bsr{l}\t{$src, $dst|$dst, $src}",
286- [(set GR32:$dst, EFLAGS, (X86bsr GR32:$src))]>,
286+ [(set GR32:$dst, EFLAGS, (X86bsr GR32:$fallback, GR32:$ src))]>,
287287 TB, OpSize32, Sched<[WriteBSR]>;
288- def BSR32rm : I<0xBD, MRMSrcMem, (outs GR32:$dst), (ins i32mem:$src),
288+ def BSR32rm : I<0xBD, MRMSrcMem, (outs GR32:$dst), (ins GR32:$fallback, i32mem:$src),
289289 "bsr{l}\t{$src, $dst|$dst, $src}",
290- [(set GR32:$dst, EFLAGS, (X86bsr (loadi32 addr:$src)))]>,
290+ [(set GR32:$dst, EFLAGS, (X86bsr GR32:$fallback, (loadi32 addr:$src)))]>,
291291 TB, OpSize32, Sched<[WriteBSRLd]>;
292- def BSR64rr : RI<0xBD, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src),
292+ def BSR64rr : RI<0xBD, MRMSrcReg, (outs GR64:$dst), (ins GR64:$fallback, GR64:$ src),
293293 "bsr{q}\t{$src, $dst|$dst, $src}",
294- [(set GR64:$dst, EFLAGS, (X86bsr GR64:$src))]>,
294+ [(set GR64:$dst, EFLAGS, (X86bsr GR64:$fallback, GR64:$ src))]>,
295295 TB, Sched<[WriteBSR]>;
296- def BSR64rm : RI<0xBD, MRMSrcMem, (outs GR64:$dst), (ins i64mem:$src),
296+ def BSR64rm : RI<0xBD, MRMSrcMem, (outs GR64:$dst), (ins GR64:$fallback, i64mem:$src),
297297 "bsr{q}\t{$src, $dst|$dst, $src}",
298- [(set GR64:$dst, EFLAGS, (X86bsr (loadi64 addr:$src)))]>,
298+ [(set GR64:$dst, EFLAGS, (X86bsr GR64:$fallback, (loadi64 addr:$src)))]>,
299299 TB, Sched<[WriteBSRLd]>;
300300} // Defs = [EFLAGS]
301301
0 commit comments