mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
Fix pattern match for movi with 0D result
Patch by Jiangning Liu. With some test case changes: - intrinsic test added to the existing /test/CodeGen/AArch64/neon-aba-abd.ll. - New test cases to cover movi 1D scenario without using the intrinsic in test/CodeGen/AArch64/neon-mov.ll. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196806 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -1437,9 +1437,8 @@ let isReMaterializable = 1 in {
|
|||||||
def MOVIdi : NeonI_1VModImm<0b0, 0b1,
|
def MOVIdi : NeonI_1VModImm<0b0, 0b1,
|
||||||
(outs FPR64:$Rd), (ins neon_uimm64_mask:$Imm),
|
(outs FPR64:$Rd), (ins neon_uimm64_mask:$Imm),
|
||||||
"movi\t $Rd, $Imm",
|
"movi\t $Rd, $Imm",
|
||||||
[(set (f64 FPR64:$Rd),
|
[(set (v1i64 FPR64:$Rd),
|
||||||
(f64 (bitconvert
|
(v1i64 (Neon_movi (timm:$Imm), (i32 imm))))],
|
||||||
(v1i64 (Neon_movi (timm:$Imm), (i32 imm))))))],
|
|
||||||
NoItinerary> {
|
NoItinerary> {
|
||||||
let cmode = 0b1110;
|
let cmode = 0b1110;
|
||||||
}
|
}
|
||||||
|
@ -157,6 +157,16 @@ define <2 x i32> @test_sabd_v2i32(<2 x i32> %lhs, <2 x i32> %rhs) {
|
|||||||
ret <2 x i32> %abd
|
ret <2 x i32> %abd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
define <2 x i32> @test_sabd_v2i32_const() {
|
||||||
|
; CHECK: test_sabd_v2i32_const:
|
||||||
|
; CHECK: movi d1, #0xffffffff0000
|
||||||
|
; CHECK-NEXT: sabd v0.2s, v0.2s, v1.2s
|
||||||
|
%1 = tail call <2 x i32> @llvm.arm.neon.vabds.v2i32(
|
||||||
|
<2 x i32> <i32 -2147483648, i32 2147450880>,
|
||||||
|
<2 x i32> <i32 -65536, i32 65535>)
|
||||||
|
ret <2 x i32> %1
|
||||||
|
}
|
||||||
|
|
||||||
define <2 x i32> @test_saba_v2i32(<2 x i32> %lhs, <2 x i32> %rhs) {
|
define <2 x i32> @test_saba_v2i32(<2 x i32> %lhs, <2 x i32> %rhs) {
|
||||||
; CHECK: test_saba_v2i32:
|
; CHECK: test_saba_v2i32:
|
||||||
%abd = call <2 x i32> @llvm.arm.neon.vabds.v2i32(<2 x i32> %lhs, <2 x i32> %rhs)
|
%abd = call <2 x i32> @llvm.arm.neon.vabds.v2i32(<2 x i32> %lhs, <2 x i32> %rhs)
|
||||||
|
@ -202,4 +202,16 @@ define <2 x double> @fmov2d() {
|
|||||||
ret <2 x double> < double -1.2e1, double -1.2e1>
|
ret <2 x double> < double -1.2e1, double -1.2e1>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
define <2 x i32> @movi1d_1() {
|
||||||
|
; CHECK: movi d0, #0xffffffff0000
|
||||||
|
ret <2 x i32> < i32 -65536, i32 65535>
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
declare <2 x i32> @test_movi1d(<2 x i32>, <2 x i32>)
|
||||||
|
define <2 x i32> @movi1d() {
|
||||||
|
; CHECK: movi d1, #0xffffffff0000
|
||||||
|
%1 = tail call <2 x i32> @test_movi1d(<2 x i32> <i32 -2147483648, i32 2147450880>, <2 x i32> <i32 -65536, i32 65535>)
|
||||||
|
ret <2 x i32> %1
|
||||||
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user