You can subset one of them using the subsetByOverlaps result of one pairwise comparison then use that subset to compare to the third set.
Sub1 <- subsetByOverlaps(gr,gr1)
Sub2 <- subsetByOverlaps(sub1,gr2)
Or directly
Reduce(subsetByOverlaps, list(gr, gr1, gr2))
resulting in the subset of the GRanges object that overlap in all 3 GRanges objects
Depending on the type of overlap you want and which has the largest ranges, you should consider which to use as the query and which the subject.