1*9a0e4156SSadaf Ebrahimi# How to update SystemZ tables. 2*9a0e4156SSadaf Ebrahimi 3*9a0e4156SSadaf Ebrahimi* Checkout LLVM. Patches are tested on commit `c13d5969^`, because 4*9a0e4156SSadaf Ebrahimi `c13d5969` changed the decode table format. 5*9a0e4156SSadaf Ebrahimi* Apply patches from the current directory. 6*9a0e4156SSadaf Ebrahimi* Run tablegen. 7*9a0e4156SSadaf Ebrahimi ``` 8*9a0e4156SSadaf Ebrahimi cd $LLVM 9*9a0e4156SSadaf Ebrahimi mkdir build 10*9a0e4156SSadaf Ebrahimi cd build 11*9a0e4156SSadaf Ebrahimi cmake -DCMAKE_CXX_FLAGS=-DCAPSTONE .. 12*9a0e4156SSadaf Ebrahimi make SystemZCommonTableGen -j$(getconf _NPROCESSORS_ONLN) 13*9a0e4156SSadaf Ebrahimi ``` 14*9a0e4156SSadaf Ebrahimi* Copy `.inc` files. 15*9a0e4156SSadaf Ebrahimi ``` 16*9a0e4156SSadaf Ebrahimi cp arch/SystemZ/SystemZGenInsnNameMaps.inc \ 17*9a0e4156SSadaf Ebrahimi arch/SystemZ/SystemZGenInsnNameMaps.inc.old 18*9a0e4156SSadaf Ebrahimi for inc in $(cd arch/SystemZ && ls *.inc); do 19*9a0e4156SSadaf Ebrahimi cp $LLVM/build/lib/Target/SystemZ/$inc arch/SystemZ/ 20*9a0e4156SSadaf Ebrahimi done 21*9a0e4156SSadaf Ebrahimi ``` 22*9a0e4156SSadaf Ebrahimi* Fixup `SystemZGenInsnNameMaps.inc`. 23*9a0e4156SSadaf Ebrahimi ``` 24*9a0e4156SSadaf Ebrahimi comm -1 -3 \ 25*9a0e4156SSadaf Ebrahimi <(grep SYSZ_INS_ <arch/SystemZ/SystemZGenInsnNameMaps.inc.old \ 26*9a0e4156SSadaf Ebrahimi | sort -u) \ 27*9a0e4156SSadaf Ebrahimi <(grep SYSZ_INS_ <arch/SystemZ/SystemZGenInsnNameMaps.inc \ 28*9a0e4156SSadaf Ebrahimi | sort -u) \ 29*9a0e4156SSadaf Ebrahimi >arch/SystemZ/SystemZGenInsnNameMaps.inc.new 30*9a0e4156SSadaf Ebrahimi cat arch/SystemZ/SystemZGenInsnNameMaps.inc.old \ 31*9a0e4156SSadaf Ebrahimi arch/SystemZ/SystemZGenInsnNameMaps.inc.new \ 32*9a0e4156SSadaf Ebrahimi >arch/SystemZ/SystemZGenInsnNameMaps.inc 33*9a0e4156SSadaf Ebrahimi ``` 34*9a0e4156SSadaf Ebrahimi* Add new groups, insns, registers and formats. 35*9a0e4156SSadaf Ebrahimi * `include/capstone/systemz.h` 36*9a0e4156SSadaf Ebrahimi * `enum sysz_insn`: 37*9a0e4156SSadaf Ebrahimi ``` 38*9a0e4156SSadaf Ebrahimi comm -1 -3 \ 39*9a0e4156SSadaf Ebrahimi <(perl -ne 'if (/(SYSZ_INS_.+),/) { print "\t$1,\n" }' \ 40*9a0e4156SSadaf Ebrahimi <include/capstone/systemz.h | sort -u) \ 41*9a0e4156SSadaf Ebrahimi <(perl -ne 'if (/(SYSZ_INS_.+),/) { print "\t$1,\n" }' \ 42*9a0e4156SSadaf Ebrahimi <arch/SystemZ/SystemZMappingInsn.inc | sort -u) 43*9a0e4156SSadaf Ebrahimi ``` 44*9a0e4156SSadaf Ebrahimi * `enum sysz_insn_group`: 45*9a0e4156SSadaf Ebrahimi ``` 46*9a0e4156SSadaf Ebrahimi perl -ne 'if (/(SYSZ_GRP_.*?),/) { print "\t$1,\n"; }' < \ 47*9a0e4156SSadaf Ebrahimi arch/SystemZ/SystemZMappingInsn.inc | sort -u 48*9a0e4156SSadaf Ebrahimi ``` 49*9a0e4156SSadaf Ebrahimi * `arch/SystemZ/SystemZDisassembler.c` 50*9a0e4156SSadaf Ebrahimi * `arch/SystemZ/SystemZInstPrinter.c` 51*9a0e4156SSadaf Ebrahimi * `arch/SystemZ/SystemZMCTargetDesc.c` 52*9a0e4156SSadaf Ebrahimi * `arch/SystemZ/SystemZMCTargetDesc.h` 53*9a0e4156SSadaf Ebrahimi * `arch/SystemZ/SystemZMapping.c` 54*9a0e4156SSadaf Ebrahimi * `enum group_name_maps`: 55*9a0e4156SSadaf Ebrahimi ``` 56*9a0e4156SSadaf Ebrahimi perl -ne 'if (/(SYSZ_GRP_(.*?)),/) { print "\t{ $1, \"" . lc($2) . "\" },\n"; }' \ 57*9a0e4156SSadaf Ebrahimi arch/SystemZ/SystemZMappingInsn.inc | sort -u 58*9a0e4156SSadaf Ebrahimi ``` 59