brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · a91086a Raw
41 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -passes=mergefunc < %s | FileCheck %s3 4define internal <2 x i32> @test1(<2 x i32> %v1, <2 x i32> %v2) {5; CHECK-LABEL: @test1(6; CHECK-NEXT:    [[X:%.*]] = shufflevector <2 x i32> [[V1:%.*]], <2 x i32> [[V2:%.*]], <2 x i32> <i32 0, i32 1>7; CHECK-NEXT:    ret <2 x i32> [[X]]8;9  %x = shufflevector <2 x i32> %v1, <2 x i32> %v2, <2 x i32> <i32 0, i32 1>10  ret <2 x i32> %x11}12 13; Same mask as test1.14define internal <2 x i32> @test2(<2 x i32> %v1, <2 x i32> %v2) {15  %x = shufflevector <2 x i32> %v1, <2 x i32> %v2, <2 x i32> <i32 0, i32 1>16  ret <2 x i32> %x17}18 19; Different mask than test1, don't merge.20define internal <2 x i32> @test3(<2 x i32> %v1, <2 x i32> %v2) {21; CHECK-LABEL: @test3(22; CHECK-NEXT:    [[X:%.*]] = shufflevector <2 x i32> [[V1:%.*]], <2 x i32> [[V2:%.*]], <2 x i32> <i32 1, i32 0>23; CHECK-NEXT:    ret <2 x i32> [[X]]24;25  %x = shufflevector <2 x i32> %v1, <2 x i32> %v2, <2 x i32> <i32 1, i32 0>26  ret <2 x i32> %x27}28 29define void @caller(<2 x i32> %v1, <2 x i32> %v2) {30; CHECK-LABEL: @caller(31; CHECK-NEXT:    [[TMP1:%.*]] = call <2 x i32> @test1(<2 x i32> [[V1:%.*]], <2 x i32> [[V2:%.*]])32; CHECK-NEXT:    [[TMP2:%.*]] = call <2 x i32> @test1(<2 x i32> [[V1]], <2 x i32> [[V2]])33; CHECK-NEXT:    [[TMP3:%.*]] = call <2 x i32> @test3(<2 x i32> [[V1]], <2 x i32> [[V2]])34; CHECK-NEXT:    ret void35;36  call <2 x i32> @test1(<2 x i32> %v1, <2 x i32> %v2)37  call <2 x i32> @test2(<2 x i32> %v1, <2 x i32> %v2)38  call <2 x i32> @test3(<2 x i32> %v1, <2 x i32> %v2)39  ret void40}41