diff --git a/test/sve/README b/test/sve/README new file mode 100644 index 00000000..839fa205 --- /dev/null +++ b/test/sve/README @@ -0,0 +1,97 @@ +/* README COPYRIGHT FUJITSU LIMITED 2019 */ + +SVEレジスタ拡張テストセットREADME + +(1) テストの実行方法 + 以下の手順でテストを実行する + 1. $HOME/.mck_test_configを用意する + 当該ファイルは、McKernelをビルドした際に生成されるmck_test_config.sample + ファイルを$HOMEにコピーし、適宜編集する + + 2. 必要に応じて、run.shのSVEGDB環境変数に利用するGDBのパスを記載する + GDBの置き換えが必要な理由は「(4) 備考」を参照 + + 3. make testを実行する + + +(2) テスト項目詳細 + TEST001 プロセス起動時のSVEレジスタを読み出す + TEST002 forkによる子プロセスへの引き継ぎ確認 + TEST003 pthread_createによる子スレッドへの引き継ぎ確認 + TEST004 execveを挟んだ場合のレジスタクリア確認 + TEST005 シグナルハンドラ前後のレジスタ維持確認 + TEST006 他コアへのマイグレート前後のレジスタ維持確認 + TEST007 子プロセスで書き込んだ内容が親プロセスからptraceでGETREGSET出来るか + TEST008 親プロセスからptraceでSETREGSETした内容が子プロセスに反映されるか + TEST009 GETREGSETへのパラメタチェック(子項目7つ) + TEST010 SETREGSETへのパラメタチェック(子項目9つ) + TEST011 sigaltstackを使用した場合のシグナルハンドラ前後のレジスタ維持確認 + TEST012 プロセスがSVE使用時、NT_PRFPREG(既存の浮動小数点レジスタ)の + GETREGSETを実行して値が取得出来るか + TEST013 プロセスがSVE使用時、NT_PRFPREG(既存の浮動小数点レジスタ)の + SETREGSETを実行して値が設定出来るか + TEST014 テスト番号8の子プロセス停止をbrk命令に変更したもの + TEST015 コンテキストスイッチおよび外部シグナルによる停止/再開時のレジスタ維持確認 + TEST016 prctl(PR_SVE_GET_VL)でVLを取得し、期待通りか確認する + TEST017 prctl(PR_SVE_SET_VL)でVLを設定し、期待通りか確認する + TEST018 廃止(過去に存在したフラグのテスト) + TEST019 prctl(PR_SVE_SET_VL)へのパラメタチェック + TEST020 prctlでVLと同時に継承フラグを付与時、fork()によってVLが子プロセスに継承されることを確認する + TEST021 prctlでVLと同時に継承フラグを付与時、pthread_create()によってVLが子スレッドに継承されることを確認する + TEST022 prctlでVLと同時に継承フラグを付与時、execve()によってVLが実行先のa.outに継承されることを確認する + TEST023 シグナルハンドラ前後のVL設定維持確認 + TEST024 他コアへのマイグレート前後のVL設定維持確認 + TEST025 ptrace(GETREGSET + NT_ARM_SVE)を用いてVLを取得し、期待通りか確認する + TEST026 ptrace(SETREGSET + NT_ARM_SVE)を用いてVLを設定し、期待通りか確認する + TEST027 prctlでVLと同時に継承フラグを付与しない場合でも、fork()によってVLが子プロセスに継承されることを確認する + TEST028 prctlでVLと同時に継承フラグを付与しない場合でも、pthread_create()によってVLが子スレッドに継承されることを確認する + TEST029 prctlでVLと同時に継承フラグを付与しない場合、execve()によってVLが実行先のa.outに継承されず、 + デフォルトVLが使われることを確認する + TEST030 SVE使用時、ptrace(SETREGSET + NT_ARM_SVE + SVE_PT_REGS_FPSIMD)で + FPSIMD(以前のバージョンのレジスタを表現する)構造体を用いてレジスタを設定し、期待通りか確認する + TEST031 SVE使用時、ptrace(SETREGSET + NT_ARM_SVE + SVE_PT_REGS_FPSIMD)で + SVEレジスタ構造体を用いてレジスタを設定し、期待通りか確認する + TEST032 prctlでVLと同時にONEXECフラグを付与時、ただちには反映されず、 + fork()を行ってもVLが子プロセスに継承されない事を確認する + TEST033 prctlでVLと同時にONEXECフラグを付与時、ただちには反映されず、 + pthread_create()を行ってもVLが子スレッドに継承されない事を確認する + TEST034 prctlでVLと同時にONEXECフラグを付与時、ただちには反映されず、最初のexecve()を行ったときにVLが反映される事を確認する + TEST035 SVE使用時、ptrace(SETREGSET + NT_ARM_SVE + SVE_PT_REGS_FPSIMD)で + 既存のSVEレジスタ退避領域を上書きしたとき、下位128bitにのみ設定が反映されることを確認する + TEST036 シグナルハンドラ内でVL変更及び変更後のSVEレジスタを使用した場合、SIGSEGVとなる事を確認する + TEST037 prctlでINHERITフラグ、ONEXECフラグの順に設定したとき、下記の動作になることを確認する + 現在のVL:INHERIT指定VL、継承するVL:ONEXEC指定VL、execve継承回数:初回のみ + TEST038 prctlでONEXECフラグ、INHERITフラグの順に設定したとき、下記の動作になることを確認する + 現在のVL:INHERIT指定VL、継承するVL:INHERIT指定VL、execve継承回数:設定変更まで有効 + TEST039 prctlでONEXECフラグとINHERITフラグを同時に設定したとき、下記の動作になることを確認する + 現在のVL:変更しない、継承するVL:指定VL、execve継承回数:設定変更まで有効 + TEST040 SVEレジスタ使用時にSIGSEGVを発生させ、corefileを生成する + 生成されたcorefileがGDBで解析が可能で、SVEレジスタの情報が閲覧出来る事を確認する + TEST041 SVEレジスタ対応版のGDBをMcKernel上で動作させ、SVEレジスタの情報がinfo registerで読み出せる事を確認する + + +(3) 実行結果ログ + result.logファイル内に実行時のログを記載する。 + 実行に利用したIHK/McKernelは、IA版における下記の版数相当のものである。 + + IHK + commit d6fcbee8cb91f9ec4b49f97c918e696ac0335aaf + Author: Shiratori, Takehiro + Date: Tue Oct 16 16:25:33 2018 +0900 + + McKernel + commit 6f9fef2b13447c74c36d15cf5ebd186f8395ccca + Author: Ken Sato + Date: Tue Sep 25 10:05:41 2018 +0900 + + +(4) 備考 + TEST040について、RHEL8-betaに含まれるGDBパッケージではSVEのcorefileを解析することは出来ない。 + これは、libbfd側にSVEのcorefile解析の制御が含まれていないことが原因となっている。 + 下記URLのパッチファイルを適用することで解析が可能となる。 + TEST040はパッチを適用したlibbfdを利用してテストを行った結果をログに記載している。 + + https://sourceware.org/ml/binutils/2018-06/msg00314.html + + +以上。 diff --git a/test/sve/exp/TEST040_vl16.exp.log b/test/sve/exp/TEST040_vl16.exp.log new file mode 100644 index 00000000..48b54028 --- /dev/null +++ b/test/sve/exp/TEST040_vl16.exp.log @@ -0,0 +1,51 @@ +z0 {d = {f = {0x0, 0x0}, u = {0x1111111111111111, 0x2222222222222222}, s = {0x1111111111111111, 0x2222222222222222}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22}}} +z1 {d = {f = {0x0, 0x7fffffffffffffff}, u = {0x3333333333333333, 0x4444444444444444}, s = {0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0x0, 0x311, 0x311}, u = {0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z2 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x5555555555555555, 0x6666666666666666}, s = {0x5555555555555555, 0x6666666666666666}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}}} +z3 {d = {f = {0x7fffffffffffffff, 0x0}, u = {0x7777777777777777, 0x8888888888888888}, s = {0x7777777777777777, 0x8888888888888888}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z4 {d = {f = {0x0, 0x0}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}}} +z5 {d = {f = {0x0, 0x8000000000000000}, u = {0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z6 {d = {f = {0x8000000000000000, 0x8000000000000000}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee}}} +z7 {d = {f = {0x8000000000000000, 0x0}, u = {0xffffffffffffffff, 0x1111111122222222}, s = {0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z8 {d = {f = {0x0, 0x0}, u = {0x2222222233333333, 0x3333333344444444}, s = {0x2222222233333333, 0x3333333344444444}}, s = {f = {0x0, 0x0, 0x311, 0x0}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33}}} +z9 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x4444444455555555, 0x5555555566666666}, s = {0x4444444455555555, 0x5555555566666666}}, s = {f = {0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z10 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x6666666677777777, 0x7777777788888888}, s = {0x6666666677777777, 0x7777777788888888}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77}}} +z11 {d = {f = {0x0, 0x0}, u = {0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z12 {d = {f = {0x0, 0x8000000000000000}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc}}} +z13 {d = {f = {0x8000000000000000, 0x8000000000000000}, u = {0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z14 {d = {f = {0x8000000000000000, 0x0}, u = {0xffffffff11111111, 0x1111222233334444}, s = {0xffffffff11111111, 0x1111222233334444}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11}}} +z15 {d = {f = {0x7fffffffffffffff, 0x0}, u = {0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0xffffffff, 0x66600000, 0x0, 0x0}, u = {0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z16 {d = {f = {0x8000000000000000, 0x8000000000000000}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff}}} +z17 {d = {f = {0x0, 0x7fffffffffffffff}, u = {0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x44400000, 0xffffffff}, u = {0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +z18 {d = {f = {0x0, 0x0}, u = {0x333322221111ffff, 0x1122334455667788}, s = {0x333322221111ffff, 0x1122334455667788}}, s = {f = {0x0, 0x0, 0x78800000, 0x0}, u = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344}, s = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344}}, h = {u = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122}, s = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122}}, b = {u = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11}, s = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11}}} +z19 {d = {f = {0x0, 0x8000000000000000}, u = {0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +z20 {d = {f = {0x7fffffffffffffff, 0x0}, u = {0x77665544332211ff, 0x123456789abcdef1}, s = {0x77665544332211ff, 0x123456789abcdef1}}, s = {f = {0x0, 0xffffffff, 0x0, 0x0}, u = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678}, s = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678}}, h = {u = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234}, s = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234}}, b = {u = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12}, s = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12}}} +z21 {d = {f = {0x8000000000000000, 0x8000000000000000}, u = {0xfedcba987654321f, 0xcafecafecafecafe}, s = {0xfedcba987654321f, 0xcafecafecafecafe}}, s = {f = {0xffffffff, 0x0, 0xff809a81, 0xff809a81}, u = {0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}, s = {0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}}, h = {u = {0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}, s = {0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}}, b = {u = {0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}, s = {0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}}} +z22 {d = {f = {0x0, 0x0}, u = {0x1111111111111111, 0x2222222222222222}, s = {0x1111111111111111, 0x2222222222222222}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22}}} +z23 {d = {f = {0x0, 0x7fffffffffffffff}, u = {0x3333333333333333, 0x4444444444444444}, s = {0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0x0, 0x311, 0x311}, u = {0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z24 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x5555555555555555, 0x6666666666666666}, s = {0x5555555555555555, 0x6666666666666666}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}}} +z25 {d = {f = {0x7fffffffffffffff, 0x0}, u = {0x7777777777777777, 0x8888888888888888}, s = {0x7777777777777777, 0x8888888888888888}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z26 {d = {f = {0x0, 0x0}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}}} +z27 {d = {f = {0x0, 0x8000000000000000}, u = {0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z28 {d = {f = {0x8000000000000000, 0x8000000000000000}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee}}} +z29 {d = {f = {0x8000000000000000, 0x0}, u = {0xffffffffffffffff, 0x1111111122222222}, s = {0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z30 {d = {f = {0x0, 0x0}, u = {0x2222222233333333, 0x3333333344444444}, s = {0x2222222233333333, 0x3333333344444444}}, s = {f = {0x0, 0x0, 0x311, 0x0}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33}}} +z31 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x4444444455555555, 0x5555555566666666}, s = {0x4444444455555555, 0x5555555566666666}}, s = {f = {0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +p0 {0x11, 0x11} +p1 {0x22, 0x22} +p2 {0x33, 0x33} +p3 {0x44, 0x44} +p4 {0x55, 0x55} +p5 {0x66, 0x66} +p6 {0x77, 0x77} +p7 {0x88, 0x88} +p8 {0x99, 0x99} +p9 {0xaa, 0xaa} +p10 {0xbb, 0xbb} +p11 {0xcc, 0xcc} +p12 {0xdd, 0xdd} +p13 {0xee, 0xee} +p14 {0xff, 0xff} +p15 {0x22, 0x22} +vg 0x2 2 +fpsr 0x0 0 +fpcr 0x0 0 diff --git a/test/sve/exp/TEST040_vl32.exp.log b/test/sve/exp/TEST040_vl32.exp.log new file mode 100644 index 00000000..413cf57d --- /dev/null +++ b/test/sve/exp/TEST040_vl32.exp.log @@ -0,0 +1,51 @@ +z0 {d = {f = {0x0, 0x0, 0x0, 0x7fffffffffffffff}, u = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}, s = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z1 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0}, u = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}, s = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z2 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z3 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z4 {d = {f = {0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}, s = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}}, s = {f = {0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z5 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0}, u = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z6 {d = {f = {0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z7 {d = {f = {0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0}, u = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z8 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +z9 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +z10 {d = {f = {0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000}, u = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}, s = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}}, s = {f = {0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81}, u = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}, s = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}}, h = {u = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}, s = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}}, b = {u = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}, s = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}}} +z11 {d = {f = {0x0, 0x0, 0x0, 0x7fffffffffffffff}, u = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}, s = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z12 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0}, u = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}, s = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z13 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z14 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z15 {d = {f = {0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}, s = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}}, s = {f = {0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z16 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0}, u = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z17 {d = {f = {0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z18 {d = {f = {0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0}, u = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z19 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +z20 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +z21 {d = {f = {0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000}, u = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}, s = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}}, s = {f = {0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81}, u = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}, s = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}}, h = {u = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}, s = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}}, b = {u = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}, s = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}}} +z22 {d = {f = {0x0, 0x0, 0x0, 0x7fffffffffffffff}, u = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}, s = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z23 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0}, u = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}, s = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z24 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z25 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z26 {d = {f = {0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}, s = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}}, s = {f = {0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z27 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0}, u = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z28 {d = {f = {0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z29 {d = {f = {0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0}, u = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z30 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +z31 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +p0 {0x11, 0x11, 0x22, 0x22} +p1 {0x33, 0x33, 0x44, 0x44} +p2 {0x55, 0x55, 0x66, 0x66} +p3 {0x77, 0x77, 0x88, 0x88} +p4 {0x99, 0x99, 0xaa, 0xaa} +p5 {0xbb, 0xbb, 0xcc, 0xcc} +p6 {0xdd, 0xdd, 0xee, 0xee} +p7 {0xff, 0xff, 0x22, 0x22} +p8 {0x33, 0x33, 0x44, 0x44} +p9 {0x55, 0x55, 0x66, 0x66} +p10 {0x77, 0x77, 0x88, 0x88} +p11 {0xaa, 0xaa, 0xbb, 0xbb} +p12 {0xcc, 0xcc, 0xdd, 0xdd} +p13 {0xee, 0xee, 0xff, 0xff} +p14 {0x11, 0x11, 0x44, 0x44} +p15 {0x88, 0x88, 0xcc, 0xcc} +vg 0x4 4 +fpsr 0x0 0 +fpcr 0x0 0 diff --git a/test/sve/exp/TEST040_vl64.exp.log b/test/sve/exp/TEST040_vl64.exp.log new file mode 100644 index 00000000..1c33f0e6 --- /dev/null +++ b/test/sve/exp/TEST040_vl64.exp.log @@ -0,0 +1,51 @@ +z0 {d = {f = {0x0, 0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0}, u = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444, 0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}, s = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444, 0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311, 0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z1 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, 0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, 0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z2 {d = {f = {0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0}, u = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666, 0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666, 0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555, 0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555, 0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555, 0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555, 0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z3 {d = {f = {0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, 0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, 0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee, 0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee, 0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee, 0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee, 0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z4 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x8000000000000000}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444, 0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444, 0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff, 0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666, 0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666, 0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777, 0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777, 0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +z5 {d = {f = {0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000, 0x0, 0x0, 0x0, 0x7fffffffffffffff}, u = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe, 0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}, s = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe, 0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311}, u = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe, 0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe, 0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe, 0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe, 0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z6 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888, 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888, 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888, 0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888, 0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888, 0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888, 0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z7 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0, 0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222, 0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222, 0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111, 0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111, 0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111, 0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111, 0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z8 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000}, u = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa, 0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa, 0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa, 0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa, 0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z9 {d = {f = {0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff}, u = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc, 0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc, 0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa, 0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa, 0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999, 0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999, 0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99, 0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99, 0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +z10 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000, 0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000}, u = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988, 0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}, s = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988, 0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}}, s = {f = {0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81}, u = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc, 0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}, s = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc, 0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}}, h = {u = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee, 0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}, s = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee, 0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}}, b = {u = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}, s = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}}} +z11 {d = {f = {0x0, 0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0}, u = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444, 0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}, s = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444, 0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311, 0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z12 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, 0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, 0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z13 {d = {f = {0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0}, u = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666, 0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666, 0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555, 0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555, 0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555, 0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555, 0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z14 {d = {f = {0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, 0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, 0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee, 0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee, 0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee, 0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee, 0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z15 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x8000000000000000}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444, 0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444, 0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff, 0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666, 0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666, 0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777, 0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777, 0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +z16 {d = {f = {0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000, 0x0, 0x0, 0x0, 0x7fffffffffffffff}, u = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe, 0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}, s = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe, 0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311}, u = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe, 0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe, 0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe, 0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe, 0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z17 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888, 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888, 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888, 0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888, 0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888, 0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888, 0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z18 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0, 0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222, 0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222, 0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111, 0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111, 0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111, 0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111, 0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z19 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000}, u = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa, 0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa, 0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa, 0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa, 0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z20 {d = {f = {0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff}, u = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc, 0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc, 0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa, 0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa, 0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999, 0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999, 0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99, 0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99, 0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +z21 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000, 0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000}, u = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988, 0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}, s = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988, 0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}}, s = {f = {0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81}, u = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc, 0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}, s = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc, 0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}}, h = {u = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee, 0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}, s = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee, 0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}}, b = {u = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}, s = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}}} +z22 {d = {f = {0x0, 0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0}, u = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444, 0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}, s = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444, 0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311, 0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z23 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, 0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, 0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z24 {d = {f = {0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0}, u = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666, 0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666, 0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555, 0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555, 0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555, 0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555, 0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z25 {d = {f = {0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, 0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, 0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee, 0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee, 0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee, 0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee, 0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z26 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x8000000000000000}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444, 0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444, 0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff, 0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666, 0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666, 0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777, 0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777, 0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +z27 {d = {f = {0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000, 0x0, 0x0, 0x0, 0x7fffffffffffffff}, u = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe, 0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}, s = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe, 0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311}, u = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe, 0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe, 0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe, 0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe, 0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z28 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888, 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888, 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888, 0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888, 0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888, 0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888, 0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z29 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0, 0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222, 0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222, 0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111, 0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111, 0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111, 0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111, 0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z30 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000}, u = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa, 0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa, 0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa, 0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa, 0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z31 {d = {f = {0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff}, u = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc, 0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc, 0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa, 0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa, 0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999, 0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999, 0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99, 0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99, 0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +p0 {0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x44, 0x44} +p1 {0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0x88, 0x88} +p2 {0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xcc} +p3 {0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x22, 0x22} +p4 {0x33, 0x33, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66} +p5 {0x77, 0x77, 0x88, 0x88, 0xaa, 0xaa, 0xbb, 0xbb} +p6 {0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff} +p7 {0x11, 0x11, 0x44, 0x44, 0x88, 0x88, 0xcc, 0xcc} +p8 {0x11, 0x11, 0xcc, 0xcc, 0x88, 0x88, 0x44, 0x44} +p9 {0xff, 0xff, 0x88, 0x77, 0x11, 0xff, 0x88, 0x99} +p10 {0xff, 0x11, 0xf1, 0xde, 0x1f, 0x32, 0xfe, 0xca} +p11 {0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x44, 0x44} +p12 {0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0x88, 0x88} +p13 {0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xcc} +p14 {0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x22, 0x22} +p15 {0x33, 0x33, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66} +vg 0x8 8 +fpsr 0x44443333 1145320243 +fpcr 0x0 0 diff --git a/test/sve/exp/TEST041_vl16.exp.log b/test/sve/exp/TEST041_vl16.exp.log new file mode 100644 index 00000000..48b54028 --- /dev/null +++ b/test/sve/exp/TEST041_vl16.exp.log @@ -0,0 +1,51 @@ +z0 {d = {f = {0x0, 0x0}, u = {0x1111111111111111, 0x2222222222222222}, s = {0x1111111111111111, 0x2222222222222222}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22}}} +z1 {d = {f = {0x0, 0x7fffffffffffffff}, u = {0x3333333333333333, 0x4444444444444444}, s = {0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0x0, 0x311, 0x311}, u = {0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z2 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x5555555555555555, 0x6666666666666666}, s = {0x5555555555555555, 0x6666666666666666}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}}} +z3 {d = {f = {0x7fffffffffffffff, 0x0}, u = {0x7777777777777777, 0x8888888888888888}, s = {0x7777777777777777, 0x8888888888888888}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z4 {d = {f = {0x0, 0x0}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}}} +z5 {d = {f = {0x0, 0x8000000000000000}, u = {0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z6 {d = {f = {0x8000000000000000, 0x8000000000000000}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee}}} +z7 {d = {f = {0x8000000000000000, 0x0}, u = {0xffffffffffffffff, 0x1111111122222222}, s = {0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z8 {d = {f = {0x0, 0x0}, u = {0x2222222233333333, 0x3333333344444444}, s = {0x2222222233333333, 0x3333333344444444}}, s = {f = {0x0, 0x0, 0x311, 0x0}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33}}} +z9 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x4444444455555555, 0x5555555566666666}, s = {0x4444444455555555, 0x5555555566666666}}, s = {f = {0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z10 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x6666666677777777, 0x7777777788888888}, s = {0x6666666677777777, 0x7777777788888888}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77}}} +z11 {d = {f = {0x0, 0x0}, u = {0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z12 {d = {f = {0x0, 0x8000000000000000}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc}}} +z13 {d = {f = {0x8000000000000000, 0x8000000000000000}, u = {0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z14 {d = {f = {0x8000000000000000, 0x0}, u = {0xffffffff11111111, 0x1111222233334444}, s = {0xffffffff11111111, 0x1111222233334444}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11}}} +z15 {d = {f = {0x7fffffffffffffff, 0x0}, u = {0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0xffffffff, 0x66600000, 0x0, 0x0}, u = {0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z16 {d = {f = {0x8000000000000000, 0x8000000000000000}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff}}} +z17 {d = {f = {0x0, 0x7fffffffffffffff}, u = {0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x44400000, 0xffffffff}, u = {0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +z18 {d = {f = {0x0, 0x0}, u = {0x333322221111ffff, 0x1122334455667788}, s = {0x333322221111ffff, 0x1122334455667788}}, s = {f = {0x0, 0x0, 0x78800000, 0x0}, u = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344}, s = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344}}, h = {u = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122}, s = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122}}, b = {u = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11}, s = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11}}} +z19 {d = {f = {0x0, 0x8000000000000000}, u = {0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +z20 {d = {f = {0x7fffffffffffffff, 0x0}, u = {0x77665544332211ff, 0x123456789abcdef1}, s = {0x77665544332211ff, 0x123456789abcdef1}}, s = {f = {0x0, 0xffffffff, 0x0, 0x0}, u = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678}, s = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678}}, h = {u = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234}, s = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234}}, b = {u = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12}, s = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12}}} +z21 {d = {f = {0x8000000000000000, 0x8000000000000000}, u = {0xfedcba987654321f, 0xcafecafecafecafe}, s = {0xfedcba987654321f, 0xcafecafecafecafe}}, s = {f = {0xffffffff, 0x0, 0xff809a81, 0xff809a81}, u = {0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}, s = {0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}}, h = {u = {0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}, s = {0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}}, b = {u = {0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}, s = {0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}}} +z22 {d = {f = {0x0, 0x0}, u = {0x1111111111111111, 0x2222222222222222}, s = {0x1111111111111111, 0x2222222222222222}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22}}} +z23 {d = {f = {0x0, 0x7fffffffffffffff}, u = {0x3333333333333333, 0x4444444444444444}, s = {0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0x0, 0x311, 0x311}, u = {0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z24 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x5555555555555555, 0x6666666666666666}, s = {0x5555555555555555, 0x6666666666666666}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}}} +z25 {d = {f = {0x7fffffffffffffff, 0x0}, u = {0x7777777777777777, 0x8888888888888888}, s = {0x7777777777777777, 0x8888888888888888}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z26 {d = {f = {0x0, 0x0}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa}}} +z27 {d = {f = {0x0, 0x8000000000000000}, u = {0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z28 {d = {f = {0x8000000000000000, 0x8000000000000000}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee}}} +z29 {d = {f = {0x8000000000000000, 0x0}, u = {0xffffffffffffffff, 0x1111111122222222}, s = {0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0}, u = {0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z30 {d = {f = {0x0, 0x0}, u = {0x2222222233333333, 0x3333333344444444}, s = {0x2222222233333333, 0x3333333344444444}}, s = {f = {0x0, 0x0, 0x311, 0x0}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33}}} +z31 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x4444444455555555, 0x5555555566666666}, s = {0x4444444455555555, 0x5555555566666666}}, s = {f = {0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +p0 {0x11, 0x11} +p1 {0x22, 0x22} +p2 {0x33, 0x33} +p3 {0x44, 0x44} +p4 {0x55, 0x55} +p5 {0x66, 0x66} +p6 {0x77, 0x77} +p7 {0x88, 0x88} +p8 {0x99, 0x99} +p9 {0xaa, 0xaa} +p10 {0xbb, 0xbb} +p11 {0xcc, 0xcc} +p12 {0xdd, 0xdd} +p13 {0xee, 0xee} +p14 {0xff, 0xff} +p15 {0x22, 0x22} +vg 0x2 2 +fpsr 0x0 0 +fpcr 0x0 0 diff --git a/test/sve/exp/TEST041_vl32.exp.log b/test/sve/exp/TEST041_vl32.exp.log new file mode 100644 index 00000000..413cf57d --- /dev/null +++ b/test/sve/exp/TEST041_vl32.exp.log @@ -0,0 +1,51 @@ +z0 {d = {f = {0x0, 0x0, 0x0, 0x7fffffffffffffff}, u = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}, s = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z1 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0}, u = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}, s = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z2 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z3 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z4 {d = {f = {0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}, s = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}}, s = {f = {0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z5 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0}, u = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z6 {d = {f = {0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z7 {d = {f = {0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0}, u = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z8 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +z9 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +z10 {d = {f = {0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000}, u = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}, s = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}}, s = {f = {0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81}, u = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}, s = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}}, h = {u = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}, s = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}}, b = {u = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}, s = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}}} +z11 {d = {f = {0x0, 0x0, 0x0, 0x7fffffffffffffff}, u = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}, s = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z12 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0}, u = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}, s = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z13 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z14 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z15 {d = {f = {0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}, s = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}}, s = {f = {0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z16 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0}, u = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z17 {d = {f = {0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z18 {d = {f = {0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0}, u = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z19 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +z20 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +z21 {d = {f = {0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000}, u = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}, s = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}}, s = {f = {0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81}, u = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}, s = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}}, h = {u = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}, s = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}}, b = {u = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}, s = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}}} +z22 {d = {f = {0x0, 0x0, 0x0, 0x7fffffffffffffff}, u = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}, s = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z23 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0}, u = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}, s = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z24 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z25 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z26 {d = {f = {0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}, s = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}}, s = {f = {0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z27 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0}, u = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z28 {d = {f = {0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z29 {d = {f = {0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0}, u = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z30 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +z31 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +p0 {0x11, 0x11, 0x22, 0x22} +p1 {0x33, 0x33, 0x44, 0x44} +p2 {0x55, 0x55, 0x66, 0x66} +p3 {0x77, 0x77, 0x88, 0x88} +p4 {0x99, 0x99, 0xaa, 0xaa} +p5 {0xbb, 0xbb, 0xcc, 0xcc} +p6 {0xdd, 0xdd, 0xee, 0xee} +p7 {0xff, 0xff, 0x22, 0x22} +p8 {0x33, 0x33, 0x44, 0x44} +p9 {0x55, 0x55, 0x66, 0x66} +p10 {0x77, 0x77, 0x88, 0x88} +p11 {0xaa, 0xaa, 0xbb, 0xbb} +p12 {0xcc, 0xcc, 0xdd, 0xdd} +p13 {0xee, 0xee, 0xff, 0xff} +p14 {0x11, 0x11, 0x44, 0x44} +p15 {0x88, 0x88, 0xcc, 0xcc} +vg 0x4 4 +fpsr 0x0 0 +fpcr 0x0 0 diff --git a/test/sve/exp/TEST041_vl64.exp.log b/test/sve/exp/TEST041_vl64.exp.log new file mode 100644 index 00000000..0428965f --- /dev/null +++ b/test/sve/exp/TEST041_vl64.exp.log @@ -0,0 +1,51 @@ +z0 {d = {f = {0x0, 0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0}, u = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444, 0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}, s = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444, 0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311, 0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z1 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, 0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, 0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z2 {d = {f = {0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0}, u = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666, 0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666, 0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555, 0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555, 0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555, 0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555, 0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z3 {d = {f = {0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, 0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, 0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee, 0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee, 0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee, 0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee, 0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z4 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x8000000000000000}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444, 0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444, 0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff, 0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666, 0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666, 0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777, 0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777, 0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +z5 {d = {f = {0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000, 0x0, 0x0, 0x0, 0x7fffffffffffffff}, u = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe, 0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}, s = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe, 0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311}, u = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe, 0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe, 0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe, 0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe, 0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z6 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888, 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888, 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888, 0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888, 0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888, 0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888, 0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z7 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0, 0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222, 0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222, 0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111, 0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111, 0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111, 0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111, 0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z8 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000}, u = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa, 0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa, 0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa, 0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa, 0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z9 {d = {f = {0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff}, u = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc, 0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc, 0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa, 0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa, 0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999, 0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999, 0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99, 0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99, 0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +z10 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000, 0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000}, u = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988, 0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}, s = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988, 0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}}, s = {f = {0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81}, u = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc, 0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}, s = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc, 0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}}, h = {u = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee, 0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}, s = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee, 0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}}, b = {u = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}, s = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}}} +z11 {d = {f = {0x0, 0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0}, u = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444, 0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}, s = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444, 0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311, 0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z12 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, 0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, 0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z13 {d = {f = {0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0}, u = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666, 0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666, 0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555, 0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555, 0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555, 0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555, 0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z14 {d = {f = {0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, 0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, 0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee, 0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee, 0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee, 0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee, 0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z15 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x8000000000000000}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444, 0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444, 0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff, 0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666, 0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666, 0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777, 0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777, 0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +z16 {d = {f = {0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000, 0x0, 0x0, 0x0, 0x7fffffffffffffff}, u = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe, 0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}, s = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe, 0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311}, u = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe, 0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe, 0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe, 0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe, 0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z17 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888, 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888, 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888, 0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888, 0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888, 0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888, 0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z18 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0, 0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222, 0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222, 0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111, 0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111, 0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111, 0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111, 0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z19 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000}, u = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa, 0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa, 0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa, 0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa, 0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z20 {d = {f = {0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff}, u = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc, 0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc, 0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa, 0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa, 0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999, 0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999, 0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99, 0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99, 0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +z21 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000, 0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000}, u = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988, 0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}, s = {0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988, 0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe}}, s = {f = {0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81}, u = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc, 0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}, s = {0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc, 0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe}}, h = {u = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee, 0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}, s = {0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee, 0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe}}, b = {u = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}, s = {0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca}}} +z22 {d = {f = {0x0, 0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0}, u = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444, 0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}, s = {0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444, 0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311, 0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0}, u = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}, s = {0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444, 0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888}}, h = {u = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}, s = {0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444, 0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, s = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}}} +z23 {d = {f = {0x0, 0x0, 0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0}, u = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}, s = {0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, 0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}, s = {0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc, 0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111}}, h = {u = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}, s = {0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc, 0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111}}, b = {u = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}, s = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11}}} +z24 {d = {f = {0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0}, u = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666, 0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}, s = {0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666, 0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb}}, s = {f = {0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0}, u = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555, 0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}, s = {0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555, 0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa}}, h = {u = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555, 0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}, s = {0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555, 0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa}}, b = {u = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}, s = {0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa}}} +z25 {d = {f = {0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0}, u = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, 0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}, s = {0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, 0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc}}, s = {f = {0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0}, u = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee, 0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}, s = {0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee, 0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa}}, h = {u = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee, 0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}, s = {0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee, 0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999}}, b = {u = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}, s = {0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee, 0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99}}} +z26 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x8000000000000000}, u = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444, 0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}, s = {0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444, 0x333322221111ffff, 0x1122334455667788, 0x99aabbccddeeff11, 0xffeeddccbbaa9988}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff, 0x0, 0x0, 0x78800000, 0x0, 0x0, 0x0, 0x0, 0x0}, u = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666, 0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}, s = {0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666, 0x1111ffff, 0x33332222, 0x55667788, 0x11223344, 0xddeeff11, 0x99aabbcc, 0xbbaa9988, 0xffeeddcc}}, h = {u = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777, 0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}, s = {0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777, 0xffff, 0x1111, 0x2222, 0x3333, 0x7788, 0x5566, 0x3344, 0x1122, 0xff11, 0xddee, 0xbbcc, 0x99aa, 0x9988, 0xbbaa, 0xddcc, 0xffee}}, b = {u = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, s = {0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0xff, 0xff, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11, 0x11, 0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa, 0x99, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}}} +z27 {d = {f = {0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000, 0x0, 0x0, 0x0, 0x7fffffffffffffff}, u = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe, 0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}, s = {0x77665544332211ff, 0x123456789abcdef1, 0xfedcba987654321f, 0xcafecafecafecafe, 0x1111111111111111, 0x2222222222222222, 0x3333333333333333, 0x4444444444444444}}, s = {f = {0x0, 0xffffffff, 0x0, 0x0, 0xffffffff, 0x0, 0xff809a81, 0xff809a81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x311}, u = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe, 0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}, s = {0x332211ff, 0x77665544, 0x9abcdef1, 0x12345678, 0x7654321f, 0xfedcba98, 0xcafecafe, 0xcafecafe, 0x11111111, 0x11111111, 0x22222222, 0x22222222, 0x33333333, 0x33333333, 0x44444444, 0x44444444}}, h = {u = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe, 0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}, s = {0x11ff, 0x3322, 0x5544, 0x7766, 0xdef1, 0x9abc, 0x5678, 0x1234, 0x321f, 0x7654, 0xba98, 0xfedc, 0xcafe, 0xcafe, 0xcafe, 0xcafe, 0x1111, 0x1111, 0x1111, 0x1111, 0x2222, 0x2222, 0x2222, 0x2222, 0x3333, 0x3333, 0x3333, 0x3333, 0x4444, 0x4444, 0x4444, 0x4444}}, b = {u = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, s = {0xff, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0xf1, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0x1f, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0xfe, 0xca, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}}} +z28 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x8000000000000000}, u = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888, 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}, s = {0x5555555555555555, 0x6666666666666666, 0x7777777777777777, 0x8888888888888888, 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc}}, s = {f = {0x55500000, 0x55500000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0xf99999a0}, u = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888, 0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}, s = {0x55555555, 0x55555555, 0x66666666, 0x66666666, 0x77777777, 0x77777777, 0x88888888, 0x88888888, 0x99999999, 0x99999999, 0xaaaaaaaa, 0xaaaaaaaa, 0xbbbbbbbb, 0xbbbbbbbb, 0xcccccccc, 0xcccccccc}}, h = {u = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888, 0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}, s = {0x5555, 0x5555, 0x5555, 0x5555, 0x6666, 0x6666, 0x6666, 0x6666, 0x7777, 0x7777, 0x7777, 0x7777, 0x8888, 0x8888, 0x8888, 0x8888, 0x9999, 0x9999, 0x9999, 0x9999, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa, 0xbbbb, 0xbbbb, 0xbbbb, 0xbbbb, 0xcccc, 0xcccc, 0xcccc, 0xcccc}}, b = {u = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, s = {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc}}} +z29 {d = {f = {0x8000000000000000, 0x8000000000000000, 0x8000000000000000, 0x0, 0x0, 0x0, 0x7fffffffffffffff, 0x7fffffffffffffff}, u = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222, 0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}, s = {0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, 0xffffffffffffffff, 0x1111111122222222, 0x2222222233333333, 0x3333333344444444, 0x4444444455555555, 0x5555555566666666}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x311, 0x0, 0x55500000, 0x311, 0xffffffff, 0x55500000}, u = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111, 0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}, s = {0xdddddddd, 0xdddddddd, 0xeeeeeeee, 0xeeeeeeee, 0xffffffff, 0xffffffff, 0x22222222, 0x11111111, 0x33333333, 0x22222222, 0x44444444, 0x33333333, 0x55555555, 0x44444444, 0x66666666, 0x55555555}}, h = {u = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111, 0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}, s = {0xdddd, 0xdddd, 0xdddd, 0xdddd, 0xeeee, 0xeeee, 0xeeee, 0xeeee, 0xffff, 0xffff, 0xffff, 0xffff, 0x2222, 0x2222, 0x1111, 0x1111, 0x3333, 0x3333, 0x2222, 0x2222, 0x4444, 0x4444, 0x3333, 0x3333, 0x5555, 0x5555, 0x4444, 0x4444, 0x6666, 0x6666, 0x5555, 0x5555}}, b = {u = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}, s = {0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x22, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x33, 0x22, 0x22, 0x22, 0x22, 0x44, 0x44, 0x44, 0x44, 0x33, 0x33, 0x33, 0x33, 0x55, 0x55, 0x55, 0x55, 0x44, 0x44, 0x44, 0x44, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55}}} +z30 {d = {f = {0x7fffffffffffffff, 0x7fffffffffffffff, 0x0, 0x0, 0x0, 0x8000000000000000, 0x8000000000000000, 0x8000000000000000}, u = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}, s = {0x6666666677777777, 0x7777777788888888, 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff}}, s = {f = {0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0xf99999a0, 0x0, 0x0, 0x0, 0x0}, u = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa, 0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}, s = {0x77777777, 0x66666666, 0x88888888, 0x77777777, 0xaaaaaaaa, 0x99999999, 0xbbbbbbbb, 0xaaaaaaaa, 0xcccccccc, 0xbbbbbbbb, 0xdddddddd, 0xcccccccc, 0xeeeeeeee, 0xdddddddd, 0xffffffff, 0xeeeeeeee}}, h = {u = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa, 0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}, s = {0x7777, 0x7777, 0x6666, 0x6666, 0x8888, 0x8888, 0x7777, 0x7777, 0xaaaa, 0xaaaa, 0x9999, 0x9999, 0xbbbb, 0xbbbb, 0xaaaa, 0xaaaa, 0xcccc, 0xcccc, 0xbbbb, 0xbbbb, 0xdddd, 0xdddd, 0xcccc, 0xcccc, 0xeeee, 0xeeee, 0xdddd, 0xdddd, 0xffff, 0xffff, 0xeeee, 0xeeee}}, b = {u = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}, s = {0x77, 0x77, 0x77, 0x77, 0x66, 0x66, 0x66, 0x66, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, 0x77, 0x77, 0xaa, 0xaa, 0xaa, 0xaa, 0x99, 0x99, 0x99, 0x99, 0xbb, 0xbb, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xcc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xdd, 0xdd, 0xdd, 0xdd, 0xcc, 0xcc, 0xcc, 0xcc, 0xee, 0xee, 0xee, 0xee, 0xdd, 0xdd, 0xdd, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xee, 0xee, 0xee, 0xee}}} +z31 {d = {f = {0x8000000000000000, 0x0, 0x7fffffffffffffff, 0x0, 0x8000000000000000, 0x8000000000000000, 0x0, 0x7fffffffffffffff}, u = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc, 0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}, s = {0xffffffff11111111, 0x1111222233334444, 0x5555666677778888, 0x9999aaaabbbbcccc, 0xddddeeeeffff1111, 0xffffeeeeddddcccc, 0xbbbbaaaa99998888, 0x7777666655554444}}, s = {f = {0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x66600000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x44400000, 0xffffffff}, u = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa, 0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}, s = {0x11111111, 0xffffffff, 0x33334444, 0x11112222, 0x77778888, 0x55556666, 0xbbbbcccc, 0x9999aaaa, 0xffff1111, 0xddddeeee, 0xddddcccc, 0xffffeeee, 0x99998888, 0xbbbbaaaa, 0x55554444, 0x77776666}}, h = {u = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999, 0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}, s = {0x1111, 0x1111, 0xffff, 0xffff, 0x4444, 0x3333, 0x2222, 0x1111, 0x8888, 0x7777, 0x6666, 0x5555, 0xcccc, 0xbbbb, 0xaaaa, 0x9999, 0x1111, 0xffff, 0xeeee, 0xdddd, 0xcccc, 0xdddd, 0xeeee, 0xffff, 0x8888, 0x9999, 0xaaaa, 0xbbbb, 0x4444, 0x5555, 0x6666, 0x7777}}, b = {u = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99, 0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}, s = {0x11, 0x11, 0x11, 0x11, 0xff, 0xff, 0xff, 0xff, 0x44, 0x44, 0x33, 0x33, 0x22, 0x22, 0x11, 0x11, 0x88, 0x88, 0x77, 0x77, 0x66, 0x66, 0x55, 0x55, 0xcc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x99, 0x11, 0x11, 0xff, 0xff, 0xee, 0xee, 0xdd, 0xdd, 0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x88, 0x88, 0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66, 0x77, 0x77}}} +p0 {0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x44, 0x44} +p1 {0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0x88, 0x88} +p2 {0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xcc} +p3 {0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x22, 0x22} +p4 {0x33, 0x33, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66} +p5 {0x77, 0x77, 0x88, 0x88, 0xaa, 0xaa, 0xbb, 0xbb} +p6 {0xcc, 0xcc, 0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff} +p7 {0x11, 0x11, 0x44, 0x44, 0x88, 0x88, 0xcc, 0xcc} +p8 {0x11, 0x11, 0xcc, 0xcc, 0x88, 0x88, 0x44, 0x44} +p9 {0xff, 0xff, 0x88, 0x77, 0x11, 0xff, 0x88, 0x99} +p10 {0xff, 0x11, 0xf1, 0xde, 0x1f, 0x32, 0xfe, 0xca} +p11 {0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x44, 0x44} +p12 {0x55, 0x55, 0x66, 0x66, 0x77, 0x77, 0x88, 0x88} +p13 {0x99, 0x99, 0xaa, 0xaa, 0xbb, 0xbb, 0xcc, 0xcc} +p14 {0xdd, 0xdd, 0xee, 0xee, 0xff, 0xff, 0x22, 0x22} +p15 {0x33, 0x33, 0x44, 0x44, 0x55, 0x55, 0x66, 0x66} +vg 0x8 8 +fpsr 0x0 0 +fpcr 0x0 0 diff --git a/test/sve/inf/TEST040.inf b/test/sve/inf/TEST040.inf new file mode 100644 index 00000000..7a1b869e --- /dev/null +++ b/test/sve/inf/TEST040.inf @@ -0,0 +1,80 @@ +# TEST040.inf COPYRIGHT FUJITSU LIMITED 2019 + +# set logging filename +set logging file ./TEST040.log + +# log overwrite +set logging overwrite on + +# log redirect +set logging redirect on + +# set logging on +set logging on + +# disable the "Type to continue, or q to quit" +set height 0 + +# show Z registers +i r z0 +i r z1 +i r z2 +i r z3 +i r z4 +i r z5 +i r z6 +i r z7 +i r z8 +i r z9 +i r z10 +i r z11 +i r z12 +i r z13 +i r z14 +i r z15 +i r z16 +i r z17 +i r z18 +i r z19 +i r z20 +i r z21 +i r z22 +i r z23 +i r z24 +i r z25 +i r z26 +i r z27 +i r z28 +i r z29 +i r z30 +i r z31 + +# show P registers +i r p0 +i r p1 +i r p2 +i r p3 +i r p4 +i r p5 +i r p6 +i r p7 +i r p8 +i r p9 +i r p10 +i r p11 +i r p12 +i r p13 +i r p14 +i r p15 + +# show vg(VL) +i r vg + +# show fpsr/fpcr +i r fpsr +i r fpcr + +# set logging on +set logging off + +quit diff --git a/test/sve/inf/TEST041.inf b/test/sve/inf/TEST041.inf new file mode 100644 index 00000000..41c62b5f --- /dev/null +++ b/test/sve/inf/TEST041.inf @@ -0,0 +1,86 @@ +# TEST041.inf COPYRIGHT FUJITSU LIMITED 2019 + +# set logging filename +set logging file ./TEST041.log + +# log overwrite +set logging overwrite on + +# log redirect +set logging redirect on + +# disable the "Type to continue, or q to quit" +set height 0 + +# set breakpoint +b 040.c:23 + +# run +r 40 + +# set logging on +set logging on + +# show Z registers +i r z0 +i r z1 +i r z2 +i r z3 +i r z4 +i r z5 +i r z6 +i r z7 +i r z8 +i r z9 +i r z10 +i r z11 +i r z12 +i r z13 +i r z14 +i r z15 +i r z16 +i r z17 +i r z18 +i r z19 +i r z20 +i r z21 +i r z22 +i r z23 +i r z24 +i r z25 +i r z26 +i r z27 +i r z28 +i r z29 +i r z30 +i r z31 + +# show P registers +i r p0 +i r p1 +i r p2 +i r p3 +i r p4 +i r p5 +i r p6 +i r p7 +i r p8 +i r p9 +i r p10 +i r p11 +i r p12 +i r p13 +i r p14 +i r p15 + +# show vg(VL) +i r vg + +# show fpsr/fpcr +i r fpsr +i r fpcr + +# set logging on +set logging off + +quit diff --git a/test/sve/result.log b/test/sve/result.log new file mode 100644 index 00000000..b9619e32 --- /dev/null +++ b/test/sve/result.log @@ -0,0 +1,219 @@ +as -mcpu=all src/sve_asm.S -o obj/sve_asm.o +cc -g -O0 -Wall -I. -Isrc -o obj/sve.o -c src/sve.c \ + -DTEST_NUMBER=obj/sve.o +cc -g -O0 -Wall -I. -Isrc -o obj/025.o -c src/025.c \ + -DTEST_NUMBER=025 +cc -g -O0 -Wall -I. -Isrc -o obj/021.o -c src/021.c \ + -DTEST_NUMBER=021 +cc -g -O0 -Wall -I. -Isrc -o obj/016.o -c src/016.c \ + -DTEST_NUMBER=016 +cc -g -O0 -Wall -I. -Isrc -o obj/012.o -c src/012.c \ + -DTEST_NUMBER=012 +cc -g -O0 -Wall -I. -Isrc -o obj/009.o -c src/009.c \ + -DTEST_NUMBER=009 +cc -g -O0 -Wall -I. -Isrc -o obj/033.o -c src/033.c \ + -DTEST_NUMBER=033 +cc -g -O0 -Wall -I. -Isrc -o obj/024.o -c src/024.c \ + -DTEST_NUMBER=024 +cc -g -O0 -Wall -I. -Isrc -o obj/010.o -c src/010.c \ + -DTEST_NUMBER=010 +cc -g -O0 -Wall -I. -Isrc -o obj/001.o -c src/001.c \ + -DTEST_NUMBER=001 +cc -g -O0 -Wall -I. -Isrc -o obj/036.o -c src/036.c \ + -DTEST_NUMBER=036 +cc -g -O0 -Wall -I. -Isrc -o obj/022.o -c src/022.c \ + -DTEST_NUMBER=022 +cc -g -O0 -Wall -I. -Isrc -o obj/038.o -c src/038.c \ + -DTEST_NUMBER=038 +cc -g -O0 -Wall -I. -Isrc -o obj/028.o -c src/028.c \ + -DTEST_NUMBER=028 +cc -g -O0 -Wall -I. -Isrc -o obj/015.o -c src/015.c \ + -DTEST_NUMBER=015 +cc -g -O0 -Wall -I. -Isrc -o obj/039.o -c src/039.c \ + -DTEST_NUMBER=039 +cc -g -O0 -Wall -I. -Isrc -o obj/029.o -c src/029.c \ + -DTEST_NUMBER=029 +cc -g -O0 -Wall -I. -Isrc -o obj/002.o -c src/002.c \ + -DTEST_NUMBER=002 +cc -g -O0 -Wall -I. -Isrc -o obj/007.o -c src/007.c \ + -DTEST_NUMBER=007 +cc -g -O0 -Wall -I. -Isrc -o obj/020.o -c src/020.c \ + -DTEST_NUMBER=020 +cc -g -O0 -Wall -I. -Isrc -o obj/014.o -c src/014.c \ + -DTEST_NUMBER=014 +cc -g -O0 -Wall -I. -Isrc -o obj/013.o -c src/013.c \ + -DTEST_NUMBER=013 +cc -g -O0 -Wall -I. -Isrc -o obj/031.o -c src/031.c \ + -DTEST_NUMBER=031 +cc -g -O0 -Wall -I. -Isrc -o obj/008.o -c src/008.c \ + -DTEST_NUMBER=008 +cc -g -O0 -Wall -I. -Isrc -o obj/017.o -c src/017.c \ + -DTEST_NUMBER=017 +cc -g -O0 -Wall -I. -Isrc -o obj/037.o -c src/037.c \ + -DTEST_NUMBER=037 +cc -g -O0 -Wall -I. -Isrc -o obj/main.o -c src/main.c \ + -DTEST_NUMBER=obj/main.o +cc -g -O0 -Wall -I. -Isrc -o obj/035.o -c src/035.c \ + -DTEST_NUMBER=035 +cc -g -O0 -Wall -I. -Isrc -o obj/023.o -c src/023.c \ + -DTEST_NUMBER=023 +cc -g -O0 -Wall -I. -Isrc -o obj/032.o -c src/032.c \ + -DTEST_NUMBER=032 +cc -g -O0 -Wall -I. -Isrc -o obj/018.o -c src/018.c \ + -DTEST_NUMBER=018 +cc -g -O0 -Wall -I. -Isrc -o obj/011.o -c src/011.c \ + -DTEST_NUMBER=011 +cc -g -O0 -Wall -I. -Isrc -o obj/026.o -c src/026.c \ + -DTEST_NUMBER=026 +cc -g -O0 -Wall -I. -Isrc -o obj/006.o -c src/006.c \ + -DTEST_NUMBER=006 +cc -g -O0 -Wall -I. -Isrc -o obj/common.o -c src/common.c \ + -DTEST_NUMBER=obj/common.o +cc -g -O0 -Wall -I. -Isrc -o obj/003.o -c src/003.c \ + -DTEST_NUMBER=003 +cc -g -O0 -Wall -I. -Isrc -o obj/030.o -c src/030.c \ + -DTEST_NUMBER=030 +cc -g -O0 -Wall -I. -Isrc -o obj/027.o -c src/027.c \ + -DTEST_NUMBER=027 +cc -g -O0 -Wall -I. -Isrc -o obj/004.o -c src/004.c \ + -DTEST_NUMBER=004 +cc -g -O0 -Wall -I. -Isrc -o obj/019.o -c src/019.c \ + -DTEST_NUMBER=019 +cc -g -O0 -Wall -I. -Isrc -o obj/040.o -c src/040.c \ + -DTEST_NUMBER=040 +cc -g -O0 -Wall -I. -Isrc -o obj/034.o -c src/034.c \ + -DTEST_NUMBER=034 +cc -g -O0 -Wall -I. -Isrc -o obj/005.o -c src/005.c \ + -DTEST_NUMBER=005 +cc -g -O0 -Wall obj/sve_asm.o obj/sve.o obj/025.o obj/021.o obj/016.o obj/012.o obj/009.o obj/033.o obj/024.o obj/010.o obj/001.o obj/036.o obj/022.o obj/038.o obj/028.o obj/015.o obj/039.o obj/029.o obj/002.o obj/007.o obj/020.o obj/014.o obj/013.o obj/031.o obj/008.o obj/017.o obj/037.o obj/main.o obj/035.o obj/023.o obj/032.o obj/018.o obj/011.o obj/026.o obj/006.o obj/common.o obj/003.o obj/030.o obj/027.o obj/004.o obj/019.o obj/040.o obj/034.o obj/005.o -lpthread -o sve_test +./run.sh +Default VL is 64 byte test. +mcstop+release.sh ... done +mcreboot.sh -c 12-23 -m 3G@4 -q 60 ... done +TEST001: OK. +TEST002: OK. +TEST003: OK. +TEST004: OK. +TEST005: OK. +TEST006: OK. +TEST007: OK. +TEST008: OK. +TEST009: OK. +TEST010: OK. +TEST011: OK. +TEST012: OK. +TEST013: OK. +TEST014: OK. +TEST015: OK. +TEST016: OK. +TEST017: OK. +TEST019: OK. +TEST020: OK. +TEST021: OK. +TEST022: OK. +TEST023: OK. +TEST024: OK. +TEST025: OK. +TEST026: OK. +TEST027: OK. +TEST028: OK. +TEST029: OK. +TEST030: OK. +TEST031: OK. +TEST032: OK. +TEST033: OK. +TEST034: OK. +TEST035: OK. +TEST036: OK. +TEST037: OK. +TEST038: OK. +TEST039: OK. +TEST040: OK. +TEST041: OK. +Default VL is 32 byte test. +mcstop+release.sh ... done +mcreboot.sh -c 12-23 -m 3G@4 -q 60 ... done +TEST001: OK. +TEST002: OK. +TEST003: OK. +TEST004: OK. +TEST005: OK. +TEST006: OK. +TEST007: OK. +TEST008: OK. +TEST009: OK. +TEST010: OK. +TEST011: OK. +TEST012: OK. +TEST013: OK. +TEST014: OK. +TEST015: OK. +TEST016: OK. +TEST017: OK. +TEST019: OK. +TEST020: OK. +TEST021: OK. +TEST022: OK. +TEST023: OK. +TEST024: OK. +TEST025: OK. +TEST026: OK. +TEST027: OK. +TEST028: OK. +TEST029: OK. +TEST030: OK. +TEST031: OK. +TEST032: OK. +TEST033: OK. +TEST034: OK. +TEST035: OK. +TEST036: OK. +TEST037: OK. +TEST038: OK. +TEST039: OK. +TEST040: OK. +TEST041: OK. +Default VL is 16 byte test. +mcstop+release.sh ... done +mcreboot.sh -c 12-23 -m 3G@4 -q 60 ... done +TEST001: OK. +TEST002: OK. +TEST003: OK. +TEST004: OK. +TEST005: OK. +TEST006: OK. +TEST007: OK. +TEST008: OK. +TEST009: OK. +TEST010: OK. +TEST011: OK. +TEST012: OK. +TEST013: OK. +TEST014: OK. +TEST015: OK. +TEST016: OK. +TEST017: OK. +TEST019: OK. +TEST020: OK. +TEST021: OK. +TEST022: OK. +TEST023: OK. +TEST024: OK. +TEST025: OK. +TEST026: OK. +TEST027: OK. +TEST028: OK. +TEST029: OK. +TEST030: OK. +TEST031: OK. +TEST032: OK. +TEST033: OK. +TEST034: OK. +TEST035: OK. +TEST036: OK. +TEST037: OK. +TEST038: OK. +TEST039: OK. +TEST040: OK. +TEST041: OK. +mcstop+release.sh ... done diff --git a/test/sve/run.sh b/test/sve/run.sh new file mode 100755 index 00000000..380bfcc2 --- /dev/null +++ b/test/sve/run.sh @@ -0,0 +1,120 @@ +#!/bin/sh +## run.sh COPYRIGHT FUJITSU LIMITED 2019 ## + +USELTP=0 +USEOSTEST=0 +MCREBOOT=0 +MCSTOP=0 +SVEGDB="gdb" + +. ../common.sh + +vl_set="64 32 16" +default_vl_procfs="/proc/sys/abi/sve_default_vector_length" +core_pattern="/proc/sys/kernel/core_pattern" +ret=0 + +if [ -e ${default_vl_procfs} ]; then + orig_vl=`cat ${default_vl_procfs}` +else + echo "${default_vl_procfs} not found." + exit -1 +fi + +orig_corep=`cat ${core_pattern}` +echo "core.host" > ${core_pattern} + +for vl in ${vl_set} +do + echo "Default VL is ${vl} byte test." + + echo ${vl} > ${default_vl_procfs} + mcstop + mcreboot + sleep 1 + + # TEST001-014 + for tp_num in `seq 1 14` + do + print_num=`printf %03d ${tp_num}` + result=`${MCEXEC} ./sve_test ${tp_num} 2>&1` + if [ $? == 0 ]; then + echo "TEST${print_num}: OK." + else + echo "${result}" + echo "TEST${print_num}: NG." + ret=-1 + fi + done + + # TEST015 + stdbuf -i 0 -o 0 -e 0 ${MCEXEC} ./sve_test 15 > ./TEST015.log 2>&1 & + sleep 1 + kill -STOP `pidof mcexec` + sleep 1 + kill -CONT `pidof mcexec` + sleep 1 + kill -KILL `pidof mcexec` + + cat ./TEST015.log | grep -q -e "failed" -e "NG." + if [ $? == 1 ]; then + echo "TEST015: OK." + else + cat ./TEST015.log + echo "TEST015: NG." + ret=-1 + fi + rm -f ./TEST015.log + + # TEST016-039 + for tp_num in `seq 16 39` + do + # TEST018 is abolition + if [ ${tp_num} == 18 ]; then + continue + fi + + print_num=`printf %03d ${tp_num}` + result=`${MCEXEC} ./sve_test ${tp_num} 2>&1` + if [ $? == 0 ]; then + echo "TEST${print_num}: OK." + else + echo "${result}" + echo "TEST${print_num}: NG." + ret=-1 + fi + done + + # TEST040 + ${MCEXEC} ./sve_test 40 > /dev/null 2>&1 + ${SVEGDB} -x ./inf/TEST040.inf ./sve_test ./core > /dev/null 2>&1 + diff ./exp/TEST040_vl${vl}.exp.log ./TEST040.log > /dev/null 2>&1 + if [ $? == 0 ]; then + echo "TEST040: OK." + rm -f ./core + rm -f ./core.host.* + else + cat ./TEST040.log + echo "TEST040: NG." + ret=-1 + fi + rm -f ./TEST040.log + + # TEST041 + ${MCEXEC} ${SVEGDB} -x ./inf/TEST041.inf ./sve_test > /dev/null 2>&1 + diff ./exp/TEST041_vl${vl}.exp.log ./TEST041.log > /dev/null 2>&1 + if [ $? == 0 ]; then + echo "TEST041: OK." + else + cat ./TEST041.log + echo "TEST041: NG." + ret=-1 + fi + rm -f ./TEST041.log +done + +mcstop +echo ${orig_corep} > ${core_pattern} +echo ${orig_vl} > ${default_vl_procfs} + +exit ${ret} diff --git a/test/sve/src/001.c b/test/sve/src/001.c new file mode 100644 index 00000000..e19fd11f --- /dev/null +++ b/test/sve/src/001.c @@ -0,0 +1,29 @@ +/* 001.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* Process starts immediately after registers check. */ +#include +#include +#include +#include "common.h" + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + int ret = 0; + struct fpsimd_sve_state(vq) exp_buf; + struct fpsimd_sve_state(vq) rd_buf; + unsigned int fpscr[2] = { 0, 0 }; + + print_test_overview(tp_num); + + read_sve(&rd_buf, vq, fpscr); + + memset(&exp_buf, 0, sizeof(exp_buf)); + + if (sve_compare(&exp_buf, &rd_buf, vq)) { + printf("RESULT: NG.\n"); + ret = -1; + } + else { + printf("RESULT: OK.\n"); + } + return ret; +} diff --git a/test/sve/src/002.c b/test/sve/src/002.c new file mode 100644 index 00000000..1ec0d4a8 --- /dev/null +++ b/test/sve/src/002.c @@ -0,0 +1,75 @@ +/* 002.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* Use fork() takeover registers check. */ +#include +#include +#include +#include +#include +#include +#include "common.h" + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + pid_t cpid = 0; + int ret = -1; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + read_sve(&rd_buf, vq, fpscr); + + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("parent-process register compare failed.\n"); + goto out; + } + + cpid = fork(); + switch (cpid) { + case -1: + /* error */ + printf("ERROR: fork()=%d, errno=%d\n", cpid, errno); + goto out; + case 0: { + /* child process */ + struct fpsimd_sve_state(vq) c_rd_buf; + struct fpsimd_sve_state(vq) c_cmp_buf; + + memset(&c_rd_buf, 0, sizeof(struct fpsimd_sve_state(vq))); + read_sve(&c_rd_buf, vq, fpscr); + + memset(&c_cmp_buf, 0, sizeof(struct fpsimd_sve_state(vq))); + gen_test_sve_low_128(&c_cmp_buf, vq, vq); + + if (sve_compare(&c_cmp_buf, &c_rd_buf, vq)) { + printf("child-process register compare failed.\n"); + exit(-1); + } + exit(0); + break; + } + default: + /* parent process */ + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + break; + } + + /* success. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/003.c b/test/sve/src/003.c new file mode 100644 index 00000000..acfdc000 --- /dev/null +++ b/test/sve/src/003.c @@ -0,0 +1,91 @@ +/* 003.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* Use pthread_create() takeover registers check. */ +#include +#include +#include +#include +#include "common.h" + +static void *child_function(void *arg) +{ + void *ret = (void *)-1; + unsigned int vl = sve_get_vl(); + unsigned int vq = sve_vq_from_vl(vl); + void *rd_buf = calloc(1, (vl * 35) + 15); + void *cmp_buf = NULL, *align_cmp_buf = NULL; + void *align_rd_buf = (void *)(((unsigned long)(rd_buf + 15)) & ~15UL); + unsigned int fpscr[2] = { 0, 0 }; + + if (!rd_buf) { + printf("calloc() failed.\n"); + goto out; + } + read_sve(align_rd_buf, vq, fpscr); + + cmp_buf = calloc(1, (vl * 35) + 15); + if (!cmp_buf) { + printf("calloc() failed.\n"); + goto rd_free_out; + } + align_cmp_buf = (void *)(((unsigned long)(rd_buf + 15)) & ~15UL); + gen_test_sve_low_128(align_cmp_buf, vq, vq); + + if (sve_compare(align_cmp_buf, align_rd_buf, vq)) { + printf("child-thread register compare failed.\n"); + goto cmp_free_out; + } + + /* success */ + ret = NULL; + +cmp_free_out: + free(cmp_buf); +rd_free_out: + free(rd_buf); +out: + pthread_exit(ret); + return NULL; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + void *ret; + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + pthread_t thread; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + read_sve(&rd_buf, vq, fpscr); + + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("parent-thread register compare failed.\n"); + printf("RESULT: NG.\n"); + return -1; + } + + if (pthread_create(&thread, NULL, child_function, NULL)) { + printf("pthread_create: error.\n"); + printf("RESULT: NG.\n"); + return -1; + } + + if (pthread_join(thread, &ret)) { + printf("pthread_join: error.\n"); + printf("RESULT: NG.\n"); + return -1; + } + + if (ret == NULL) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return 0; +} diff --git a/test/sve/src/004.c b/test/sve/src/004.c new file mode 100644 index 00000000..d6870fbc --- /dev/null +++ b/test/sve/src/004.c @@ -0,0 +1,49 @@ +/* 004.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* Use execve() takeover registers check. (execve target is #1 testcase) */ +#include +#include +#include +#include +#include "common.h" + +extern char **environ; +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, tp_argv) +{ + char *self = (char *)tp_argv[0]; + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + char *const execve_args[] = { + "", "1", NULL + }; + int ret = -1; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + read_sve(&rd_buf, vq, fpscr); + + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("Dirty SVE-register before executing execve(), NG.\n"); + goto out; + } + printf("Dirty SVE-register before executing execve(), OK.\n"); + + printf("=== look at the contents of the " + "register since run execve. ===\n"); + + ret = execve(self, execve_args, environ); + if (ret == -1) { + perror("execve()"); + } else { + ret = -1; + printf("Why return execve() ???\n"); + } +out: + printf("RESULT: NG.\n"); + return ret; +} diff --git a/test/sve/src/005.c b/test/sve/src/005.c new file mode 100644 index 00000000..2259dc32 --- /dev/null +++ b/test/sve/src/005.c @@ -0,0 +1,76 @@ +/* 005.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* Preservation register check signalhsndler before and after. */ +#include +#include +#include +#include +#include +#include "common.h" + +static void sig_handler(int sig) +{ + unsigned int vl = sve_get_vl(); + unsigned int vq = sve_vq_from_vl(vl); + void *wr_buf = calloc(1, (vl * 35) + 15); + void *align_wr_buf = (void *)(((unsigned long)(wr_buf + 15)) & ~15UL); + unsigned int fpscr[2] = { 0, 0 }; + + if (!wr_buf) { + printf("calloc() failed.\n"); + goto out; + } + + /* set dirty */ + gen_test_sve_dirty(align_wr_buf, vq); + write_sve(align_wr_buf, vq, fpscr); + + free(wr_buf); +out: + return; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + int ret = -1; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + if (signal(SIGUSR1, sig_handler) == SIG_ERR) { + printf("Set signal handler failed.\n"); + goto out; + } + + /* before sighandler */ + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + + if (raise(SIGUSR1)) { + perror("raise(SIGUSR1)"); + goto out; + } + + /* after sighandler */ + read_sve(&rd_buf, vq, fpscr); + + /* compare */ + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("compare failed.\n"); + goto out; + } + + /* success. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/006.c b/test/sve/src/006.c new file mode 100644 index 00000000..7229bed8 --- /dev/null +++ b/test/sve/src/006.c @@ -0,0 +1,217 @@ +/* 006.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* Preservation register check migrate cpus before and after. */ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(unsigned int vq, int *c2p) +{ + int ret = -1; + unsigned int before_id, after_id; + struct fpsimd_sve_state(vq) before_buf; + struct fpsimd_sve_state(vq) after_buf; + unsigned int fpscr[2] = { 0, 0 }; + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* clear buffer */ + memset(&before_buf, 0, sizeof(before_buf)); + memset(&after_buf, 0, sizeof(after_buf)); + + /* get running core number and notify parent */ + before_id = sched_getcpu(); + printf("[child] before migrate. (cpuid=%d)\n", before_id); + write(c2p[1], &before_id, sizeof(before_id)); + + /* write, read and show register */ + gen_test_sve(&before_buf, vq); + write_sve(&before_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* get after migrate running core number and notify parent */ + after_id = sched_getcpu(); + printf("[child] after migrate. (cpuid=%d)\n", after_id); + + /* migrate check */ + if (before_id == after_id) { + printf("not migrate process.\n"); + goto out; + } + + /* read and show register */ + read_sve(&after_buf, vq, fpscr); + + /* compare */ + if (sve_compare(&before_buf, &after_buf, vq)) { + printf("child-process compare failed.\n"); + goto out; + } + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, int *c2p) +{ + int ret = -1; + int i = 0; + cpu_set_t *cpusetp_child; + size_t size; + unsigned int c_before_id; + unsigned int migrate_cpu = -1; + unsigned int parent_cpu; + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* read child process running core number */ + read(c2p[0], &c_before_id, sizeof(c_before_id)); + + /* getaffinity mask allocate */ + size = CPU_ALLOC_SIZE(SMP_MAX_CPUS); + cpusetp_child = CPU_ALLOC(SMP_MAX_CPUS); + + if (!cpusetp_child) { + printf("(child process) alloc failed.\n"); + goto cont; + } + CPU_ZERO_S(size, cpusetp_child); + + /* get child affinity */ + if (sched_getaffinity(cpid, size, cpusetp_child)) { + perror("sched_getaffinity()"); + goto cont; + } + + /* calc migrate core number */ + parent_cpu = sched_getcpu(); + for (i = 0; i < SMP_MAX_CPUS; i++) { + if (CPU_ISSET(i, cpusetp_child)) { + if ((i != parent_cpu) && (i != c_before_id)) { + migrate_cpu = i; + break; + } + } + } + + /* migrate core number check */ + if (migrate_cpu < 0) { + printf("Bad target to migrate child process.\n"); + goto cont; + } + + /* set affinity */ + CPU_ZERO_S(size, cpusetp_child); + CPU_SET_S(migrate_cpu, size, cpusetp_child); + + if (sched_setaffinity(cpid, size, cpusetp_child)) { + perror("sched_setaffinity()"); + goto out; + } + CPU_FREE(cpusetp_child); + + /* success */ + ret = 0; +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + return ret; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + pid_t cpid = 0; + int func_ret = -1; + int ret = -1; + int c2p[2] = { -1, -1 }; + + print_test_overview(tp_num); + + /* allocation pipe */ + if (pipe(c2p)) { + printf("pipe() Failed.\n"); + goto out; + } + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error */ + perror("fork()"); + goto close_out; + case 0: + /* child process */ + exit(child_func(vq, c2p)); + break; + + default: + /* parent process */ + func_ret = parent_func(cpid, c2p); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto close_out; + } + + /* parent_func check */ + if (func_ret) { + goto close_out; + } + break; + } + + /* success. */ + ret = 0; +close_out: + /* close pipe */ + close(c2p[0]); + close(c2p[1]); +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/007.c b/test/sve/src/007.c new file mode 100644 index 00000000..75727d72 --- /dev/null +++ b/test/sve/src/007.c @@ -0,0 +1,164 @@ +/* 007.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* ptrace(GETREGSET + NT_ARM_SVE) check. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(unsigned int vq) +{ + int ret = -1; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + + /* clear work area */ + memset(&wr_buf, 0, sizeof(wr_buf)); + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* pre write register */ + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, unsigned int vq) +{ + int ret = -1; + struct fpsimd_sve_state(vq) cmp_buf; + struct user_fpsimd_sve_state(vq) rd_buf; + struct iovec iov; + + memset(&cmp_buf, 0, sizeof(cmp_buf)); + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&iov, 0, sizeof(iov)); + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* gen cmp value */ + gen_test_sve(&cmp_buf, vq); + + /* PTRACE_GETREGSET */ + iov.iov_len = sizeof(rd_buf); + iov.iov_base = &rd_buf; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + /* check Header */ + printf("size = 0x%x\n", rd_buf.header.size); + printf("max_size = 0x%x\n", rd_buf.header.max_size); + printf("vl = 0x%x\n", rd_buf.header.vl); + printf("max_vl = 0x%x\n", rd_buf.header.max_vl); + printf("flags = 0x%x\n", rd_buf.header.flags); + + if (header_compare(&rd_buf.header)) { + printf("child-process header compare failed.\n"); + goto cont; + } + + /* compare regs */ + if (sve_compare(&cmp_buf, &rd_buf.regs, vq)) { + printf("child-process compare failed.\n"); + goto cont; + } + + /* success */ + ret = 0; +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + return ret; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + pid_t cpid = 0; + int func_ret = 0; + int ret = -1; + + print_test_overview(tp_num); + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error. */ + perror("fork()"); + goto out; + case 0: + /* child process */ + func_ret = child_func(vq); + + /* child exit */ + exit(func_ret); + break; + default: + /* parent process */ + func_ret = parent_func(cpid, vq); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + + /* parent_func check */ + if (func_ret) { + goto out; + } + break; + } + + /* sccess. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/008.c b/test/sve/src/008.c new file mode 100644 index 00000000..4c5b49a3 --- /dev/null +++ b/test/sve/src/008.c @@ -0,0 +1,167 @@ +/* 008.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* ptrace(SETREGSET + NT_ARM_SVE) check. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(unsigned int vq) +{ + int ret = -1; + struct fpsimd_sve_state(vq) cmp_buf; + struct fpsimd_sve_state(vq) rd_buf; + unsigned int fpscr[2] = { 0, 0 }; + + memset(&cmp_buf, 0, sizeof(struct fpsimd_sve_state(vq))); + memset(&rd_buf, 0, sizeof(struct fpsimd_sve_state(vq))); + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* gen and read register */ + gen_test_sve(&cmp_buf, vq); + read_sve(&rd_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* read register */ + read_sve(&rd_buf, vq, fpscr); + + /* compare */ + if (sve_compare(&cmp_buf, &rd_buf, vq)) { + printf("child-process compare failed.\n"); + } + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, unsigned int vq) +{ + int ret = -1; + struct user_fpsimd_sve_state(vq) wr_buf; + struct iovec iov; + + memset(&wr_buf, 0, sizeof(wr_buf)); + memset(&iov, 0, sizeof(iov)); + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* PTRACE_GETREGSET */ + iov.iov_len = sizeof(wr_buf); + iov.iov_base = &wr_buf; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + /* header compare */ + if (header_compare(&wr_buf.header)) { + printf("ptrace(PTRACE_GETREGSET) header compare failed.\n"); + goto cont; + } + + /* gen register */ + gen_test_sve(&wr_buf.regs, vq); + + /* PTRACE_SETREGSET */ + iov.iov_len = sizeof(wr_buf); + iov.iov_base = &wr_buf; + if (ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_SETREGSET)"); + goto cont; + } + + /* success */ + ret = 0; +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + return ret; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + pid_t cpid = 0; + int func_ret = 0; + int ret = -1; + + print_test_overview(tp_num); + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error. */ + perror("fork()"); + goto out; + case 0: + /* child process */ + func_ret = child_func(vq); + + /* child exit */ + exit(func_ret); + break; + default: + /* parent process */ + func_ret = parent_func(cpid, vq); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + + /* parent_func check */ + if (func_ret) { + goto out; + } + break; + } + + /* sccess. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/009.c b/test/sve/src/009.c new file mode 100644 index 00000000..47871827 --- /dev/null +++ b/test/sve/src/009.c @@ -0,0 +1,293 @@ +/* 009.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* ptrace(GETREGSET + NT_ARM_SVE) parameters pattern check. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(unsigned int vq) +{ + int ret = -1; + struct fpsimd_sve_state(vq) wr_buf; + struct fpsimd_sve_state(vq) rd_buf; + unsigned int fpscr[2] = { 0, 0 }; + + /* clear work area */ + memset(&wr_buf, 0, sizeof(wr_buf)); + memset(&rd_buf, 0, sizeof(rd_buf)); + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* pre write register */ + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, unsigned int vq) +{ + int ret = -1; + struct iovec iov; + char *l_rd_buf = NULL; + struct fpsimd_sve_state(vq) cmp_buf; + struct user_fpsimd_sve_state(vq) rd_buf; + size_t align_half_regsz = + (sizeof(cmp_buf) / 2 + 15) & ~15UL; + + memset(&cmp_buf, 0, sizeof(cmp_buf)); + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&iov, 0, sizeof(iov)); + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + printf("PTRACE_GETREGSET parameter check\n"); + + /* case 1: iov_base is NULL */ + printf("check 1: iov_base == NULL\n"); + iov.iov_len = sizeof(rd_buf); + iov.iov_base = NULL; + if (!ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + printf("why sccess ptrace(PTRACE_GETREGSET) ???\n"); + goto cont; + } + + if (errno != EFAULT) { + printf("errno(%d) is not expectation value\n", errno); + printf("expectation value is EFAULT(%d)\n", EFAULT); + goto cont; + } + errno = 0; + + /* case 2: iov_len is zero */ + printf("check 2: iov_len == 0\n"); + iov.iov_len = 0; + iov.iov_base = &rd_buf; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + if (rd_buf.header.vl != 0 || + rd_buf.header.max_vl != 0 || + rd_buf.header.flags != 0) { + printf("why iov_len over area getting ???\n"); + goto cont; + } + + /* case 3: iov_len is less than sizeof(struct user_sve_header) */ + printf("check 3: iov_len < sizeof(struct user_sve_header)\n"); + memset(&rd_buf, 0, sizeof(rd_buf)); + iov.iov_len = sizeof(rd_buf.header.vl); + iov.iov_base = &rd_buf; + if (!ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + printf("why sccess ptrace(PTRACE_GETREGSET) ???\n"); + goto cont; + } + + if (errno != EINVAL) { + printf("errno(%d) is not expectation value\n", errno); + printf("expectation value is EINVAL(%d)\n", EINVAL); + goto cont; + } + errno = 0; + + /* case 4: iov_len is just sizeof(struct user_sve_header) */ + printf("check 4: iov_len == sizeof(struct user_sve_header)\n"); + memset(&rd_buf, 0, sizeof(rd_buf)); + iov.iov_len = sizeof(struct user_sve_header); + iov.iov_base = &rd_buf; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + if ((vq * 16) != rd_buf.header.vl) { + printf("mismatch vl (exp(%d), value(%d))\n", + vq * 16, rd_buf.header.vl); + goto cont; + } + + if (rd_buf.header.max_vl == 0 || rd_buf.header.flags == 0) { + printf("why iov_len over area not getting ???\n"); + goto cont; + } + + /* compare */ + if (sve_compare(&cmp_buf, &rd_buf.regs, vq)) { + printf("parent-process compare failed.\n"); + goto cont; + } + + /* case 5: + * iov_len is sizeof(struct user_sve_header) + + * sizeof(struct fpsimd_sve_state(vq)) / 2 + */ + printf("check 5: iov_len header + " + "(registerarea size / 2) (16 byte align)\n"); + gen_test_sve(&cmp_buf, vq); + memset((char *)&cmp_buf + align_half_regsz, 0, + sizeof(cmp_buf) - align_half_regsz); + + memset(&rd_buf, 0, sizeof(rd_buf)); + iov.iov_len = sizeof(struct user_sve_header) + align_half_regsz; + iov.iov_base = &rd_buf; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + /* compare */ + if (sve_compare(&cmp_buf, &rd_buf.regs, vq)) { + printf("parent-process compare failed.\n"); + goto cont; + } + + /* case 6: iov_len larger than struct user_sve_regs */ + printf("check 6: iov_len larger than struct user_sve_regs\n"); + memset(&cmp_buf, 0, sizeof(cmp_buf)); + memset(&rd_buf, 0, sizeof(rd_buf)); + + iov.iov_len = ((sizeof(rd_buf) * 2 + 15) & ~15UL); + iov.iov_base = &rd_buf; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + gen_test_sve(&cmp_buf, vq); + + /* compare */ + if (sve_compare(&cmp_buf, &rd_buf.regs, vq)) { + printf("parent-process compare failed.\n"); + goto cont; + } + + /* case 7: iov_len larger than MAX_SIZE */ + printf("check 7: iov_len larger than MAX_SIZE\n"); + memset(&cmp_buf, 0, sizeof(cmp_buf)); + gen_test_sve(&cmp_buf, vq); + + iov.iov_len = ((SVE_PT_SIZE(SVE_VQ_MAX, + SVE_PT_REGS_SVE) + 15) / 16 * 16) + 16; + l_rd_buf = calloc(1, iov.iov_len); + if (!l_rd_buf) { + printf("calloc() failed.\n"); + goto cont; + } + + iov.iov_base = l_rd_buf; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + free(iov.iov_base); + goto free_cont; + } + + /* compare */ + iov.iov_base = l_rd_buf; + if (sve_compare(&cmp_buf, + l_rd_buf + sizeof(struct user_sve_header), vq)) { + printf("parent-process compare failed.\n"); + free(iov.iov_base); + goto free_cont; + } + + /* success */ + ret = 0; + +free_cont: + free(iov.iov_base); +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + return ret; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + pid_t cpid = 0; + int func_ret = 0; + int ret = -1; + + print_test_overview(tp_num); + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error. */ + perror("fork()"); + goto out; + case 0: + /* child process */ + func_ret = child_func(vq); + + /* child exit */ + exit(func_ret); + break; + default: + /* parent process */ + func_ret = parent_func(cpid, vq); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + + /* parent_func check */ + if (func_ret) { + goto out; + } + break; + } + + /* sccess. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/010.c b/test/sve/src/010.c new file mode 100644 index 00000000..0860fde3 --- /dev/null +++ b/test/sve/src/010.c @@ -0,0 +1,528 @@ +/* 010.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* ptrace(SETREGSET + NT_ARM_SVE) parameters pattern check. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(unsigned int vq) +{ + int ret = -1; + struct fpsimd_sve_state(vq) cmp_buf; + struct fpsimd_sve_state(vq) zero_buf; + struct fpsimd_sve_state(vq) rd_buf; + unsigned int fpscr[2] = { 0, 0 }; + size_t align_half_regsz = + (sizeof(cmp_buf) / 2 + 15) & ~15UL; + + memset(&cmp_buf, 0, sizeof(cmp_buf)); + memset(&zero_buf, 0, sizeof(cmp_buf)); + memset(&rd_buf, 0, sizeof(cmp_buf)); + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* gen and read register */ + gen_test_sve(&cmp_buf, vq); + read_sve(&rd_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* case 7: read register */ + read_sve(&rd_buf, vq, fpscr); + + /* compare */ + if (sve_compare(&cmp_buf, &rd_buf, vq)) { + printf("child-process compare failed.\n"); + goto out; + } + + /* clear sve */ + fpscr[0] = 0; + fpscr[1] = 0; + write_sve(&zero_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 2f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "2:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* case 8: read register */ + read_sve(&rd_buf, vq, fpscr); + + /* compare */ + if (sve_compare(&cmp_buf, &rd_buf, vq)) { + printf("child-process compare failed.\n"); + goto out; + } + + /* clear sve */ + fpscr[0] = 0; + fpscr[1] = 0; + write_sve(&zero_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 3f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "3:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* case 9: read register */ + read_sve(&rd_buf, vq, fpscr); + + /* create expected value */ + memset((char *)&cmp_buf + align_half_regsz, 0, + sizeof(cmp_buf) - align_half_regsz); + + /* compare */ + if (sve_compare(&cmp_buf, &rd_buf, vq)) { + printf("child-process compare failed.\n"); + goto out; + } + + /* clear sve */ + fpscr[0] = 0; + fpscr[1] = 0; + write_sve(&zero_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 4f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "4:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* case 10: read register */ + read_sve(&rd_buf, vq, fpscr); + + /* compare */ + if (sve_compare(&zero_buf, &rd_buf, vq)) { + printf("child-process compare failed.\n"); + goto out; + } + + /* clear sve */ + fpscr[0] = 0; + fpscr[1] = 0; + write_sve(&zero_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 5f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "5:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, unsigned int vq) +{ + int ret = -1; + struct user_fpsimd_sve_state(vq) wr_buf; + struct fpsimd_sve_state(vq) tmp_buf; + char *l_wr_buf = NULL; + struct iovec iov; + struct user_sve_header header, work_header; + size_t align_half_regsz = + (sizeof(tmp_buf) / 2 + 15) & ~15UL; + + memset(&wr_buf, 0, sizeof(wr_buf)); + memset(&l_wr_buf, 0, sizeof(l_wr_buf)); + memset(&iov, 0, sizeof(iov)); + memset(&header, 0, sizeof(header)); + memset(&work_header, 0, sizeof(work_header)); + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* get header value */ + iov.iov_len = sizeof(header); + iov.iov_base = &header; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + /* header compare */ + if (header_compare(&header)) { + printf("header compare failed.\n"); + goto cont; + } + + printf("PTRACE_SETREGSET parameter check\n"); + + /* case 1: iov_base is NULL */ + printf("check 1: iov_base == NULL\n"); + iov.iov_len = sizeof(wr_buf); + iov.iov_base = NULL; + if (!ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + printf("why sccess ptrace(PTRACE_SETREGSET) ???\n"); + goto cont; + } + + if (errno != EFAULT) { + printf("errno(%d) is not expectation value\n", errno); + printf("expectation value is EFAULT(%d)\n", EFAULT); + goto cont; + } + errno = 0; + + /* case 2: iov_len is zero */ + printf("check 2: iov_len == 0\n"); + iov.iov_len = 0; + iov.iov_base = &wr_buf; + if (!ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + printf("why sccess ptrace(PTRACE_SETREGSET) ???\n"); + goto cont; + } + + if (errno != EINVAL) { + printf("errno(%d) is not expectation value\n", errno); + printf("expectation value is EINVAL(%d)\n", EINVAL); + goto cont; + } + errno = 0; + + /* case 3: header.vl invalid */ + printf("check 3: header.vl invalid\n"); + wr_buf.header = header; + wr_buf.header.vl = 0xffff; /* invalid */ + + iov.iov_len = sizeof(wr_buf); + iov.iov_base = &wr_buf; + if (!ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + printf("why sccess ptrace(PTRACE_SETREGSET) ???\n"); + goto cont; + } + + if (errno != EINVAL) { + printf("errno(%d) is not expectation value\n", errno); + printf("expectation value is EINVAL(%d)\n", EINVAL); + goto cont; + } + errno = 0; + + /* case 4: header.max_vl invalid */ + printf("check 4: header.max_vl invalid\n"); + wr_buf.header = header; + wr_buf.header.max_vl = 0xffff; /* invalid */ + + iov.iov_len = sizeof(wr_buf); + iov.iov_base = &wr_buf; + if (ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_SETREGSET)"); + goto cont; + } + + /* get header value */ + iov.iov_len = sizeof(work_header); + iov.iov_base = &work_header; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + if (work_header.max_vl != header.max_vl) { + printf("setting invalid max_vl\n"); + goto cont; + } + + /* case 5: header.flags invalid part 1 */ + printf("check 5: header.flags invalid part 1\n"); + wr_buf.header = header; + wr_buf.header.flags = 0xffff; /* invalid */ + + iov.iov_len = sizeof(wr_buf); + iov.iov_base = &wr_buf; + if (!ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + printf("why sccess ptrace(PTRACE_SETREGSET) ???\n"); + goto cont; + } + + if (errno != EINVAL) { + printf("errno(%d) is not expectation value\n", errno); + printf("expectation value is EINVAL(%d)\n", EINVAL); + goto cont; + } + errno = 0; + + /* case 6: header.flags invalid part 2 */ + printf("check 6: header.flags invalid part 2\n"); + wr_buf.header = header; + wr_buf.header.flags = SVE_PT_INVALID_FLAGS; /* invalid */ + + iov.iov_len = sizeof(wr_buf); + iov.iov_base = &wr_buf; + if (!ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + printf("why sccess ptrace(PTRACE_SETREGSET) ???\n"); + goto cont; + } + + if (errno != EINVAL) { + printf("errno(%d) is not expectation value\n", errno); + printf("expectation value is EINVAL(%d)\n", EINVAL); + goto cont; + } + errno = 0; + + /* case 7: iov_len larger than struct user_sve_regs */ + printf("check 7: iov_len larger than struct user_sve_regs\n"); + wr_buf.header = header; + + /* gen register */ + gen_test_sve(&wr_buf.regs, vq); + + /* PTRACE_SETREGSET */ + iov.iov_len = ((sizeof(wr_buf) * 2 + 15) & ~15UL); + iov.iov_base = &wr_buf; + if (ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_SETREGSET)"); + goto cont; + } + + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + goto cont; + } + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* case 8: iov_len larger than MAX_SIZE */ + printf("check 8: iov_len larger than MAX_SIZE\n"); + iov.iov_len = ((SVE_PT_SIZE(SVE_VQ_MAX, + SVE_PT_REGS_SVE) + 15) / 16 * 16) + 16; + l_wr_buf = calloc(1, iov.iov_len); + if (!l_wr_buf) { + printf("calloc() failed.\n"); + goto cont; + } + memcpy(l_wr_buf, &header, sizeof(header)); + gen_test_sve(l_wr_buf + sizeof(struct user_sve_header), vq); + + /* PTRACE_SETREGSET */ + iov.iov_base = l_wr_buf; + if (ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_SETREGSET)"); + free(l_wr_buf); + goto cont; + } + free(l_wr_buf); + + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + goto cont; + } + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* case 9: + * iov_len is sizeof(struct user_sve_header) + + * sizeof(struct fpsimd_sve_state(vq)) / 2 + */ + printf("check 9: iov_len header + " + "(registerarea size / 2) (16 byte align)\n"); + memset(&wr_buf, 0, sizeof(wr_buf)); + + /* gen register */ + wr_buf.header = header; + gen_test_sve(&wr_buf.regs, vq); + + /* PTRACE_SETREGSET */ + iov.iov_len = sizeof(struct user_sve_header) + align_half_regsz; + iov.iov_base = &wr_buf; + if (ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_SETREGSET)"); + goto cont; + } + + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + goto cont; + } + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* case 10: iov_len is sizeof(struct user_sve_header) */ + printf("check 10: iov_len is sizeof(struct user_sve_header)\n"); + memset(&wr_buf, 0, sizeof(wr_buf)); + + /* gen register */ + wr_buf.header = header; + gen_test_sve(&wr_buf.regs, vq); + + /* PTRACE_SETREGSET */ + iov.iov_len = sizeof(struct user_sve_header); + iov.iov_base = &wr_buf; + if (ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_SETREGSET)"); + goto cont; + } + + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + goto cont; + } + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* success */ + ret = 0; +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + return ret; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + pid_t cpid = 0; + int func_ret = 0; + int ret = -1; + + print_test_overview(tp_num); + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error. */ + perror("fork()"); + goto out; + case 0: + /* child process */ + func_ret = child_func(vq); + + /* child exit */ + exit(func_ret); + break; + default: + /* parent process */ + func_ret = parent_func(cpid, vq); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + + /* parent_func check */ + if (func_ret) { + goto out; + } + break; + } + + /* sccess. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/011.c b/test/sve/src/011.c new file mode 100644 index 00000000..8230dd12 --- /dev/null +++ b/test/sve/src/011.c @@ -0,0 +1,112 @@ +/* 011.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* Preservation check signalhsndler(use sigaltstack) before and after. */ +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long used_stack_addr; + +static void sig_handler(int sig) +{ + unsigned int vl = sve_get_vl(); + unsigned int vq = sve_vq_from_vl(vl); + void *wr_buf = calloc(1, (vl * 35) + 15); + void *align_wr_buf = (void *)(((unsigned long)(wr_buf + 15)) & ~15UL); + unsigned int fpscr[2] = { 0, 0 }; + + if (!wr_buf) { + printf("calloc() failed.\n"); + return; + } + + /* stack addr set */ + used_stack_addr = (unsigned long)&vl; + + /* set dirty */ + gen_test_sve_dirty(align_wr_buf, vq); + write_sve(align_wr_buf, vq, fpscr); + + free(wr_buf); +} + +#define ALTSTACK_SIZE 16384 /* recommendation size */ + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + stack_t ss; + unsigned int fpscr[2] = { 0, 0 }; + int ret = -1; + void *sstack = calloc(1, ALTSTACK_SIZE); + void *cmp_ss = calloc(1, ALTSTACK_SIZE); + struct sigaction act; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + if (!sstack || !cmp_ss) { + printf("calloc() failed.\n"); + goto end; + } + + memset(&ss, 0, sizeof(ss)); + ss.ss_sp = sstack; + ss.ss_size = ALTSTACK_SIZE; + ss.ss_flags = 0; + + if (sigaltstack(&ss, NULL)) { + perror("sigaltstack"); + goto out; + } + + memset(&act, 0, sizeof(act)); + act.sa_flags = SA_ONSTACK | SA_RESETHAND; + act.sa_handler = sig_handler; + if (sigaction(SIGUSR1, &act, NULL)) { + perror("sigaction()"); + goto out; + } + + /* before sighandler */ + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + + if (raise(SIGUSR1)) { + perror("raise(SIGUSR1)"); + goto out; + } + + if ((unsigned long)ss.ss_sp > used_stack_addr || + used_stack_addr >= (unsigned long)ss.ss_sp + ss.ss_size) { + printf("altstack area unused.\n"); + goto out; + } + + /* after sighandler */ + read_sve(&rd_buf, vq, fpscr); + + /* compare */ + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("compare failed.\n"); + goto out; + } + + /* success. */ + ret = 0; +out: + free(sstack); + free(cmp_ss); +end: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/012.c b/test/sve/src/012.c new file mode 100644 index 00000000..ab5cbe24 --- /dev/null +++ b/test/sve/src/012.c @@ -0,0 +1,163 @@ +/* 012.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* When SVE is enable, ptrace(GETREGSET + NT_PRFPREG) check. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(unsigned int vq) +{ + int ret = -1; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + + /* clear work area */ + memset(&wr_buf, 0, sizeof(wr_buf)); + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* pre write register */ + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, unsigned int vq) +{ + int ret = -1; + struct iovec iov; + struct user_fpsimd_state rd_fregs; + struct user_fpsimd_state cmp_fregs; + struct user_sve_header header; + + memset(&header, 0, sizeof(header)); + memset(&cmp_fregs, 0, sizeof(cmp_fregs)); + memset(&rd_fregs, 0, sizeof(rd_fregs)); + memset(&iov, 0, sizeof(iov)); + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* PTRACE_GETREGSET(get vl) */ + iov.iov_len = sizeof(header); + iov.iov_base = &header; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + /* gen cmp value */ + gen_test_fpsimd(&cmp_fregs, sve_vq_from_vl(header.vl)); + + /* PTRACE_GETREGSET */ + iov.iov_len = sizeof(rd_fregs); + iov.iov_base = &rd_fregs; + if (ptrace(PTRACE_GETREGSET, cpid, NT_PRFPREG, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + /* compare */ + if (fpsimd_compare(&cmp_fregs, &rd_fregs, sizeof(cmp_fregs))) { + printf("parent-process compare failed.\n"); + goto cont; + } + + /* success */ + ret = 0; +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + return ret; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + pid_t cpid = 0; + int func_ret = 0; + int ret = -1; + + print_test_overview(tp_num); + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error. */ + perror("fork()"); + goto out; + case 0: + /* child process */ + func_ret = child_func(vq); + + /* child exit */ + exit(func_ret); + break; + default: + /* parent process */ + func_ret = parent_func(cpid, vq); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + + /* parent_func check */ + if (func_ret) { + goto out; + } + break; + } + + /* sccess. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/013.c b/test/sve/src/013.c new file mode 100644 index 00000000..e18ed3b5 --- /dev/null +++ b/test/sve/src/013.c @@ -0,0 +1,156 @@ +/* 013.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* When SVE is enable, ptrace(SETREGSET + NT_PRFPREG) check. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(unsigned int vq) +{ + int ret = -1; + struct user_fpsimd_state rd_fregs; + struct user_fpsimd_state cmp_fregs; + + memset(&rd_fregs, 0, sizeof(rd_fregs)); + memset(&cmp_fregs, 0, sizeof(cmp_fregs)); + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* gen register */ + gen_test_fpsimd(&cmp_fregs, vq); + + /* enable SVE */ + sve_get_vl(); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* read register */ + read_fpsimd(&rd_fregs); + + /* compare */ + if (fpsimd_compare(&cmp_fregs, &rd_fregs, sizeof(cmp_fregs))) { + printf("child-process compare failed.\n"); + goto out; + } + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, unsigned int vq) +{ + int ret = -1; + struct user_fpsimd_state wr_fregs; + struct iovec iov; + + memset(&wr_fregs, 0, sizeof(wr_fregs)); + memset(&iov, 0, sizeof(iov)); + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* gen register */ + gen_test_fpsimd(&wr_fregs, vq); + + /* PTRACE_SETREGSET */ + iov.iov_len = sizeof(wr_fregs); + iov.iov_base = &wr_fregs; + if (ptrace(PTRACE_SETREGSET, cpid, NT_PRFPREG, &iov)) { + perror("ptrace(PTRACE_SETREGSET)"); + goto cont; + } + + /* success */ + ret = 0; +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + return ret; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + pid_t cpid = 0; + int func_ret = 0; + int ret = -1; + + print_test_overview(tp_num); + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error. */ + perror("fork()"); + goto out; + case 0: + /* child process */ + func_ret = child_func(vq); + + /* child exit */ + exit(func_ret); + break; + default: + /* parent process */ + func_ret = parent_func(cpid, vq); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + + /* parent_func check */ + if (func_ret) { + goto out; + } + break; + } + + /* sccess. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/014.c b/test/sve/src/014.c new file mode 100644 index 00000000..a5ac8cab --- /dev/null +++ b/test/sve/src/014.c @@ -0,0 +1,180 @@ +/* 014.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* ptrace(SETREGSET + NT_ARM_SVE) check, use brk instruction. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +/* rewrite instruction addr buffer */ +static unsigned long inst_addr; + +static int child_func(unsigned int vq) +{ + int ret = -1; + struct fpsimd_sve_state(vq) cmp_buf; + struct fpsimd_sve_state(vq) rd_buf; + unsigned int fpscr[2] = { 0, 0 }; + + memset(&cmp_buf, 0, sizeof(struct fpsimd_sve_state(vq))); + memset(&rd_buf, 0, sizeof(struct fpsimd_sve_state(vq))); + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* gen and read register */ + gen_test_sve(&cmp_buf, vq); + read_sve(&rd_buf, vq, fpscr); + + /* stop mine, brk instruction */ + /* rewrite nop from parent process */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* read register */ + read_sve(&rd_buf, vq, fpscr); + + /* compare */ + if (sve_compare(&cmp_buf, &rd_buf, vq)) { + printf("child-process compare failed.\n"); + goto out; + } + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, unsigned int vq) +{ + int ret = -1; + struct user_fpsimd_sve_state(vq) wr_buf; + struct iovec iov; + unsigned long addr = 0; + + memset(&wr_buf, 0, sizeof(wr_buf)); + memset(&iov, 0, sizeof(iov)); + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* PTRACE_GETREGSET */ + iov.iov_len = sizeof(wr_buf); + iov.iov_base = &wr_buf; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + /* header compare */ + if (header_compare(&wr_buf.header)) { + printf("ptrace(PTRACE_GETREGSET) header compare failed.\n"); + goto cont; + } + + /* gen register */ + gen_test_sve(&wr_buf.regs, vq); + + /* PTRACE_SETREGSET */ + iov.iov_len = sizeof(wr_buf); + iov.iov_base = &wr_buf; + if (ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_SETREGSET)"); + goto cont; + } + + /* read child brk address */ + addr = ptrace(PTRACE_PEEKDATA, cpid, &inst_addr, NULL); + if ((addr == -1) && errno) { + perror("ptrace(PTRACE_PEEKDATA)"); + goto cont; + } + + /* write nop instruction */ + /* 0xd503201f equal nop instruction */ + if (ptrace(PTRACE_POKETEXT, cpid, addr, 0xd503201fd503201fUL)) { + perror("ptrace(PTRACE_POKETEXT)"); + goto cont; + } + + /* success */ + ret = 0; +cont: + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + return ret; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + pid_t cpid = 0; + int func_ret = 0; + int ret = -1; + + print_test_overview(tp_num); + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error. */ + perror("fork()"); + goto out; + case 0: + /* child process */ + func_ret = child_func(vq); + + /* child exit */ + exit(func_ret); + break; + default: + /* parent process */ + func_ret = parent_func(cpid, vq); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + + /* parent_func check */ + if (func_ret) { + goto out; + } + break; + } + + /* sccess. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/015.c b/test/sve/src/015.c new file mode 100644 index 00000000..fc4ada51 --- /dev/null +++ b/test/sve/src/015.c @@ -0,0 +1,259 @@ +/* 015.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +/* Context switch in the same core check and SIGSTOP -> SIGCONT + * restart check.(need run on background '&') + */ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static sem_t *sync_sem1; +static sem_t *sync_sem2; +static int *parent_core; +static int *sync_flag; +#define CHILD_DONE 1 +#define PARENT_DONE 2 + +static int *child_count; + +static void child_func(unsigned int vq) +{ + const unsigned int cmp_reg = vq * 2; + uint64_t a[cmp_reg], b[cmp_reg]; + int i = 0; + pid_t pid = getpid(); + + printf("[child] pid = %d\n", pid); + + for (i = 0; i < cmp_reg; i++) { + a[i] = pid + i; + } + + asm volatile( + ".cpu cortex-a53+fp+simd+sve\n\t" + "ldr z31, [%0]\n\t" + : + : "r"(a) + : + ); + + for (;;) { + asm volatile( + "add z31.d, z31.d,#1\n\t" + "str z31, [%0]\n\t" + : + : "r"(b) + : + ); + + for (i = 0; i < cmp_reg; i++) { + a[i] = a[i] + 1; + if (a[i] != b[i]) { + printf("[child] sve failed." + "a[%d]=%lu,b[%d]=%lu\n", + i, a[i], i, b[i]); + *child_count = -1; + return; + } + } + *sync_flag = CHILD_DONE; + while (*sync_flag != PARENT_DONE) { + cpu_pause(); + } + (*child_count)++; + cpu_pause(); + } +} + +static void parent_func(void) +{ + uint32x4_t vec_a, vec_b, vec_result; + uint32_t data1[4] __attribute__((aligned(128))); + uint32_t data2[4] __attribute__((aligned(128))) = {1, 2, 3, 4}; + pid_t pid; + int i = 0; + + pid = getpid(); + printf("[parent] pid = %d\n", pid); + + data1[0] = pid + 1; + data1[1] = pid + 2; + data1[2] = pid + 3; + data1[3] = pid + 4; + vec_a = vld1q_u32(data1); + vec_b = vld1q_u32(data2); + + for (;;) { + *sync_flag = PARENT_DONE; + while (*sync_flag != CHILD_DONE) { + cpu_pause(); + } + + vec_result = vec_a - vec_b; + + if ((vgetq_lane_u32(vec_result, 0) != pid) + || (vgetq_lane_u32(vec_result, 1) != pid) + || (vgetq_lane_u32(vec_result, 2) != pid) + || (vgetq_lane_u32(vec_result, 3) != pid)) { + printf("error\n"); + return; + } + + printf("[parent] loop ok. (%d)\n", i); + if (*child_count != -1) { + printf("[child] loop ok. (%d)\n", *child_count); + } + else { + return; + } + i++; + cpu_pause(); + } +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused3, unused4) +{ + pid_t pid = 0; + + print_test_overview(tp_num); + + /* get shared memory */ + sync_sem1 = (sem_t *)mmap(NULL, sizeof(sem_t), + PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); + sync_sem2 = (sem_t *)mmap(NULL, sizeof(sem_t), + PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); + parent_core = (int *)mmap(NULL, sizeof(int), + PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); + sync_flag = (int *)mmap(NULL, sizeof(int), + PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); + child_count = (int *)mmap(NULL, sizeof(int), + PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); + + *parent_core = 0; + *sync_flag = 0; + *child_count = 0; + + /* semaphore init */ + sem_init(sync_sem1, 1, 0); + sem_init(sync_sem2, 1, 0); + + /* create child process */ + pid = fork(); + + switch (pid) { + case -1: + /* fork() error. */ + perror("fork()"); + return -1; + case 0: { + /* child process */ + /* before migrate, get cpunum */ + int old_mycore = sched_getcpu(); + int new_mycore = -1; + + printf("[child] running core %d\n", old_mycore); + + /* sync parent */ + sem_post(sync_sem1); + + /* sync parent */ + sem_wait(sync_sem2); + + /* after migrate, get cpunum */ + new_mycore = sched_getcpu(); + + /* corenum check. */ + if (*parent_core != old_mycore) { + printf("[child] before migrate prevcore " + "%d, nowcore %d\n", old_mycore, new_mycore); + + if (old_mycore == new_mycore) { + printf("TP failed, " + "not migrate child process.\n"); + exit(-1); + } + } else { + printf("[child] migrate not required.\n"); + } + + /* loop */ + child_func(vq); + + /* unmap */ + munmap(sync_sem1, sizeof(sem_t)); + munmap(sync_sem2, sizeof(sem_t)); + munmap(parent_core, sizeof(int)); + munmap(sync_flag, sizeof(int)); + munmap(child_count, sizeof(int)); + + /* child exit */ + exit(-1); + break; + } + + default: { + /* parent process */ + cpu_set_t cpuset; + int result = -1; + + /* sync child */ + sem_wait(sync_sem1); + + /* parent corenum get */ + *parent_core = sched_getcpu(); + + /* child process to migrate parent core */ + printf("[parent] running core %d\n", *parent_core); + printf("[parent] child process migrate/bind " + "to core %d\n", *parent_core); + + CPU_ZERO(&cpuset); + CPU_SET(*parent_core, &cpuset); + + result = sched_setaffinity(pid, sizeof(cpuset), &cpuset); + if (result == -1) { + printf("errno = %d\n", errno); + break; + } + + /* parent core bind */ + printf("[parent] parent process bind " + "to core %d\n", *parent_core); + result = sched_setaffinity(0, sizeof(cpuset), &cpuset); + if (result == -1) { + printf("errno = %d\n", errno); + break; + } + + /* sync child */ + sem_post(sync_sem2); + + /* loop */ + parent_func(); + + /* unmap */ + munmap(sync_sem1, sizeof(sem_t)); + munmap(sync_sem2, sizeof(sem_t)); + munmap(parent_core, sizeof(int)); + munmap(sync_flag, sizeof(int)); + munmap(child_count, sizeof(int)); + break; + } + } + + /* never return */ + printf("RESULT: NG.\n"); + return 0; +} diff --git a/test/sve/src/016.c b/test/sve/src/016.c new file mode 100644 index 00000000..fc39fbbe --- /dev/null +++ b/test/sve/src/016.c @@ -0,0 +1,22 @@ +/* 016.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* prctl(PR_SVE_GET_VL) check. */ +#include +#include +#include "common.h" + +TEST_FUNC(TEST_NUMBER, vl, unused1, unused2, unused3) +{ + int ret = -1; + + print_test_overview(tp_num); + + ret = get_and_compare_vl(vl); + if (ret == 0) { + printf("Expected VL (0x%x) == return VL (0x%x).\n", vl, vl); + printf("RESULT: OK.\n"); + } else { + printf("SVE_GET_VL compare failed.\n"); + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/017.c b/test/sve/src/017.c new file mode 100644 index 00000000..917f424b --- /dev/null +++ b/test/sve/src/017.c @@ -0,0 +1,76 @@ +/* 017.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* prctl(PR_SVE_SET_VL) check. */ +#include +#include +#include +#include "common.h" + +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, unused2) +{ + struct fpsimd_sve_state(vq) wr_buf; + struct fpsimd_sve_state(vq) rd_buf; + unsigned int fpscr[2] = { 0, 0 }; + int i = 0, ret = -1; + const unsigned int set_vl_1 = gen_set_vl(vl); + const unsigned int set_vl_2 = gen_set_vl(set_vl_1); + struct { + unsigned int vl; + unsigned int flags; + void *compare; + } setting[] = { + { set_vl_1, 0, NULL }, + { set_vl_2, 0, NULL } + }; + struct fpsimd_sve_state(sve_vq_from_vl(setting[0].vl)) cmp_0; + struct fpsimd_sve_state(sve_vq_from_vl(setting[1].vl)) cmp_1; + + print_test_overview(tp_num); + + /* buffer initialize */ + memset(&wr_buf, 0, sizeof(wr_buf)); + memset(&rd_buf, 0, sizeof(rd_buf)); + + memset(&cmp_0, 0, sizeof(cmp_0)); + memset(&cmp_1, 0, sizeof(cmp_1)); + gen_test_sve_low_128(&cmp_0, vq, sve_vq_from_vl(setting[0].vl)); + gen_test_sve_low_128(&cmp_1, vq, sve_vq_from_vl(setting[1].vl)); + setting[0].compare = &cmp_0; + setting[1].compare = &cmp_1; + + /* write SVE (default VL) */ + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + read_sve(&rd_buf, vq, fpscr); + + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("Dirty SVE-register for default-VL, failed.\n"); + goto out; + } + + for (i = 0; i < ARRAY_SIZE(setting); i++) { + struct fpsimd_sve_state(sve_vq_from_vl(setting[i].vl)) work_buf; + unsigned int work_fpscr[2] = { 0, 0 }; + + if (set_and_compare_vl(setting[i].vl | setting[i].flags)) { + printf("SVE_SET_VL compare failed.\n"); + goto out; + } + memset(&work_buf, 0, sizeof(work_buf)); + read_sve(&work_buf, (sve_vq_from_vl(setting[i].vl)), + work_fpscr); + + if (sve_compare(setting[i].compare, &work_buf, + sve_vq_from_vl(setting[i].vl))) { + printf("After SET_VL compare failed.\n"); + goto out; + } + } + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/018.c b/test/sve/src/018.c new file mode 100644 index 00000000..30dbf380 --- /dev/null +++ b/test/sve/src/018.c @@ -0,0 +1,53 @@ +/* 018.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* prctl(PR_SVE_SET_VL, PR_SVE_SET_VL_THREAD) on multi thread. */ +#include +#include +#include +#include +#include +#include "common.h" + +static int sync; +static void *child_function(void *arg) +{ + while (!sync) { + cpu_pause(); + } + return NULL; +} + +TEST_FUNC(TEST_NUMBER, vl, unused1, unused2, unused3) +{ + int ret = -1; + pthread_t thread; + + print_test_overview(tp_num); + + if (pthread_create(&thread, NULL, child_function, NULL)) { + printf("pthread_create: error.\n"); + goto out; + } + + ret = set_and_compare_vl(vl); + if (ret != EINVAL) { + printf("SVE_SET_VL is not EINVAL error.\n"); + goto join_out; + } + + /* success */ + ret = 0; + +join_out: + sync = 1; + if (pthread_join(thread, NULL)) { + printf("pthread_join: error.\n"); + ret = -1; + } +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/019.c b/test/sve/src/019.c new file mode 100644 index 00000000..ef88a27d --- /dev/null +++ b/test/sve/src/019.c @@ -0,0 +1,58 @@ +/* 019.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* prctl(PR_SVE_SET_VL) parameters pattern check. */ +#include +#include +#include +#include +#include "common.h" + +TEST_FUNC(TEST_NUMBER, vl, unused1, unused2, unused3) +{ + int ret = 0, func_ret = 0; + int i, j; + + struct params { + unsigned int vl; + unsigned int flags; + }; + struct params unsup_vl[] = { { UNSPPORT_VL, 0 } }; + struct params inval_vl[] = { { INVALID_VL_1, 0 }, + { INVALID_VL_2, 0 }, + { INVALID_VL_3, 0 } }; + struct params inval_fl[] = { { vl, PR_SVE_INVALID_FLAGS } }; + + struct { + char *pattern_string; + struct params *param; + int param_count; + } testcases[] = { + { "unsupport VL", unsup_vl, ARRAY_SIZE(unsup_vl) }, + { "invalid VL", inval_vl, ARRAY_SIZE(inval_vl) }, + { "invalid FLAGS", inval_fl, ARRAY_SIZE(inval_fl) } + }; + + print_test_overview(tp_num); + + for (i = 0; i < ARRAY_SIZE(testcases); i++) { + printf("check %d : %s setting.\n", + i, testcases[i].pattern_string); + + for (j = 0; j < testcases[i].param_count; j++) { + func_ret = set_and_compare_vl( + testcases[i].param[j].vl | + testcases[i].param[j].flags); + if (func_ret != EINVAL) { + printf("%s (%d, %d) setting succeeded.\n", + testcases[i].pattern_string, + testcases[i].param[j].vl, + testcases[i].param[j].flags); + printf("RESULT: NG.\n"); + ret = -1; + goto out; + } + } + } + printf("RESULT: OK.\n"); +out: + return ret; +} diff --git a/test/sve/src/020.c b/test/sve/src/020.c new file mode 100644 index 00000000..7ae9c807 --- /dev/null +++ b/test/sve/src/020.c @@ -0,0 +1,85 @@ +/* 020.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Use fork() VL check if setting INHERIT flags. */ +#include +#include +#include +#include +#include +#include +#include "common.h" + +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, unused2) +{ + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + pid_t cpid; + int ret = -1; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + read_sve(&rd_buf, vq, fpscr); + + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("parent-process Dirty SVE-register setting failed.\n"); + goto out; + } + + if (set_and_compare_vl(gen_set_vl(vl) | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto out; + } + + cpid = fork(); + switch (cpid) { + case -1: + /* error */ + printf("ERROR: fork()=%d, errno=%d\n", cpid, errno); + goto out; + case 0: { + /* child process */ + const int c_vq = sve_vq_from_vl(gen_set_vl(vl)); + struct fpsimd_sve_state(c_vq) c_rd_buf; + struct fpsimd_sve_state(c_vq) c_cmp_buf; + + memset(&c_rd_buf, 0, sizeof(c_rd_buf)); + if (get_and_compare_vl(gen_set_vl(vl) | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + exit(-1); + } + read_sve(&c_rd_buf, sve_vq_from_vl(gen_set_vl(vl)), fpscr); + + memset(&c_cmp_buf, 0, sizeof(c_cmp_buf)); + gen_test_sve_low_128(&c_cmp_buf, vq, + sve_vq_from_vl(gen_set_vl(vl))); + + if (sve_compare(&c_cmp_buf, &c_rd_buf, + sve_vq_from_vl(gen_set_vl(vl)))) { + printf("child-process compare failed.\n"); + exit(-1); + } + exit(0); + break; + } + default: + /* parent process */ + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + break; + } + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/021.c b/test/sve/src/021.c new file mode 100644 index 00000000..048b64a3 --- /dev/null +++ b/test/sve/src/021.c @@ -0,0 +1,101 @@ +/* 021.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Use pthread_create() VL check if setting INHERIT flags. */ +#include +#include +#include +#include +#include "common.h" + +static void *child_function(void *arg) +{ + void *ret = (void *)-1; + unsigned int vl = sve_get_vl(); + unsigned int vq = sve_vq_from_vl(vl); + unsigned int *dfl_vl = (unsigned int *)arg; + void *rd_buf = calloc(1, (vl * 35) + 15); + void *cmp_buf = NULL, *align_cmp_buf = NULL; + void *align_rd_buf = (void *)(((unsigned long)(rd_buf + 15)) & ~15UL); + unsigned int fpscr[2] = { 0, 0 }; + + if (!rd_buf) { + printf("calloc() failed.\n"); + goto out; + } + + if (get_and_compare_vl(gen_set_vl(*dfl_vl) | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto rd_free_out; + } + read_sve(align_rd_buf, vq, fpscr); + + cmp_buf = calloc(1, (vl * 35) + 15); + if (!cmp_buf) { + printf("calloc() failed.\n"); + goto rd_free_out; + } + align_cmp_buf = (void *)(((unsigned long)(rd_buf + 15)) & ~15UL); + gen_test_sve_low_128(align_cmp_buf, sve_vq_from_vl(*dfl_vl), vq); + + if (sve_compare(align_cmp_buf, align_rd_buf, vq)) { + printf("child-thread register compare failed.\n"); + goto cmp_free_out; + } + + /* success */ + ret = NULL; + +cmp_free_out: + free(cmp_buf); +rd_free_out: + free(rd_buf); +out: + pthread_exit(ret); + return NULL; +} + +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, unused2) +{ + void *pret = (void *)-1; + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + pthread_t thread; + int ret = -1; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + read_sve(&rd_buf, vq, fpscr); + + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("parent-thread compare failed.\n"); + goto out; + } + + if (set_and_compare_vl(gen_set_vl(vl) | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto out; + } + + if (pthread_create(&thread, NULL, child_function, &vl)) { + printf("pthread_create: error.\n"); + goto out; + } + + if (pthread_join(thread, &pret)) { + printf("pthread_join: error.\n"); + goto out; + } +out: + if (pret == NULL) { + ret = 0; + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/022.c b/test/sve/src/022.c new file mode 100644 index 00000000..c9bf4af2 --- /dev/null +++ b/test/sve/src/022.c @@ -0,0 +1,56 @@ +/* 022.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Use execve() VL check if setting INHERIT flags. + * (execve target is #1 testcase) + */ +#include +#include +#include +#include +#include "common.h" + +extern char **environ; +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, tp_argv) +{ + char *self = (char *)tp_argv[0]; + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + char *const execve_args[] = { + "", "1", NULL + }; + int ret = -1; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + read_sve(&rd_buf, vq, fpscr); + + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("Dirty SVE-register before executing execve(), NG.\n"); + goto out; + } + printf("Dirty SVE-register before executing execve(), OK.\n"); + + if (set_and_compare_vl(gen_set_vl(vl) | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto out; + } + + printf("=== look at the contents of the register " + "since run execve. ===\n"); + + ret = execve(self, execve_args, environ); + if (ret == -1) { + perror("execve()"); + } else { + ret = -1; + printf("Why return execve() ???\n"); + } +out: + printf("RESULT: NG.\n"); + return ret; +} diff --git a/test/sve/src/023.c b/test/sve/src/023.c new file mode 100644 index 00000000..c710ba95 --- /dev/null +++ b/test/sve/src/023.c @@ -0,0 +1,93 @@ +/* 023.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Preservation VL check signalhsndler before and after. */ +#include +#include +#include +#include +#include +#include +#include "common.h" + +static void sig_handler(int sig) +{ + unsigned int vl = sve_get_vl(); + unsigned int vq = sve_vq_from_vl(vl); + void *wr_buf = calloc(1, (vl * 35) + 15); + void *align_wr_buf = (void *)(((unsigned long)(wr_buf + 15)) & ~15UL); + unsigned int fpscr[2] = { 0, 0 }; + + if (!wr_buf) { + printf("calloc() failed.\n"); + goto out; + } + + /* set dirty */ + gen_test_sve_dirty(align_wr_buf, vq); + write_sve(align_wr_buf, vq, fpscr); + + free(wr_buf); +out: + return; +} + +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, unused2) +{ + const int use_vq = sve_vq_from_vl(gen_set_vl(vl)); + struct fpsimd_sve_state(use_vq) rd_buf; + struct fpsimd_sve_state(use_vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + int ret = -1; + unsigned int before_vl; + unsigned int after_vl; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + if (signal(SIGUSR1, sig_handler) == SIG_ERR) { + printf("Set signal handler failed.\n"); + goto out; + } + + if (set_and_compare_vl(gen_set_vl(vl) | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto out; + } + + /* before sighandler */ + gen_test_sve(&wr_buf, sve_vq_from_vl(gen_set_vl(vl))); + write_sve(&wr_buf, sve_vq_from_vl(gen_set_vl(vl)), fpscr); + + before_vl = sve_get_vl(); + if (raise(SIGUSR1)) { + perror("raise(SIGUSR1)"); + goto out; + } + after_vl = sve_get_vl(); + + if (before_vl != after_vl) { + printf("before VL=%d, after VL=%d\n", before_vl, after_vl); + printf("VL compare failed.\n"); + goto out; + } + + /* after sighandler */ + read_sve(&rd_buf, sve_vq_from_vl(after_vl), fpscr); + + /* compare */ + if (sve_compare(&wr_buf, &rd_buf, sve_vq_from_vl(after_vl))) { + printf("compare failed.\n"); + goto out; + } + + /* success. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/024.c b/test/sve/src/024.c new file mode 100644 index 00000000..ba2e79f5 --- /dev/null +++ b/test/sve/src/024.c @@ -0,0 +1,235 @@ +/* 024.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Preservation VL check migrate cpus before and after. */ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(unsigned int vl, unsigned int vq, int *c2p) +{ + const unsigned int set_vl = gen_set_vl(vl); + const unsigned int set_vq = sve_vq_from_vl(set_vl); + int ret = -1; + unsigned int before_id, after_id; + unsigned int before_vl, after_vl; + struct fpsimd_sve_state(set_vq) before_buf; + struct fpsimd_sve_state(set_vq) after_buf; + unsigned int fpscr[2] = { 0, 0 }; + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* clear buffer */ + memset(&before_buf, 0, sizeof(before_buf)); + memset(&after_buf, 0, sizeof(after_buf)); + + /* get running core number and notify parent */ + before_id = sched_getcpu(); + printf("[child] before migrate. (cpuid=%d)\n", before_id); + write(c2p[1], &before_id, sizeof(before_id)); + + if (set_and_compare_vl(set_vl | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto out; + } + + /* write, read and show register */ + gen_test_sve(&before_buf, set_vq); + write_sve(&before_buf, set_vq, fpscr); + + before_vl = sve_get_vl(); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + after_vl = sve_get_vl(); + + /* get after migrate running core number and notify parent */ + after_id = sched_getcpu(); + printf("[child] after migrate. (cpuid=%d)\n", after_id); + + /* migrate check */ + if (before_id == after_id) { + printf("not migrate process.\n"); + goto out; + } + + if (before_vl != after_vl) { + printf("bevore VL=%d, after VL=%d\n", before_vl, after_vl); + printf("VL compare failed.\n"); + goto out; + } + + /* read and show register */ + read_sve(&after_buf, set_vq, fpscr); + + /* compare */ + if (sve_compare(&before_buf, &after_buf, set_vq)) { + printf("child-process compare failed.\n"); + goto out; + } + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, int *c2p) +{ + int ret = -1; + int i = 0; + cpu_set_t *cpusetp_child; + size_t size; + unsigned int c_before_id; + unsigned int migrate_cpu = -1; + unsigned int parent_cpu; + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* read child process running core number */ + read(c2p[0], &c_before_id, sizeof(c_before_id)); + + /* getaffinity mask allocate */ + size = CPU_ALLOC_SIZE(SMP_MAX_CPUS); + cpusetp_child = CPU_ALLOC(SMP_MAX_CPUS); + + if (!cpusetp_child) { + printf("(child process) alloc failed.\n"); + goto cont; + } + CPU_ZERO_S(size, cpusetp_child); + + /* get child affinity */ + if (sched_getaffinity(cpid, size, cpusetp_child)) { + perror("sched_getaffinity()"); + goto cont; + } + + /* calc migrate core number */ + parent_cpu = sched_getcpu(); + for (i = 0; i < SMP_MAX_CPUS; i++) { + if (CPU_ISSET(i, cpusetp_child)) { + if ((i != parent_cpu) && (i != c_before_id)) { + migrate_cpu = i; + break; + } + } + } + + /* migrate core number check */ + if (migrate_cpu < 0) { + printf("Bad target to migrate child process.\n"); + goto cont; + } + + /* set affinity */ + CPU_ZERO_S(size, cpusetp_child); + CPU_SET_S(migrate_cpu, size, cpusetp_child); + + if (sched_setaffinity(cpid, size, cpusetp_child)) { + perror("sched_setaffinity()"); + goto out; + } + CPU_FREE(cpusetp_child); + + /* success */ + ret = 0; +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + return ret; +} + +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, unused2) +{ + pid_t cpid = 0; + int func_ret = -1; + int ret = -1; + int c2p[2] = { -1, -1 }; + + print_test_overview(tp_num); + + /* allocation pipe */ + if (pipe(c2p)) { + printf("pipe() Failed.\n"); + goto out; + } + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error */ + perror("fork()"); + goto close_out; + case 0: + /* child process */ + exit(child_func(vl, vq, c2p)); + break; + + default: + /* parent process */ + func_ret = parent_func(cpid, c2p); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto close_out; + } + + /* parent_func check */ + if (func_ret) { + goto close_out; + } + break; + } + + /* success. */ + ret = 0; +close_out: + /* close pipe */ + close(c2p[0]); + close(c2p[1]); +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return 0; +} diff --git a/test/sve/src/025.c b/test/sve/src/025.c new file mode 100644 index 00000000..9cbbeafe --- /dev/null +++ b/test/sve/src/025.c @@ -0,0 +1,170 @@ +/* 025.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* ptrace(GETREGSET + NT_ARM_SVE) VL check. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(unsigned int vq) +{ + int ret = -1; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + + /* clear work area */ + memset(&wr_buf, 0, sizeof(wr_buf)); + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* pre write register */ + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, unsigned int vq) +{ + int ret = -1; + struct fpsimd_sve_state(vq) cmp_buf; + struct user_fpsimd_sve_state(vq) rd_buf; + struct iovec iov; + + memset(&cmp_buf, 0, sizeof(cmp_buf)); + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&iov, 0, sizeof(iov)); + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* gen cmp value */ + gen_test_sve(&cmp_buf, vq); + + /* PTRACE_GETREGSET */ + iov.iov_len = sizeof(rd_buf); + iov.iov_base = &rd_buf; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + /* check Header */ + printf("size = 0x%x\n", rd_buf.header.size); + printf("max_size = 0x%x\n", rd_buf.header.max_size); + printf("vl = 0x%x\n", rd_buf.header.vl); + printf("max_vl = 0x%x\n", rd_buf.header.max_vl); + printf("flags = 0x%x\n", rd_buf.header.flags); + + if (header_compare(&rd_buf.header)) { + printf("child-process header compare failed.\n"); + goto cont; + } + + /* compare */ + if (sve_compare(&cmp_buf, &rd_buf.regs, vq)) { + printf("child-process compare failed.\n"); + goto cont; + } + + /* success */ + ret = 0; +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + return ret; +} + +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, unused2) +{ + pid_t cpid = 0; + int func_ret = 0; + int ret = -1; + + print_test_overview(tp_num); + + if (set_and_compare_vl(gen_set_vl(vl) | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto out; + } + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error. */ + perror("fork()"); + goto out; + case 0: + /* child process */ + func_ret = child_func(sve_vq_from_vl(gen_set_vl(vl))); + + /* child exit */ + exit(func_ret); + break; + default: + + /* parent process */ + func_ret = parent_func(cpid, sve_vq_from_vl(gen_set_vl(vl))); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + + /* parent_func check */ + if (func_ret) { + goto out; + } + break; + } + + /* sccess. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/026.c b/test/sve/src/026.c new file mode 100644 index 00000000..34dd3e15 --- /dev/null +++ b/test/sve/src/026.c @@ -0,0 +1,181 @@ +/* 026.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* ptrace(SETREGSET + NT_ARM_SVE) VL check. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(const unsigned int vl) +{ + int ret = -1; + /* before SETREGS VQ */ + const unsigned int bf_vq = sve_vq_from_vl(vl); + /* after SETREGS VQ */ + const unsigned int af_vq = sve_vq_from_vl(gen_set_vl(vl)); + struct fpsimd_sve_state(bf_vq) bf_rd_buf; + struct fpsimd_sve_state(af_vq) cmp_buf, af_rd_buf; + unsigned int fpscr[2] = { 0, 0 }; + + /* struct initialize */ + memset(&bf_rd_buf, 0, sizeof(bf_rd_buf)); + memset(&cmp_buf, 0, sizeof(cmp_buf)); + memset(&af_rd_buf, 0, sizeof(af_rd_buf)); + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* gen and read register */ + gen_test_sve(&cmp_buf, af_vq); + read_sve(&bf_rd_buf, bf_vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* read register */ + read_sve(&af_rd_buf, af_vq, fpscr); + + /* compare */ + if (sve_compare(&cmp_buf, &af_rd_buf, af_vq)) { + printf("child-process compare failed.\n"); + goto out; + } + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, const unsigned int vl) +{ + int ret = -1; + /* after SETREGS VQ */ + const unsigned int af_vq = sve_vq_from_vl(gen_set_vl(vl)); + struct user_fpsimd_sve_state(af_vq) wr_buf; + struct iovec iov; + + /* struct initialize */ + memset(&wr_buf, 0, sizeof(wr_buf)); + memset(&iov, 0, sizeof(iov)); + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* PTRACE_GETREGSET */ + iov.iov_len = sizeof(wr_buf.header); + iov.iov_base = &wr_buf.header; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + /* check Header */ + if (header_compare(&wr_buf.header)) { + printf("header compare failed.\n"); + goto cont; + } + + /* set VL & flags */ + wr_buf.header.vl = gen_set_vl(vl); + wr_buf.header.flags |= PR_SVE_VL_INHERIT; + + /* gen register */ + gen_test_sve(&wr_buf.regs, af_vq); + + /* PTRACE_SETREGSET */ + iov.iov_len = sizeof(wr_buf); + iov.iov_base = &wr_buf; + if (ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_SETREGSET)"); + goto cont; + } + + /* success */ + ret = 0; +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + return ret; +} + +TEST_FUNC(TEST_NUMBER, vl, unused1, unused2, unused3) +{ + pid_t cpid = 0; + int func_ret = 0; + int ret = -1; + + print_test_overview(tp_num); + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error. */ + perror("fork()"); + goto out; + case 0: + /* child process */ + func_ret = child_func(vl); + + /* child exit */ + exit(func_ret); + break; + default: + /* parent process */ + func_ret = parent_func(cpid, vl); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + + /* parent_func check */ + if (func_ret) { + goto out; + } + break; + } + + /* success. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/027.c b/test/sve/src/027.c new file mode 100644 index 00000000..2bba53ca --- /dev/null +++ b/test/sve/src/027.c @@ -0,0 +1,84 @@ +/* 027.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Use fork() VL check if not setting INHERIT flags. */ +#include +#include +#include +#include +#include +#include +#include "common.h" + +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, unused2) +{ + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + pid_t cpid = 0; + int ret = -1; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + read_sve(&rd_buf, vq, fpscr); + + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("parent-process Dirty SVE-register setting failed.\n"); + goto out; + } + + if (set_and_compare_vl(gen_set_vl(vl))) { + printf("prctl: error.\n"); + goto out; + } + + cpid = fork(); + switch (cpid) { + case -1: + /* error */ + printf("ERROR: fork()=%d, errno=%d\n", cpid, errno); + goto out; + case 0: { + /* child process */ + const int c_vq = sve_vq_from_vl(gen_set_vl(vl)); + struct fpsimd_sve_state(c_vq) c_rd_buf; + struct fpsimd_sve_state(c_vq) c_cmp_buf; + + memset(&c_rd_buf, 0, sizeof(c_rd_buf)); + if (get_and_compare_vl(gen_set_vl(vl))) { + printf("prctl: error.\n"); + exit(-1); + } + read_sve(&c_rd_buf, sve_vq_from_vl(gen_set_vl(vl)), fpscr); + + memset(&c_cmp_buf, 0, sizeof(c_cmp_buf)); + gen_test_sve_low_128(&c_cmp_buf, vq, + sve_vq_from_vl(gen_set_vl(vl))); + + if (sve_compare(&c_cmp_buf, &c_rd_buf, + sve_vq_from_vl(gen_set_vl(vl)))) { + printf("child-process compare failed.\n"); + exit(-1); + } + exit(0); + break; + } + default: + /* parent process */ + if (wait_child_exit(cpid)) { + goto out; + } + break; + } + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/028.c b/test/sve/src/028.c new file mode 100644 index 00000000..c2b24634 --- /dev/null +++ b/test/sve/src/028.c @@ -0,0 +1,106 @@ +/* 028.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Use pthread_create() VL check if not setting INHERIT flags. */ +#include +#include +#include +#include +#include "common.h" + +static void *child_function(void *arg) +{ + void *ret = (void *)-1; + unsigned int vl = sve_get_vl(); + unsigned int vq = sve_vq_from_vl(vl); + unsigned int *dfl_vl = (unsigned int *)arg; + void *rd_buf = calloc(1, (vl * 35) + 15); + void *cmp_buf = NULL, *align_cmp_buf = NULL; + void *align_rd_buf = (void *)(((unsigned long)(rd_buf + 15)) & ~15UL); + unsigned int fpscr[2] = { 0, 0 }; + + if (!rd_buf) { + printf("calloc() failed.\n"); + goto out; + } + + if (get_and_compare_vl(gen_set_vl(*dfl_vl))) { + printf("prctl: error.\n"); + goto rd_free_out; + } + read_sve(align_rd_buf, vq, fpscr); + + cmp_buf = calloc(1, (vl * 35) + 15); + if (!cmp_buf) { + printf("calloc() failed.\n"); + goto rd_free_out; + } + align_cmp_buf = (void *)(((unsigned long)(rd_buf + 15)) & ~15UL); + gen_test_sve_low_128(align_cmp_buf, vq, vq); + + if (sve_compare(align_cmp_buf, align_rd_buf, vq)) { + printf("child-thread register compare failed.\n"); + goto cmp_free_out; + } + + /* success */ + ret = NULL; + +cmp_free_out: + free(cmp_buf); +rd_free_out: + free(rd_buf); +out: + pthread_exit(ret); + return NULL; +} + +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, unused2) +{ + void *pret; + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + pthread_t thread; + int ret = -1; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + read_sve(&rd_buf, vq, fpscr); + + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("parent-thread compare failed.\n"); + goto out; + } + + if (set_and_compare_vl(gen_set_vl(vl))) { + printf("prctl: error.\n"); + goto out; + } + + if (pthread_create(&thread, NULL, child_function, &vl)) { + printf("pthread_create: error.\n"); + goto out; + } + + if (pthread_join(thread, &pret)) { + printf("pthread_join: error.\n"); + goto out; + } + + if (pret != NULL) { + printf("child thread error.\n"); + goto out; + } + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return 0; +} diff --git a/test/sve/src/029.c b/test/sve/src/029.c new file mode 100644 index 00000000..cf541f87 --- /dev/null +++ b/test/sve/src/029.c @@ -0,0 +1,56 @@ +/* 029.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Use execve() VL check if not setting INHERIT flags. + * (execve target is #1 testcase) + */ +#include +#include +#include +#include +#include "common.h" + +extern char **environ; +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, tp_argv) +{ + char *self = (char *)tp_argv[0]; + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + char *const execve_args[] = { + "", "1", NULL + }; + int ret = -1; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + read_sve(&rd_buf, vq, fpscr); + + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("Dirty SVE-register before executing execve(), NG.\n"); + goto out; + } + printf("Dirty SVE-register before executing execve(), OK.\n"); + + if (set_and_compare_vl(gen_set_vl(vl))) { + printf("prctl: error.\n"); + goto out; + } + + printf("=== look at the contents of the " + "register since run execve. ===\n"); + + ret = execve(self, execve_args, environ); + if (ret == -1) { + perror("execve()"); + } else { + ret = -1; + printf("Why return execve() ???\n"); + } +out: + printf("RESULT: NG.\n"); + return ret; +} diff --git a/test/sve/src/030.c b/test/sve/src/030.c new file mode 100644 index 00000000..ee7f7f23 --- /dev/null +++ b/test/sve/src/030.c @@ -0,0 +1,184 @@ +/* 030.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* When SVE is enable, ptrace(SETREGSET + NT_ARM_SVE + + * SVE_PT_REGS_FPSIMD), regs fpsimd struct check. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(unsigned int vq) +{ + int ret = -1; + struct fpsimd_sve_state(vq) cmp_buf; + struct fpsimd_sve_state(vq) rd_buf; + unsigned int fpscr[2] = { 0, 0 }; + + memset(&cmp_buf, 0, sizeof(cmp_buf)); + memset(&rd_buf, 0, sizeof(rd_buf)); + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* gen and read register */ + gen_test_sve_low_128(&cmp_buf, vq, vq); + read_sve(&rd_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* read register */ + read_sve(&rd_buf, vq, fpscr); + + /* compare */ + if (sve_compare(&cmp_buf, &rd_buf, vq)) { + printf("child-process compare failed\n"); + goto out; + } + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, unsigned int vq) +{ + int ret = -1; + struct user_sve_header *wr_buf = NULL; + struct iovec iov; + size_t buf_size = sizeof(struct user_sve_header) + + sizeof(struct user_fpsimd_state); + + wr_buf = calloc(1, buf_size); + if (!wr_buf) { + printf("calloc() failed.\n"); + goto out; + } + memset(&iov, 0, sizeof(iov)); + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* PTRACE_GETREGSET */ + iov.iov_len = sizeof(struct user_sve_header); + iov.iov_base = wr_buf; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + /* header compare */ + if (header_compare(wr_buf)) { + printf("ptrace(PTRACE_GETREGSET) header compare failed.\n"); + goto cont; + } + + /* set flags FPSIMD set */ + wr_buf->flags &= ~SVE_PT_REGS_SVE; + wr_buf->flags |= SVE_PT_REGS_FPSIMD; + + /* gen register */ + gen_test_fpsimd((struct user_fpsimd_state *)(wr_buf + 1), vq); + + /* PTRACE_SETREGSET */ + iov.iov_len = buf_size; + iov.iov_base = wr_buf; + if (ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_SETREGSET)"); + goto cont; + } + + /* success */ + ret = 0; + +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + if (wr_buf) { + free(wr_buf); + } + return ret; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + pid_t cpid = 0; + int func_ret = 0; + int ret = -1; + + print_test_overview(tp_num); + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error. */ + perror("fork()"); + goto out; + case 0: + /* child process */ + func_ret = child_func(vq); + + /* child exit */ + exit(func_ret); + break; + default: + /* parent process */ + func_ret = parent_func(cpid, vq); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + + /* parent_func check */ + if (func_ret) { + goto out; + } + break; + } + + /* sccess. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/031.c b/test/sve/src/031.c new file mode 100644 index 00000000..b10ec68b --- /dev/null +++ b/test/sve/src/031.c @@ -0,0 +1,175 @@ +/* 031.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* When SVE is enable, ptrace(SETREGSET + NT_ARM_SVE + + * SVE_PT_REGS_FPSIMD), regs sve struct check. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(unsigned int vq) +{ + int ret = -1; + struct fpsimd_sve_state(vq) cmp_buf; + struct fpsimd_sve_state(vq) rd_buf; + unsigned int fpscr[2] = { 0, 0 }; + + memset(&cmp_buf, 0, sizeof(cmp_buf)); + memset(&rd_buf, 0, sizeof(rd_buf)); + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* gen and read register */ + gen_test_sve_low_128(&cmp_buf, VQ_128_BIT, vq); + read_sve(&rd_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* read register */ + read_sve(&rd_buf, vq, fpscr); + + /* compare */ + if (sve_compare(&cmp_buf, &rd_buf, vq)) { + printf("child-process compare failed.\n"); + goto out; + } + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid, unsigned int vq) +{ + int ret = -1; + struct user_fpsimd_sve_state(vq) wr_buf; + struct iovec iov; + + memset(&wr_buf, 0, sizeof(wr_buf)); + memset(&iov, 0, sizeof(iov)); + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* PTRACE_GETREGSET */ + iov.iov_len = sizeof(wr_buf); + iov.iov_base = &wr_buf; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + /* header compare */ + if (header_compare(&wr_buf.header)) { + printf("ptrace(PTRACE_GETREGSET) header compare failed.\n"); + goto cont; + } + + /* set flags FPSIMD set */ + wr_buf.header.flags &= ~SVE_PT_REGS_SVE; + wr_buf.header.flags |= SVE_PT_REGS_FPSIMD; + + /* gen register */ + gen_test_sve(&wr_buf.regs, vq); + + /* PTRACE_SETREGSET */ + iov.iov_len = sizeof(wr_buf); + iov.iov_base = &wr_buf; + if (ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_SETREGSET)"); + goto cont; + } + + /* success */ + ret = 0; + +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + return ret; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + pid_t cpid = 0; + int func_ret = 0; + int ret = -1; + + print_test_overview(tp_num); + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error. */ + perror("fork()"); + goto out; + case 0: + /* child process */ + func_ret = child_func(vq); + + /* child exit */ + exit(func_ret); + break; + default: + /* parent process */ + func_ret = parent_func(cpid, vq); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + + /* parent_func check */ + if (func_ret) { + goto out; + } + break; + } + + /* sccess. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/032.c b/test/sve/src/032.c new file mode 100644 index 00000000..719cbd98 --- /dev/null +++ b/test/sve/src/032.c @@ -0,0 +1,81 @@ +/* 032.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Use fork() VL check if setting ONEXEC flags. */ +#include +#include +#include +#include +#include +#include +#include "common.h" + +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, unused2) +{ + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + pid_t cpid; + int ret = -1; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + read_sve(&rd_buf, vq, fpscr); + + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("parent-process compare failed.\n"); + goto out; + } + + if (set_and_compare_vl(gen_set_vl(vl) | PR_SVE_SET_VL_ONEXEC)) { + printf("prctl: error.\n"); + goto out; + } + + cpid = fork(); + switch (cpid) { + case -1: + /* error */ + printf("ERROR: fork()=%d, errno=%d\n", cpid, errno); + goto out; + case 0: { + /* child process */ + struct fpsimd_sve_state(vq) c_rd_buf; + struct fpsimd_sve_state(vq) c_cmp_buf; + + memset(&c_rd_buf, 0, sizeof(c_rd_buf)); + if (get_and_compare_vl(vl)) { + printf("prctl: error.\n"); + exit(-1); + } + read_sve(&c_rd_buf, vq, fpscr); + + memset(&c_cmp_buf, 0, sizeof(c_cmp_buf)); + gen_test_sve_low_128(&c_cmp_buf, vq, vq); + + if (sve_compare(&c_cmp_buf, &c_rd_buf, vq)) { + printf("child-process compare failed.\n"); + exit(-1); + } + exit(0); + break; + } + default: + /* parent process */ + if (wait_child_exit(cpid)) { + goto out; + } + break; + } + ret = 0; +out: + if (ret == -1) { + printf("RESULT: NG.\n"); + } else { + printf("RESULT: OK.\n"); + } + return ret; +} diff --git a/test/sve/src/033.c b/test/sve/src/033.c new file mode 100644 index 00000000..31c0c943 --- /dev/null +++ b/test/sve/src/033.c @@ -0,0 +1,107 @@ +/* 033.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Use pthread_create() VL check if setting ONEXEC flags. */ +#include +#include +#include +#include +#include "common.h" + +static void *child_function(void *arg) +{ + void *ret = (void *)-1; + unsigned int vl = sve_get_vl(); + unsigned int vq = sve_vq_from_vl(vl); + unsigned int *exp_vl = (unsigned int *)arg; + void *rd_buf = calloc(1, (vl * 35) + 15); + void *cmp_buf = NULL, *align_cmp_buf = NULL; + void *align_rd_buf = (void *)(((unsigned long)(rd_buf + 15)) & ~15UL); + unsigned int fpscr[2] = { 0, 0 }; + + if (!rd_buf) { + printf("calloc() failed.\n"); + goto out; + } + + if (get_and_compare_vl(*exp_vl)) { + printf("prctl: error.\n"); + goto rd_free_out; + } + read_sve(align_rd_buf, vq, fpscr); + + cmp_buf = calloc(1, (vl * 35) + 15); + if (!cmp_buf) { + printf("calloc() failed.\n"); + goto rd_free_out; + } + align_cmp_buf = (void *)(((unsigned long)(rd_buf + 15)) & ~15UL); + gen_test_sve_low_128(align_cmp_buf, vq, vq); + + if (sve_compare(align_cmp_buf, align_rd_buf, vq)) { + printf("child-thread register compare failed.\n"); + goto cmp_free_out; + } + + /* success */ + ret = NULL; + +cmp_free_out: + free(cmp_buf); +rd_free_out: + free(rd_buf); +out: + pthread_exit(ret); + return NULL; +} + +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, unused2) +{ + void *pret = (void *)-1; + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + pthread_t thread; + int ret = -1; + + print_test_overview(tp_num); + + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + read_sve(&rd_buf, vq, fpscr); + + if (sve_compare(&wr_buf, &rd_buf, vq)) { + printf("parent-thread compare failed.\n"); + goto out; + } + + if (set_and_compare_vl(gen_set_vl(vl) | PR_SVE_SET_VL_ONEXEC)) { + printf("prctl: error.\n"); + goto out; + } + + memset(&thread, 0, sizeof(thread)); + if (pthread_create(&thread, NULL, child_function, &vl)) { + printf("pthread_create: error.\n"); + goto out; + } + + if (pthread_join(thread, &pret)) { + printf("pthread_join: error.\n"); + goto out; + } + + if (pret != NULL) { + printf("child thread error.\n"); + goto out; + } + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/034.c b/test/sve/src/034.c new file mode 100644 index 00000000..5bc942a4 --- /dev/null +++ b/test/sve/src/034.c @@ -0,0 +1,71 @@ +/* 034.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Use execve() VL check if setting ONEXEC flags. */ +#include +#include +#include +#include +#include "common.h" + +extern char **environ; +TEST_FUNC(TEST_NUMBER, vl, unused2, tp_argc, tp_argv) +{ + char *self = (char *)tp_argv[0]; + char arg0[FILENAME_MAX] = ""; + char arg1[8] = ""; + char arg2[8] = ""; + char arg3[8] = ""; + char *execve_args[5]; + int rest = 0, ret = -1; + unsigned int exp_vl = 0; + unsigned int dfl_vl = 0; + + if (tp_argc == 2) { + /* First time */ + print_test_overview(tp_num); + if (set_and_compare_vl(gen_set_vl(vl) | PR_SVE_SET_VL_ONEXEC)) { + printf("prctl: error.\n"); + goto out; + } + rest = 2; + dfl_vl = vl; + } else { + /* After the execve() */ + rest = atoi(tp_argv[2]); + dfl_vl = atoi(tp_argv[3]); + rest--; + + exp_vl = (rest == 1 ? gen_set_vl(dfl_vl) : dfl_vl); + if (get_and_compare_vl(exp_vl)) { + printf("prctl: error.\n"); + goto out; + } + } + + if (rest != 0) { + memcpy(arg0, self, strlen(self) + 1); + memcpy(arg1, tp_argv[1], strlen(tp_argv[1]) + 1); + sprintf(arg2, "%d", rest); + sprintf(arg3, "%d", dfl_vl); + + execve_args[0] = arg0; + execve_args[1] = arg1; + execve_args[2] = arg2; + execve_args[3] = arg3; + execve_args[4] = NULL; + + ret = execve(self, execve_args, environ); + if (ret == -1) { + perror("execve()"); + goto out; + } + } + + ret = 0; +out: + if (ret != 0) { + printf("RESULT: NG.\n"); + } else { + printf("RESULT: OK.\n"); + } + return ret; +} diff --git a/test/sve/src/035.c b/test/sve/src/035.c new file mode 100644 index 00000000..001a91a6 --- /dev/null +++ b/test/sve/src/035.c @@ -0,0 +1,185 @@ +/* 035.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Confirmation when SETREGSET + FPSIMD is set while using SVE. */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common.h" + +static unsigned long inst_addr; + +static int child_func(unsigned int vq) +{ + int ret = -1; + struct fpsimd_sve_state(vq) cmp_buf; + struct fpsimd_sve_state(vq) rd_buf; + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + + memset(&cmp_buf, 0, sizeof(cmp_buf)); + memset(&rd_buf, 0, sizeof(rd_buf)); + memset(&wr_buf, 0, sizeof(wr_buf)); + + /* send PTRACE_TRACEME */ + if (ptrace(PTRACE_TRACEME, 0, NULL, NULL)) { + perror("ptrace(PTRACE_TRACEME)"); + goto out; + } + + /* gen and read/write register */ + gen_test_sve(&cmp_buf, vq); + gen_test_sve_low_128(&cmp_buf, VQ_128_BIT, vq); + write_sve(&wr_buf, vq, fpscr); + + /* stop mine, brk instruction */ + asm volatile( + "adr x10, 1f\n" + "str x10, [%0]\n" + "nop\n" + "nop\n" + "1:\n" + "brk #0\n" + "nop\n" + : /* nothing */ + : "r"(&inst_addr) + : "x10" + ); + + /* read register */ + read_sve(&rd_buf, vq, fpscr); + + /* compare */ + if (sve_compare(&cmp_buf, &rd_buf, vq)) { + printf("child-process compare failed.\n"); + goto out; + } + + /* success */ + ret = 0; +out: + return ret; +} + +static int parent_func(pid_t cpid) +{ + int ret = -1; + struct user_sve_header *wr_buf = NULL; + struct iovec iov; + size_t buf_size = sizeof(struct user_sve_header) + + sizeof(struct user_fpsimd_state); + + wr_buf = calloc(1, buf_size); + if (!wr_buf) { + printf("calloc() failed.\n"); + goto out; + } + memset(&iov, 0, sizeof(iov)); + + /* wait child stop */ + if (wait_child_stop(cpid)) { + goto out; + } + + /* PTRACE_GETREGSET */ + iov.iov_len = sizeof(struct user_sve_header); + iov.iov_base = wr_buf; + if (ptrace(PTRACE_GETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_GETREGSET)"); + goto cont; + } + + /* header compare */ + if (header_compare(wr_buf)) { + printf("ptrace(PTRACE_GETREGSET) header compare failed.\n"); + goto cont; + } + + /* set flags FPSIMD set */ + wr_buf->flags &= ~SVE_PT_REGS_SVE; + wr_buf->flags |= SVE_PT_REGS_FPSIMD; + + /* gen register */ + gen_test_fpsimd((struct user_fpsimd_state *)(wr_buf + 1), VQ_128_BIT); + + /* PTRACE_SETREGSET */ + iov.iov_len = buf_size; + iov.iov_base = wr_buf; + if (ptrace(PTRACE_SETREGSET, cpid, NT_ARM_SVE, &iov)) { + perror("ptrace(PTRACE_SETREGSET)"); + goto cont; + } + + /* success */ + ret = 0; + +cont: + /* rewrite child brk instruction */ + if (rewrite_brk_inst(cpid, &inst_addr)) { + /* Through */ + } + + /* child continue */ + if (ptrace(PTRACE_CONT, cpid, NULL, NULL)) { + perror("ptrace(PTRACE_CONT)"); + ret = -1; + } +out: + if (wr_buf) { + free(wr_buf); + } + return ret; +} + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + pid_t cpid = 0; + int func_ret = 0; + int ret = -1; + + print_test_overview(tp_num); + + /* create child process */ + cpid = fork(); + switch (cpid) { + case -1: + /* fork() error. */ + perror("fork()"); + goto out; + case 0: + /* child process */ + func_ret = child_func(vq); + + /* child exit */ + exit(func_ret); + break; + default: + /* parent process */ + func_ret = parent_func(cpid); + + /* wait child */ + if (wait_child_exit(cpid)) { + goto out; + } + + /* parent_func check */ + if (func_ret) { + goto out; + } + break; + } + + /* sccess. */ + ret = 0; +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return 0; +} diff --git a/test/sve/src/036.c b/test/sve/src/036.c new file mode 100644 index 00000000..6d279203 --- /dev/null +++ b/test/sve/src/036.c @@ -0,0 +1,101 @@ +/* 036.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* It becomes SIGSEGV when changing and using SVE-VL + * during signalhandler execution. + */ +#include +#include +#include +#include +#include +#include +#include "common.h" + +static int segv_flag; +static unsigned int set_vl; +static int sig_handler_ret; + +static void sig_handler(int sig) +{ + int ret = -1; + unsigned int fpscr[2] = { 0, 0 }; + unsigned int hndlr_vl = gen_set_vl(set_vl); + void *wr_buf = calloc(1, (hndlr_vl * 35) + 15); + void *align_wr_buf = (void *)(((unsigned long)(wr_buf + 15)) & ~15UL); + + if (!wr_buf) { + printf("[in sighandler] calloc failed.\n"); + return; + } + + /* set dirty */ + if (set_and_compare_vl(hndlr_vl)) { + printf("[in sighandler] prctl: error.\n"); + goto out; + } + gen_test_sve_dirty(align_wr_buf, sve_vq_from_vl(hndlr_vl)); + write_sve(align_wr_buf, sve_vq_from_vl(hndlr_vl), fpscr); + + ret = 0; +out: + free(wr_buf); + sig_handler_ret = ret; +} + +static void segv_handler(int sig) +{ + segv_flag = 1; +} + +TEST_FUNC(TEST_NUMBER, vl, vq, unused1, unused2) +{ + int ret = -1; + const int use_vq = sve_vq_from_vl(gen_set_vl(vl)); + struct fpsimd_sve_state(use_vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + + print_test_overview(tp_num); + + memset(&wr_buf, 0, sizeof(wr_buf)); + + if (signal(SIGUSR1, sig_handler) == SIG_ERR) { + printf("Set signal handler(SIGUSR1) failed.\n"); + goto out; + } + + if (signal(SIGSEGV, segv_handler) == SIG_ERR) { + printf("Set signal handler(SIGSEGV) failed.\n"); + goto out; + } + + set_vl = gen_set_vl(vl); + if (set_and_compare_vl(set_vl | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto out; + } + + /* before sighandler */ + gen_test_sve(&wr_buf, sve_vq_from_vl(set_vl)); + write_sve(&wr_buf, sve_vq_from_vl(set_vl), fpscr); + + if (raise(SIGUSR1)) { + perror("raise(SIGUSR1)"); + goto out; + } + + if (segv_flag != 1) { + printf("SIGSEGV not handling.\n"); + goto out; + } + + if (sig_handler_ret == 0) { + /* success. */ + ret = 0; + } +out: + if (ret == 0) { + printf("RESULT: OK.\n"); + } else { + printf("RESULT: NG.\n"); + } + return ret; +} diff --git a/test/sve/src/037.c b/test/sve/src/037.c new file mode 100644 index 00000000..1866991b --- /dev/null +++ b/test/sve/src/037.c @@ -0,0 +1,86 @@ +/* 037.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Confirmation of execve() operation when VL is set + * in INHERIT->ONEXEC order. + */ +#include +#include +#include +#include +#include "common.h" + +extern char **environ; +TEST_FUNC(TEST_NUMBER, vl, unused2, tp_argc, tp_argv) +{ + char *self = (char *)tp_argv[0]; + char arg0[FILENAME_MAX] = ""; + char arg1[8] = ""; + char arg2[8] = ""; + char arg3[8] = ""; + char *execve_args[5]; + int rest = 0, ret = -1; + unsigned int exp_vl = 0; + unsigned int dfl_vl = 0; + + /* First time */ + if (tp_argc == 2) { + unsigned int set_vl_1 = 0; + unsigned int set_vl_2 = 0; + + print_test_overview(tp_num); + + /* INHERIT setting */ + set_vl_1 = gen_set_vl(vl); + if (set_and_compare_vl(set_vl_1 | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto out; + } + + /* ONEXEC setting */ + set_vl_2 = gen_set_vl(set_vl_1); + if (set_and_compare_vl(set_vl_2 | PR_SVE_SET_VL_ONEXEC)) { + printf("prctl: error.\n"); + goto out; + } + rest = 2; + dfl_vl = vl; + /* After the execve() */ + } else { + rest = atoi(tp_argv[2]); + dfl_vl = atoi(tp_argv[3]); + rest--; + + exp_vl = (rest == 1 ? gen_set_vl(gen_set_vl(dfl_vl)) : dfl_vl); + if (get_and_compare_vl(exp_vl)) { + printf("prctl: error.\n"); + goto out; + } + } + + if (rest != 0) { + memcpy(arg0, self, strlen(self) + 1); + memcpy(arg1, tp_argv[1], strlen(tp_argv[1]) + 1); + sprintf(arg2, "%d", rest); + sprintf(arg3, "%d", dfl_vl); + + execve_args[0] = arg0; + execve_args[1] = arg1; + execve_args[2] = arg2; + execve_args[3] = arg3; + execve_args[4] = NULL; + + ret = execve(self, execve_args, environ); + if (ret == -1) { + perror("execve()"); + goto out; + } + } + + ret = 0; +out: + if (ret != 0) { + printf("RESULT: NG.\n"); + } else { + printf("RESULT: OK.\n"); + } + return ret; +} diff --git a/test/sve/src/038.c b/test/sve/src/038.c new file mode 100644 index 00000000..76dd4a01 --- /dev/null +++ b/test/sve/src/038.c @@ -0,0 +1,86 @@ +/* 038.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Confirmation of execve() operation when VL is set + * in ONEXEC->INHERIT order. + */ +#include +#include +#include +#include +#include "common.h" + +extern char **environ; +TEST_FUNC(TEST_NUMBER, vl, unused2, tp_argc, tp_argv) +{ + char *self = (char *)tp_argv[0]; + char arg0[FILENAME_MAX] = ""; + char arg1[8] = ""; + char arg2[8] = ""; + char arg3[8] = ""; + char *execve_args[5]; + int rest = 0, ret = -1; + unsigned int exp_vl = 0; + unsigned int dfl_vl = 0; + + /* First time */ + if (tp_argc == 2) { + unsigned int set_vl_1 = 0; + unsigned int set_vl_2 = 0; + + print_test_overview(tp_num); + + /* ONEXEC setting */ + set_vl_1 = gen_set_vl(vl); + if (set_and_compare_vl(set_vl_1 | PR_SVE_SET_VL_ONEXEC)) { + printf("prctl: error.\n"); + goto out; + } + + /* INHERIT setting */ + set_vl_2 = gen_set_vl(set_vl_1); + if (set_and_compare_vl(set_vl_2 | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto out; + } + rest = 2; + dfl_vl = vl; + /* After the execve() */ + } else { + rest = atoi(tp_argv[2]); + dfl_vl = atoi(tp_argv[3]); + rest--; + + exp_vl = gen_set_vl(gen_set_vl(dfl_vl)); + if (get_and_compare_vl(exp_vl | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto out; + } + } + + if (rest != 0) { + memcpy(arg0, self, strlen(self) + 1); + memcpy(arg1, tp_argv[1], strlen(tp_argv[1]) + 1); + sprintf(arg2, "%d", rest); + sprintf(arg3, "%d", dfl_vl); + + execve_args[0] = arg0; + execve_args[1] = arg1; + execve_args[2] = arg2; + execve_args[3] = arg3; + execve_args[4] = NULL; + + ret = execve(self, execve_args, environ); + if (ret == -1) { + perror("execve()"); + goto out; + } + } + + ret = 0; +out: + if (ret != 0) { + printf("RESULT: NG.\n"); + } else { + printf("RESULT: OK.\n"); + } + return ret; +} diff --git a/test/sve/src/039.c b/test/sve/src/039.c new file mode 100644 index 00000000..18c202bd --- /dev/null +++ b/test/sve/src/039.c @@ -0,0 +1,79 @@ +/* 039.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +/* Confirmation of execve() operation when ONEXEC + * and INHERIT are set at the same time. + */ +#include +#include +#include +#include +#include "common.h" + +extern char **environ; +TEST_FUNC(TEST_NUMBER, vl, unused2, tp_argc, tp_argv) +{ + char *self = (char *)tp_argv[0]; + char arg0[FILENAME_MAX] = ""; + char arg1[8] = ""; + char arg2[8] = ""; + char arg3[8] = ""; + char *execve_args[5]; + int rest = 0, ret = -1; + unsigned int exp_vl = 0; + unsigned int dfl_vl = 0; + + /* First time */ + if (tp_argc == 2) { + unsigned int set_vl = 0; + + print_test_overview(tp_num); + + /* ONEXEC and INHERIT setting */ + set_vl = gen_set_vl(vl); + if (set_and_compare_vl(set_vl | + PR_SVE_SET_VL_ONEXEC | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto out; + } + rest = 2; + dfl_vl = vl; + /* After the execve() */ + } else { + rest = atoi(tp_argv[2]); + dfl_vl = atoi(tp_argv[3]); + rest--; + + exp_vl = gen_set_vl(dfl_vl); + if (get_and_compare_vl(exp_vl | PR_SVE_VL_INHERIT)) { + printf("prctl: error.\n"); + goto out; + } + } + + if (rest != 0) { + memcpy(arg0, self, strlen(self) + 1); + memcpy(arg1, tp_argv[1], strlen(tp_argv[1]) + 1); + sprintf(arg2, "%d", rest); + sprintf(arg3, "%d", dfl_vl); + + execve_args[0] = arg0; + execve_args[1] = arg1; + execve_args[2] = arg2; + execve_args[3] = arg3; + execve_args[4] = NULL; + + ret = execve(self, execve_args, environ); + if (ret == -1) { + perror("execve()"); + goto out; + } + } + + ret = 0; +out: + if (ret != 0) { + printf("RESULT: NG.\n"); + } else { + printf("RESULT: OK.\n"); + } + return ret; +} diff --git a/test/sve/src/040.c b/test/sve/src/040.c new file mode 100644 index 00000000..3b77caab --- /dev/null +++ b/test/sve/src/040.c @@ -0,0 +1,25 @@ +/* 040.c COPYRIGHT FUJITSU LIMITED 2019 */ +/* coredump SVE register output check. */ +#include +#include +#include +#include "common.h" + +TEST_FUNC(TEST_NUMBER, unused1, vq, unused2, unused3) +{ + struct fpsimd_sve_state(vq) wr_buf; + unsigned int fpscr[2] = { 0, 0 }; + unsigned int *null_p = NULL; + + print_test_overview(tp_num); + + memset(&wr_buf, 0, sizeof(wr_buf)); + + gen_test_sve(&wr_buf, vq); + write_sve(&wr_buf, vq, fpscr); + + /* gen Segmentation fault. */ + *null_p = 1; + + return 0; +} diff --git a/test/sve/src/common.c b/test/sve/src/common.c new file mode 100644 index 00000000..961ee9c4 --- /dev/null +++ b/test/sve/src/common.c @@ -0,0 +1,83 @@ +/* common.c COPYRIGHT FUJITSU LIMITED 2017-2019 */ +#include +#include +#include +#include +#include +#include "common.h" + +int wait_child_stop(pid_t cpid) +{ + int status = 0; + int ret = -1; + pid_t pid = 0; + + /* wait child stop */ + pid = wait(&status); + if (pid == cpid) { + if (!WIFSTOPPED(status)) { + printf("child is not stopped.\n"); + goto out; + } + } else { + perror("wait()"); + goto out; + } + ret = 0; +out: + return ret; +} + +int wait_child_exit(pid_t cpid) +{ + int status = 0; + int ret = -1; + pid_t pid = 0; + + pid = wait(&status); + if (pid == cpid) { + if (WIFEXITED(status)) { + if (WEXITSTATUS(status)) { + goto out; + } + } else { + printf("child-process unfinished.\n"); + goto out; + } + } else if (pid == -1) { + perror("wait()"); + goto out; + } else { + printf("wait() return invalid pid.\n"); + goto out; + } + ret = 0; +out: + return ret; +} + +int rewrite_brk_inst(pid_t cpid, void *inst_addr) +{ + unsigned long addr = 0; + const unsigned long inst = ((NOP_INST << 32UL) | NOP_INST); + + /* read child brk address */ + addr = ptrace(PTRACE_PEEKDATA, cpid, inst_addr, NULL); + if ((addr == -1) && errno) { + perror("ptrace(PTRACE_PEEKDATA)"); + return -1; + } + + /* write nop instruction */ + if (ptrace(PTRACE_POKETEXT, cpid, addr, inst)) { + perror("ptrace(PTRACE_POKETEXT)"); + return -1; + } + return 0; +} + +void print_test_overview(int tp_num) +{ + printf("# %2d : %s\n", tp_num, usage_messages[tp_num]); +} + diff --git a/test/sve/src/common.h b/test/sve/src/common.h new file mode 100644 index 00000000..bc6763cc --- /dev/null +++ b/test/sve/src/common.h @@ -0,0 +1,40 @@ +/* common.h COPYRIGHT FUJITSU LIMITED 2017-2019 */ +#ifndef __COMMON_H__ +#define __COMMON_H__ + +#include "sve.h" + +/* for migrate CPU */ +#define SMP_MAX_CPUS 512 + +/* test */ +#define TEST_NAME(num) test_##num +#define TEST_ARG(arg) arg +#define TEST_UI_ARG(arg) unsigned int TEST_ARG(arg) +#define TEST_I_ARG(arg) int TEST_ARG(arg) +#define TEST_CHAR_PP_ARG(arg) char **TEST_ARG(arg) +#define TEST_FUNC(num, arg1, arg2, arg3, arg4) \ + int TEST_NAME(num)(int tp_num, TEST_UI_ARG(arg1), \ + TEST_UI_ARG(arg2), \ + TEST_I_ARG(arg3), \ + TEST_CHAR_PP_ARG(arg4)) + +extern char *usage_messages[]; + +#define cpu_pause() \ + ({ \ + __asm__ __volatile__("yield" ::: "memory"); \ + }) + +/* instruction code */ +#define NOP_INST 0xd503201fUL +#define BRK_INST 0xd4200000UL + +extern int wait_child_stop(pid_t cpid); +extern int wait_child_exit(pid_t cpid); +extern int rewrite_brk_inst(pid_t cpid, void *inst_addr); +extern void print_test_overview(int tp_num); + +#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) + +#endif /* !__COMMON_H__ */ diff --git a/test/sve/src/main.c b/test/sve/src/main.c new file mode 100644 index 00000000..dd027f34 --- /dev/null +++ b/test/sve/src/main.c @@ -0,0 +1,139 @@ +/* main.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +#include +#include +#include +#include +#include "common.h" + +/* usage messages */ +char *usage_messages[] = { +/* TP# 0 */ "", /* TP#0 is none */ +/* TP# 1 */ "Process starts immediately after registers check.", +/* TP# 2 */ "Use fork() takeover registers check.", +/* TP# 3 */ "Use pthread_create() takeover registers check.", +/* TP# 4 */ "Use execve() takeover registers check. " + "(execve target is #1 testcase)", +/* TP# 5 */ "Preservation register check signalhsndler before and after.", +/* TP# 6 */ "Preservation register check migrate cpus before and after.", +/* TP# 7 */ "ptrace(GETREGSET + NT_ARM_SVE) check.", +/* TP# 8 */ "ptrace(SETREGSET + NT_ARM_SVE) check.", +/* TP# 9 */ "ptrace(GETREGSET + NT_ARM_SVE) parameters pattern check.", +/* TP#10 */ "ptrace(SETREGSET + NT_ARM_SVE) parameters pattern check.", +/* TP#11 */ "Preservation check signalhsndler(use sigaltstack) " + "before and after.", +/* TP#12 */ "When SVE is enable, ptrace(GETREGSET + NT_PRFPREG) check.", +/* TP#13 */ "When SVE is enable, ptrace(SETREGSET + NT_PRFPREG) check.", +/* TP#14 */ "ptrace(SETREGSET + NT_ARM_SVE) check, use brk instruction.", +/* TP#15 */ "Context switch in the same core check and SIGSTOP -> SIGCONT " + "restart check.(need run on background '&')", +/* TP#16 */ "prctl(PR_SVE_GET_VL) check.", +/* TP#17 */ "prctl(PR_SVE_SET_VL) check.", +/* TP#18 */ "prctl(PR_SVE_SET_VL, PR_SVE_SET_VL_THREAD) on multi thread.", +/* TP#19 */ "prctl(PR_SVE_SET_VL) parameters pattern check.", +/* TP#20 */ "Use fork() VL check if setting INHERIT flags.", +/* TP#21 */ "Use pthread_create() VL check if setting INHERIT flags.", +/* TP#22 */ "Use execve() VL check if setting INHERIT flags. " + "(execve target is #1 testcase)", +/* TP#23 */ "Preservation VL check signalhsndler before and after.", +/* TP#24 */ "Preservation VL check migrate cpus before and after.", +/* TP#25 */ "ptrace(GETREGSET + NT_ARM_SVE) VL check.", +/* TP#26 */ "ptrace(SETREGSET + NT_ARM_SVE) VL check.", +/* TP#27 */ "Use fork() VL check if not setting INHERIT flags.", +/* TP#28 */ "Use pthread_create() VL check if not setting INHERIT flags.", +/* TP#29 */ "Use execve() VL check if not setting INHERIT flags. " + "(execve target is #1 testcase)", +/* TP#30 */ "When SVE is enable, ptrace(SETREGSET + NT_ARM_SVE + " + "SVE_PT_REGS_FPSIMD), regs fpsimd struct check.", +/* TP#31 */ "When SVE is enable, ptrace(SETREGSET + NT_ARM_SVE + " + "SVE_PT_REGS_FPSIMD), regs sve struct check.", +/* TP#32 */ "Use fork() VL check if setting ONEXEC flags.", +/* TP#33 */ "Use pthread_create() VL check if setting ONEXEC flags.", +/* TP#34 */ "Use execve() VL check if setting ONEXEC flags.", +/* TP#35 */ "Confirmation when SETREGSET + FPSIMD is set while using SVE.", +/* TP#36 */ "It becomes SIGSEGV when changing and using SVE-VL " + "during signalhandler execution.", +/* TP#37 */ "Confirmation of execve() operation when VL is set in " + "INHERIT->ONEXEC order.", +/* TP#38 */ "Confirmation of execve() operation when VL is set in " + "ONEXEC->INHERIT order.", +/* TP#39 */ "Confirmation of execve() operation when ONEXEC and " + "INHERIT are set at the same time.", +/* TP#40 */ "Coredump SVE register output check.", +}; + +struct test_case { + int (*func)(int arg0, unsigned int arg1, + unsigned int arg2, int arg3, char **arg4); +}; + +#define TEST_CASE_DEF(number) \ + extern int test_##number(int, unsigned int, unsigned int, int, char **); +#include "test_case.list" +#undef TEST_CASE_DEF + +#define TEST_CASE_DEF(number) { .func = test_##number }, +const struct test_case test_cases[] = { + { .func = NULL }, /* TP#0 is none */ +#include "test_case.list" +}; +#undef TEST_CASE_DEF + +static void usage(char *string) +{ + int i = 0; + int tp_count = ARRAY_SIZE(usage_messages) - 1; + + printf("%s N\n", string); + printf(" N : tp number. (1-%d)\n", tp_count); + + for (i = 1; i < tp_count + 1; i++) { + printf("%6d : %s\n", i, usage_messages[i]); + } +} + +int main(int argc, char *argv[]) +{ + int tp_num = 0, ret = -1; + unsigned int vl, vl_tmp, vq; + int usage_count = ARRAY_SIZE(usage_messages); + int tp_count = ARRAY_SIZE(test_cases); + + if (usage_count != tp_count) { + printf("BUG: Usage strings and TP count are different.\n"); + goto out; + } + + if ((argc != 2) && (argc != 4)) { + usage(argv[0]); + goto out; + } + + tp_num = atoi(argv[1]); + if (tp_num == 0 || tp_count <= tp_num) { + printf("TP number invalid.\n"); + usage(argv[0]); + goto out; + } + + /* get VL */ + vl = sve_get_vl(); + vl_tmp = PR_SVE_GET_VL_LEN(prctl(PR_SVE_GET_VL)); + + if (vl != vl_tmp) { + printf("Running on QEMU (Bug in RDVL instruction)\n"); + vl = vl_tmp; + } + + /* calc VQ */ + vq = sve_vq_from_vl(vl); + + printf("Vector Length = %d bytes (128 bit register * %d)\n", + vl * 8, vq); + if (test_cases[tp_num].func) { + ret = test_cases[tp_num].func(tp_num, vl, vq, argc, argv); + } else { + printf("BUG: TP function pointer is NULL.\n"); + } +out: + return ret; +} diff --git a/test/sve/src/sve.c b/test/sve/src/sve.c new file mode 100644 index 00000000..463a152c --- /dev/null +++ b/test/sve/src/sve.c @@ -0,0 +1,389 @@ +/* sve.c COPYRIGHT FUJITSU LIMITED 2016-2019 */ +#include +#include +#include +#include +#include +#include "sve.h" +#include "common.h" + +static unsigned long sve_magic[] = { + 0x1111111111111111, 0x2222222222222222, + 0x3333333333333333, 0x4444444444444444, + 0x5555555555555555, 0x6666666666666666, + 0x7777777777777777, 0x8888888888888888, + 0x9999999999999999, 0xaaaaaaaaaaaaaaaa, + 0xbbbbbbbbbbbbbbbb, 0xcccccccccccccccc, + 0xdddddddddddddddd, 0xeeeeeeeeeeeeeeee, + 0xffffffffffffffff, 0x1111111122222222, + 0x2222222233333333, 0x3333333344444444, + 0x4444444455555555, 0x5555555566666666, + 0x6666666677777777, 0x7777777788888888, + 0x99999999aaaaaaaa, 0xaaaaaaaabbbbbbbb, + 0xbbbbbbbbcccccccc, 0xccccccccdddddddd, + 0xddddddddeeeeeeee, 0xeeeeeeeeffffffff, + 0xffffffff11111111, 0x1111222233334444, + 0x5555666677778888, 0x9999aaaabbbbcccc, + 0xddddeeeeffff1111, 0xffffeeeeddddcccc, + 0xbbbbaaaa99998888, 0x7777666655554444, + 0x333322221111ffff, 0x1122334455667788, + 0x99aabbccddeeff11, 0xffeeddccbbaa9988, + 0x77665544332211ff, 0x123456789abcdef1, + 0xfedcba987654321f, 0xcafecafecafecafe +}; + +unsigned int gen_set_vl(const unsigned int vl) +{ + switch (vl) { + case VL_128_BIT: + return VL_256_BIT; + case VL_256_BIT: + return VL_512_BIT; + case VL_512_BIT: + return VL_128_BIT; + default: + break; + } + return -1; +} + +static int compare_vl_flags(const unsigned int exp, const unsigned int target, + const unsigned int onexec_vl) +{ + int ret = 0; + const unsigned int exp_vl = PR_SVE_GET_VL_LEN(exp); + unsigned int exp_flags = PR_SVE_GET_VL_FLAGS(exp); + const unsigned int target_vl = PR_SVE_GET_VL_LEN(target); + const unsigned int target_flags = PR_SVE_GET_VL_FLAGS(target); + const unsigned int rd_vl = sve_get_vl(); + unsigned int exp_rdvl = 0; + + /* PR_SVE_SET_VL_ONEXEC flag is set only. */ + exp_flags &= ~PR_SVE_SET_VL_ONEXEC; + + if (onexec_vl == 0) { + exp_rdvl = exp_vl; + } + else { + exp_rdvl = onexec_vl; + } + + if (exp_vl != target_vl) { + printf("Expected VL(0x%x) != Target VL(0x%x).\n", + exp_vl, target_vl); + ret = -1; + } + + if (exp_flags != target_flags) { + printf("Expected FLAGS(0x%x) != Target FLAGS(0x%x).\n", + exp_flags, target_flags); + ret = -1; + } + + if (exp_rdvl != rd_vl) { + printf("Expected VL(0x%x) != VL on Register(0x%x).\n", + exp_rdvl, rd_vl); + ret = -1; + } + + if (ret == -1) { + printf("Expected VALUE (0x%x), Target VALUE (0x%x).\n", + (exp & ~PR_SVE_SET_VL_ONEXEC), target); + } + return ret; +} + +int get_and_compare_vl(const unsigned long exp_arg) +{ + int ret = -1; + int vl_flags = 0; + + vl_flags = prctl(PR_SVE_GET_VL); + if (vl_flags == -1) { + perror("prctl(PR_SVE_GET_VL)"); + ret = errno; + } + else { + printf("Get VL(0x%x), FLAGS(0x%x)\n", + PR_SVE_GET_VL_LEN(vl_flags), + PR_SVE_GET_VL_FLAGS(vl_flags)); + ret = compare_vl_flags(exp_arg, vl_flags, 0); + } + return ret; +} + +int set_and_compare_vl(const unsigned long set_arg) +{ + int ret = 0; + int vl_flags = 0; + const int onexec = ((set_arg & PR_SVE_SET_VL_ONEXEC) ? 1 : 0); + unsigned long exp_vl = PR_SVE_GET_VL_LEN(set_arg); + unsigned long exp_flags = PR_SVE_GET_VL_FLAGS(set_arg); + unsigned int onexec_vl = 0; + + printf("Set VL(0x%lx), FLAGS(0x%lx)\n", + PR_SVE_GET_VL_LEN(set_arg), + PR_SVE_GET_VL_FLAGS(set_arg)); + + if (onexec) { + int exp_arg = 0; + + exp_arg = prctl(PR_SVE_GET_VL); + if (exp_arg == -1) { + perror("prctl(PR_SVE_GET_VL)"); + ret = errno; + goto out; + } + else { + onexec_vl = PR_SVE_GET_VL_LEN(exp_arg); + } + } + + vl_flags = prctl(PR_SVE_SET_VL, set_arg); + if (vl_flags == -1) { + perror("prctl(PR_SVE_SET_VL)"); + ret = errno; + } + else { + ret = compare_vl_flags(exp_vl | exp_flags, vl_flags, onexec_vl); + } +out: + return ret; +} + +void gen_test_sve(void *buf, unsigned int vq) +{ + struct fpsimd_sve_state(vq) * svereg = buf; + unsigned long *pzreg = (unsigned long *)svereg->zregs; + unsigned int sve_magic_num = ARRAY_SIZE(sve_magic); + int i = 0, j = 0; + + /* zregs */ + for (i = 0; i < 32; i++) { + for (j = 0; j < vq * 2; j++) { + int k = i * vq * 2; + + pzreg[k + j] = sve_magic[(k + j) % sve_magic_num]; + } + } + + /* pregs */ + for (i = 0; i < 16; i++) { + for (j = 0; j < vq; j++) { + int k = i * vq; + + svereg->pregs[i][j] = + (unsigned short) + (sve_magic[(k + j) % sve_magic_num]); + } + } + + /* ffr */ + for (i = 0; i < vq; i++) { + svereg->ffr[i] = (unsigned short)(sve_magic[i % sve_magic_num]); + } +} + +void gen_test_sve_low_128(void *buf, unsigned int bf_vq, unsigned int af_vq) +{ + struct fpsimd_sve_state(bf_vq) tmp_buf; + struct fpsimd_sve_state(af_vq) * svereg = buf; + int i = 0; + + memset(&tmp_buf, 0, sizeof(tmp_buf)); + gen_test_sve(&tmp_buf, bf_vq); + + /* zregs */ + for (i = 0; i < 32; i++) { + svereg->zregs[i][0] = tmp_buf.zregs[i][0]; + } +} + +void gen_test_fpsimd(struct user_fpsimd_state *buf, unsigned int vq) +{ + int i = 0; + struct fpsimd_sve_state(vq) svereg; + + gen_test_sve(&svereg, vq); + for (i = 0; i < 32; i++) { + buf->vregs[i] = svereg.zregs[i][0]; + } +} + +void gen_test_sve_dirty(void *buf, unsigned int vq) +{ + struct fpsimd_sve_state(vq) * svereg = buf; + memset(svereg, 0xda, sizeof(*svereg)); +} + +void write_sve(void *buf, unsigned int vq, unsigned int *fpscr) +{ + struct fpsimd_sve_state(vq) * svereg = buf; + sve_load_state(svereg->ffr, fpscr); +} + +void read_sve(void *buf, unsigned int vq, unsigned int *fpscr) +{ + struct fpsimd_sve_state(vq) * svereg = buf; + sve_save_state(svereg->ffr, fpscr); +} + +void show_sve(const void *buf, unsigned int vq, unsigned int *fpscr) +{ + const struct fpsimd_sve_state(vq) * svereg = buf; + int i = 0, j = 0; + unsigned long *pzreg = (unsigned long *)svereg->zregs; + + /* zregs */ + for (i = 0; i < 32; i++) { + printf("z%2d: ", i); + for (j = 0; j < vq * 2; j++) { + int k = i * vq * 2; + + if ((j != 0) && (j % 4 == 0)) { + printf("\n"); + printf(" "); + } + printf("0x%016lx ", pzreg[k + j]); + } + printf("\n"); + } + + /* pregs */ + for (i = 0; i < 16; i++) { + printf("p%2d: ", i); + for (j = 0; j < vq; j++) { + printf("0x%04x ", svereg->pregs[i][j]); + } + printf("\n"); + } + + /* ffr */ + for (i = 0; i < vq; i++) { + printf("ffr%2d: 0x%04x\n", i, svereg->ffr[i]); + } + printf("fpsr: 0x%08x\n", fpscr[0]); + printf("fpcr: 0x%08x\n", fpscr[1]); +} + +void read_and_show_sve(void *buf, unsigned int vq, unsigned int *fpscr) +{ + read_sve(buf, vq, fpscr); + show_sve(buf, vq, fpscr); +} + +int header_compare(const struct user_sve_header *target) +{ + int ret = -1; + unsigned int vq, max_vq; + + if (!sve_vl_valid(target->vl)) { + printf("VL invalid.\n"); + goto out; + } + vq = sve_vq_from_vl(target->vl); + + if (!sve_vl_valid(target->max_vl)) { + printf("MAX-VL invalid.\n"); + goto out; + } + max_vq = sve_vq_from_vl(target->max_vl); + + if (!(target->flags & SVE_PT_REGS_SVE)) { + printf("FLAGS invalid.\n"); + goto out; + } + + if (target->size != SVE_PT_SIZE(vq, target->flags)) { + printf("SIZE invalid.\n"); + goto out; + } + + if (target->max_size != SVE_PT_SIZE(max_vq, SVE_PT_REGS_SVE)) { + printf("MAX-SIZE invalid.\n"); + goto out; + } + ret = 0; +out: + return ret; +} + +int sve_compare(const void *expect, const void *target, unsigned int vq) +{ + int i = 0, ret = 0; + + const struct fpsimd_sve_state(vq) * exp = expect; + const struct fpsimd_sve_state(vq) * tgt = target; + + /* compare low 64 bits of z8-z15 */ + for (i = 8; i <= 15; i++) { + unsigned long e = (unsigned long)exp->zregs[i][0]; + unsigned long t = (unsigned long)tgt->zregs[i][0]; + + if (e != t) { + printf("Compare Failed, z%2d exp 0x%016lx " + "val 0x%016lx\n", i, e, t); + ret = -1; + } + } + return ret; +} + +int fpsimd_compare(const struct user_fpsimd_state *expect, + const struct user_fpsimd_state *target, size_t n) +{ + int i = 0; + + if (memcmp(expect, target, n)) { + const unsigned long *exp = (const unsigned long *)expect; + const unsigned long *tgt = (const unsigned long *)target; + + printf("Compare Failed !!\n"); + printf("[show expect values]\n"); + for (i = 0; i < 64; i += 2) { + printf("q%2d: 0x%016lx 0x%016lx\n", + i / 2, exp[i], exp[i + 1]); + } + printf("fpsr: 0x%08x\n", expect->fpsr); + printf("fpcr: 0x%08x\n", expect->fpcr); + + printf("[show target values]\n"); + for (i = 0; i < 64; i += 2) { + printf("q%2d: 0x%016lx 0x%016lx\n", + i / 2, tgt[i], tgt[i + 1]); + } + printf("fpsr: 0x%08x\n", target->fpsr); + printf("fpcr: 0x%08x\n", target->fpcr); + + return -1; + } + return 0; +} + +void read_fpsimd(struct user_fpsimd_state *regs) +{ + asm volatile( + "stp q0, q1, [%0, #16 * 0]\n" + "stp q2, q3, [%0, #16 * 2]\n" + "stp q4, q5, [%0, #16 * 4]\n" + "stp q6, q7, [%0, #16 * 6]\n" + "stp q8, q9, [%0, #16 * 8]\n" + "stp q10, q11, [%0, #16 * 10]\n" + "stp q12, q13, [%0, #16 * 12]\n" + "stp q14, q15, [%0, #16 * 14]\n" + "stp q16, q17, [%0, #16 * 16]\n" + "stp q18, q19, [%0, #16 * 18]\n" + "stp q20, q21, [%0, #16 * 20]\n" + "stp q22, q23, [%0, #16 * 22]\n" + "stp q24, q25, [%0, #16 * 24]\n" + "stp q26, q27, [%0, #16 * 26]\n" + "stp q28, q29, [%0, #16 * 28]\n" + "stp q30, q31, [%0, #16 * 30]\n" + "mrs x8, fpsr\n" + "str w8, [%0, #512]\n" + "mrs x8, fpcr\n" + "str w8, [%0, #516]\n" + : : "r" (regs) + : "x8", "memory" + ); +} diff --git a/test/sve/src/sve.h b/test/sve/src/sve.h new file mode 100644 index 00000000..53926e0e --- /dev/null +++ b/test/sve/src/sve.h @@ -0,0 +1,77 @@ +/* sve.h COPYRIGHT FUJITSU LIMITED 2016-2019 */ +#ifndef __SVE_H__ +#define __SVE_H__ + +#include +#include +#include +#include + +#define fpsimd_sve_state(vq) { \ + __uint128_t zregs[32][vq]; \ + unsigned short pregs[16][vq]; \ + unsigned short ffr[vq]; \ +} + +#define user_fpsimd_sve_state(vq) { \ + struct user_sve_header header; \ + struct fpsimd_sve_state(vq) regs; \ +} + +/* assembler */ +extern void sve_save_state(void *state, unsigned int *pfpsr); +extern void sve_load_state(void const *state, unsigned int const *pfpsr); +extern unsigned int sve_get_vl(void); + +/* c */ +extern unsigned int gen_set_vl(const unsigned int vl); +extern int get_and_compare_vl(const unsigned long exp_arg); +extern int set_and_compare_vl(const unsigned long set_arg); +extern void gen_test_sve(void *buf, unsigned int vq); +extern void gen_test_sve_low_128(void *buf, unsigned int bf_vq, + unsigned int af_vq); +extern void gen_test_fpsimd(struct user_fpsimd_state *buf, unsigned int vq); +extern void gen_test_sve_dirty(void *buf, unsigned int vq); +extern void write_sve(void *buf, unsigned int vq, unsigned int *fpscr); +extern void read_sve(void *buf, unsigned int vq, unsigned int *fpscr); +extern void show_sve(const void *buf, unsigned int vq, unsigned int *fpscr); +extern void read_and_show_sve(void *buf, unsigned int vq, unsigned int *fpscr); +extern int header_compare(const struct user_sve_header *target); +extern int sve_compare(const void *expect, const void *target, unsigned int vq); +extern int fpsimd_compare(const struct user_fpsimd_state *expect, + const struct user_fpsimd_state *target, size_t n); +extern void read_fpsimd(struct user_fpsimd_state *regs); + +/* arm64 Scalable Vector Extension controls */ +# define PR_SVE_INVALID_FLAGS (1 << 19) /* invalid flag */ + +/* sve_flags */ +# define PR_SVE_GET_VL_FLAGS(ret) ((ret) & ~PR_SVE_VL_LEN_MASK) +/* vector length */ +# define PR_SVE_GET_VL_LEN(ret) ((ret) & PR_SVE_VL_LEN_MASK) + +/* Definitions for user_sve_header.flags: */ +#define SVE_PT_INVALID_FLAGS (1 << 3) /* invalid flag */ + +/* + * SVE_MAX defines + */ +#define SVE_VQ_MIN 1 +#define SVE_NUM_ZREGS 32 +#define SVE_NUM_PREGS 16 + +#define VL_128_BIT 0x10 /* 16 byte */ +#define VL_256_BIT 0x20 /* 32 byte */ +#define VL_512_BIT 0x40 /* 64 byte */ + +#define VQ_128_BIT sve_vq_from_vl(VL_128_BIT) +#define VQ_256_BIT sve_vq_from_vl(VL_256_BIT) +#define VQ_512_BIT sve_vq_from_vl(VL_512_BIT) + +#define UNSPPORT_VL (384 / 0x10) + +#define INVALID_VL_1 (0) +#define INVALID_VL_2 (SVE_VL_MIN - 0x01) +#define INVALID_VL_3 (SVE_VL_MAX + 0x10) + +#endif /* __SVE_H__ */ diff --git a/test/sve/src/sve_asm.S b/test/sve/src/sve_asm.S new file mode 100644 index 00000000..84b82dc1 --- /dev/null +++ b/test/sve/src/sve_asm.S @@ -0,0 +1,170 @@ +/* sve_asm.S COPYRIGHT FUJITSU LIMITED 2016-2019 */ +.globl load_z31 +load_z31: + .cpu cortex-a53+fp+simd+sve + ldr z31, [x0] + ret +.type load_z31, @function +.size load_z31, .-load_z31 + +.globl store_z31 +store_z31: + add z31.d, z31.d,#1 + str z31, [x0] + ret +.type store_z31, @function +.size store_z31, .-store_z31 + +/* void sve_save_state(void *state, unsigned int *pfpsr); */ +.globl sve_load_state +.align 4 +sve_load_state: + /* load z register */ + ldr z0, [x0,#-34,mul vl] + ldr z1, [x0,#-33,mul vl] + ldr z2, [x0,#-32,mul vl] + ldr z3, [x0,#-31,mul vl] + ldr z4, [x0,#-30,mul vl] + ldr z5, [x0,#-29,mul vl] + ldr z6, [x0,#-28,mul vl] + ldr z7, [x0,#-27,mul vl] + ldr z8, [x0,#-26,mul vl] + ldr z9, [x0,#-25,mul vl] + ldr z10, [x0,#-24,mul vl] + ldr z11, [x0,#-23,mul vl] + ldr z12, [x0,#-22,mul vl] + ldr z13, [x0,#-21,mul vl] + ldr z14, [x0,#-20,mul vl] + ldr z15, [x0,#-19,mul vl] + ldr z16, [x0,#-18,mul vl] + ldr z17, [x0,#-17,mul vl] + ldr z18, [x0,#-16,mul vl] + ldr z19, [x0,#-15,mul vl] + ldr z20, [x0,#-14,mul vl] + ldr z21, [x0,#-13,mul vl] + ldr z22, [x0,#-12,mul vl] + ldr z23, [x0,#-11,mul vl] + ldr z24, [x0,#-10,mul vl] + ldr z25, [x0,#-9,mul vl] + ldr z26, [x0,#-8,mul vl] + ldr z27, [x0,#-7,mul vl] + ldr z28, [x0,#-6,mul vl] + ldr z29, [x0,#-5,mul vl] + ldr z30, [x0,#-4,mul vl] + ldr z31, [x0,#-3,mul vl] + + /* write ffr */ + ldr p0, [x0] + wrffr p0.b + + /* load p register */ + ldr p0, [x0,#-16,mul vl] + ldr p1, [x0,#-15,mul vl] + ldr p2, [x0,#-14,mul vl] + ldr p3, [x0,#-13,mul vl] + ldr p4, [x0,#-12,mul vl] + ldr p5, [x0,#-11,mul vl] + ldr p6, [x0,#-10,mul vl] + ldr p7, [x0,#-9,mul vl] + ldr p8, [x0,#-8,mul vl] + ldr p9, [x0,#-7,mul vl] + ldr p10, [x0,#-6,mul vl] + ldr p11, [x0,#-5,mul vl] + ldr p12, [x0,#-4,mul vl] + ldr p13, [x0,#-3,mul vl] + ldr p14, [x0,#-2,mul vl] + ldr p15, [x0,#-1,mul vl] + + /* write fpsr */ + ldr w2, [x1] + msr fpsr, x2 + + /* write fpcr */ + ldr w2, [x1,#4] + msr fpcr, x2 + + ret +.type sve_load_state, @function +.size sve_load_state, .-sve_load_state + +/* void sve_load_state(void const *state, unsigned int const *pfpsr); */ +.globl sve_save_state +.align 4 +sve_save_state: + /* store z register */ + str z0, [x0,#-34,mul vl] + str z1, [x0,#-33,mul vl] + str z2, [x0,#-32,mul vl] + str z3, [x0,#-31,mul vl] + str z4, [x0,#-30,mul vl] + str z5, [x0,#-29,mul vl] + str z6, [x0,#-28,mul vl] + str z7, [x0,#-27,mul vl] + str z8, [x0,#-26,mul vl] + str z9, [x0,#-25,mul vl] + str z10, [x0,#-24,mul vl] + str z11, [x0,#-23,mul vl] + str z12, [x0,#-22,mul vl] + str z13, [x0,#-21,mul vl] + str z14, [x0,#-20,mul vl] + str z15, [x0,#-19,mul vl] + str z16, [x0,#-18,mul vl] + str z17, [x0,#-17,mul vl] + str z18, [x0,#-16,mul vl] + str z19, [x0,#-15,mul vl] + str z20, [x0,#-14,mul vl] + str z21, [x0,#-13,mul vl] + str z22, [x0,#-12,mul vl] + str z23, [x0,#-11,mul vl] + str z24, [x0,#-10,mul vl] + str z25, [x0,#-9,mul vl] + str z26, [x0,#-8,mul vl] + str z27, [x0,#-7,mul vl] + str z28, [x0,#-6,mul vl] + str z29, [x0,#-5,mul vl] + str z30, [x0,#-4,mul vl] + str z31, [x0,#-3,mul vl] + + /* store p register */ + str p0, [x0,#-16,mul vl] + str p1, [x0,#-15,mul vl] + str p2, [x0,#-14,mul vl] + str p3, [x0,#-13,mul vl] + str p4, [x0,#-12,mul vl] + str p5, [x0,#-11,mul vl] + str p6, [x0,#-10,mul vl] + str p7, [x0,#-9,mul vl] + str p8, [x0,#-8,mul vl] + str p9, [x0,#-7,mul vl] + str p10, [x0,#-6,mul vl] + str p11, [x0,#-5,mul vl] + str p12, [x0,#-4,mul vl] + str p13, [x0,#-3,mul vl] + str p14, [x0,#-2,mul vl] + str p15, [x0,#-1,mul vl] + + /* read ffr */ + rdffr p0.b + str p0, [x0] + ldr p0, [x0,#-16,mul vl] + + /* read fpsr */ + mrs x2, fpsr + str w2, [x1] + + /* read fpcr */ + mrs x2, fpcr + str w2, [x1,#4] + + ret +.type sve_save_state, @function +.size sve_save_state, .-sve_save_state + +/* unsigned int sve_get_vl(void); */ +.globl sve_get_vl +.align 4 +sve_get_vl: + rdvl x0, #1 + ret +.type sve_get_vl, @function +.size sve_get_vl, .-sve_get_vl