diff options
-rw-r--r-- | llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp | 8 | ||||
-rw-r--r-- | llvm/test/MC/ELF/relax-arith.s | 16 |
2 files changed, 24 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp index 4136943a117..133bd0e1772 100644 --- a/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp +++ b/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp @@ -220,6 +220,14 @@ static unsigned getRelaxedOpcodeArith(unsigned Op) { case X86::SUB64ri8: return X86::SUB64ri32; case X86::SUB64mi8: return X86::SUB64mi32; + // SBB + case X86::SBB16ri8: return X86::SBB16ri; + case X86::SBB16mi8: return X86::SBB16mi; + case X86::SBB32ri8: return X86::SBB32ri; + case X86::SBB32mi8: return X86::SBB32mi; + case X86::SBB64ri8: return X86::SBB64ri32; + case X86::SBB64mi8: return X86::SBB64mi32; + // CMP case X86::CMP16ri8: return X86::CMP16ri; case X86::CMP16mi8: return X86::CMP16mi; diff --git a/llvm/test/MC/ELF/relax-arith.s b/llvm/test/MC/ELF/relax-arith.s index 0e0d0a52d79..56b7c399c44 100644 --- a/llvm/test/MC/ELF/relax-arith.s +++ b/llvm/test/MC/ELF/relax-arith.s @@ -139,3 +139,19 @@ bar: adcl $foo, bar adc $foo, %rbx adcq $foo, bar + +// CHECK: Disassembly of section sbb: +// CHECK-NEXT: sbb: +// CHECK-NEXT: 0: 66 81 db 00 00 sbbw $0, %bx +// CHECK-NEXT: 5: 66 81 1c 25 00 00 00 00 00 00 sbbw $0, 0 +// CHECK-NEXT: f: 81 db 00 00 00 00 sbbl $0, %ebx +// CHECK-NEXT: 15: 81 1c 25 00 00 00 00 00 00 00 00 sbbl $0, 0 +// CHECK-NEXT: 20: 48 81 db 00 00 00 00 sbbq $0, %rbx +// CHECK-NEXT: 27: 48 81 1c 25 00 00 00 00 00 00 00 00 sbbq $0, 0 + .section sbb,"x" + sbb $foo, %bx + sbbw $foo, bar + sbb $foo, %ebx + sbbl $foo, bar + sbb $foo, %rbx + sbbq $foo, bar |