@@ -75,8 +75,8 @@ declare <16 x i8> @llvm.aarch64.crypto.aesd(<16 x i8>, <16 x i8>) #0
7575
7676; SVE 
7777
78- define  <vscale x 16  x i8 > @combineXorAeseZeroSVE  (<vscale x 16  x i8 > %data , <vscale x 16  x i8 > %key ) {
79- ; CHECK-LABEL: define <vscale x 16 x i8> @combineXorAeseZeroSVE ( 
78+ define  <vscale x 16  x i8 > @combineXorAeseZeroLhsSVE  (<vscale x 16  x i8 > %data , <vscale x 16  x i8 > %key ) {
79+ ; CHECK-LABEL: define <vscale x 16 x i8> @combineXorAeseZeroLhsSVE ( 
8080; CHECK-SAME: <vscale x 16 x i8> [[DATA:%.*]], <vscale x 16 x i8> [[KEY:%.*]]) { 
8181; CHECK-NEXT:    [[DATA_AES:%.*]] = tail call <vscale x 16 x i8> @llvm.aarch64.sve.aese(<vscale x 16 x i8> [[DATA]], <vscale x 16 x i8> [[KEY]]) 
8282; CHECK-NEXT:    ret <vscale x 16 x i8> [[DATA_AES]] 
@@ -86,8 +86,19 @@ define <vscale x 16 x i8> @combineXorAeseZeroSVE(<vscale x 16 x i8> %data, <vsca
8686  ret  <vscale x 16  x i8 > %data.aes 
8787}
8888
89- define  <vscale x 16  x i8 > @combineXorAesdZeroSVE (<vscale x 16  x i8 > %data , <vscale x 16  x i8 > %key ) {
90- ; CHECK-LABEL: define <vscale x 16 x i8> @combineXorAesdZeroSVE( 
89+ define  <vscale x 16  x i8 > @combineXorAeseZeroRhsSVE (<vscale x 16  x i8 > %data , <vscale x 16  x i8 > %key ) {
90+ ; CHECK-LABEL: define <vscale x 16 x i8> @combineXorAeseZeroRhsSVE( 
91+ ; CHECK-SAME: <vscale x 16 x i8> [[DATA:%.*]], <vscale x 16 x i8> [[KEY:%.*]]) { 
92+ ; CHECK-NEXT:    [[DATA_AES:%.*]] = tail call <vscale x 16 x i8> @llvm.aarch64.sve.aese(<vscale x 16 x i8> [[DATA]], <vscale x 16 x i8> [[KEY]]) 
93+ ; CHECK-NEXT:    ret <vscale x 16 x i8> [[DATA_AES]] 
94+ ; 
95+   %data.xor  = xor  <vscale x 16  x i8 > %data , %key 
96+   %data.aes  = tail  call  <vscale x 16  x i8 > @llvm.aarch64.sve.aese (<vscale x 16  x i8 > %data.xor , <vscale x 16  x i8 > zeroinitializer )
97+   ret  <vscale x 16  x i8 > %data.aes 
98+ }
99+ 
100+ define  <vscale x 16  x i8 > @combineXorAesdZeroLhsSVE (<vscale x 16  x i8 > %data , <vscale x 16  x i8 > %key ) {
101+ ; CHECK-LABEL: define <vscale x 16 x i8> @combineXorAesdZeroLhsSVE( 
91102; CHECK-SAME: <vscale x 16 x i8> [[DATA:%.*]], <vscale x 16 x i8> [[KEY:%.*]]) { 
92103; CHECK-NEXT:    [[DATA_AES:%.*]] = tail call <vscale x 16 x i8> @llvm.aarch64.sve.aesd(<vscale x 16 x i8> [[DATA]], <vscale x 16 x i8> [[KEY]]) 
93104; CHECK-NEXT:    ret <vscale x 16 x i8> [[DATA_AES]] 
@@ -97,5 +108,16 @@ define <vscale x 16 x i8> @combineXorAesdZeroSVE(<vscale x 16 x i8> %data, <vsca
97108  ret  <vscale x 16  x i8 > %data.aes 
98109}
99110
111+ define  <vscale x 16  x i8 > @combineXorAesdZeroRhsSVE (<vscale x 16  x i8 > %data , <vscale x 16  x i8 > %key ) {
112+ ; CHECK-LABEL: define <vscale x 16 x i8> @combineXorAesdZeroRhsSVE( 
113+ ; CHECK-SAME: <vscale x 16 x i8> [[DATA:%.*]], <vscale x 16 x i8> [[KEY:%.*]]) { 
114+ ; CHECK-NEXT:    [[DATA_AES:%.*]] = tail call <vscale x 16 x i8> @llvm.aarch64.sve.aesd(<vscale x 16 x i8> [[DATA]], <vscale x 16 x i8> [[KEY]]) 
115+ ; CHECK-NEXT:    ret <vscale x 16 x i8> [[DATA_AES]] 
116+ ; 
117+   %data.xor  = xor  <vscale x 16  x i8 > %data , %key 
118+   %data.aes  = tail  call  <vscale x 16  x i8 > @llvm.aarch64.sve.aesd (<vscale x 16  x i8 > %data.xor , <vscale x 16  x i8 > zeroinitializer )
119+   ret  <vscale x 16  x i8 > %data.aes 
120+ }
121+ 
100122declare  <vscale x 16  x i8 > @llvm.aarch64.sve.aese (<vscale x 16  x i8 >, <vscale x 16  x i8 >) #0 
101123declare  <vscale x 16  x i8 > @llvm.aarch64.sve.aesd (<vscale x 16  x i8 >, <vscale x 16  x i8 >) #0 
0 commit comments