PowerPC及びAltiVecマニュアルにある全命令に関して、現在の記述状態は以下の通りです。 各セクション毎に以下の番号により整理しました。 (1)記述対象外であるため除外する命令リスト (2)別名があるために除外する命令のリスト (3)一部が除外されている命令のリスト (4)現在の記述では問題があると思われる命令のリスト (5)同一パターンを持つ命令のリスト なお、チェックプログラムCheckTdfを実行しエラーとなった命令で、当方では解決できないものがありましたので、そのような命令も(4)の中で記述してあります。 ----------------------------------------------------------------------------- ======= PowerPC ======= 4.2 PowerPC UISA Instruction 4.2.1 Integer Instructions 4.2.1.1 Integer Arithmetic Instructions (4)問題があると思われる命令のリスト (Table 4-1)    divw divw. divwo divwo. divwu divwu. divwuo divwuo.    例外処理記述不可.IFTHENELSE内部に複数副作用を記述する必要があるため. 4.2.1.2 Integer Compare Instructions . 4.2.1.3 Integer Logical Instructions 4.2.1.4 Integer Rotate and Shift Instructions 4.2.1.4.1 Integer Rotate Instructions 4.2.1.4.2 Integer Shift Instructions 4.2.2 Floating-Point Instructions 4.2.2.1 Floating-Point Arithmetic Instructions (1)除外命令リスト (Table 4-6)     fsqrt fres CR(FX、FEX、VX、OXなど)の変化を伴う命令('.'拡張子を持つ命令) 4.2.2.2 Floating-Point Multiply-Add Instructions (1)除外命令リスト   (Table 4-7) CR(FX、FEX、VX、OXなど)の変化を伴う命令('.'拡張子を持つ命令) 4.2.2.3 Floating-Point Rounding and Conversion Instructions (1)除外命令リスト   (Table 4-8) CR(FX、FEX、VX、OXなど)の変化を伴う命令('.'拡張子を持つ命令) (4)問題があると思われる命令のリスト   (Table 4-8) fctiw fctiwz  浮動小数点数⇔整数変換命令 浮動小数点レジスタに整数表現をそのままの形式で置く必要がある。 (チェックプログラムCheckTdfの実行ではエラーになる) 4.2.2.4 Floating-Point Compare Instructions (5)同一パターンを持つ命令のリスト   (Table 4-10)     fcmpuとfcmpo NaNを示すステータスVXSNAN、VXVCが未サポートのため、同一パターンになってしまう。 4.2.2.5 Floating-Point Status and Control Register Instructions (1)除外命令リスト   (Table 4-11) mffs mffs. mcrfs mtfsfi mtfsfi. mtfsf mtfsf. mtfsb0 mtfsb0. mtfsb1 mtfsb1. 4.2.2.6 Floating-Point Move Instructions (1)除外命令リスト   (Table 4-12) CR(FX、FEX、VX、OXなど)の変化を伴う命令('.'拡張子を持つ命令) 4.2.3 Load and Store Instructions 4.2.3.1 Integer Load and Store Address Generation 4.2.3.1.1 Register Indirect with Immediate Index Addressing for Integer Loads and Stores 4.2.3.1.2 Register Indirect with Index Addressing for Integer Loads and Stores 4.2.3.1.3 Register Indirect Addressing for Integer Loads and Stores 4.2.3.2 Integer Load Instructions 4.2.3.3 Integer Store Instructions 4.2.3.4 Integer Load and Store with Byte-Reverse Instructions 4.2.3.5 Integer Load and Store Multiple Instructions (1)除外命令リスト   (Table 4-16) lmw stmw 4.2.3.6 Integer Load and Store String Instructions (1)除外命令リスト   (Table 4-17) lswi lswx stswi stswx 4.2.3.7 Floating-Point Load and Store Address Generation 4.2.3.7.1 Register Indirect with Immediate Index Addressing for Floating-Point Loads and Stores. 4.2.3.7.2 Register Indirect with Index Addressing for Floating-Point Loads and Stores. 4.2.3.8 Floating-Point Load Instructions . 4.2.3.9 Floating-Point Store Instructions (4)問題があると思われる命令のリスト   (Table 4-19) stfiwx 浮動小数点数⇔整数変換命令 浮動小数点レジスタに整数表現をそのままの形式で置く必要がある。 (チェックプログラムCheckTdfの実行ではエラーとなる) 4.2.4 Branch and Flow Control Instructions 4.2.4.1 Branch Instruction Address Calculation 4.2.4.1.1 Branch Relative Addressing Mode 4.2.4.1.2 Branch Conditional to Relative Addressing Mode 4.2.4.1.3 Branch to Absolute Addressing Mode 4.2.4.1.4 Branch Conditional to Absolute Addressing Mode 4.2.4.1.5 Branch Conditional to Link Register Addressing Mode 4.2.4.1.6 Branch Conditional to Count Register Addressing Mode 4.2.4.2 Conditional Branch Control 4.2.4.3 Branch Instructions (1)除外命令リスト   (Table 4-21) 絶対アドレス指定の分岐命令(命令の後尾が'a'の分岐命令) 相対アドレス指定と同一記述になってしまうため、未サポートとした。 4.2.4.4 Simplified Mnemonics for Branch Processor Instructions 4.2.4.5 Condition Register Logical Instructions (4)問題があると思われる命令のリスト   (Table 4-22)    mcrfを除く全命令    仕様では、状態レジスタCRはPowerPCマニュアルのように32ビットレジスタとしては使用せず、4ビットのレジスタ8個(CR0〜CR7)として使用しているため、現状ではCR0〜CR7を用いてこれらの命令の中間表現を記述している。そのため中間表現記述が現状では長く複雑化している。 4.2.4.6 Trap Instructions (1)除外命令リスト (Table 4-23) twi tw 4.2.4.7 System Linkage Instruction―UISA (1)除外命令リスト   (Table 4-24) sc 4.2.5 Processor Control Instructions―UISA 4.2.5.1 Move to/from Condition Register Instructions 4.2.5.2 Move to/from Special-Purpose Register Instructions (UISA) (4)問題があると思われる命令のリスト (Table 4-26) mtspr mfspr 仕様で扱っているレジスタに関してのみ記述 4.2.6 Memory Synchronization Instructions―UISA (1)除外命令リスト (Table 4-27) lwarx stwcx sync 4.2.7 Recommended Simplified Mnemonics 4.3 PowerPC VEA Instructions 4.3.1 Processor Control Instructions―VEA (1)除外命令リスト (Table 4-28)   mftb 4.3.2 Memory Synchronization Instructions―VEA (1)除外命令リスト (Table 4-31) eieio isync 4.3.3 Memory Control Instructions―VEA 4.3.3.1 User-Level Cache Instructions―VEA (1)除外命令リスト (Table 4-32)    dcbt dcbtst dcba dcbz dcbst dcbf icbi 4.3.4 External Control Instructions (1)除外命令リスト (Table 4-33) eciwx ecowx 4.4 PowerPC OEA Instructions 4.4.1 System Linkage Instructions―OEA (1)除外命令リスト (Table 4-34) sc rfi 4.4.2 Processor Control Instructions―OEA 4.4.2.1 Move to/from Machine State Register Instructions (1)除外命令リスト   (Table 4-35) mtmsr mfmsr  4.4.2.2 Move to/from Special-Purpose Register Instructions (OEA) (1)除外命令リスト (Table 4-36) mtspr mfspr 4.4.3 Memory Control Instructions―OEA 4.4.3.1 Supervisor-Level Cache Management Instructions (1)除外命令リスト (Table 4-37) dcbi 4.4.3.2 Segment Register Manipulation Instructions (1)除外命令リスト (Table 4-38) mtsr mtsrin mfsr mfsrin 4.4.3.3 Translation Lookaside Buffer Management Instructions (1)除外命令リスト   (Table 4-39) tlbie tlbia tlbsync -------------------------------------------------------------------------------- ======= AltiVec ======= 4.2 AltiVec UISA 4.2.1 Vector Integer Instructions 4.2.1.1 Saturation Detection 4.2.1.2 Vector Integer Arithmetic Instructions (4)問題があると思われる命令のリスト (Table 4-1)    vmsummbm  signedとunsignedの混合演算をMulを使って行い,結果はsignedで得る必要がある.現状のMulの仕様では混合演算を行った場合に結果がsignedになるかunsignedになるかの記載はない. 現状ではsignedの結果が得られるとして記述している. vsumsws  現状で128ビットの整数を扱っている。(チェックプログラムCheckTdfではエラーとなる) 4.2.1.3 Vector Integer Compare Instructions 4.2.1.4 Vector Integer Logical Instructions 4.2.1.5 Vector Integer Rotate and Shift Instructions (2)一部が除外されている命令のリスト    (Table 4-6) vslb vslh vslw vsrb vsrh vsrw  vBの下位3bitをシフトカウントとしたシフト命令である.シフトの際にvBの下位3bitが未定義の場合は得られる結果が不定になるが,現状のIFTHENELSEの仕様では内部に副作用が記述できない.よってこの例外処理は未記述である. 4.2.2 Vector Floating-Point Instructions 4.2.2.1 Floating-Point Division and Square-Root 4.2.2.1.1 Floating-Point Division 4.2.2.1.2 Floating-Point Square-Root 4.2.2.2 Floating-Point Arithmetic Instructions 4.2.2.3 Floating-Point Multiply-Add Instructions 4.2.2.4 Floating-Point Rounding and Conversion Instructions (5)同一パターンを持つ命令のリスト    (Table 4-9) vcfuxとvcfsx  中間表現の記述においては同じになる。 4.2.2.5 Floating-Point Compare Instructions 4.2.2.6 Floating-Point Estimate Instructions (1)除外命令リスト (Table 4-13) vrsqrtefp vlogefp vexptefp 4.2.3 Load and Store Instructions 4.2.3.1 Alignment 4.2.3.2 Load and Store Address Generation 4.2.3.3 Vector Load Instructions (4)問題があると思われる命令のリスト    (Table 4-15) lvebx lvehx lvewx  マニュアルには"Remaining bytes in vD are undefined"とあるが、現状では、これらのbyteの元の値をセットしている。     Table 4-15中の全命令  現状で128ビットの整数を扱っている。(チェックプログラムCheckTdfではエラーとなる) (5)同一パターンを持つ命令のリスト (Table 4-15) lvxとlvxl  中間表現の記述においては同じとなる。(LRUが未サポートのため) 4.2.3.4 Vector Store Instructions (5)同じ定義になっている命令のリスト (Table 4-19) stvxとstvxl  中間表現の記述においては同じとなる。(LRUが未サポートのため)  4.2.4 Control Flow 4.2.5 Vector Permutation and Formatting Instructions 4.2.5.1 Vector Pack Instructions 4.2.5.2 Vector Unpack Instructions 4.2.5.3 Vector Merge Instructions 4.2.5.4 Vector Splat Instructions 4.2.5.5 Vector Permute Instruction (4)問題があると思われる命令のリスト    (Table 4-25) vperm  現状で256ビットの整数を扱っている。(チェックプログラムCheckTdfではエラーとなる) 4.2.5.6 Vector Select Instruction 4.2.5.7 Vector Shift Instructions (4)問題があると思われる命令のリスト    (Table 4-26) 全命令  現状で128ビットまたは256ビットの整数を扱っている。(チェックプログラムCheckTdfではエラーとなる)   4.2.5.7.1 Immediate Interelement Shifts/Rotates 4.2.5.7.2 Computed Interelement Shifts/Rotates 4.2.5.7.3 Variable Interelement Shifts 4.2.6 Processor Control Instructions―UISA 4.2.6.1 AltiVec Status and Control Register Instructions (4)問題があると思われる命令のリスト (Table 4-28) mtvscr mfvscr 仕様で扱っているビットのみ記述(NJビットがデフォルトの0固定であると仮定) 4.2.7 Recommended Simplified Mnemonics 4.3 AltiVec VEA Instructions 4.3.1 Memory Control Instructions―VEA 4.3.2 User-Level Cache Instructions―VEA (1)除外命令リスト (Table 4-30) dst dstt dstst dststt dss dssall ---------------------------------------------------------------------------------------