I want to write a new instruction for vector division. one for integer other instruction for float.
I came to know llvm ir uses sdiv and fdiv for these operations respectively.
i was able to write the instruction for float/ double div without explicitly declaring fdiv legal for vector v64f32 in isellowering.cpp file.
but when i used the same approach for int and long i was getting some error. so for that i had to explicitly declare sdiv legal in isellowering.cpp file as follows.
setOperationAction(ISD::SDIV, MVT::v64i32, Legal);
Why is that so? Please explain.