forked from OSchip/llvm-project
2b6fe3ffa6
Masked vectors which hold shift amounts when creating the following nodes: ISD::SHL, ISD::SRL or ISD::SRA. Instructions that use said nodes, which have had their arguments altered are sll, srl, sra, bneg, bclr and bset. For said instructions, the shift amount or the bit position that is specified in the corresponding vector elements will be interpreted as the shift amount/bit position modulo the size of the element in bits. The problem lies in compiling with -O2 enabled, where the instructions for formats .w and .d are not generated, but are instead optimized away. In this case, having shift amounts that are either negative or greater than the element bit size results in generation of incorrect results when constant folding. We remedy this by masking the operands for the nodes mentioned above before actually creating them, so that the final result is correct before placed into the constant pool. Patch by Stefan Maksimovic. Differential Revision: https://reviews.llvm.org/D31331 llvm-svn: 300839 |
||
---|---|---|
.. | ||
2r.ll | ||
2r_vector_scalar.ll | ||
2rf.ll | ||
2rf_exup.ll | ||
2rf_float_int.ll | ||
2rf_fq.ll | ||
2rf_int_float.ll | ||
2rf_tq.ll | ||
3r-a.ll | ||
3r-b.ll | ||
3r-c.ll | ||
3r-d.ll | ||
3r-i.ll | ||
3r-m.ll | ||
3r-p.ll | ||
3r-s.ll | ||
3r-v.ll | ||
3r_4r.ll | ||
3r_4r_widen.ll | ||
3r_splat.ll | ||
3rf.ll | ||
3rf_4rf.ll | ||
3rf_4rf_q.ll | ||
3rf_exdo.ll | ||
3rf_float_int.ll | ||
3rf_int_float.ll | ||
3rf_q.ll | ||
arithmetic.ll | ||
arithmetic_float.ll | ||
basic_operations.ll | ||
basic_operations_float.ll | ||
bit.ll | ||
bitcast.ll | ||
bitwise.ll | ||
bmzi_bmnzi.ll | ||
compare.ll | ||
compare_float.ll | ||
elm_copy.ll | ||
elm_cxcmsa.ll | ||
elm_insv.ll | ||
elm_move.ll | ||
elm_shift_slide.ll | ||
endian.ll | ||
f16-llvm-ir.ll | ||
fexuprl.ll | ||
frameindex.ll | ||
i5-a.ll | ||
i5-b.ll | ||
i5-c.ll | ||
i5-m.ll | ||
i5-s.ll | ||
i5_ld_st.ll | ||
i8.ll | ||
i10.ll | ||
immediates-bad.ll | ||
immediates.ll | ||
inline-asm.ll | ||
llvm-stress-s449609655-simplified.ll | ||
llvm-stress-s525530439.ll | ||
llvm-stress-s997348632.ll | ||
llvm-stress-s1704963983.ll | ||
llvm-stress-s1935737938.ll | ||
llvm-stress-s2090927243-simplified.ll | ||
llvm-stress-s2501752154-simplified.ll | ||
llvm-stress-s2704903805.ll | ||
llvm-stress-s3861334421.ll | ||
llvm-stress-s3926023935.ll | ||
llvm-stress-s3997499501.ll | ||
llvm-stress-sz1-s742806235.ll | ||
msa-nooddspreg.ll | ||
shift-dagcombine.ll | ||
shift_constant_pool.ll | ||
shift_no_and.ll | ||
shuffle.ll | ||
special.ll | ||
spill.ll | ||
vec.ll | ||
vecs10.ll |