Add x86 implemention for SIMD iadd
This commit is contained in:
50
cranelift/filetests/filetests/isa/x86/iadd-simd.clif
Normal file
50
cranelift/filetests/filetests/isa/x86/iadd-simd.clif
Normal file
@@ -0,0 +1,50 @@
|
||||
test run
|
||||
test binemit
|
||||
set enable_simd
|
||||
target x86_64 skylake
|
||||
|
||||
function %iadd_i32x4() -> b1 {
|
||||
ebb0:
|
||||
[-, %xmm0] v0 = vconst.i32x4 [1 1 1 1]
|
||||
[-, %xmm1] v1 = vconst.i32x4 [1 2 3 4]
|
||||
[-, %xmm0] v2 = iadd v0, v1 ; bin: 66 0f fe c1
|
||||
|
||||
v3 = extractlane v2, 0
|
||||
v4 = icmp_imm eq v3, 2
|
||||
|
||||
v5 = extractlane v2, 3
|
||||
v6 = icmp_imm eq v5, 5
|
||||
; TODO replace extractlanes with vector comparison
|
||||
|
||||
v7 = band v4, v6
|
||||
return v7
|
||||
}
|
||||
|
||||
; run
|
||||
|
||||
function %iadd_i8x16_with_overflow() -> b1 {
|
||||
ebb0:
|
||||
[-, %xmm0] v0 = vconst.i8x16 [255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]
|
||||
[-, %xmm7] v1 = vconst.i8x16 [2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2]
|
||||
[-, %xmm0] v2 = iadd v0, v1 ; bin: 66 0f fc c7
|
||||
|
||||
v3 = extractlane v2, 0
|
||||
v4 = icmp_imm eq v3, 1
|
||||
; TODO replace extractlane with vector comparison
|
||||
|
||||
return v4
|
||||
}
|
||||
|
||||
; run
|
||||
|
||||
function %iadd_i16x8(i16x8, i16x8) -> i16x8 {
|
||||
ebb0(v0: i16x8 [%xmm1], v1: i16x8 [%xmm2]):
|
||||
[-, %xmm1] v2 = iadd v0, v1 ; bin: 66 0f fd ca
|
||||
return v2
|
||||
}
|
||||
|
||||
function %iadd_i64x2(i64x2, i64x2) -> i64x2 {
|
||||
ebb0(v0: i64x2 [%xmm3], v1: i64x2 [%xmm4]):
|
||||
[-, %xmm3] v2 = iadd v0, v1 ; bin: 66 0f d4 dc
|
||||
return v2
|
||||
}
|
||||
Reference in New Issue
Block a user