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