+ } else if (op == op_Conv) {
+ if (mode_is_float(imode)) {
+ assert(get_mode_size_bits(omode) == 64);
+ if (get_mode_size_bits(imode) == 64) {
+ name = mode_is_signed(omode) ? "__fixdfdi" : "__fixunsdfdi";
+ } else if (get_mode_size_bits(imode) == 32) {
+ name = mode_is_signed(omode) ? "__fixsfdi" : "__fixunssfdi";
+ } else {
+ assert(get_mode_size_bits(imode) == 128);
+ panic("can't conver long double to long long yet");
+ }
+ } else if (mode_is_float(omode)) {
+ assert(get_mode_size_bits(imode) == 64);
+ if (get_mode_size_bits(omode) == 64) {
+ name = mode_is_signed(imode) ? "__floatdidf" : "__floatundidf";
+ } else if (get_mode_size_bits(omode) == 32) {
+ name = mode_is_signed(imode) ? "__floatdisf" : "__floatundisf";
+ } else {
+ assert(get_mode_size_bits(omode) == 128);
+ panic("can't convert long long to long double yet");
+ }
+ } else {
+ panic("can't lower 64bit Conv");
+ }