Allow tcc to understand a setob,... opcodes as alias to seto,...

PS: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20101122/112576.html
This is fix PR8686 for llvm: accepting a 'b' suffix at the end
of all the setcc instructions.
This commit is contained in:
seyko 2015-01-06 22:59:19 +03:00
parent c334b59142
commit e260b03686
5 changed files with 39 additions and 34 deletions

View File

@ -219,6 +219,7 @@ ALT(DEF_ASM_OP1(ljmp, 0xff, 5, 0, OPT_EA))
ALT(DEF_ASM_OP1(int, 0xcd, 0, 0, OPT_IM8)) ALT(DEF_ASM_OP1(int, 0xcd, 0, 0, OPT_IM8))
ALT(DEF_ASM_OP1(seto, 0x0f90, 0, OPC_MODRM | OPC_TEST, OPT_REG8 | OPT_EA)) ALT(DEF_ASM_OP1(seto, 0x0f90, 0, OPC_MODRM | OPC_TEST, OPT_REG8 | OPT_EA))
ALT(DEF_ASM_OP1(setob, 0x0f90, 0, OPC_MODRM | OPC_TEST, OPT_REG8 | OPT_EA))
DEF_ASM_OP2(enter, 0xc8, 0, 0, OPT_IM16, OPT_IM8) DEF_ASM_OP2(enter, 0xc8, 0, 0, OPT_IM16, OPT_IM8)
DEF_ASM_OP0(leave, 0xc9) DEF_ASM_OP0(leave, 0xc9)
DEF_ASM_OP0(ret, 0xc3) DEF_ASM_OP0(ret, 0xc3)

View File

@ -172,10 +172,11 @@
DEF_ASM(lcall) DEF_ASM(lcall)
DEF_ASM(ljmp) DEF_ASM(ljmp)
DEF_ASMTEST(j) DEF_ASMTEST(j,)
DEF_ASMTEST(set) DEF_ASMTEST(set,)
DEF_ASMTEST(cmov) DEF_ASMTEST(set,b)
DEF_ASMTEST(cmov,)
DEF_WLX(bsf) DEF_WLX(bsf)
DEF_WLX(bsr) DEF_WLX(bsr)

62
tcc.h
View File

@ -933,37 +933,37 @@ struct TCCState {
DEF(TOK_ASM_ ## f ## x ## p, "f" #x "p") \ DEF(TOK_ASM_ ## f ## x ## p, "f" #x "p") \
DEF_FP1(x) DEF_FP1(x)
#define DEF_ASMTEST(x) \ #define DEF_ASMTEST(x,suffix) \
DEF_ASM(x ## o) \ DEF_ASM(x ## o ## suffix) \
DEF_ASM(x ## no) \ DEF_ASM(x ## no ## suffix) \
DEF_ASM(x ## b) \ DEF_ASM(x ## b ## suffix) \
DEF_ASM(x ## c) \ DEF_ASM(x ## c ## suffix) \
DEF_ASM(x ## nae) \ DEF_ASM(x ## nae ## suffix) \
DEF_ASM(x ## nb) \ DEF_ASM(x ## nb ## suffix) \
DEF_ASM(x ## nc) \ DEF_ASM(x ## nc ## suffix) \
DEF_ASM(x ## ae) \ DEF_ASM(x ## ae ## suffix) \
DEF_ASM(x ## e) \ DEF_ASM(x ## e ## suffix) \
DEF_ASM(x ## z) \ DEF_ASM(x ## z ## suffix) \
DEF_ASM(x ## ne) \ DEF_ASM(x ## ne ## suffix) \
DEF_ASM(x ## nz) \ DEF_ASM(x ## nz ## suffix) \
DEF_ASM(x ## be) \ DEF_ASM(x ## be ## suffix) \
DEF_ASM(x ## na) \ DEF_ASM(x ## na ## suffix) \
DEF_ASM(x ## nbe) \ DEF_ASM(x ## nbe ## suffix) \
DEF_ASM(x ## a) \ DEF_ASM(x ## a ## suffix) \
DEF_ASM(x ## s) \ DEF_ASM(x ## s ## suffix) \
DEF_ASM(x ## ns) \ DEF_ASM(x ## ns ## suffix) \
DEF_ASM(x ## p) \ DEF_ASM(x ## p ## suffix) \
DEF_ASM(x ## pe) \ DEF_ASM(x ## pe ## suffix) \
DEF_ASM(x ## np) \ DEF_ASM(x ## np ## suffix) \
DEF_ASM(x ## po) \ DEF_ASM(x ## po ## suffix) \
DEF_ASM(x ## l) \ DEF_ASM(x ## l ## suffix) \
DEF_ASM(x ## nge) \ DEF_ASM(x ## nge ## suffix) \
DEF_ASM(x ## nl) \ DEF_ASM(x ## nl ## suffix) \
DEF_ASM(x ## ge) \ DEF_ASM(x ## ge ## suffix) \
DEF_ASM(x ## le) \ DEF_ASM(x ## le ## suffix) \
DEF_ASM(x ## ng) \ DEF_ASM(x ## ng ## suffix) \
DEF_ASM(x ## nle) \ DEF_ASM(x ## nle ## suffix) \
DEF_ASM(x ## g) DEF_ASM(x ## g ## suffix)
#endif /* defined TCC_TARGET_I386 || defined TCC_TARGET_X86_64 */ #endif /* defined TCC_TARGET_I386 || defined TCC_TARGET_X86_64 */

View File

@ -244,6 +244,8 @@ L3:
seto %al seto %al
setc %al
setcb %al
setnp 0x1000 setnp 0x1000
setl 0xaaaa setl 0xaaaa
setg %dl setg %dl

View File

@ -204,6 +204,7 @@ ALT(DEF_ASM_OP1(ljmp, 0xff, 5, 0, OPT_EA))
ALT(DEF_ASM_OP1(int, 0xcd, 0, 0, OPT_IM8)) ALT(DEF_ASM_OP1(int, 0xcd, 0, 0, OPT_IM8))
ALT(DEF_ASM_OP1(seto, 0x0f90, 0, OPC_MODRM | OPC_TEST, OPT_REG8 | OPT_EA)) ALT(DEF_ASM_OP1(seto, 0x0f90, 0, OPC_MODRM | OPC_TEST, OPT_REG8 | OPT_EA))
ALT(DEF_ASM_OP1(setob, 0x0f90, 0, OPC_MODRM | OPC_TEST, OPT_REG8 | OPT_EA))
DEF_ASM_OP2(enter, 0xc8, 0, 0, OPT_IM16, OPT_IM8) DEF_ASM_OP2(enter, 0xc8, 0, 0, OPT_IM16, OPT_IM8)
DEF_ASM_OP0(leave, 0xc9) DEF_ASM_OP0(leave, 0xc9)
DEF_ASM_OP0(ret, 0xc3) DEF_ASM_OP0(ret, 0xc3)