Module: Mesa Branch: main Commit: 8e6d28f4734158182c722898e4469b121a5f4b12 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=8e6d28f4734158182c722898e4469b121a5f4b12
Author: Sviatoslav Peleshko <sviatoslav.peles...@globallogic.com> Date: Wed Oct 11 13:45:05 2023 +0300 intel/tools/tests: Add i965_asm tests for gfx12 and gfx12.5 Signed-off-by: Sviatoslav Peleshko <sviatoslav.peles...@globallogic.com> Reviewed-by: Sagar Ghuge <sagar.gh...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25657> --- src/intel/tools/meson.build | 2 ++ src/intel/tools/tests/gen12.5/add3.asm | 7 +++++ src/intel/tools/tests/gen12.5/add3.expected | 7 +++++ src/intel/tools/tests/gen12.5/send.asm | 30 ++++++++++++++++++++ src/intel/tools/tests/gen12.5/send.expected | 15 ++++++++++ src/intel/tools/tests/gen12.5/swsb.asm | 23 +++++++++++++++ src/intel/tools/tests/gen12.5/swsb.expected | 21 ++++++++++++++ src/intel/tools/tests/gen12/dp4a.asm | 33 ++++++++++++++++++++++ src/intel/tools/tests/gen12/dp4a.expected | 33 ++++++++++++++++++++++ src/intel/tools/tests/gen12/send.asm | 43 +++++++++++++++++++++++++++++ src/intel/tools/tests/gen12/send.expected | 21 ++++++++++++++ src/intel/tools/tests/gen12/swsb.asm | 40 +++++++++++++++++++++++++++ src/intel/tools/tests/gen12/swsb.expected | 38 +++++++++++++++++++++++++ src/intel/tools/tests/gen12/sync.asm | 33 ++++++++++++++++++++++ src/intel/tools/tests/gen12/sync.expected | 33 ++++++++++++++++++++++ 15 files changed, 379 insertions(+) diff --git a/src/intel/tools/meson.build b/src/intel/tools/meson.build index 98c4d995bfb..8c6009d64d6 100644 --- a/src/intel/tools/meson.build +++ b/src/intel/tools/meson.build @@ -241,6 +241,8 @@ asm_testcases = [ ['bdw', 'gfx8'], ['skl', 'gfx9'], ['icl', 'gfx11'], + ['tgl', 'gfx12'], + ['dg2', 'gfx12.5'], ] test_runner = find_program('tests/run-test.py') diff --git a/src/intel/tools/tests/gen12.5/add3.asm b/src/intel/tools/tests/gen12.5/add3.asm new file mode 100644 index 00000000000..1e81dd0031f --- /dev/null +++ b/src/intel/tools/tests/gen12.5/add3.asm @@ -0,0 +1,7 @@ +add3(8) g118<1>D -g117<8,8,1>D g114<8,8,1>D g115<1,1,1>D { align1 1Q I@2 }; +add3(16) g55<1>D g50<8,8,1>D g46<8,8,1>D -g53<1,1,1>D { align1 1H @2 $5.dst }; +add3(16) g111<1>D -g40<8,8,1>D -g88<8,8,1>D g111<1,1,1>D { align1 1H I@1 }; +add3(16) g49<1>D 0x0008UW g47<8,8,1>D g26<1,1,1>D { align1 1H I@4 }; +add3(16) g55<1>D 0x0008UW g53<8,8,1>D g65<1,1,1>D { align1 2H I@3 }; +add3(8) g57<1>D g52<8,8,1>D (abs)g48<8,8,1>D (abs)g59<1,1,1>D { align1 1Q I@4 }; +add3(16) g51<1>D g63<8,8,1>D -g122<8,8,1>D (abs)g27<1,1,1>D { align1 1H I@7 }; diff --git a/src/intel/tools/tests/gen12.5/add3.expected b/src/intel/tools/tests/gen12.5/add3.expected new file mode 100644 index 00000000000..e6146920beb --- /dev/null +++ b/src/intel/tools/tests/gen12.5/add3.expected @@ -0,0 +1,7 @@ +52 1a 03 00 68 2e 04 76 05 75 0e 0e 05 72 05 73 +52 a5 04 00 68 0e 04 37 05 32 2e 0e 05 2e 05 35 +52 19 04 00 68 2e 04 6f 05 28 8e 0e 05 58 05 6f +52 1c 04 00 60 41 04 31 08 00 0e 0e 05 2f 05 1a +52 1b 24 00 60 41 04 37 08 00 0e 0e 05 35 05 41 +52 1c 03 00 68 0e 04 39 05 34 5e 0e 05 30 05 3b +52 1f 04 00 68 0e 04 33 05 3f 9e 0e 05 7a 05 1b diff --git a/src/intel/tools/tests/gen12.5/send.asm b/src/intel/tools/tests/gen12.5/send.asm new file mode 100644 index 00000000000..6321737809f --- /dev/null +++ b/src/intel/tools/tests/gen12.5/send.asm @@ -0,0 +1,30 @@ +(+f0.0.any8h) send(1) g57UD g58UD nullUD 0x6210c500 0x02000000 + ugm MsgDesc: ( load, a32, d32, V8, transpose, L1STATE_L3MOCS dst_len = 1, src0_len = 1, src1_len = 0 bti ) BTI 2 base_offset 0 { align1 WE_all 1N $5 }; +(+f0.0.any8h) send(1) g28UD g29UD nullUD 0x6210c500 0x02000000 + ugm MsgDesc: ( load, a32, d32, V8, transpose, L1STATE_L3MOCS dst_len = 1, src0_len = 1, src1_len = 0 bti ) BTI 2 base_offset 0 { align1 WE_all 1N $2 }; +(+f0.0.any32h) send(1) g57UD g58UD nullUD 0x6210c500 0x02000000 + ugm MsgDesc: ( load, a32, d32, V8, transpose, L1STATE_L3MOCS dst_len = 1, src0_len = 1, src1_len = 0 bti ) BTI 2 base_offset 0 { align1 WE_all 1N $0 }; +send(8) nullUD g79UD g10UD 0x6200f506 0x04000100 + ugm MsgDesc: ( store_cmask, a32, d32, xyzw, L1STATE_L3MOCS dst_len = 0, src0_len = 1, src1_len = 4 bti ) BTI 4 base_offset 0 { align1 1Q $0 }; +send(16) nullUD g9UD g7UD 0x44000504 a0.1<0>UD + ugm MsgDesc: ( store, a32, d32, V1, L1STATE_L3MOCS dst_len = 0, src0_len = 2, src1_len = 0 ss ) surface_state_index 0 { align1 1H @1 $0 }; +send(1) g4UD g0UD nullUD 0x0210151f 0x00000000 + tgm MsgDesc: ( fence, a32, tile, evict, normal_routing dst_len = 1, src0_len = 1, src1_len = 0 flat ) base_offset 0 { align1 WE_all 1N $3 }; +send(8) nullUD g36UD g37UD 0x02000b04 0x00000040 + slm MsgDesc: ( store, a32, d16u32, V1, L1STATE_L3MOCS dst_len = 0, src0_len = 1, src1_len = 1 flat ) base_offset 0 { align1 1Q $1 }; +send(8) nullUD g34UD g35UD 0x02000b04 0x00000040 + slm MsgDesc: ( store, a32, d16u32, V1, L1STATE_L3MOCS dst_len = 0, src0_len = 1, src1_len = 1 flat ) base_offset 0 { align1 1Q $0 }; +send(8) nullUD g6UD g7UD 0x0200f506 0x00000100 + slm MsgDesc: ( store_cmask, a32, d32, xyzw, L1STATE_L3MOCS dst_len = 0, src0_len = 1, src1_len = 4 flat ) base_offset 0 { align1 1Q $6 }; +send(16) nullUD g82UD g91UD 0x04040519 0x00000080 + slm MsgDesc: ( atomic_or, a32, d32, V1, L1UC_L3WB dst_len = 0, src0_len = 2, src1_len = 2 flat ) base_offset 0 { align1 2H $0 }; +send(1) g10UD g0UD nullUD 0x0210011f 0x00000000 + slm MsgDesc: ( fence, a32, threadgroup, none, normal_routing dst_len = 1, src0_len = 1, src1_len = 0 flat ) base_offset 0 { align1 WE_all 1N $1 }; +send(1) g23UD g117UD nullUD 0x2210c500 a0.1<0>UD + ugm MsgDesc: ( load, a32, d32, V8, transpose, L1STATE_L3MOCS dst_len = 1, src0_len = 1, bss ) src1_len = 0 ex_bso surface_state_index 0 { align1 WE_all 1N @1 $10 }; +send(8) nullUD g14UD g24UD 0x040350fc a0.1<0>UD + dp data 1 MsgDesc: (DC typed surface write, Surface = 252, SIMD16, Mask = 0x0) src1_len = 4 ex_bso mlen 2 rlen 0 { align1 1Q @1 $5 }; +send(8) nullUD g51UD g52UD 0x02000000 0x00000040 + rt accel MsgDesc: SIMD8, mlen 1 ex_mlen 1 rlen 0 { align1 1Q $2 }; +send(16) nullUD g88UD g98UD 0x02000100 0x00000080 + rt accel MsgDesc: SIMD16, mlen 1 ex_mlen 2 rlen 0 { align1 1H $6 }; diff --git a/src/intel/tools/tests/gen12.5/send.expected b/src/intel/tools/tests/gen12.5/send.expected new file mode 100644 index 00000000000..51616dd2b3d --- /dev/null +++ b/src/intel/tools/tests/gen12.5/send.expected @@ -0,0 +1,15 @@ +31 45 00 88 00 00 0c 39 8e 3a 00 fa 00 00 30 04 +31 42 00 88 00 00 0c 1c 8e 1d 00 fa 00 00 30 04 +31 40 00 8c 00 00 0c 39 8e 3a 00 fa 00 00 30 04 +31 40 03 00 00 00 00 00 8c 4f 0c fa 25 0a 3c 04 +31 90 04 00 00 01 02 00 14 09 08 fa 04 07 00 04 +31 43 00 80 00 00 0c 04 0c 00 3e da 00 00 04 00 +31 41 03 00 00 00 00 00 0c 24 08 e6 0c 25 02 00 +31 40 03 00 00 00 00 00 0c 22 08 e6 0c 23 02 00 +31 46 03 00 00 00 00 00 0c 06 0c ea 24 07 3c 00 +31 40 24 00 00 00 00 00 14 52 32 ea 14 5b 00 01 +31 41 00 80 00 00 0c 0a 0c 00 3e e2 00 00 00 00 +31 9a 00 80 80 01 0e 17 8c 75 00 fa 00 00 30 00 +31 95 03 00 80 01 02 00 14 0e f8 c1 24 18 d4 00 +31 42 03 00 00 00 00 00 0c 33 00 80 0c 34 00 00 +31 46 04 00 00 00 00 00 0c 58 00 82 14 62 00 00 diff --git a/src/intel/tools/tests/gen12.5/swsb.asm b/src/intel/tools/tests/gen12.5/swsb.asm new file mode 100644 index 00000000000..4a7b9af8daf --- /dev/null +++ b/src/intel/tools/tests/gen12.5/swsb.asm @@ -0,0 +1,23 @@ +mul(8) g37<1>D g99<8,8,1>D g36<16,8,2>UW { align1 1Q I@1 }; +mul(8) g37<1>D g99<8,8,1>D g36<16,8,2>UW { align1 1Q I@2 }; +mul(8) g37<1>D g99<8,8,1>D g36<16,8,2>UW { align1 1Q I@3 }; +mul(8) g37<1>D g99<8,8,1>D g36<16,8,2>UW { align1 1Q I@4 }; +mul(8) g37<1>D g99<8,8,1>D g36<16,8,2>UW { align1 1Q I@5 }; +mul(8) g37<1>D g99<8,8,1>D g36<16,8,2>UW { align1 1Q I@6 }; +mul(8) g37<1>D g99<8,8,1>D g36<16,8,2>UW { align1 1Q I@7 }; + +mov(8) g36<1>UD g35<8,8,1>F { align1 1Q F@1 }; +mov(8) g36<1>UD g35<8,8,1>F { align1 1Q F@2 }; +mov(8) g36<1>UD g35<8,8,1>F { align1 1Q F@3 }; +mov(8) g36<1>UD g35<8,8,1>F { align1 1Q F@4 }; +mov(8) g36<1>UD g35<8,8,1>F { align1 1Q F@5 }; +mov(8) g36<1>UD g35<8,8,1>F { align1 1Q F@6 }; +mov(8) g36<1>UD g35<8,8,1>F { align1 1Q F@7 }; + +add(1) a0<1>UD a0<0,1,0>UD 0x00000800UD { align1 WE_all 1N A@1 }; +add(1) a0<1>UD a0<0,1,0>UD 0x00000800UD { align1 WE_all 1N A@2 }; +add(1) a0<1>UD a0<0,1,0>UD 0x00000800UD { align1 WE_all 1N A@3 }; +add(1) a0<1>UD a0<0,1,0>UD 0x00000800UD { align1 WE_all 1N A@4 }; +add(1) a0<1>UD a0<0,1,0>UD 0x00000800UD { align1 WE_all 1N A@5 }; +add(1) a0<1>UD a0<0,1,0>UD 0x00000800UD { align1 WE_all 1N A@6 }; +add(1) a0<1>UD a0<0,1,0>UD 0x00000800UD { align1 WE_all 1N A@7 }; \ No newline at end of file diff --git a/src/intel/tools/tests/gen12.5/swsb.expected b/src/intel/tools/tests/gen12.5/swsb.expected new file mode 100644 index 00000000000..fef186c7079 --- /dev/null +++ b/src/intel/tools/tests/gen12.5/swsb.expected @@ -0,0 +1,21 @@ +41 19 03 00 60 06 05 25 05 63 46 01 06 24 56 00 +41 1a 03 00 60 06 05 25 05 63 46 01 06 24 56 00 +41 1b 03 00 60 06 05 25 05 63 46 01 06 24 56 00 +41 1c 03 00 60 06 05 25 05 63 46 01 06 24 56 00 +41 1d 03 00 60 06 05 25 05 63 46 01 06 24 56 00 +41 1e 03 00 60 06 05 25 05 63 46 01 06 24 56 00 +41 1f 03 00 60 06 05 25 05 63 46 01 06 24 56 00 +61 11 03 00 20 0a 05 24 05 23 46 00 00 00 00 00 +61 12 03 00 20 0a 05 24 05 23 46 00 00 00 00 00 +61 13 03 00 20 0a 05 24 05 23 46 00 00 00 00 00 +61 14 03 00 20 0a 05 24 05 23 46 00 00 00 00 00 +61 15 03 00 20 0a 05 24 05 23 46 00 00 00 00 00 +61 16 03 00 20 0a 05 24 05 23 46 00 00 00 00 00 +61 17 03 00 20 0a 05 24 05 23 46 00 00 00 00 00 +40 09 00 80 20 82 01 10 00 10 00 02 00 08 00 00 +40 0a 00 80 20 82 01 10 00 10 00 02 00 08 00 00 +40 0b 00 80 20 82 01 10 00 10 00 02 00 08 00 00 +40 0c 00 80 20 82 01 10 00 10 00 02 00 08 00 00 +40 0d 00 80 20 82 01 10 00 10 00 02 00 08 00 00 +40 0e 00 80 20 82 01 10 00 10 00 02 00 08 00 00 +40 0f 00 80 20 82 01 10 00 10 00 02 00 08 00 00 diff --git a/src/intel/tools/tests/gen12/dp4a.asm b/src/intel/tools/tests/gen12/dp4a.asm new file mode 100644 index 00000000000..5ae00c8aae3 --- /dev/null +++ b/src/intel/tools/tests/gen12/dp4a.asm @@ -0,0 +1,33 @@ +dp4a(8) g10<1>D g2<8,8,1>D g6<8,8,1>D g7<1,1,1>D { align1 1Q @1 }; +dp4a(8) g10<1>D g2<8,8,1>D g6<8,8,1>D g7<1,1,1>UD { align1 1Q @1 }; +dp4a(8) g10<1>D g2<8,8,1>D g8<8,8,1>D g9<1,1,1>D { align1 1Q @1 }; +dp4a(8) g10<1>D g2<8,8,1>D g8<8,8,1>D g9<1,1,1>UD { align1 1Q @1 }; +dp4a(8) g10<1>UD g2<8,8,1>UD g6<8,8,1>UD g7<1,1,1>UD { align1 1Q @1 }; +dp4a(8) g10<1>UD g2<8,8,1>UD g8<8,8,1>UD g9<1,1,1>UD { align1 1Q @1 }; +dp4a(8) g5<1>D g2<8,8,1>D g3<8,8,1>D g4<1,1,1>D { align1 1Q @3 $0.dst }; +dp4a(8) g5<1>D g2<8,8,1>D g3<8,8,1>D g4<1,1,1>UD { align1 1Q @3 $0.dst }; +dp4a(8) g5<1>UD g2<8,8,1>UD g3<8,8,1>UD g4<1,1,1>UD { align1 1Q @3 $0.dst }; +dp4a(8) g6<1>D g2<8,8,1>D g3<8,8,1>D g4<1,1,1>D { align1 1Q @4 $1.dst }; +dp4a(8) g6<1>D g2<8,8,1>D g3<8,8,1>D g4<1,1,1>UD { align1 1Q @4 $1.dst }; +dp4a(8) g6<1>D g2<8,8,1>D g4<8,8,1>D g5<1,1,1>D { align1 1Q @4 $0.dst }; +dp4a(8) g6<1>D g2<8,8,1>D g4<8,8,1>D g5<1,1,1>UD { align1 1Q @4 $0.dst }; +dp4a(8) g6<1>UD g2<8,8,1>UD g3<8,8,1>UD g4<1,1,1>UD { align1 1Q @4 $1.dst }; +dp4a(8) g6<1>UD g2<8,8,1>UD g4<8,8,1>UD g5<1,1,1>UD { align1 1Q @4 $0.dst }; +dp4a(8) g7<1>D g2<8,8,1>D g5<8,8,1>D g6<1,1,1>D { align1 1Q @1 }; +dp4a(8) g7<1>D g2<8,8,1>D g5<8,8,1>D g6<1,1,1>UD { align1 1Q @1 }; +dp4a(8) g7<1>UD g2<8,8,1>UD g5<8,8,1>UD g6<1,1,1>UD { align1 1Q @1 }; +dp4a(8) g8<1>D g2<8,8,1>D g4<8,8,1>D g5<1,1,1>D { align1 1Q @3 $0.dst }; +dp4a(8) g8<1>D g2<8,8,1>D g4<8,8,1>D g5<1,1,1>D { align1 1Q @4 $0.dst }; +dp4a(8) g8<1>D g2<8,8,1>D g4<8,8,1>D g5<1,1,1>UD { align1 1Q @3 $0.dst }; +dp4a(8) g8<1>D g2<8,8,1>D g4<8,8,1>D g5<1,1,1>UD { align1 1Q @4 $0.dst }; +dp4a(8) g8<1>D g2<8,8,1>D g6<8,8,1>D g7<1,1,1>D { align1 1Q @1 }; +dp4a(8) g8<1>D g2<8,8,1>D g6<8,8,1>D g7<1,1,1>UD { align1 1Q @1 }; +dp4a(8) g8<1>UD g2<8,8,1>UD g4<8,8,1>UD g5<1,1,1>UD { align1 1Q @3 $0.dst }; +dp4a(8) g8<1>UD g2<8,8,1>UD g4<8,8,1>UD g5<1,1,1>UD { align1 1Q @4 $0.dst }; +dp4a(8) g8<1>UD g2<8,8,1>UD g6<8,8,1>UD g7<1,1,1>UD { align1 1Q @1 }; +dp4a.sat(8) g10<1>D g5<8,8,1>D g6<8,8,1>D g7<1,1,1>D { align1 1Q @1 $2.dst }; +dp4a.sat(8) g10<1>D g5<8,8,1>D g6<8,8,1>D g7<1,1,1>UD { align1 1Q @1 $2.dst }; +dp4a.sat(8) g10<1>UD g5<8,8,1>UD g6<8,8,1>UD g7<1,1,1>UD { align1 1Q @1 $2.dst }; +dp4a.sat(8) g8<1>D g5<8,8,1>D g3<8,8,1>D g4<1,1,1>D { align1 1Q $2.dst }; +dp4a.sat(8) g8<1>D g5<8,8,1>D g3<8,8,1>D g4<1,1,1>UD { align1 1Q $2.dst }; +dp4a.sat(8) g8<1>UD g5<8,8,1>UD g3<8,8,1>UD g4<1,1,1>UD { align1 1Q $2.dst }; diff --git a/src/intel/tools/tests/gen12/dp4a.expected b/src/intel/tools/tests/gen12/dp4a.expected new file mode 100644 index 00000000000..44904c296ff --- /dev/null +++ b/src/intel/tools/tests/gen12/dp4a.expected @@ -0,0 +1,33 @@ +58 01 03 00 68 0e 04 0a 05 02 0e 0e 05 06 05 07 +58 01 03 00 68 0e 04 0a 05 02 0a 0e 05 06 05 07 +58 01 03 00 68 0e 04 0a 05 02 0e 0e 05 08 05 09 +58 01 03 00 68 0e 04 0a 05 02 0a 0e 05 08 05 09 +58 01 03 00 28 0a 04 0a 05 02 0a 0a 05 06 05 07 +58 01 03 00 28 0a 04 0a 05 02 0a 0a 05 08 05 09 +58 b0 03 00 68 0e 04 05 05 02 0e 0e 05 03 05 04 +58 b0 03 00 68 0e 04 05 05 02 0a 0e 05 03 05 04 +58 b0 03 00 28 0a 04 05 05 02 0a 0a 05 03 05 04 +58 c1 03 00 68 0e 04 06 05 02 0e 0e 05 03 05 04 +58 c1 03 00 68 0e 04 06 05 02 0a 0e 05 03 05 04 +58 c0 03 00 68 0e 04 06 05 02 0e 0e 05 04 05 05 +58 c0 03 00 68 0e 04 06 05 02 0a 0e 05 04 05 05 +58 c1 03 00 28 0a 04 06 05 02 0a 0a 05 03 05 04 +58 c0 03 00 28 0a 04 06 05 02 0a 0a 05 04 05 05 +58 01 03 00 68 0e 04 07 05 02 0e 0e 05 05 05 06 +58 01 03 00 68 0e 04 07 05 02 0a 0e 05 05 05 06 +58 01 03 00 28 0a 04 07 05 02 0a 0a 05 05 05 06 +58 b0 03 00 68 0e 04 08 05 02 0e 0e 05 04 05 05 +58 c0 03 00 68 0e 04 08 05 02 0e 0e 05 04 05 05 +58 b0 03 00 68 0e 04 08 05 02 0a 0e 05 04 05 05 +58 c0 03 00 68 0e 04 08 05 02 0a 0e 05 04 05 05 +58 01 03 00 68 0e 04 08 05 02 0e 0e 05 06 05 07 +58 01 03 00 68 0e 04 08 05 02 0a 0e 05 06 05 07 +58 b0 03 00 28 0a 04 08 05 02 0a 0a 05 04 05 05 +58 c0 03 00 28 0a 04 08 05 02 0a 0a 05 04 05 05 +58 01 03 00 28 0a 04 08 05 02 0a 0a 05 06 05 07 +58 92 03 00 6c 0e 04 0a 05 05 0e 0e 05 06 05 07 +58 92 03 00 6c 0e 04 0a 05 05 0a 0e 05 06 05 07 +58 92 03 00 2c 0a 04 0a 05 05 0a 0a 05 06 05 07 +58 22 03 00 6c 0e 04 08 05 05 0e 0e 05 03 05 04 +58 22 03 00 6c 0e 04 08 05 05 0a 0e 05 03 05 04 +58 22 03 00 2c 0a 04 08 05 05 0a 0a 05 03 05 04 diff --git a/src/intel/tools/tests/gen12/send.asm b/src/intel/tools/tests/gen12/send.asm new file mode 100644 index 00000000000..81119aa8ccf --- /dev/null +++ b/src/intel/tools/tests/gen12/send.asm @@ -0,0 +1,43 @@ +send(16) g113UD g12UD nullUD a0<0>UD 0x00000000 + dp data 1 MsgDesc: indirect ex_mlen 0 { align1 1H @1 $6 }; +(+f1.0) send(16) nullUD g15UD g17UD a0<0>UD 0x00000080 + dp data 1 MsgDesc: indirect ex_mlen 2 { align1 1H @1 $4 }; +send(8) g104UD g119UD nullUD 0x04116e13 0x00000000 + dp data 1 MsgDesc: (DC typed surface read, Surface = 19, SIMD8, Mask = 0xe) mlen 2 ex_mlen 0 rlen 1 { align1 2Q $8 }; +send(8) nullUD g92UD g117UD 0x020350fc a0.1<0>UD + dp data 1 MsgDesc: (DC typed surface write, Surface = 252, SIMD16, Mask = 0x0) mlen 1 rlen 0 { align1 1Q @1 $8 }; +(+f0.0.any8h) send(8) g55UD g118UD nullUD 0x02184201 0x00000000 + data MsgDesc: (DC unaligned OWORD block read, bti 1, 2) mlen 1 ex_mlen 0 rlen 1 { align1 WE_all 1Q @3 $9 }; +send(8) nullUD g126UD nullUD 0x02000000 0x00000000 + thread_spawner MsgDesc: mlen 1 ex_mlen 0 rlen 0 { align1 WE_all 1Q @1 EOT }; +send(8) g18UD g24UD nullUD 0x04115e10 0x00000000 + dp data 1 MsgDesc: (DC typed surface read, Surface = 16, SIMD16, Mask = 0xe) mlen 2 ex_mlen 0 rlen 1 { align1 1Q $1 }; +send(8) g19UD g28UD nullUD 0x04116e10 0x00000000 + dp data 1 MsgDesc: (DC typed surface read, Surface = 16, SIMD8, Mask = 0xe) mlen 2 ex_mlen 0 rlen 1 { align1 2Q @7 $2 }; +send(16) g50UD g36UD nullUD a0<0>UD 0x00000000 + sampler MsgDesc: indirect ex_mlen 0 { align1 1H @1 $3 }; +send(8) nullUD g25UD g21UD 0x02035001 0x00000100 + dp data 1 MsgDesc: (DC typed surface write, Surface = 1, SIMD16, Mask = 0x0) mlen 1 ex_mlen 4 rlen 0 { align1 1Q $9 }; +send(8) g5UD g25UD nullUD 0x02415001 0x00000000 + dp data 1 MsgDesc: (DC typed surface read, Surface = 1, SIMD16, Mask = 0x0) mlen 1 ex_mlen 0 rlen 4 { align1 1Q $10 }; +send(8) g27UD g35UD nullUD 0x04146efd 0x00000000 + dp data 1 MsgDesc: (DC A64 untyped surface read, Surface = 253, SIMD8, Mask = 0xe) mlen 2 ex_mlen 0 rlen 1 { align1 1Q @1 $0 }; +send(8) nullUD g36UD g38UD 0x04035001 0x00000100 + dp data 1 MsgDesc: (DC typed surface write, Surface = 1, SIMD16, Mask = 0x0) mlen 2 ex_mlen 4 rlen 0 { align1 1Q @1 $1 }; +send(8) nullUD g126UD g118UD 0x02080007 0x00000200 + urb MsgDesc: offset 0 SIMD8 write mlen 1 ex_mlen 8 rlen 0 { align1 1Q @1 EOT }; +send(8) g14UD g37UD nullUD 0x02110401 0x00000000 + data MsgDesc: (DC byte scattered read, bti 1, 4) mlen 1 ex_mlen 0 rlen 1 { align1 1Q @1 $0 }; +send(1) g100UD g0UD nullUD 0x0219e000 0x00000000 + data MsgDesc: (DC mfence, bti 0, 32) mlen 1 ex_mlen 0 rlen 1 { align1 WE_all 1N $1 }; +send(1) g15UD g0UD nullUD 0x0219e000 0x00000000 + data MsgDesc: (DC mfence, bti 0, 32) mlen 1 ex_mlen 0 rlen 1 { align1 WE_all 1N $5 }; + +sendc(16) nullUD g119UD nullUD 0x10031000 0x00000000 + render MsgDesc: RT write SIMD16 LastRT Surface = 0 mlen 8 ex_mlen 0 rlen 0 { align1 1H @1 EOT }; +sendc(8) nullUD g125UD g123UD 0x04031400 0x00000080 + render MsgDesc: RT write SIMD8 LastRT Surface = 0 mlen 2 ex_mlen 2 rlen 0 { align1 1Q @1 EOT }; +sendc(16) nullUD g119UD nullUD 0x10031000 0x00000000 + render MsgDesc: RT write SIMD16 LastRT Surface = 0 mlen 8 ex_mlen 0 rlen 0 { align1 1H @1 EOT }; +sendc(16) nullUD g123UD g119UD 0x08031000 0x00000100 + render MsgDesc: RT write SIMD16 LastRT Surface = 0 mlen 4 ex_mlen 4 rlen 0 { align1 1H @1 EOT }; diff --git a/src/intel/tools/tests/gen12/send.expected b/src/intel/tools/tests/gen12/send.expected new file mode 100644 index 00000000000..3ba1ebb53c2 --- /dev/null +++ b/src/intel/tools/tests/gen12/send.expected @@ -0,0 +1,21 @@ +31 96 04 00 00 00 05 71 04 0c 00 c0 00 00 00 00 +31 94 84 01 00 00 01 00 04 0f 00 c0 14 11 00 00 +31 48 13 00 00 00 0c 68 14 77 26 cc 00 00 5a 00 +31 98 03 00 00 01 02 00 0c 5c f8 c1 04 75 d4 00 +31 b9 03 88 00 00 0c 37 0c 76 02 a4 00 00 10 02 +31 01 03 80 04 00 00 00 0c 7e 00 70 00 00 00 00 +31 41 03 00 00 00 0c 12 14 18 20 cc 00 00 56 00 +31 f2 13 00 00 00 0c 13 14 1c 20 cc 00 00 5a 00 +31 93 04 00 00 00 05 32 04 24 00 20 00 00 00 00 +31 49 03 00 00 00 00 00 0c 19 02 c0 24 15 d4 00 +31 4a 03 00 00 00 24 05 0c 19 02 c0 00 00 54 00 +31 90 03 00 00 00 0c 1b 14 23 fa cd 00 00 1a 01 +31 91 03 00 00 00 00 00 14 24 02 c0 24 26 d4 00 +31 01 03 00 04 00 00 00 0c 7e 0e 60 44 76 00 02 +31 90 03 00 00 00 0c 0e 0c 25 02 a8 00 00 40 00 +31 41 00 80 00 00 0c 64 0c 00 00 a0 00 00 78 02 +31 45 00 80 00 00 0c 0f 0c 00 00 a0 00 00 78 02 +32 01 04 00 04 00 00 00 44 77 00 50 00 00 c4 00 +32 01 03 00 04 00 00 00 14 7d 00 58 14 7b c4 00 +32 01 04 00 04 00 00 00 44 77 00 50 00 00 c4 00 +32 01 04 00 04 00 00 00 24 7b 00 50 24 77 c4 00 diff --git a/src/intel/tools/tests/gen12/swsb.asm b/src/intel/tools/tests/gen12/swsb.asm new file mode 100644 index 00000000000..7c813356cf3 --- /dev/null +++ b/src/intel/tools/tests/gen12/swsb.asm @@ -0,0 +1,40 @@ +cmp.l.f0.0(8) g55<1>UD g54<8,8,1>UD 0x00000290UD { align1 1Q @1 }; +mov(16) g6<1>D g20<8,8,1>W { align1 2H @2 }; +add(16) g122<1>F g98<8,8,1>F (abs)g102<8,8,1>F { align1 1H @3 }; +shl(8) g75<1>D g122<8,8,1>D 0x00000002UD { align1 1Q @4 }; +sel.l(4) g90.4<1>D g90.3<0,1,0>D g90.4<4,4,1>D { align1 WE_all 1N @5 }; +and(16) g58<1>UD g16<8,8,1>UD g56<8,8,1>UD { align1 1H @6 }; +or.nz.f0.0(16) null<1>UD g105<8,8,1>UD g103<8,8,1>UD { align1 1H @7 }; + +math cos(16) g17<1>F g15<8,8,1>F null<8,8,1>F { align1 1H @1 $0 }; +math exp(16) g1<1>F g29<8,8,1>F null<8,8,1>F { align1 1H @5 $2 }; +math sqrt(8) g9<1>HF g6<8,8,1>HF null<8,8,1>F { align1 1Q @1 $3 }; +math intdiv(8) g103<1>D g101<8,8,1>D g35<8,8,1>D { align1 1Q @4 $4 }; +math intmod(8) g101<1>D g97<8,8,1>D g76<8,8,1>D { align1 2Q @2 $5 }; +math inv(16) g10<1>F g8<8,8,1>F null<8,8,1>F { align1 2H @2 $6 }; +math log(16) g102<1>F g100<8,8,1>F null<8,8,1>F { align1 2H @1 $7 }; +math rsq(16) g76<1>F g74<8,8,1>F null<8,8,1>F { align1 1H @7 $8 }; +math sin(16) g123<1>F g121<8,8,1>F null<8,8,1>F { align1 1H @4 $9 }; +math sqrt(16) g43<1>F g47<8,8,1>F null<8,8,1>F { align1 2H @7 $10 }; +math cos(8) g103<1>HF g98<8,8,1>HF null<8,8,1>F { align1 1Q @3 $11 }; +math exp(8) g54<1>HF g52<8,8,1>HF null<8,8,1>F { align1 1Q @1 $12 }; +math intdiv(8) g35<1>D g31<8,8,1>D g33<8,8,1>D { align1 4Q @2 $13 }; +math intmod(8) g101<1>D g97<8,8,1>D g99<8,8,1>D { align1 2Q @4 $14 }; +math inv(8) g102<1>HF g92<8,8,1>HF null<8,8,1>F { align1 1Q @6 $15 }; + +sel.ge(16) g7<1>UW g7<16,16,1>UW g89<16,8,2>UW { align1 1H @7 $0.dst }; +mov(16) a0<1>UW 0x03e0UW { align1 WE_all 1H @3 $1.dst }; +add(16) g100<1>D g102<8,8,1>D -2114D { align1 1H @3 $2.dst }; +add(16) g100<1>D g105<8,8,1>D (abs)g18<8,8,1>D { align1 1H @3 $3.dst }; +add(16) g36<1>D g36<8,8,1>D g106<8,8,1>D { align1 1H @7 $4.dst }; +and(16) g49<1>UD g45<8,8,1>UD g47<8,8,1>UD { align1 1H @3 $5.dst }; +asr(16) g102<2>W g41<16,8,2>W g28<8,8,1>UD { align1 2H @6 $6.dst }; +cmp.l.f0.0(8) g97<1>F (abs)g96<8,8,1>F 0x3d4ccccdF /* 0.05F */ { align1 1Q @3 $7.dst }; +cmp.nz.f0.0(8) g100<1>F g98<8,8,1>F g99<8,8,1>F { align1 1Q @1 $8.dst }; +(+f0.0) sel(8) g64<1>D -g15<8,8,1>D g15<8,8,1>D { align1 1Q @1 $9.dst }; +mov(16) g15<1>UD g13<8,8,1>D { align1 1H @1 $10.dst }; +mul(8) acc0<1>UD g10<8,4,2>UD g101<16,8,2>UW { align1 1Q @7 $11.dst }; +or(16) g51<1>UW g51<16,16,1>UW g75<16,8,2>UW { align1 1H @7 $12.dst }; +sel.ge(16) g28<1>W g28<16,16,1>W g92<16,8,2>W { align1 2H @7 $13.dst }; +xor(16) g10<1>UD g10<8,8,1>UD g100<8,8,1>UD { align1 1H @7 $14.dst }; +and(16) g39<1>UD g35<8,8,1>UD g37<8,8,1>UD { align1 2H @5 $15.dst }; diff --git a/src/intel/tools/tests/gen12/swsb.expected b/src/intel/tools/tests/gen12/swsb.expected new file mode 100644 index 00000000000..223c3fecdd9 --- /dev/null +++ b/src/intel/tools/tests/gen12/swsb.expected @@ -0,0 +1,38 @@ +70 01 03 00 20 82 05 37 05 36 46 52 90 02 00 00 +61 02 24 00 60 05 05 06 05 14 46 00 00 00 00 00 +40 03 04 00 a0 0a 05 7a 05 62 46 0a 05 66 46 01 +69 04 03 00 60 86 05 4b 05 7a 46 02 02 00 00 00 +62 05 02 80 60 06 85 5a 64 5a 00 56 85 5a 34 00 +65 06 04 00 20 02 05 3a 05 10 46 02 05 38 46 00 +66 07 04 00 20 02 01 00 05 69 46 22 05 67 46 00 +38 90 04 00 a0 0a 05 11 05 0f 46 7a 01 00 46 00 +38 d2 04 00 a0 0a 05 01 05 1d 46 3a 01 00 46 00 +38 93 03 00 90 09 05 09 05 06 46 4a 01 00 46 00 +38 c4 03 00 60 06 05 67 05 65 46 c6 05 23 46 00 +38 a5 13 00 60 06 05 65 05 61 46 d6 05 4c 46 00 +38 a6 24 00 a0 0a 05 0a 05 08 46 1a 01 00 46 00 +38 97 24 00 a0 0a 05 66 05 64 46 2a 01 00 46 00 +38 f8 04 00 a0 0a 05 4c 05 4a 46 5a 01 00 46 00 +38 c9 04 00 a0 0a 05 7b 05 79 46 6a 01 00 46 00 +38 fa 24 00 a0 0a 05 2b 05 2f 46 4a 01 00 46 00 +38 bb 03 00 90 09 05 67 05 62 46 7a 01 00 46 00 +38 9c 03 00 90 09 05 36 05 34 46 3a 01 00 46 00 +38 ad 33 00 60 06 05 23 05 1f 46 c6 05 21 46 00 +38 ce 13 00 60 06 05 65 05 61 46 d6 05 63 46 00 +38 ef 03 00 90 09 05 66 05 5c 46 1a 01 00 46 00 +62 f0 04 00 10 01 05 07 05 07 58 41 06 59 56 00 +61 b1 04 80 10 41 01 10 00 00 00 00 e0 03 e0 03 +40 b2 04 00 60 86 05 64 05 66 46 06 be f7 ff ff +40 b3 04 00 60 06 05 64 05 69 46 06 05 12 46 01 +40 f4 04 00 60 06 05 24 05 24 46 06 05 6a 46 00 +65 b5 04 00 20 02 05 31 05 2d 46 02 05 2f 46 00 +6c e6 24 00 50 05 06 66 06 29 56 02 05 1c 46 00 +70 b7 03 00 a0 9a 05 61 05 60 46 5a cd cc 4c 3d +70 98 03 00 a0 0a 05 64 05 62 46 2a 05 63 46 00 +62 99 03 01 60 26 05 40 05 0f 46 06 05 0f 46 00 +61 9a 04 00 20 06 05 0f 05 0d 46 00 00 00 00 00 +41 fb 03 00 20 02 01 20 06 0a 44 01 06 65 56 00 +66 fc 04 00 10 01 05 33 05 33 58 01 06 4b 56 00 +62 fd 24 00 50 05 05 1c 05 1c 58 45 06 5c 56 00 +67 fe 04 00 20 02 05 0a 05 0a 46 02 05 64 46 00 +65 df 24 00 20 02 05 27 05 23 46 02 05 25 46 00 diff --git a/src/intel/tools/tests/gen12/sync.asm b/src/intel/tools/tests/gen12/sync.asm new file mode 100644 index 00000000000..a47c5dec28c --- /dev/null +++ b/src/intel/tools/tests/gen12/sync.asm @@ -0,0 +1,33 @@ +sync nop(16) null<0,1,0>UB { align1 WE_all 1H @1 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 1N @1 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 1N @2 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 1N @3 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 1N @4 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 1N @5 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 1N @6 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 1N @7 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 3N @1 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 3N @2 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 3N @3 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 3N @4 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 3N @5 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 3N @6 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 3N @7 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 5N @1 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 5N @2 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 5N @3 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 5N @4 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 5N @5 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 5N @6 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 5N @7 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 7N @1 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 7N @2 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 7N @3 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 7N @4 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 7N @5 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 7N @6 }; +sync nop(1) null<0,1,0>UB { align1 WE_all 7N @7 }; +sync nop(32) null<0,1,0>UB { align1 WE_all @1 }; +sync nop(8) null<0,1,0>UB { align1 WE_all 1Q @1 }; +sync allwr(16) null<0,1,0>UB { align1 1H }; +sync allwr(8) null<0,1,0>UB { align1 1Q }; diff --git a/src/intel/tools/tests/gen12/sync.expected b/src/intel/tools/tests/gen12/sync.expected new file mode 100644 index 00000000000..2e98e4ab791 --- /dev/null +++ b/src/intel/tools/tests/gen12/sync.expected @@ -0,0 +1,33 @@ +01 01 04 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 01 00 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 02 00 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 03 00 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 04 00 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 05 00 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 06 00 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 07 00 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 01 10 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 02 10 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 03 10 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 04 10 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 05 10 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 06 10 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 07 10 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 01 20 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 02 20 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 03 20 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 04 20 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 05 20 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 06 20 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 07 20 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 01 30 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 02 30 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 03 30 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 04 30 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 05 30 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 06 30 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 07 30 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 01 05 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 01 03 80 00 00 00 00 00 00 00 00 00 00 00 00 +01 00 04 00 00 00 00 00 00 00 00 30 00 00 00 00 +01 00 03 00 00 00 00 00 00 00 00 30 00 00 00 00