@@ -1947,7 +1947,9 @@ static mlir::cir::VectorType GetNeonType(CIRGenFunction *CGF,
1947
1947
CGF->getCIRGenModule ().FloatTy ,
1948
1948
V1Ty ? 1 : (2 << IsQuad));
1949
1949
case NeonTypeFlags::Float64 :
1950
- llvm_unreachable (" NYI" );
1950
+ return mlir::cir::VectorType::get (CGF->getBuilder ().getContext (),
1951
+ CGF->getCIRGenModule ().DoubleTy ,
1952
+ V1Ty ? 1 : (1 << IsQuad));
1951
1953
}
1952
1954
llvm_unreachable (" Unknown vector element type!" );
1953
1955
}
@@ -3437,8 +3439,14 @@ CIRGenFunction::buildAArch64BuiltinExpr(unsigned BuiltinID, const CallExpr *E,
3437
3439
llvm_unreachable (" NYI" );
3438
3440
}
3439
3441
case NEON::BI__builtin_neon_vst1_lane_v:
3440
- case NEON::BI__builtin_neon_vst1q_lane_v:
3441
- llvm_unreachable (" NYI" );
3442
+ case NEON::BI__builtin_neon_vst1q_lane_v: {
3443
+ Ops[1 ] = builder.createBitcast (Ops[1 ], Ty);
3444
+ Ops[1 ] = builder.create <mlir::cir::VecExtractOp>(Ops[1 ].getLoc (), Ops[1 ],
3445
+ Ops[2 ]);
3446
+ (void )builder.createAlignedStore (getLoc (E->getExprLoc ()), Ops[1 ], Ops[0 ],
3447
+ PtrOp0.getAlignment ());
3448
+ return Ops[1 ];
3449
+ }
3442
3450
case NEON::BI__builtin_neon_vstl1_lane_s64:
3443
3451
case NEON::BI__builtin_neon_vstl1q_lane_s64: {
3444
3452
llvm_unreachable (" NYI" );
0 commit comments