brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 400f27b Raw
117 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+vpclmulqdq,+avx512vl | FileCheck %s3; FIXME: actual vpclmulqdq operation should be eliminated4 5declare <2 x i64> @llvm.x86.pclmulqdq(<2 x i64>, <2 x i64>, i8) nounwind readnone6declare <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64>, <4 x i64>, i8) nounwind readnone7declare <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64>, <8 x i64>, i8) nounwind readnone8 9define <2 x i64> @commute_xmm_v1(<2 x i64> %a0, <2 x i64> %a1) {10; CHECK-LABEL: commute_xmm_v1:11; CHECK:       # %bb.0:12; CHECK-NEXT:    vpclmulqdq $0, %xmm1, %xmm0, %xmm013; CHECK-NEXT:    vpxor %xmm0, %xmm0, %xmm014; CHECK-NEXT:    retq15  %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %a0, <2 x i64> %a1, i8 0)16  %2 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %a1, <2 x i64> %a0, i8 0)17  %3 = xor <2 x i64> %1, %218  ret <2 x i64> %319}20 21define <2 x i64> @commute_xmm_v2(<2 x i64> %a0, <2 x i64> %a1) {22; CHECK-LABEL: commute_xmm_v2:23; CHECK:       # %bb.0:24; CHECK-NEXT:    vpclmulqdq $16, %xmm1, %xmm0, %xmm025; CHECK-NEXT:    vpxor %xmm0, %xmm0, %xmm026; CHECK-NEXT:    retq27  %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %a0, <2 x i64> %a1, i8 16)28  %2 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %a1, <2 x i64> %a0, i8 1)29  %3 = xor <2 x i64> %2, %130  ret <2 x i64> %331}32 33define <2 x i64> @commute_xmm_v3(<2 x i64> %a0, <2 x i64> %a1) {34; CHECK-LABEL: commute_xmm_v3:35; CHECK:       # %bb.0:36; CHECK-NEXT:    vpclmulqdq $17, %xmm1, %xmm0, %xmm037; CHECK-NEXT:    vpxor %xmm0, %xmm0, %xmm038; CHECK-NEXT:    retq39  %1 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %a0, <2 x i64> %a1, i8 17)40  %2 = call <2 x i64> @llvm.x86.pclmulqdq(<2 x i64> %a1, <2 x i64> %a0, i8 17)41  %3 = xor <2 x i64> %2, %142  ret <2 x i64> %343}44 45define <4 x i64> @commute_ymm_v1(<4 x i64> %a0, <4 x i64> %a1) {46; CHECK-LABEL: commute_ymm_v1:47; CHECK:       # %bb.0:48; CHECK-NEXT:    vpclmulqdq $0, %ymm1, %ymm0, %ymm049; CHECK-NEXT:    vpxor %ymm0, %ymm0, %ymm050; CHECK-NEXT:    retq51  %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %a0, <4 x i64> %a1, i8 0)52  %2 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %a1, <4 x i64> %a0, i8 0)53  %3 = xor <4 x i64> %1, %254  ret <4 x i64> %355}56 57define <4 x i64> @commute_ymm_v2(<4 x i64> %a0, <4 x i64> %a1) {58; CHECK-LABEL: commute_ymm_v2:59; CHECK:       # %bb.0:60; CHECK-NEXT:    vpclmulqdq $16, %ymm1, %ymm0, %ymm061; CHECK-NEXT:    vpxor %ymm0, %ymm0, %ymm062; CHECK-NEXT:    retq63  %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %a0, <4 x i64> %a1, i8 16)64  %2 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %a1, <4 x i64> %a0, i8 1)65  %3 = xor <4 x i64> %2, %166  ret <4 x i64> %367}68 69define <4 x i64> @commute_ymm_v3(<4 x i64> %a0, <4 x i64> %a1) {70; CHECK-LABEL: commute_ymm_v3:71; CHECK:       # %bb.0:72; CHECK-NEXT:    vpclmulqdq $17, %ymm1, %ymm0, %ymm073; CHECK-NEXT:    vpxor %ymm0, %ymm0, %ymm074; CHECK-NEXT:    retq75  %1 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %a0, <4 x i64> %a1, i8 17)76  %2 = call <4 x i64> @llvm.x86.pclmulqdq.256(<4 x i64> %a1, <4 x i64> %a0, i8 17)77  %3 = xor <4 x i64> %2, %178  ret <4 x i64> %379}80 81define <8 x i64> @commute_zmm_v1(<8 x i64> %a0, <8 x i64> %a1) {82; CHECK-LABEL: commute_zmm_v1:83; CHECK:       # %bb.0:84; CHECK-NEXT:    vpclmulqdq $0, %zmm1, %zmm0, %zmm085; CHECK-NEXT:    vpxorq %zmm0, %zmm0, %zmm086; CHECK-NEXT:    retq87  %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %a0, <8 x i64> %a1, i8 0)88  %2 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %a1, <8 x i64> %a0, i8 0)89  %3 = xor <8 x i64> %1, %290  ret <8 x i64> %391}92 93define <8 x i64> @commute_zmm_v2(<8 x i64> %a0, <8 x i64> %a1) {94; CHECK-LABEL: commute_zmm_v2:95; CHECK:       # %bb.0:96; CHECK-NEXT:    vpclmulqdq $16, %zmm1, %zmm0, %zmm097; CHECK-NEXT:    vpxorq %zmm0, %zmm0, %zmm098; CHECK-NEXT:    retq99  %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %a0, <8 x i64> %a1, i8 16)100  %2 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %a1, <8 x i64> %a0, i8 1)101  %3 = xor <8 x i64> %2, %1102  ret <8 x i64> %3103}104 105define <8 x i64> @commute_zmm_v3(<8 x i64> %a0, <8 x i64> %a1) {106; CHECK-LABEL: commute_zmm_v3:107; CHECK:       # %bb.0:108; CHECK-NEXT:    vpclmulqdq $17, %zmm1, %zmm0, %zmm0109; CHECK-NEXT:    vpxorq %zmm0, %zmm0, %zmm0110; CHECK-NEXT:    retq111  %1 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %a0, <8 x i64> %a1, i8 17)112  %2 = call <8 x i64> @llvm.x86.pclmulqdq.512(<8 x i64> %a1, <8 x i64> %a0, i8 17)113  %3 = xor <8 x i64> %2, %1114  ret <8 x i64> %3115}116 117