| 
3 | 3 | ; RUN: llc -mtriple=aarch64-unknown-linux-gnu -global-isel -global-isel-abort=2 2>&1 < %s | FileCheck %s --check-prefixes=CHECK,CHECK-GI  | 
4 | 4 | 
 
  | 
5 | 5 | ; CHECK-GI:       warning: Instruction selection used fallback path for freeze_v2i8  | 
6 |  | -; CHECK-GI-NEXT:  warning: Instruction selection used fallback path for freeze_shadd  | 
7 | 6 | ; CHECK-GI-NEXT:  warning: Instruction selection used fallback path for freeze_srhadd  | 
8 | 7 | 
 
  | 
9 | 8 | %struct.T = type { i32, i32 }  | 
@@ -485,12 +484,21 @@ define <8 x i16> @freeze_urhadd(<8 x i16> %a0, <8 x i16> %a1) {  | 
485 | 484 | }  | 
486 | 485 | 
 
  | 
487 | 486 | define <8 x i16> @freeze_shadd(<8 x i8> %a0, <8 x i16> %a1) {  | 
488 |  | -; CHECK-LABEL: freeze_shadd:  | 
489 |  | -; CHECK:       // %bb.0:  | 
490 |  | -; CHECK-NEXT:    sshll v0.8h, v0.8b, #0  | 
491 |  | -; CHECK-NEXT:    sshr v1.8h, v1.8h, #8  | 
492 |  | -; CHECK-NEXT:    shadd v0.8h, v0.8h, v1.8h  | 
493 |  | -; CHECK-NEXT:    ret  | 
 | 487 | +; CHECK-SD-LABEL: freeze_shadd:  | 
 | 488 | +; CHECK-SD:       // %bb.0:  | 
 | 489 | +; CHECK-SD-NEXT:    sshll v0.8h, v0.8b, #0  | 
 | 490 | +; CHECK-SD-NEXT:    sshr v1.8h, v1.8h, #8  | 
 | 491 | +; CHECK-SD-NEXT:    shadd v0.8h, v0.8h, v1.8h  | 
 | 492 | +; CHECK-SD-NEXT:    ret  | 
 | 493 | +;  | 
 | 494 | +; CHECK-GI-LABEL: freeze_shadd:  | 
 | 495 | +; CHECK-GI:       // %bb.0:  | 
 | 496 | +; CHECK-GI-NEXT:    sshll v0.8h, v0.8b, #0  | 
 | 497 | +; CHECK-GI-NEXT:    sshr v1.8h, v1.8h, #8  | 
 | 498 | +; CHECK-GI-NEXT:    shadd v0.8h, v0.8h, v1.8h  | 
 | 499 | +; CHECK-GI-NEXT:    shl v0.8h, v0.8h, #8  | 
 | 500 | +; CHECK-GI-NEXT:    sshr v0.8h, v0.8h, #8  | 
 | 501 | +; CHECK-GI-NEXT:    ret  | 
494 | 502 |   %x0 = sext <8 x i8> %a0 to <8 x i16>  | 
495 | 503 |   %x1 = ashr <8 x i16> %a1, splat (i16 8)  | 
496 | 504 |   %avg = call <8 x i16> @llvm.aarch64.neon.shadd.v8i16(<8 x i16> %x0, <8 x i16> %x1)  | 
 | 
0 commit comments