@@ -1020,6 +1020,19 @@ fn llvm_fixup_input<'ll, 'tcx>(
1020
1020
value
1021
1021
}
1022
1022
}
1023
+ (
1024
+ InlineAsmRegClass :: Arm (
1025
+ ArmInlineAsmRegClass :: dreg
1026
+ | ArmInlineAsmRegClass :: dreg_low8
1027
+ | ArmInlineAsmRegClass :: dreg_low16
1028
+ | ArmInlineAsmRegClass :: qreg
1029
+ | ArmInlineAsmRegClass :: qreg_low4
1030
+ | ArmInlineAsmRegClass :: qreg_low8,
1031
+ ) ,
1032
+ Abi :: Vector { element, count : count @ ( 4 | 8 ) } ,
1033
+ ) if element. primitive ( ) == Primitive :: Float ( Float :: F16 ) => {
1034
+ bx. bitcast ( value, bx. type_vector ( bx. type_i16 ( ) , count) )
1035
+ }
1023
1036
( InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) , Abi :: Scalar ( s) ) => {
1024
1037
match s. primitive ( ) {
1025
1038
// MIPS only supports register-length arithmetics.
@@ -1130,6 +1143,19 @@ fn llvm_fixup_output<'ll, 'tcx>(
1130
1143
value
1131
1144
}
1132
1145
}
1146
+ (
1147
+ InlineAsmRegClass :: Arm (
1148
+ ArmInlineAsmRegClass :: dreg
1149
+ | ArmInlineAsmRegClass :: dreg_low8
1150
+ | ArmInlineAsmRegClass :: dreg_low16
1151
+ | ArmInlineAsmRegClass :: qreg
1152
+ | ArmInlineAsmRegClass :: qreg_low4
1153
+ | ArmInlineAsmRegClass :: qreg_low8,
1154
+ ) ,
1155
+ Abi :: Vector { element, count : count @ ( 4 | 8 ) } ,
1156
+ ) if element. primitive ( ) == Primitive :: Float ( Float :: F16 ) => {
1157
+ bx. bitcast ( value, bx. type_vector ( bx. type_f16 ( ) , count) )
1158
+ }
1133
1159
( InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) , Abi :: Scalar ( s) ) => {
1134
1160
match s. primitive ( ) {
1135
1161
// MIPS only supports register-length arithmetics.
@@ -1233,6 +1259,19 @@ fn llvm_fixup_output_type<'ll, 'tcx>(
1233
1259
layout. llvm_type ( cx)
1234
1260
}
1235
1261
}
1262
+ (
1263
+ InlineAsmRegClass :: Arm (
1264
+ ArmInlineAsmRegClass :: dreg
1265
+ | ArmInlineAsmRegClass :: dreg_low8
1266
+ | ArmInlineAsmRegClass :: dreg_low16
1267
+ | ArmInlineAsmRegClass :: qreg
1268
+ | ArmInlineAsmRegClass :: qreg_low4
1269
+ | ArmInlineAsmRegClass :: qreg_low8,
1270
+ ) ,
1271
+ Abi :: Vector { element, count : count @ ( 4 | 8 ) } ,
1272
+ ) if element. primitive ( ) == Primitive :: Float ( Float :: F16 ) => {
1273
+ cx. type_vector ( cx. type_i16 ( ) , count)
1274
+ }
1236
1275
( InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) , Abi :: Scalar ( s) ) => {
1237
1276
match s. primitive ( ) {
1238
1277
// MIPS only supports register-length arithmetics.
0 commit comments