Ignore:
Timestamp:
May 16, 2018, 10:02:54 PM (14 months ago)
Author:
cameron
Message:

Some fixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/IR_Gen/idisa_avx_builder.cpp

    r6045 r6046  
    355355        }
    356356        Constant * splat01 = ConstantVector::get({Idxs, field_count});
    357         Value * half_shuffle_table = simd_add(fw, simd_add(fw, shuffle_table, shuffle_table), splat01);
    358         return mvmd_shuffle(half_fw, a, half_shuffle_table);
     357        Value * half_shuffle_table = simd_or(shuffle_table, mvmd_slli(half_fw, shuffle_table, 1));
     358        half_shuffle_table = simd_add(fw, simd_add(fw, half_shuffle_table, half_shuffle_table), splat01);
     359        Value * rslt = mvmd_shuffle(half_fw, a, half_shuffle_table);
     360        return rslt;
    359361    }
    360362    if (mBitBlockWidth == 256 && fw == 32) {
     
    570572        return CreateCall(permuteFunc, {fwCast(fw, shuffle_table), fwCast(fw, a), fwCast(fw, b), mask});
    571573    }
    572     return IDISA_Builder::mvmd_shuffle(fw, a, shuffle_table);
     574    return IDISA_Builder::mvmd_shuffle2(fw, a, b, shuffle_table);
    573575}
    574576
Note: See TracChangeset for help on using the changeset viewer.