1a81ba80eSChen Zheng; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2a81ba80eSChen Zheng; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ 3a81ba80eSChen Zheng; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | FileCheck %s 4a81ba80eSChen Zheng; RUN: llc -verify-machineinstrs -mtriple=powerpc64-aix-xcoff \ 5a81ba80eSChen Zheng; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | FileCheck %s 6a81ba80eSChen Zheng; RUN: llc -verify-machineinstrs -mtriple=powerpc-aix-xcoff \ 7a81ba80eSChen Zheng; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | FileCheck %s 8a81ba80eSChen Zheng 9a81ba80eSChen Zhengdefine void @test1(<16 x i8> %0) { 10a81ba80eSChen Zheng; CHECK-LABEL: test1: 11a81ba80eSChen Zheng; CHECK: # %bb.0: # %entry 12a81ba80eSChen Zheng; CHECK-NEXT: blr 13a81ba80eSChen Zhengentry: 14a81ba80eSChen Zheng %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4sbs(<16 x i8> %0, <4 x i32> zeroinitializer) 15a81ba80eSChen Zheng ret void 16a81ba80eSChen Zheng} 17a81ba80eSChen Zheng 18a81ba80eSChen Zhengdefine void @test2(<8 x i16> %0) { 19a81ba80eSChen Zheng; CHECK-LABEL: test2: 20a81ba80eSChen Zheng; CHECK: # %bb.0: # %entry 21a81ba80eSChen Zheng; CHECK-NEXT: blr 22a81ba80eSChen Zhengentry: 23a81ba80eSChen Zheng %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4shs(<8 x i16> %0, <4 x i32> zeroinitializer) 24a81ba80eSChen Zheng ret void 25a81ba80eSChen Zheng} 26a81ba80eSChen Zheng 27a81ba80eSChen Zhengdefine void @test3(<16 x i8> %0) { 28a81ba80eSChen Zheng; CHECK-LABEL: test3: 29a81ba80eSChen Zheng; CHECK: # %bb.0: # %entry 30a81ba80eSChen Zheng; CHECK-NEXT: blr 31a81ba80eSChen Zhengentry: 32a81ba80eSChen Zheng %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4ubs(<16 x i8> %0, <4 x i32> zeroinitializer) 33a81ba80eSChen Zheng ret void 34a81ba80eSChen Zheng} 35a81ba80eSChen Zheng 36a81ba80eSChen Zhengdefine void @test4(<16 x i8> %0) { 37a81ba80eSChen Zheng; CHECK-LABEL: test4: 38a81ba80eSChen Zheng; CHECK: # %bb.0: # %entry 39a81ba80eSChen Zheng; CHECK-NEXT: vspltisw v3, 1 40a81ba80eSChen Zheng; CHECK-NEXT: vsum4sbs v2, v2, v3 41a81ba80eSChen Zheng; CHECK-NEXT: blr 42a81ba80eSChen Zhengentry: 43a81ba80eSChen Zheng %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4sbs(<16 x i8> %0, <4 x i32> <i32 1, i32 1, i32 1, i32 1>) 44a81ba80eSChen Zheng ret void 45a81ba80eSChen Zheng} 46a81ba80eSChen Zheng 47a81ba80eSChen Zhengdefine void @test5(<8 x i16> %0) { 48a81ba80eSChen Zheng; CHECK-LABEL: test5: 49a81ba80eSChen Zheng; CHECK: # %bb.0: # %entry 50a81ba80eSChen Zheng; CHECK-NEXT: vspltisw v3, 1 51a81ba80eSChen Zheng; CHECK-NEXT: vsum4shs v2, v2, v3 52a81ba80eSChen Zheng; CHECK-NEXT: blr 53a81ba80eSChen Zhengentry: 54a81ba80eSChen Zheng %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4shs(<8 x i16> %0, <4 x i32> <i32 1, i32 1, i32 1, i32 1>) 55a81ba80eSChen Zheng ret void 56a81ba80eSChen Zheng} 57a81ba80eSChen Zheng 58a81ba80eSChen Zhengdefine void @test6(<16 x i8> %0) { 59a81ba80eSChen Zheng; CHECK-LABEL: test6: 60a81ba80eSChen Zheng; CHECK: # %bb.0: # %entry 61a81ba80eSChen Zheng; CHECK-NEXT: vspltisw v3, 1 62a81ba80eSChen Zheng; CHECK-NEXT: vsum4ubs v2, v2, v3 63a81ba80eSChen Zheng; CHECK-NEXT: blr 64a81ba80eSChen Zhengentry: 65a81ba80eSChen Zheng %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4ubs(<16 x i8> %0, <4 x i32> <i32 1, i32 1, i32 1, i32 1>) 66a81ba80eSChen Zheng ret void 67a81ba80eSChen Zheng} 68a81ba80eSChen Zheng 69a81ba80eSChen Zhengdefine <4 x i32> @test7(<16 x i8> %0) { 70a81ba80eSChen Zheng; CHECK-LABEL: test7: 71a81ba80eSChen Zheng; CHECK: # %bb.0: # %entry 72a81ba80eSChen Zheng; CHECK-NEXT: xxlxor v3, v3, v3 73a81ba80eSChen Zheng; CHECK-NEXT: vsum4sbs v2, v2, v3 74a81ba80eSChen Zheng; CHECK-NEXT: blr 75a81ba80eSChen Zhengentry: 76a81ba80eSChen Zheng %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4sbs(<16 x i8> %0, <4 x i32> zeroinitializer) 77a81ba80eSChen Zheng ret <4 x i32> %1 78a81ba80eSChen Zheng} 79a81ba80eSChen Zheng 80a81ba80eSChen Zhengdefine <4 x i32> @test8(<8 x i16> %0) { 81a81ba80eSChen Zheng; CHECK-LABEL: test8: 82a81ba80eSChen Zheng; CHECK: # %bb.0: # %entry 83a81ba80eSChen Zheng; CHECK-NEXT: xxlxor v3, v3, v3 84a81ba80eSChen Zheng; CHECK-NEXT: vsum4shs v2, v2, v3 85a81ba80eSChen Zheng; CHECK-NEXT: blr 86a81ba80eSChen Zhengentry: 87a81ba80eSChen Zheng %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4shs(<8 x i16> %0, <4 x i32> zeroinitializer) 88a81ba80eSChen Zheng ret <4 x i32> %1 89a81ba80eSChen Zheng} 90a81ba80eSChen Zheng 91a81ba80eSChen Zhengdefine <4 x i32> @test9(<16 x i8> %0) { 92a81ba80eSChen Zheng; CHECK-LABEL: test9: 93a81ba80eSChen Zheng; CHECK: # %bb.0: # %entry 94a81ba80eSChen Zheng; CHECK-NEXT: xxlxor v3, v3, v3 95a81ba80eSChen Zheng; CHECK-NEXT: vsum4ubs v2, v2, v3 96a81ba80eSChen Zheng; CHECK-NEXT: blr 97a81ba80eSChen Zhengentry: 98a81ba80eSChen Zheng %1 = tail call <4 x i32> @llvm.ppc.altivec.vsum4ubs(<16 x i8> %0, <4 x i32> zeroinitializer) 99a81ba80eSChen Zheng ret <4 x i32> %1 100a81ba80eSChen Zheng} 101a81ba80eSChen Zheng 102a81ba80eSChen Zhengdefine <4 x i32> @test10(<16 x i8> %0, <16 x i8> %1) { 103a81ba80eSChen Zheng; CHECK-LABEL: test10: 104a81ba80eSChen Zheng; CHECK: # %bb.0: # %entry 105*a3b57bcaSChen Zheng; CHECK-NEXT: xxlxor v3, v3, v3 106*a3b57bcaSChen Zheng; CHECK-NEXT: vsum4sbs v2, v2, v3 107a81ba80eSChen Zheng; CHECK-NEXT: blr 108a81ba80eSChen Zhengentry: 109a81ba80eSChen Zheng %2 = tail call <4 x i32> @llvm.ppc.altivec.vsum4sbs(<16 x i8> %0, <4 x i32> zeroinitializer) 110a81ba80eSChen Zheng %3 = tail call <4 x i32> @llvm.ppc.altivec.vsum4sbs(<16 x i8> %1, <4 x i32> zeroinitializer) 111a81ba80eSChen Zheng ret <4 x i32> %2 112a81ba80eSChen Zheng} 113a81ba80eSChen Zheng 114a81ba80eSChen Zhengdefine <4 x i32> @test11(<8 x i16> %0, <8 x i16> %1) { 115a81ba80eSChen Zheng; CHECK-LABEL: test11: 116a81ba80eSChen Zheng; CHECK: # %bb.0: # %entry 117*a3b57bcaSChen Zheng; CHECK-NEXT: xxlxor v3, v3, v3 118*a3b57bcaSChen Zheng; CHECK-NEXT: vsum4shs v2, v2, v3 119a81ba80eSChen Zheng; CHECK-NEXT: blr 120a81ba80eSChen Zhengentry: 121a81ba80eSChen Zheng %2 = tail call <4 x i32> @llvm.ppc.altivec.vsum4shs(<8 x i16> %0, <4 x i32> zeroinitializer) 122a81ba80eSChen Zheng %3 = tail call <4 x i32> @llvm.ppc.altivec.vsum4shs(<8 x i16> %1, <4 x i32> zeroinitializer) 123a81ba80eSChen Zheng ret <4 x i32> %2 124a81ba80eSChen Zheng} 125a81ba80eSChen Zheng 126a81ba80eSChen Zhengdefine <4 x i32> @test12(<16 x i8> %0, <16 x i8> %1) { 127a81ba80eSChen Zheng; CHECK-LABEL: test12: 128a81ba80eSChen Zheng; CHECK: # %bb.0: # %entry 129*a3b57bcaSChen Zheng; CHECK-NEXT: xxlxor v3, v3, v3 130*a3b57bcaSChen Zheng; CHECK-NEXT: vsum4ubs v2, v2, v3 131a81ba80eSChen Zheng; CHECK-NEXT: blr 132a81ba80eSChen Zhengentry: 133a81ba80eSChen Zheng %2 = tail call <4 x i32> @llvm.ppc.altivec.vsum4ubs(<16 x i8> %0, <4 x i32> zeroinitializer) 134a81ba80eSChen Zheng %3 = tail call <4 x i32> @llvm.ppc.altivec.vsum4ubs(<16 x i8> %1, <4 x i32> zeroinitializer) 135a81ba80eSChen Zheng ret <4 x i32> %2 136a81ba80eSChen Zheng} 137a81ba80eSChen Zheng 138a81ba80eSChen Zhengdeclare <4 x i32> @llvm.ppc.altivec.vsum4sbs(<16 x i8>, <4 x i32>) 139a81ba80eSChen Zhengdeclare <4 x i32> @llvm.ppc.altivec.vsum4shs(<8 x i16>, <4 x i32>) 140a81ba80eSChen Zhengdeclare <4 x i32> @llvm.ppc.altivec.vsum4ubs(<16 x i8>, <4 x i32>) 141