@@ -1037,6 +1037,19 @@ fn llvm_fixup_input<'ll, 'tcx>(
1037
1037
value
1038
1038
}
1039
1039
}
1040
+ (
1041
+ InlineAsmRegClass :: Arm (
1042
+ ArmInlineAsmRegClass :: dreg
1043
+ | ArmInlineAsmRegClass :: dreg_low8
1044
+ | ArmInlineAsmRegClass :: dreg_low16
1045
+ | ArmInlineAsmRegClass :: qreg
1046
+ | ArmInlineAsmRegClass :: qreg_low4
1047
+ | ArmInlineAsmRegClass :: qreg_low8,
1048
+ ) ,
1049
+ Abi :: Vector { element, count : count @ ( 4 | 8 ) } ,
1050
+ ) if element. primitive ( ) == Primitive :: Float ( Float :: F16 ) => {
1051
+ bx. bitcast ( value, bx. type_vector ( bx. type_i16 ( ) , count) )
1052
+ }
1040
1053
( InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) , Abi :: Scalar ( s) ) => {
1041
1054
match s. primitive ( ) {
1042
1055
// MIPS only supports register-length arithmetics.
@@ -1158,6 +1171,19 @@ fn llvm_fixup_output<'ll, 'tcx>(
1158
1171
value
1159
1172
}
1160
1173
}
1174
+ (
1175
+ InlineAsmRegClass :: Arm (
1176
+ ArmInlineAsmRegClass :: dreg
1177
+ | ArmInlineAsmRegClass :: dreg_low8
1178
+ | ArmInlineAsmRegClass :: dreg_low16
1179
+ | ArmInlineAsmRegClass :: qreg
1180
+ | ArmInlineAsmRegClass :: qreg_low4
1181
+ | ArmInlineAsmRegClass :: qreg_low8,
1182
+ ) ,
1183
+ Abi :: Vector { element, count : count @ ( 4 | 8 ) } ,
1184
+ ) if element. primitive ( ) == Primitive :: Float ( Float :: F16 ) => {
1185
+ bx. bitcast ( value, bx. type_vector ( bx. type_f16 ( ) , count) )
1186
+ }
1161
1187
( InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) , Abi :: Scalar ( s) ) => {
1162
1188
match s. primitive ( ) {
1163
1189
// MIPS only supports register-length arithmetics.
@@ -1270,6 +1296,19 @@ fn llvm_fixup_output_type<'ll, 'tcx>(
1270
1296
layout. llvm_type ( cx)
1271
1297
}
1272
1298
}
1299
+ (
1300
+ InlineAsmRegClass :: Arm (
1301
+ ArmInlineAsmRegClass :: dreg
1302
+ | ArmInlineAsmRegClass :: dreg_low8
1303
+ | ArmInlineAsmRegClass :: dreg_low16
1304
+ | ArmInlineAsmRegClass :: qreg
1305
+ | ArmInlineAsmRegClass :: qreg_low4
1306
+ | ArmInlineAsmRegClass :: qreg_low8,
1307
+ ) ,
1308
+ Abi :: Vector { element, count : count @ ( 4 | 8 ) } ,
1309
+ ) if element. primitive ( ) == Primitive :: Float ( Float :: F16 ) => {
1310
+ cx. type_vector ( cx. type_i16 ( ) , count)
1311
+ }
1273
1312
( InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) , Abi :: Scalar ( s) ) => {
1274
1313
match s. primitive ( ) {
1275
1314
// MIPS only supports register-length arithmetics.
0 commit comments