@@ -82,37 +82,38 @@ def predicate_pack_part_kernel(
8282 addr = 1024 ,
8383 valid_shape = [ROWS , ROW_BYTES ],
8484 )
85+ src_ptr = pto .castptr (pto .ui64 (0 ), pto .ptr (pto .ui8 , "ub" ))
86+ dst_ptr = pto .castptr (pto .ui64 (1024 ), pto .ptr (pto .ui8 , "ub" ))
8587
8688 pto .tile .load (inp_part , src_tile )
8789 pto .tile .load (out_part , dst_tile )
8890 pto .set_flag ("MTE2" , "V" , event_id = 0 )
8991 pto .wait_flag ("MTE2" , "V" , event_id = 0 )
9092
91- with pto .simd ():
92- seed = pto .pset_b8 (pto .MaskPattern .ALL )
93- src = pto .vlds (src_tile [0 , 0 :])
94- active_b8 = pto .vcmp (src , src , seed , pto .CmpMode .EQ )
95- active = pto .pbitcast (active_b8 , pto .mask_b32 )
96-
97- packed_lo_same = pto .ppack (active , "LOWER" )
98- unpacked_lo_same = pto .punpack (packed_lo_same , "LOWER" )
99- packed_lo_b16 = pto .ppack (active , "LOWER" , to_type = pto .mask_b16 )
100- unpacked_lo_b32 = pto .punpack (packed_lo_b16 , "LOWER" , to_type = pto .mask_b32 )
101-
102- packed_hi_same = pto .ppack (active , "HIGHER" )
103- unpacked_hi_same = pto .punpack (packed_hi_same , "HIGHER" )
104- packed_hi_b16 = pto .ppack (active , "HIGHER" , to_type = pto .mask_b16 )
105- unpacked_hi_b32 = pto .punpack (packed_hi_b16 , "HIGHER" , to_type = pto .mask_b32 )
106-
107- pto .psts (active , dst_tile .as_ptr (), 0 , dist = "NORM" )
108- pto .psts (packed_lo_same , dst_tile .as_ptr (), ROW_BYTES , dist = "NORM" )
109- pto .psts (unpacked_lo_same , dst_tile .as_ptr (), ROW_BYTES * 2 , dist = "NORM" )
110- pto .psts (packed_lo_b16 , dst_tile .as_ptr (), ROW_BYTES * 3 , dist = "NORM" )
111- pto .psts (unpacked_lo_b32 , dst_tile .as_ptr (), ROW_BYTES * 4 , dist = "NORM" )
112- pto .psts (packed_hi_same , dst_tile .as_ptr (), ROW_BYTES * 5 , dist = "NORM" )
113- pto .psts (unpacked_hi_same , dst_tile .as_ptr (), ROW_BYTES * 6 , dist = "NORM" )
114- pto .psts (packed_hi_b16 , dst_tile .as_ptr (), ROW_BYTES * 7 , dist = "NORM" )
115- pto .psts (unpacked_hi_b32 , dst_tile .as_ptr (), ROW_BYTES * 8 , dist = "NORM" )
93+ seed = pto .pset_b8 (pto .MaskPattern .ALL )
94+ src = pto .vlds (src_ptr , 0 , pto .vreg_type (256 , pto .ui8 ))
95+ active_b8 = pto .vcmp (src , src , seed , pto .CmpMode .EQ )
96+ active = pto .pbitcast (active_b8 , pto .mask_b32 )
97+
98+ packed_lo_same = pto .ppack (active , "LOWER" )
99+ unpacked_lo_same = pto .punpack (packed_lo_same , "LOWER" )
100+ packed_lo_b16 = pto .ppack (active , "LOWER" , to_type = pto .mask_b16 )
101+ unpacked_lo_b32 = pto .punpack (packed_lo_b16 , "LOWER" , to_type = pto .mask_b32 )
102+
103+ packed_hi_same = pto .ppack (active , "HIGHER" )
104+ unpacked_hi_same = pto .punpack (packed_hi_same , "HIGHER" )
105+ packed_hi_b16 = pto .ppack (active , "HIGHER" , to_type = pto .mask_b16 )
106+ unpacked_hi_b32 = pto .punpack (packed_hi_b16 , "HIGHER" , to_type = pto .mask_b32 )
107+
108+ pto .psts (active , dst_ptr , 0 , dist = "NORM" )
109+ pto .psts (packed_lo_same , dst_ptr , ROW_BYTES , dist = "NORM" )
110+ pto .psts (unpacked_lo_same , dst_ptr , ROW_BYTES * 2 , dist = "NORM" )
111+ pto .psts (packed_lo_b16 , dst_ptr , ROW_BYTES * 3 , dist = "NORM" )
112+ pto .psts (unpacked_lo_b32 , dst_ptr , ROW_BYTES * 4 , dist = "NORM" )
113+ pto .psts (packed_hi_same , dst_ptr , ROW_BYTES * 5 , dist = "NORM" )
114+ pto .psts (unpacked_hi_same , dst_ptr , ROW_BYTES * 6 , dist = "NORM" )
115+ pto .psts (packed_hi_b16 , dst_ptr , ROW_BYTES * 7 , dist = "NORM" )
116+ pto .psts (unpacked_hi_b32 , dst_ptr , ROW_BYTES * 8 , dist = "NORM" )
116117
117118 pto .set_flag ("V" , "MTE3" , event_id = 0 )
118119 pto .wait_flag ("V" , "MTE3" , event_id = 0 )
0 commit comments