diff --git a/tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_sfpu/ckernel_sfpu_left_shift.h b/tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_sfpu/ckernel_sfpu_left_shift.h index 2c69fe1353c..b2324d64633 100644 --- a/tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_sfpu/ckernel_sfpu_left_shift.h +++ b/tt_metal/hw/ckernels/blackhole/metal/llk_api/llk_sfpu/ckernel_sfpu_left_shift.h @@ -17,9 +17,13 @@ template inline void calculate_left_shift(const uint shift_amt) { #pragma GCC unroll 0 for (int d = 0; d < ITERATIONS; d++) { - TTI_SFPLOAD(0,12,ADDR_MOD_7,0); - TT_SFPSHFT(shift_amt,0,0,1); - TTI_SFPSTORE(0,12,ADDR_MOD_7,0); + vInt val = dst_reg[0]; + vInt v = val; + + val = val << shift_amt; + val = setsgn(val, v); + dst_reg[0] = val; + dst_reg++; } } diff --git a/tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_sfpu/ckernel_sfpu_left_shift.h b/tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_sfpu/ckernel_sfpu_left_shift.h index ef7056e8834..b2324d64633 100644 --- a/tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_sfpu/ckernel_sfpu_left_shift.h +++ b/tt_metal/hw/ckernels/wormhole_b0/metal/llk_api/llk_sfpu/ckernel_sfpu_left_shift.h @@ -17,9 +17,13 @@ template inline void calculate_left_shift(const uint shift_amt) { #pragma GCC unroll 0 for (int d = 0; d < ITERATIONS; d++) { - TTI_SFPLOAD(0,4,3,0); - TT_SFPSHFT(shift_amt,0,0,1); - TTI_SFPSTORE(0,4,3,0); + vInt val = dst_reg[0]; + vInt v = val; + + val = val << shift_amt; + val = setsgn(val, v); + dst_reg[0] = val; + dst_reg++; } }