In GlobalISel there's no different type representing Floats or Ints , but just bag of bits types (s16,s32,s64...).
When IRTranslator generates code like this:
%v = bitcast float 1.0 to i32
%v2 = and i32 %x, %v
It will translate the code to
%0_(s32) = G_FCONSTANT float 1.0
%1_(s32) = G_AND %X(s32), %0(s32)
Because a G_BITCAST from s32 to s32 doesn't make sense in this case ...
So from this behavior its clear that IRTranslator considers the output of "G_FCONSTANT" just a bag of bits the origin of which was a float constant.
Currently though in the constant folder we don't consider constants coming from G_FCONSTANTs for folding purposes as the folder considers them "float data" .
In reality though we should consider them like the "untyped bit representation"of a float and it should participate in any constant folding involving "integer" data.