- 論壇徽章:
- 0
|
GCC在將GIMPLE轉(zhuǎn)換成RTL時,需要使用SPN完成RTL的構(gòu)造。
關(guān)于SPN的描述,在gccinternal中給出了一些,但是,沒有說明,到底GCC中都有哪些SPN?
通過一段時間的摸索,我總結(jié)了一下,主要從gcc/optabs.h文件入手,得到了如下的表:
數(shù)組聲明 描述的SPN
struct optab optab_table[OTI_MAX] ${操作}${機(jī)器模式}${操作數(shù)數(shù)目}例如:addsi3,addhi3等。
extern struct convert_optab convert_optab_table[COI_MAX]; ${轉(zhuǎn)換操作}${源機(jī)器模式}${目的機(jī)器模式}${操作數(shù)數(shù)目}例如:lceildfsi2
extern enum insn_code reload_in_optab[NUM_MACHINE_MODES]; reload_in${機(jī)器模式}
extern enum insn_code reload_out_optab[NUM_MACHINE_MODES]; reload_out${機(jī)器模式}
extern enum insn_code setcc_gen_code[NUM_RTX_CODE]; s ${RTX_CODE} 例如:sne, seq, slt
extern enum insn_code movcc_gen_code[NUM_MACHINE_MODES]; mov${機(jī)器模式}cc 例如:movsicc,movqicc
extern enum insn_code vcond_gen_code[NUM_MACHINE_MODES]; vcond${機(jī)器模式}
extern enum insn_code vcondu_gen_code[NUM_MACHINE_MODES]; vcondu${機(jī)器模式}
extern enum insn_code movmem_optab[NUM_MACHINE_MODES]; movmem${機(jī)器模式}
extern enum insn_code setmem_optab[NUM_MACHINE_MODES]; setmem${機(jī)器模式}
extern enum insn_code cmpstr_optab[NUM_MACHINE_MODES]; cmpstr${機(jī)器模式}
extern enum insn_code cmpstrn_optab[NUM_MACHINE_MODES]; cmpstrn${機(jī)器模式}
extern enum insn_code cmpmem_optab[NUM_MACHINE_MODES]; cmpmem${機(jī)器模式}
extern enum insn_code sync_add_optab[NUM_MACHINE_MODES]; sync_add${機(jī)器模式}
extern enum insn_code sync_sub_optab[NUM_MACHINE_MODES]; sync_sub${機(jī)器模式}
extern enum insn_code sync_ior_optab[NUM_MACHINE_MODES]; sync_ior${機(jī)器模式}
extern enum insn_code sync_and_optab[NUM_MACHINE_MODES]; sync_and${機(jī)器模式}
extern enum insn_code sync_xor_optab[NUM_MACHINE_MODES]; sync_xor${機(jī)器模式}
extern enum insn_code sync_nand_optab[NUM_MACHINE_MODES]; sync_nand${機(jī)器模式}
extern enum insn_code sync_old_add_optab[NUM_MACHINE_MODES]; sync_old_add${機(jī)器模式}
extern enum insn_code sync_old_sub_optab[NUM_MACHINE_MODES]; sync_old_sub${機(jī)器模式}
extern enum insn_code sync_old_ior_optab[NUM_MACHINE_MODES]; sync_old_ior${機(jī)器模式}
extern enum insn_code sync_old_and_optab[NUM_MACHINE_MODES]; sync_old_and${機(jī)器模式}
extern enum insn_code sync_old_xor_optab[NUM_MACHINE_MODES]; sync_old_xor${機(jī)器模式}
extern enum insn_code sync_old_nand_optab[NUM_MACHINE_MODES]; sync_old_nand${機(jī)器模式}
extern enum insn_code sync_new_add_optab[NUM_MACHINE_MODES]; sync_new_add${機(jī)器模式}
extern enum insn_code sync_new_sub_optab[NUM_MACHINE_MODES]; sync_new_sub${機(jī)器模式}
extern enum insn_code sync_new_ior_optab[NUM_MACHINE_MODES]; sync_new_ior${機(jī)器模式}
extern enum insn_code sync_new_and_optab[NUM_MACHINE_MODES]; sync_new_and${機(jī)器模式}
extern enum insn_code sync_new_xor_optab[NUM_MACHINE_MODES]; sync_new_xor${機(jī)器模式}
extern enum insn_code sync_new_nand_optab[NUM_MACHINE_MODES]; sync_new_nand${機(jī)器模式}
extern enum insn_code sync_compare_and_swap[NUM_MACHINE_MODES]; sync_compare_and_swap${機(jī)器模式}
extern enum insn_code sync_compare_and_swap_cc[NUM_MACHINE_MODES]; sync_compare_and_swap_cc${機(jī)器模式}
extern enum insn_code sync_lock_test_and_set[NUM_MACHINE_MODES]; sync_lock_test_and_set${機(jī)器模式}
extern enum insn_code sync_lock_release[NUM_MACHINE_MODES] sync_lock_release${機(jī)器模式}
請大神指點(diǎn):
1.該思路是否正確?
2.GCC是否有文檔描述SPN到底都包含哪些名稱?
不勝感激!
|
|