File: pr30663.ll

package info (click to toggle)
llvm-toolchain-16 1%3A16.0.6-15~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,634,792 kB
  • sloc: cpp: 6,179,261; ansic: 1,216,205; asm: 741,319; python: 196,614; objc: 75,325; f90: 49,640; lisp: 32,396; pascal: 12,286; sh: 9,394; perl: 7,442; ml: 5,494; awk: 3,523; makefile: 2,723; javascript: 1,206; xml: 886; fortran: 581; cs: 573
file content (24 lines) | stat: -rw-r--r-- 1,020 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
; RUN: llc -O1 < %s | FileCheck %s
target triple = "powerpc64le-linux-gnu"

; The second xxspltw should be eliminated.
; CHECK: xxspltw
; CHECK-NOT: xxspltw
define void @Test() {
bb4:
  %tmp = load <4 x i8>, ptr undef
  %tmp8 = bitcast <4 x i8> %tmp to float
  %tmp18 = fmul float %tmp8, undef
  %tmp19 = fsub float 0.000000e+00, %tmp18
  store float %tmp19, ptr undef
  %tmp22 = shufflevector <4 x i8> %tmp, <4 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
  %tmp23 = bitcast <16 x i8> %tmp22 to <4 x float>
  %tmp25 = tail call <4 x float> @llvm.fma.v4f32(<4 x float> undef, <4 x float> %tmp23, <4 x float> undef)
  %tmp26 = fsub <4 x float> zeroinitializer, %tmp25
  %tmp27 = bitcast <4 x float> %tmp26 to <4 x i32>
  tail call void @llvm.ppc.altivec.stvx(<4 x i32> %tmp27, ptr undef)
  ret void
}

declare void @llvm.ppc.altivec.stvx(<4 x i32>, ptr)
declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>)