@@ -1020,6 +1020,19 @@ fn llvm_fixup_input<'ll, 'tcx>(
10201020 value
10211021 }
10221022 }
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+ }
10231036 ( InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) , Abi :: Scalar ( s) ) => {
10241037 match s. primitive ( ) {
10251038 // MIPS only supports register-length arithmetics.
@@ -1130,6 +1143,19 @@ fn llvm_fixup_output<'ll, 'tcx>(
11301143 value
11311144 }
11321145 }
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+ }
11331159 ( InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) , Abi :: Scalar ( s) ) => {
11341160 match s. primitive ( ) {
11351161 // MIPS only supports register-length arithmetics.
@@ -1233,6 +1259,19 @@ fn llvm_fixup_output_type<'ll, 'tcx>(
12331259 layout. llvm_type ( cx)
12341260 }
12351261 }
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+ }
12361275 ( InlineAsmRegClass :: Mips ( MipsInlineAsmRegClass :: reg) , Abi :: Scalar ( s) ) => {
12371276 match s. primitive ( ) {
12381277 // MIPS only supports register-length arithmetics.
0 commit comments