X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTarget%2FHexagon%2FHexagonInstrInfoVector.td;h=96dd5315b87f079fc7e016f173c9a88d0f5f5cd6;hb=76580abdf6105f34ad4be92517070de8715cf509;hp=f4fb946d5bad92857f6788a6460f8121e412cbb6;hpb=07121ea974568db0090b46a0db474dad7013434c;p=oota-llvm.git diff --git a/lib/Target/Hexagon/HexagonInstrInfoVector.td b/lib/Target/Hexagon/HexagonInstrInfoVector.td index f4fb946d5ba..96dd5315b87 100644 --- a/lib/Target/Hexagon/HexagonInstrInfoVector.td +++ b/lib/Target/Hexagon/HexagonInstrInfoVector.td @@ -35,6 +35,34 @@ multiclass bitconvert_64 { (a DoubleRegs:$src)>; } +multiclass bitconvert_vec { + def : Pat <(b (bitconvert (a VectorRegs:$src))), + (b VectorRegs:$src)>; + def : Pat <(a (bitconvert (b VectorRegs:$src))), + (a VectorRegs:$src)>; +} + +multiclass bitconvert_dblvec { + def : Pat <(b (bitconvert (a VecDblRegs:$src))), + (b VecDblRegs:$src)>; + def : Pat <(a (bitconvert (b VecDblRegs:$src))), + (a VecDblRegs:$src)>; +} + +multiclass bitconvert_predvec { + def : Pat <(b (bitconvert (a VecPredRegs:$src))), + (b VectorRegs:$src)>; + def : Pat <(a (bitconvert (b VectorRegs:$src))), + (a VecPredRegs:$src)>; +} + +multiclass bitconvert_dblvec128B { + def : Pat <(b (bitconvert (a VecDblRegs128B:$src))), + (b VecDblRegs128B:$src)>; + def : Pat <(a (bitconvert (b VecDblRegs128B:$src))), + (a VecDblRegs128B:$src)>; +} + // Bit convert vector types. defm : bitconvert_32; defm : bitconvert_32; @@ -47,6 +75,21 @@ defm : bitconvert_64; defm : bitconvert_64; defm : bitconvert_64; +defm : bitconvert_vec; +defm : bitconvert_vec; +defm : bitconvert_vec; + +defm : bitconvert_dblvec; +defm : bitconvert_dblvec; +defm : bitconvert_dblvec; + +defm : bitconvert_dblvec128B; +defm : bitconvert_dblvec128B; +defm : bitconvert_dblvec128B; + +defm : bitconvert_dblvec128B; +defm : bitconvert_dblvec128B; +defm : bitconvert_dblvec128B; // Vector shift support. Vector shifting in Hexagon is rather different // from internal representation of LLVM.