@@ -5974,6 +5974,7 @@ multiclass SIMDThreeSameVectorB<bit U, bits<5> opc, string asm,
5974
5974
(OpNode (v16i8 V128:$Rn), (v16i8 V128:$Rm)))]>;
5975
5975
}
5976
5976
5977
+ // As above, but only floating point elements supported.
5977
5978
let mayRaiseFPException = 1, Uses = [FPCR] in
5978
5979
multiclass SIMDThreeSameVectorFP<bit U, bit S, bits<3> opc,
5979
5980
string asm, SDPatternOperator OpNode> {
@@ -5996,27 +5997,6 @@ multiclass SIMDThreeSameVectorFP<bit U, bit S, bits<3> opc,
5996
5997
[(set (v2f64 V128:$Rd), (OpNode (v2f64 V128:$Rn), (v2f64 V128:$Rm)))]>;
5997
5998
}
5998
5999
5999
- // As above, but only floating point elements supported.
6000
- let mayRaiseFPException = 1, Uses = [FPCR] in
6001
- multiclass SIMDThreeVectorFP<bit U, bit S, bits<3> opc,
6002
- string asm, SDPatternOperator OpNode> {
6003
- def v4f16 : BaseSIMDThreeSameVector<0, U, {S,0b10}, {0b00,opc}, V64,
6004
- asm, ".4h",
6005
- [(set (v4f16 V64:$Rd), (OpNode (v4f16 V64:$Rn), (v4i16 V64:$Rm)))]>;
6006
- def v8f16 : BaseSIMDThreeSameVector<1, U, {S,0b10}, {0b00,opc}, V128,
6007
- asm, ".8h",
6008
- [(set (v8f16 V128:$Rd), (OpNode (v8f16 V128:$Rn), (v8i16 V128:$Rm)))]>;
6009
- def v2f32 : BaseSIMDThreeSameVector<0, U, {S,0b01}, {0b11,opc}, V64,
6010
- asm, ".2s",
6011
- [(set (v2f32 V64:$Rd), (OpNode (v2f32 V64:$Rn), (v2i32 V64:$Rm)))]>;
6012
- def v4f32 : BaseSIMDThreeSameVector<1, U, {S,0b01}, {0b11,opc}, V128,
6013
- asm, ".4s",
6014
- [(set (v4f32 V128:$Rd), (OpNode (v4f32 V128:$Rn), (v4i32 V128:$Rm)))]>;
6015
- def v2f64 : BaseSIMDThreeSameVector<1, U, {S,0b11}, {0b11,opc}, V128,
6016
- asm, ".2d",
6017
- [(set (v2f64 V128:$Rd), (OpNode (v2f64 V128:$Rn), (v2i64 V128:$Rm)))]>;
6018
- }
6019
-
6020
6000
let mayRaiseFPException = 1, Uses = [FPCR] in
6021
6001
multiclass SIMDThreeSameVectorFPCmp<bit U, bit S, bits<3> opc,
6022
6002
string asm,
@@ -6263,6 +6243,26 @@ multiclass SIMDThreeSameVectorDOT4<string asm> {
6263
6243
V128, v4f32, v16i8, null_frag>;
6264
6244
}
6265
6245
6246
+ let mayRaiseFPException = 1, Uses = [FPCR] in
6247
+ multiclass SIMDThreeVectorFscale<bit U, bit S, bits<3> opc,
6248
+ string asm, SDPatternOperator OpNode> {
6249
+ def v4f16 : BaseSIMDThreeSameVector<0, U, {S,0b10}, {0b00,opc}, V64,
6250
+ asm, ".4h",
6251
+ [(set (v4f16 V64:$Rd), (OpNode (v4f16 V64:$Rn), (v4i16 V64:$Rm)))]>;
6252
+ def v8f16 : BaseSIMDThreeSameVector<1, U, {S,0b10}, {0b00,opc}, V128,
6253
+ asm, ".8h",
6254
+ [(set (v8f16 V128:$Rd), (OpNode (v8f16 V128:$Rn), (v8i16 V128:$Rm)))]>;
6255
+ def v2f32 : BaseSIMDThreeSameVector<0, U, {S,0b01}, {0b11,opc}, V64,
6256
+ asm, ".2s",
6257
+ [(set (v2f32 V64:$Rd), (OpNode (v2f32 V64:$Rn), (v2i32 V64:$Rm)))]>;
6258
+ def v4f32 : BaseSIMDThreeSameVector<1, U, {S,0b01}, {0b11,opc}, V128,
6259
+ asm, ".4s",
6260
+ [(set (v4f32 V128:$Rd), (OpNode (v4f32 V128:$Rn), (v4i32 V128:$Rm)))]>;
6261
+ def v2f64 : BaseSIMDThreeSameVector<1, U, {S,0b11}, {0b11,opc}, V128,
6262
+ asm, ".2d",
6263
+ [(set (v2f64 V128:$Rd), (OpNode (v2f64 V128:$Rn), (v2i64 V128:$Rm)))]>;
6264
+ }
6265
+
6266
6266
//----------------------------------------------------------------------------
6267
6267
// AdvSIMD two register vector instructions.
6268
6268
//----------------------------------------------------------------------------
0 commit comments