mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 23:17:16 +00:00
PPC: Implement efficient lowering of sign_extend_inreg.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172269 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -15,55 +15,9 @@ define <16 x i8> @v16si8_sext_in_reg(<16 x i8> %a) {
|
||||
ret <16 x i8> %c
|
||||
}
|
||||
; CHECK: v16si8_sext_in_reg:
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lbz
|
||||
; CHECK: stb
|
||||
; CHECK: lvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: vsrb
|
||||
; CHECK: vsrab
|
||||
; CHECK: blr
|
||||
|
||||
; The zero extend uses a more clever logic: a vector splat
|
||||
; and a logic and to set higher bits to 0.
|
||||
@@ -83,31 +37,9 @@ define <8 x i16> @v8si16_sext_in_reg(<8 x i16> %a) {
|
||||
ret <8 x i16> %c
|
||||
}
|
||||
; CHECK: v8si16_sext_in_reg:
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lhz
|
||||
; CHECK: sth
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lhz
|
||||
; CHECK: sth
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lhz
|
||||
; CHECK: sth
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lhz
|
||||
; CHECK: sth
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lhz
|
||||
; CHECK: sth
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lhz
|
||||
; CHECK: sth
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lhz
|
||||
; CHECK: sth
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lhz
|
||||
; CHECK: sth
|
||||
; CHECK: lvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: vsrh
|
||||
; CHECK: vsrah
|
||||
; CHECK: blr
|
||||
|
||||
; Same as v8si16_sext_in_reg, but instead of creating the mask
|
||||
; with a splat, loads it from memory.
|
||||
@@ -129,19 +61,9 @@ define <4 x i32> @v4si32_sext_in_reg(<4 x i32> %a) {
|
||||
ret <4 x i32> %c
|
||||
}
|
||||
; CHECK: v4si32_sext_in_reg:
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lha
|
||||
; CHECK: stw
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lha
|
||||
; CHECK: stw
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lha
|
||||
; CHECK: stw
|
||||
; CHECK: stvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: lha
|
||||
; CHECK: stw
|
||||
; CHECK: lvx 2, {{[0-9]+}}, {{[0-9]+}}
|
||||
; CHECK: vsrw
|
||||
; CHECK: vsraw
|
||||
; CHECK: blr
|
||||
|
||||
; Same as v8si16_sext_in_reg.
|
||||
define <4 x i32> @v4si32_zext_in_reg(<4 x i32> %a) {
|
||||
|
||||
Reference in New Issue
Block a user