; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 ; RUN: llc %s -o - | FileCheck %s --check-prefixes CHECK,SDAG ; RUN: llc %s -global-isel -global-isel-abort=1 -o - | FileCheck %s --check-prefixes CHECK,GISEL target datalayout = "e-m:o-i64:64-i512:128-n32:64-S128" target triple = "arm64-apple-macosx14.0.0" define void @test_shl_i512(ptr %result, ptr %input, i32 %shift) { ; SDAG-LABEL: test_shl_i512: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: sub sp, sp, #128 ; SDAG-NEXT: .cfi_def_cfa_offset 128 ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: movi.2d v0, #0000000000000000 ; SDAG-NEXT: ldp q1, q2, [x1] ; SDAG-NEXT: mvn w14, w2 ; SDAG-NEXT: ldr q3, [x1, #32] ; SDAG-NEXT: stp x9, x8, [sp, #112] ; SDAG-NEXT: mov w8, w2 ; SDAG-NEXT: mov x9, sp ; SDAG-NEXT: lsr x10, x8, #3 ; SDAG-NEXT: add x9, x9, #64 ; SDAG-NEXT: stp q0, q0, [sp] ; SDAG-NEXT: stp q0, q0, [sp, #32] ; SDAG-NEXT: and x3, x8, #0x3f ; SDAG-NEXT: and x10, x10, #0x38 ; SDAG-NEXT: stp q2, q3, [sp, #80] ; SDAG-NEXT: eor x3, x3, #0x3f ; SDAG-NEXT: sub x10, x9, x10 ; SDAG-NEXT: str q1, [sp, #64] ; SDAG-NEXT: ldp x9, x11, [x10] ; SDAG-NEXT: ldp x13, x12, [x10, #16] ; SDAG-NEXT: ldp x17, x16, [x10, #32] ; SDAG-NEXT: ldp x10, x2, [x10, #48] ; SDAG-NEXT: lsr x15, x11, #1 ; SDAG-NEXT: lsr x1, x12, #1 ; SDAG-NEXT: lsl x11, x11, x8 ; SDAG-NEXT: lsl x12, x12, x8 ; SDAG-NEXT: lsr x4, x16, #1 ; SDAG-NEXT: lsr x15, x15, x14 ; SDAG-NEXT: lsl x5, x17, x8 ; SDAG-NEXT: lsr x6, x10, #1 ; SDAG-NEXT: lsr x1, x1, x14 ; SDAG-NEXT: lsl x10, x10, x8 ; SDAG-NEXT: lsr x14, x4, x14 ; SDAG-NEXT: lsl x2, x2, x8 ; SDAG-NEXT: lsl x16, x16, x8 ; SDAG-NEXT: lsr x4, x6, x3 ; SDAG-NEXT: orr x1, x5, x1 ; SDAG-NEXT: orr x10, x10, x14 ; SDAG-NEXT: lsr x14, x17, #1 ; SDAG-NEXT: orr x17, x2, x4 ; SDAG-NEXT: lsr x2, x9, #1 ; SDAG-NEXT: stp x10, x17, [x0, #48] ; SDAG-NEXT: lsr x10, x13, #1 ; SDAG-NEXT: lsr x14, x14, x3 ; SDAG-NEXT: lsl x13, x13, x8 ; SDAG-NEXT: lsl x8, x9, x8 ; SDAG-NEXT: lsr x10, x10, x3 ; SDAG-NEXT: orr x14, x16, x14 ; SDAG-NEXT: lsr x16, x2, x3 ; SDAG-NEXT: orr x13, x13, x15 ; SDAG-NEXT: stp x1, x14, [x0, #32] ; SDAG-NEXT: orr x10, x12, x10 ; SDAG-NEXT: orr x9, x11, x16 ; SDAG-NEXT: stp x13, x10, [x0, #16] ; SDAG-NEXT: stp x8, x9, [x0] ; SDAG-NEXT: add sp, sp, #128 ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_shl_i512: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: stp x28, x27, [sp, #-80]! ; 16-byte Folded Spill ; GISEL-NEXT: stp x26, x25, [sp, #16] ; 16-byte Folded Spill ; GISEL-NEXT: stp x24, x23, [sp, #32] ; 16-byte Folded Spill ; GISEL-NEXT: stp x22, x21, [sp, #48] ; 16-byte Folded Spill ; GISEL-NEXT: stp x20, x19, [sp, #64] ; 16-byte Folded Spill ; GISEL-NEXT: .cfi_def_cfa_offset 80 ; GISEL-NEXT: .cfi_offset w19, -8 ; GISEL-NEXT: .cfi_offset w20, -16 ; GISEL-NEXT: .cfi_offset w21, -24 ; GISEL-NEXT: .cfi_offset w22, -32 ; GISEL-NEXT: .cfi_offset w23, -40 ; GISEL-NEXT: .cfi_offset w24, -48 ; GISEL-NEXT: .cfi_offset w25, -56 ; GISEL-NEXT: .cfi_offset w26, -64 ; GISEL-NEXT: .cfi_offset w27, -72 ; GISEL-NEXT: .cfi_offset w28, -80 ; GISEL-NEXT: ldp x11, x15, [x1] ; GISEL-NEXT: mov w8, w2 ; GISEL-NEXT: lsr x9, x8, #6 ; GISEL-NEXT: and x14, x8, #0x3f ; GISEL-NEXT: mov w13, #64 ; =0x40 ; GISEL-NEXT: sub x16, x13, x14 ; GISEL-NEXT: ldp x3, x6, [x1, #16] ; GISEL-NEXT: lsl x10, x11, x14 ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: ldp x20, x21, [x1, #32] ; GISEL-NEXT: csel x12, x10, xzr, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: lsr x26, x21, x16 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x13, xzr, x12, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: lsr x12, x11, x16 ; GISEL-NEXT: csel x13, x11, x13, eq ; GISEL-NEXT: lsl x11, x15, x14 ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x17, xzr, x12, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x17, x11, x17 ; GISEL-NEXT: csel x17, x17, xzr, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: csel x17, x10, x17, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x2, xzr, x17, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: lsr x17, x15, x16 ; GISEL-NEXT: csel x15, x15, x2, eq ; GISEL-NEXT: lsl x2, x3, x14 ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x4, xzr, x17, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x4, x2, x4 ; GISEL-NEXT: csel x4, x4, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x5, xzr, x12, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x5, x11, x5 ; GISEL-NEXT: csel x4, x5, x4, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: csel x4, x10, x4, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: csel x4, xzr, x4, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x4, xzr, x4, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x4, xzr, x4, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x4, xzr, x4, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x5, xzr, x4, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: lsr x4, x3, x16 ; GISEL-NEXT: csel x3, x3, x5, eq ; GISEL-NEXT: lsl x5, x6, x14 ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x7, xzr, x4, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x7, x5, x7 ; GISEL-NEXT: csel x7, x7, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x17, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x19, x2, x19 ; GISEL-NEXT: csel x7, x19, x7, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x12, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x19, x11, x19 ; GISEL-NEXT: csel x7, x19, x7, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: csel x7, x10, x7, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x7, xzr, x7, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x7, xzr, x7, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x7, xzr, x7, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x19, xzr, x7, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: lsr x7, x6, x16 ; GISEL-NEXT: csel x6, x6, x19, eq ; GISEL-NEXT: lsl x19, x20, x14 ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x22, xzr, x7, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x22, x19, x22 ; GISEL-NEXT: csel x22, x22, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x23, xzr, x4, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x23, x5, x23 ; GISEL-NEXT: csel x22, x23, x22, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x23, xzr, x17, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x23, x2, x23 ; GISEL-NEXT: csel x22, x23, x22, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x23, xzr, x12, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x23, x11, x23 ; GISEL-NEXT: csel x22, x23, x22, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x22, x10, x22, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x22, xzr, x22, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x22, xzr, x22, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x23, xzr, x22, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: lsr x22, x20, x16 ; GISEL-NEXT: csel x20, x20, x23, eq ; GISEL-NEXT: lsl x23, x21, x14 ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x24, xzr, x22, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x24, x23, x24 ; GISEL-NEXT: csel x24, x24, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x25, xzr, x7, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x25, x19, x25 ; GISEL-NEXT: csel x24, x25, x24, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x25, xzr, x4, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x25, x5, x25 ; GISEL-NEXT: csel x24, x25, x24, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x25, xzr, x17, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x25, x2, x25 ; GISEL-NEXT: csel x24, x25, x24, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x25, xzr, x12, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x25, x11, x25 ; GISEL-NEXT: csel x24, x25, x24, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x24, x10, x24, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: ldp x25, x1, [x1, #48] ; GISEL-NEXT: csel x24, xzr, x24, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: stp x13, x15, [x0] ; GISEL-NEXT: csel x24, xzr, x24, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: stp x3, x6, [x0, #16] ; GISEL-NEXT: csel x21, x21, x24, eq ; GISEL-NEXT: lsl x24, x25, x14 ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x27, xzr, x26, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: lsr x16, x25, x16 ; GISEL-NEXT: orr x27, x24, x27 ; GISEL-NEXT: lsl x14, x1, x14 ; GISEL-NEXT: stp x20, x21, [x0, #32] ; GISEL-NEXT: csel x27, x27, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x28, xzr, x22, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x28, x23, x28 ; GISEL-NEXT: csel x27, x28, x27, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x28, xzr, x7, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x28, x19, x28 ; GISEL-NEXT: csel x27, x28, x27, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x28, xzr, x4, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x28, x5, x28 ; GISEL-NEXT: csel x27, x28, x27, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x28, xzr, x17, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x28, x2, x28 ; GISEL-NEXT: csel x27, x28, x27, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x28, xzr, x12, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x28, x11, x28 ; GISEL-NEXT: csel x27, x28, x27, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x27, x10, x27, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x27, xzr, x27, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x25, x25, x27, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x16, xzr, x16, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x14, x14, x16 ; GISEL-NEXT: csel x14, x14, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x16, xzr, x26, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x16, x24, x16 ; GISEL-NEXT: csel x14, x16, x14, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x16, xzr, x22, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x16, x23, x16 ; GISEL-NEXT: ldp x22, x21, [sp, #48] ; 16-byte Folded Reload ; GISEL-NEXT: csel x14, x16, x14, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x16, xzr, x7, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x16, x19, x16 ; GISEL-NEXT: ldp x20, x19, [sp, #64] ; 16-byte Folded Reload ; GISEL-NEXT: csel x14, x16, x14, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x16, xzr, x4, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x16, x5, x16 ; GISEL-NEXT: ldp x24, x23, [sp, #32] ; 16-byte Folded Reload ; GISEL-NEXT: csel x14, x16, x14, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x16, xzr, x17, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x16, x2, x16 ; GISEL-NEXT: csel x13, x16, x14, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x11, x11, x12 ; GISEL-NEXT: csel x11, x11, x13, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x9, x10, x11, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x8, x1, x9, eq ; GISEL-NEXT: stp x25, x8, [x0, #48] ; GISEL-NEXT: ldp x26, x25, [sp, #16] ; 16-byte Folded Reload ; GISEL-NEXT: ldp x28, x27, [sp], #80 ; 16-byte Folded Reload ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shift_ext = zext i32 %shift to i512 %shifted = shl i512 %input_val, %shift_ext store i512 %shifted, ptr %result, align 64 ret void } define void @test_lshr_i512(ptr %result, ptr %input, i32 %shift) { ; SDAG-LABEL: test_lshr_i512: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: sub sp, sp, #128 ; SDAG-NEXT: .cfi_def_cfa_offset 128 ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: movi.2d v0, #0000000000000000 ; SDAG-NEXT: ldp q1, q2, [x1] ; SDAG-NEXT: mvn w11, w2 ; SDAG-NEXT: ldr q3, [x1, #32] ; SDAG-NEXT: stp x9, x8, [sp, #48] ; SDAG-NEXT: mov w8, w2 ; SDAG-NEXT: lsr x10, x8, #3 ; SDAG-NEXT: stp q2, q3, [sp, #16] ; SDAG-NEXT: and x3, x8, #0x3f ; SDAG-NEXT: stp q0, q0, [sp, #64] ; SDAG-NEXT: eor x3, x3, #0x3f ; SDAG-NEXT: and x9, x10, #0x38 ; SDAG-NEXT: mov x10, sp ; SDAG-NEXT: stp q0, q0, [sp, #96] ; SDAG-NEXT: add x10, x10, x9 ; SDAG-NEXT: str q1, [sp] ; SDAG-NEXT: ldp x13, x16, [x10, #48] ; SDAG-NEXT: ldp x9, x14, [x10, #16] ; SDAG-NEXT: ldp x12, x17, [x10, #32] ; SDAG-NEXT: lsl x4, x16, #1 ; SDAG-NEXT: lsl x2, x13, #1 ; SDAG-NEXT: lsr x13, x13, x8 ; SDAG-NEXT: lsl x15, x9, #1 ; SDAG-NEXT: lsr x16, x16, x8 ; SDAG-NEXT: lsr x9, x9, x8 ; SDAG-NEXT: lsl x1, x12, #1 ; SDAG-NEXT: lsl x4, x4, x3 ; SDAG-NEXT: lsr x12, x12, x8 ; SDAG-NEXT: lsl x15, x15, x11 ; SDAG-NEXT: lsl x1, x1, x11 ; SDAG-NEXT: lsl x11, x2, x11 ; SDAG-NEXT: lsl x2, x17, #1 ; SDAG-NEXT: orr x13, x4, x13 ; SDAG-NEXT: ldp x10, x4, [x10] ; SDAG-NEXT: lsr x17, x17, x8 ; SDAG-NEXT: lsl x2, x2, x3 ; SDAG-NEXT: stp x13, x16, [x0, #48] ; SDAG-NEXT: lsl x16, x14, #1 ; SDAG-NEXT: lsr x14, x14, x8 ; SDAG-NEXT: lsl x13, x4, #1 ; SDAG-NEXT: orr x11, x17, x11 ; SDAG-NEXT: orr x12, x2, x12 ; SDAG-NEXT: lsl x16, x16, x3 ; SDAG-NEXT: lsr x10, x10, x8 ; SDAG-NEXT: stp x12, x11, [x0, #32] ; SDAG-NEXT: lsl x12, x13, x3 ; SDAG-NEXT: lsr x8, x4, x8 ; SDAG-NEXT: orr x11, x14, x1 ; SDAG-NEXT: orr x9, x16, x9 ; SDAG-NEXT: stp x9, x11, [x0, #16] ; SDAG-NEXT: orr x9, x12, x10 ; SDAG-NEXT: orr x8, x8, x15 ; SDAG-NEXT: stp x9, x8, [x0] ; SDAG-NEXT: add sp, sp, #128 ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_lshr_i512: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: stp x26, x25, [sp, #-64]! ; 16-byte Folded Spill ; GISEL-NEXT: stp x24, x23, [sp, #16] ; 16-byte Folded Spill ; GISEL-NEXT: stp x22, x21, [sp, #32] ; 16-byte Folded Spill ; GISEL-NEXT: stp x20, x19, [sp, #48] ; 16-byte Folded Spill ; GISEL-NEXT: .cfi_def_cfa_offset 64 ; GISEL-NEXT: .cfi_offset w19, -8 ; GISEL-NEXT: .cfi_offset w20, -16 ; GISEL-NEXT: .cfi_offset w21, -24 ; GISEL-NEXT: .cfi_offset w22, -32 ; GISEL-NEXT: .cfi_offset w23, -40 ; GISEL-NEXT: .cfi_offset w24, -48 ; GISEL-NEXT: .cfi_offset w25, -56 ; GISEL-NEXT: .cfi_offset w26, -64 ; GISEL-NEXT: mov w8, w2 ; GISEL-NEXT: ldp x13, x2, [x1] ; GISEL-NEXT: mov w9, #64 ; =0x40 ; GISEL-NEXT: and x14, x8, #0x3f ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: sub x17, x9, x14 ; GISEL-NEXT: ldp x5, x16, [x1, #16] ; GISEL-NEXT: lsl x10, x2, x17 ; GISEL-NEXT: lsr x9, x8, #6 ; GISEL-NEXT: lsr x11, x13, x14 ; GISEL-NEXT: lsr x24, x2, x14 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: lsl x23, x5, x17 ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x10, x11, x10 ; GISEL-NEXT: lsl x22, x16, x17 ; GISEL-NEXT: lsr x21, x5, x14 ; GISEL-NEXT: csel x10, x10, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x20, x16, x14 ; GISEL-NEXT: csel x11, xzr, x23, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x11, x24, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: ldp x15, x11, [x1, #32] ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x22, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: lsl x19, x15, x17 ; GISEL-NEXT: orr x12, x21, x12 ; GISEL-NEXT: lsl x6, x11, x17 ; GISEL-NEXT: csel x10, x12, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x7, x15, x14 ; GISEL-NEXT: csel x12, xzr, x19, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x12, x20, x12 ; GISEL-NEXT: csel x4, x12, x10, eq ; GISEL-NEXT: ldp x12, x10, [x1, #48] ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x1, xzr, x6, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x1, x7, x1 ; GISEL-NEXT: lsl x3, x12, x17 ; GISEL-NEXT: lsl x17, x10, x17 ; GISEL-NEXT: csel x1, x1, x4, eq ; GISEL-NEXT: lsr x4, x11, x14 ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x25, xzr, x3, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x25, x4, x25 ; GISEL-NEXT: csel x25, x25, x1, eq ; GISEL-NEXT: lsr x1, x12, x14 ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x26, xzr, x17, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: lsr x14, x10, x14 ; GISEL-NEXT: orr x26, x1, x26 ; GISEL-NEXT: csel x25, x26, x25, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x25, x14, x25, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x13, x13, x25, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x23, xzr, x23, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x23, x24, x23 ; GISEL-NEXT: csel x23, x23, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x24, xzr, x22, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x24, x21, x24 ; GISEL-NEXT: csel x23, x24, x23, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x24, xzr, x19, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x24, x20, x24 ; GISEL-NEXT: csel x23, x24, x23, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x24, xzr, x6, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x24, x7, x24 ; GISEL-NEXT: csel x23, x24, x23, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x24, xzr, x3, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x24, x4, x24 ; GISEL-NEXT: csel x23, x24, x23, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x24, xzr, x17, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x24, x1, x24 ; GISEL-NEXT: csel x23, x24, x23, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x23, x14, x23, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x23, xzr, x23, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x2, x2, x23, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x22, xzr, x22, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: stp x13, x2, [x0] ; GISEL-NEXT: orr x21, x21, x22 ; GISEL-NEXT: ldp x24, x23, [sp, #16] ; 16-byte Folded Reload ; GISEL-NEXT: csel x21, x21, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x22, xzr, x19, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x22, x20, x22 ; GISEL-NEXT: csel x21, x22, x21, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x22, xzr, x6, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x22, x7, x22 ; GISEL-NEXT: csel x21, x22, x21, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x22, xzr, x3, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x22, x4, x22 ; GISEL-NEXT: csel x21, x22, x21, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x22, xzr, x17, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x22, x1, x22 ; GISEL-NEXT: csel x21, x22, x21, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x21, x14, x21, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x21, xzr, x21, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x21, xzr, x21, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x5, x5, x21, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x19, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x19, x20, x19 ; GISEL-NEXT: ldp x22, x21, [sp, #32] ; 16-byte Folded Reload ; GISEL-NEXT: csel x19, x19, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x6, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x20, x7, x20 ; GISEL-NEXT: csel x19, x20, x19, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x3, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x20, x4, x20 ; GISEL-NEXT: csel x19, x20, x19, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x17, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x20, x1, x20 ; GISEL-NEXT: csel x19, x20, x19, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x19, x14, x19, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x19, xzr, x19, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x19, xzr, x19, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x19, xzr, x19, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x16, x16, x19, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x6, xzr, x6, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: stp x5, x16, [x0, #16] ; GISEL-NEXT: orr x6, x7, x6 ; GISEL-NEXT: ldp x20, x19, [sp, #48] ; 16-byte Folded Reload ; GISEL-NEXT: csel x6, x6, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x7, xzr, x3, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x7, x4, x7 ; GISEL-NEXT: csel x6, x7, x6, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x7, xzr, x17, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x7, x1, x7 ; GISEL-NEXT: csel x6, x7, x6, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: csel x6, x14, x6, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x6, xzr, x6, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x6, xzr, x6, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x6, xzr, x6, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x6, xzr, x6, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x15, x15, x6, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x3, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x3, x4, x3 ; GISEL-NEXT: csel x3, x3, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x4, xzr, x17, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x4, x1, x4 ; GISEL-NEXT: csel x3, x4, x3, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: csel x3, x14, x3, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: csel x3, xzr, x3, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x3, xzr, x3, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x3, xzr, x3, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x3, xzr, x3, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x3, xzr, x3, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x11, x11, x3, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: stp x15, x11, [x0, #32] ; GISEL-NEXT: orr x17, x1, x17 ; GISEL-NEXT: csel x17, x17, xzr, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: csel x17, x14, x17, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x12, x12, x17, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: csel x14, x14, xzr, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: csel x14, xzr, x14, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: csel x14, xzr, x14, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: csel x13, xzr, x14, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x9, xzr, x13, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x8, x10, x9, eq ; GISEL-NEXT: stp x12, x8, [x0, #48] ; GISEL-NEXT: ldp x26, x25, [sp], #64 ; 16-byte Folded Reload ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shift_ext = zext i32 %shift to i512 %shifted = lshr i512 %input_val, %shift_ext store i512 %shifted, ptr %result, align 64 ret void } define void @test_ashr_i512(ptr %result, ptr %input, i32 %shift) { ; SDAG-LABEL: test_ashr_i512: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: sub sp, sp, #128 ; SDAG-NEXT: .cfi_def_cfa_offset 128 ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: mov x11, sp ; SDAG-NEXT: ldp q0, q1, [x1] ; SDAG-NEXT: ldr q2, [x1, #32] ; SDAG-NEXT: stp x9, x8, [sp, #48] ; SDAG-NEXT: asr x9, x8, #63 ; SDAG-NEXT: mov w8, w2 ; SDAG-NEXT: lsr x10, x8, #3 ; SDAG-NEXT: stp q1, q2, [sp, #16] ; SDAG-NEXT: and x3, x8, #0x3f ; SDAG-NEXT: str q0, [sp] ; SDAG-NEXT: eor x3, x3, #0x3f ; SDAG-NEXT: and x10, x10, #0x38 ; SDAG-NEXT: stp x9, x9, [sp, #112] ; SDAG-NEXT: stp x9, x9, [sp, #96] ; SDAG-NEXT: add x10, x11, x10 ; SDAG-NEXT: mvn w11, w2 ; SDAG-NEXT: stp x9, x9, [sp, #80] ; SDAG-NEXT: stp x9, x9, [sp, #64] ; SDAG-NEXT: ldp x13, x16, [x10, #48] ; SDAG-NEXT: ldp x9, x14, [x10, #16] ; SDAG-NEXT: ldp x12, x17, [x10, #32] ; SDAG-NEXT: lsl x4, x16, #1 ; SDAG-NEXT: lsl x2, x13, #1 ; SDAG-NEXT: lsr x13, x13, x8 ; SDAG-NEXT: lsl x15, x9, #1 ; SDAG-NEXT: asr x16, x16, x8 ; SDAG-NEXT: lsr x9, x9, x8 ; SDAG-NEXT: lsl x1, x12, #1 ; SDAG-NEXT: lsl x4, x4, x3 ; SDAG-NEXT: lsr x12, x12, x8 ; SDAG-NEXT: lsl x15, x15, x11 ; SDAG-NEXT: lsl x1, x1, x11 ; SDAG-NEXT: lsl x11, x2, x11 ; SDAG-NEXT: lsl x2, x17, #1 ; SDAG-NEXT: orr x13, x4, x13 ; SDAG-NEXT: ldp x10, x4, [x10] ; SDAG-NEXT: lsr x17, x17, x8 ; SDAG-NEXT: lsl x2, x2, x3 ; SDAG-NEXT: stp x13, x16, [x0, #48] ; SDAG-NEXT: lsl x16, x14, #1 ; SDAG-NEXT: lsr x14, x14, x8 ; SDAG-NEXT: lsl x13, x4, #1 ; SDAG-NEXT: orr x11, x17, x11 ; SDAG-NEXT: orr x12, x2, x12 ; SDAG-NEXT: lsl x16, x16, x3 ; SDAG-NEXT: lsr x10, x10, x8 ; SDAG-NEXT: stp x12, x11, [x0, #32] ; SDAG-NEXT: lsl x12, x13, x3 ; SDAG-NEXT: lsr x8, x4, x8 ; SDAG-NEXT: orr x11, x14, x1 ; SDAG-NEXT: orr x9, x16, x9 ; SDAG-NEXT: stp x9, x11, [x0, #16] ; SDAG-NEXT: orr x9, x12, x10 ; SDAG-NEXT: orr x8, x8, x15 ; SDAG-NEXT: stp x9, x8, [x0] ; SDAG-NEXT: add sp, sp, #128 ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_ashr_i512: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: stp x28, x27, [sp, #-80]! ; 16-byte Folded Spill ; GISEL-NEXT: stp x26, x25, [sp, #16] ; 16-byte Folded Spill ; GISEL-NEXT: stp x24, x23, [sp, #32] ; 16-byte Folded Spill ; GISEL-NEXT: stp x22, x21, [sp, #48] ; 16-byte Folded Spill ; GISEL-NEXT: stp x20, x19, [sp, #64] ; 16-byte Folded Spill ; GISEL-NEXT: .cfi_def_cfa_offset 80 ; GISEL-NEXT: .cfi_offset w19, -8 ; GISEL-NEXT: .cfi_offset w20, -16 ; GISEL-NEXT: .cfi_offset w21, -24 ; GISEL-NEXT: .cfi_offset w22, -32 ; GISEL-NEXT: .cfi_offset w23, -40 ; GISEL-NEXT: .cfi_offset w24, -48 ; GISEL-NEXT: .cfi_offset w25, -56 ; GISEL-NEXT: .cfi_offset w26, -64 ; GISEL-NEXT: .cfi_offset w27, -72 ; GISEL-NEXT: .cfi_offset w28, -80 ; GISEL-NEXT: mov w8, w2 ; GISEL-NEXT: ldp x14, x4, [x1] ; GISEL-NEXT: mov w9, #64 ; =0x40 ; GISEL-NEXT: and x16, x8, #0x3f ; GISEL-NEXT: lsr x10, x8, #6 ; GISEL-NEXT: sub x15, x9, x16 ; GISEL-NEXT: ldr x9, [x1, #56] ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsl x12, x4, x15 ; GISEL-NEXT: ldp x7, x3, [x1, #16] ; GISEL-NEXT: lsr x13, x14, x16 ; GISEL-NEXT: asr x11, x9, #63 ; GISEL-NEXT: lsr x26, x4, x16 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: lsl x25, x7, x15 ; GISEL-NEXT: orr x12, x13, x12 ; GISEL-NEXT: lsl x23, x3, x15 ; GISEL-NEXT: csel x12, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x24, x7, x16 ; GISEL-NEXT: csel x13, xzr, x25, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: lsr x22, x3, x16 ; GISEL-NEXT: orr x13, x26, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: ldp x17, x13, [x1, #32] ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x2, xzr, x23, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x2, x24, x2 ; GISEL-NEXT: lsl x21, x17, x15 ; GISEL-NEXT: lsl x19, x13, x15 ; GISEL-NEXT: csel x2, x2, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x12, [x1, #48] ; GISEL-NEXT: csel x1, xzr, x21, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: lsr x20, x17, x16 ; GISEL-NEXT: orr x1, x22, x1 ; GISEL-NEXT: lsl x5, x12, x15 ; GISEL-NEXT: lsr x6, x13, x16 ; GISEL-NEXT: csel x1, x1, x2, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x2, xzr, x19, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x2, x20, x2 ; GISEL-NEXT: csel x2, x2, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x1, xzr, x5, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x27, x6, x1 ; GISEL-NEXT: lsl x1, x9, x15 ; GISEL-NEXT: lsl x15, x11, x15 ; GISEL-NEXT: csel x27, x27, x2, eq ; GISEL-NEXT: lsr x2, x12, x16 ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x28, xzr, x1, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: lsr x16, x9, x16 ; GISEL-NEXT: orr x28, x2, x28 ; GISEL-NEXT: csel x27, x28, x27, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x28, xzr, x15, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: orr x28, x16, x28 ; GISEL-NEXT: csel x27, x28, x27, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x14, x14, x27, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x25, xzr, x25, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x25, x26, x25 ; GISEL-NEXT: csel x25, x25, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x26, xzr, x23, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x26, x24, x26 ; GISEL-NEXT: csel x25, x26, x25, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x26, xzr, x21, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x26, x22, x26 ; GISEL-NEXT: csel x25, x26, x25, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x26, xzr, x19, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x26, x20, x26 ; GISEL-NEXT: csel x25, x26, x25, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x26, xzr, x5, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x26, x6, x26 ; GISEL-NEXT: csel x25, x26, x25, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x26, xzr, x1, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x26, x2, x26 ; GISEL-NEXT: csel x25, x26, x25, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x26, xzr, x15, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: orr x26, x16, x26 ; GISEL-NEXT: csel x25, x26, x25, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: csel x25, x11, x25, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x4, x4, x25, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x23, xzr, x23, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: stp x14, x4, [x0] ; GISEL-NEXT: orr x23, x24, x23 ; GISEL-NEXT: ldp x26, x25, [sp, #16] ; 16-byte Folded Reload ; GISEL-NEXT: csel x23, x23, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x24, xzr, x21, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x24, x22, x24 ; GISEL-NEXT: csel x23, x24, x23, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x24, xzr, x19, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x24, x20, x24 ; GISEL-NEXT: csel x23, x24, x23, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x24, xzr, x5, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x24, x6, x24 ; GISEL-NEXT: csel x23, x24, x23, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x24, xzr, x1, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x24, x2, x24 ; GISEL-NEXT: csel x23, x24, x23, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x24, xzr, x15, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x24, x16, x24 ; GISEL-NEXT: csel x23, x24, x23, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: csel x23, x11, x23, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: csel x23, x11, x23, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x7, x7, x23, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x21, xzr, x21, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x21, x22, x21 ; GISEL-NEXT: ldp x24, x23, [sp, #32] ; 16-byte Folded Reload ; GISEL-NEXT: csel x21, x21, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x22, xzr, x19, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x22, x20, x22 ; GISEL-NEXT: csel x21, x22, x21, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x22, xzr, x5, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x22, x6, x22 ; GISEL-NEXT: csel x21, x22, x21, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x22, xzr, x1, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x22, x2, x22 ; GISEL-NEXT: csel x21, x22, x21, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x22, xzr, x15, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x22, x16, x22 ; GISEL-NEXT: csel x21, x22, x21, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: csel x21, x11, x21, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: csel x21, x11, x21, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: csel x21, x11, x21, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x3, x3, x21, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x19, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: stp x7, x3, [x0, #16] ; GISEL-NEXT: orr x19, x20, x19 ; GISEL-NEXT: ldp x22, x21, [sp, #48] ; 16-byte Folded Reload ; GISEL-NEXT: csel x19, x19, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x5, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x20, x6, x20 ; GISEL-NEXT: csel x19, x20, x19, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x1, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x20, x2, x20 ; GISEL-NEXT: csel x19, x20, x19, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x15, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x20, x16, x20 ; GISEL-NEXT: csel x19, x20, x19, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: csel x19, x11, x19, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: csel x19, x11, x19, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: csel x19, x11, x19, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: csel x19, x11, x19, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x17, x17, x19, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x5, xzr, x5, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x5, x6, x5 ; GISEL-NEXT: ldp x20, x19, [sp, #64] ; 16-byte Folded Reload ; GISEL-NEXT: csel x5, x5, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x6, xzr, x1, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x6, x2, x6 ; GISEL-NEXT: csel x5, x6, x5, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x6, xzr, x15, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x6, x16, x6 ; GISEL-NEXT: csel x5, x6, x5, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: csel x5, x11, x5, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: csel x5, x11, x5, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: csel x5, x11, x5, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: csel x5, x11, x5, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: csel x5, x11, x5, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x13, x13, x5, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: stp x17, x13, [x0, #32] ; GISEL-NEXT: orr x1, x2, x1 ; GISEL-NEXT: csel x1, x1, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x2, xzr, x15, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x2, x16, x2 ; GISEL-NEXT: csel x1, x2, x1, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: csel x1, x11, x1, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: csel x1, x11, x1, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: csel x1, x11, x1, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: csel x1, x11, x1, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: csel x1, x11, x1, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: csel x1, x11, x1, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x12, x12, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x15, x16, x15 ; GISEL-NEXT: csel x15, x15, x11, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: csel x15, x11, x15, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: csel x15, x11, x15, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: csel x14, x11, x15, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: csel x14, x11, x14, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: csel x14, x11, x14, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: csel x14, x11, x14, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: csel x10, x11, x14, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x8, x9, x10, eq ; GISEL-NEXT: stp x12, x8, [x0, #48] ; GISEL-NEXT: ldp x28, x27, [sp], #80 ; 16-byte Folded Reload ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shift_ext = zext i32 %shift to i512 %shifted = ashr i512 %input_val, %shift_ext store i512 %shifted, ptr %result, align 64 ret void } ; i1024 shift functions define void @test_shl_i1024(ptr %result, ptr %input, i32 %shift) { ; SDAG-LABEL: test_shl_i1024: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: sub sp, sp, #352 ; SDAG-NEXT: stp x28, x27, [sp, #256] ; 16-byte Folded Spill ; SDAG-NEXT: stp x26, x25, [sp, #272] ; 16-byte Folded Spill ; SDAG-NEXT: stp x24, x23, [sp, #288] ; 16-byte Folded Spill ; SDAG-NEXT: stp x22, x21, [sp, #304] ; 16-byte Folded Spill ; SDAG-NEXT: stp x20, x19, [sp, #320] ; 16-byte Folded Spill ; SDAG-NEXT: stp x29, x30, [sp, #336] ; 16-byte Folded Spill ; SDAG-NEXT: .cfi_def_cfa_offset 352 ; SDAG-NEXT: .cfi_offset w30, -8 ; SDAG-NEXT: .cfi_offset w29, -16 ; SDAG-NEXT: .cfi_offset w19, -24 ; SDAG-NEXT: .cfi_offset w20, -32 ; SDAG-NEXT: .cfi_offset w21, -40 ; SDAG-NEXT: .cfi_offset w22, -48 ; SDAG-NEXT: .cfi_offset w23, -56 ; SDAG-NEXT: .cfi_offset w24, -64 ; SDAG-NEXT: .cfi_offset w25, -72 ; SDAG-NEXT: .cfi_offset w26, -80 ; SDAG-NEXT: .cfi_offset w27, -88 ; SDAG-NEXT: .cfi_offset w28, -96 ; SDAG-NEXT: ldp x8, x9, [x1, #112] ; SDAG-NEXT: movi.2d v0, #0000000000000000 ; SDAG-NEXT: ldp q1, q2, [x1] ; SDAG-NEXT: mov x10, sp ; SDAG-NEXT: ldp q3, q4, [x1, #32] ; SDAG-NEXT: add x10, x10, #128 ; SDAG-NEXT: ldp q5, q6, [x1, #64] ; SDAG-NEXT: mvn w4, w2 ; SDAG-NEXT: ldr q7, [x1, #96] ; SDAG-NEXT: stp x8, x9, [sp, #240] ; SDAG-NEXT: mov w8, w2 ; SDAG-NEXT: lsr x9, x8, #3 ; SDAG-NEXT: stp q0, q0, [sp] ; SDAG-NEXT: stp q0, q0, [sp, #32] ; SDAG-NEXT: ldp x29, x30, [sp, #336] ; 16-byte Folded Reload ; SDAG-NEXT: and x9, x9, #0x78 ; SDAG-NEXT: stp q0, q0, [sp, #64] ; SDAG-NEXT: stp q0, q0, [sp, #96] ; SDAG-NEXT: sub x1, x10, x9 ; SDAG-NEXT: and x10, x8, #0x3f ; SDAG-NEXT: stp q2, q3, [sp, #144] ; SDAG-NEXT: eor x10, x10, #0x3f ; SDAG-NEXT: stp q4, q5, [sp, #176] ; SDAG-NEXT: stp q6, q7, [sp, #208] ; SDAG-NEXT: str q1, [sp, #128] ; SDAG-NEXT: ldp x6, x19, [x1, #64] ; SDAG-NEXT: ldr x26, [x1, #96] ; SDAG-NEXT: ldp x22, x23, [x1, #80] ; SDAG-NEXT: ldp x27, x24, [x1, #104] ; SDAG-NEXT: lsr x20, x6, #1 ; SDAG-NEXT: lsr x21, x19, #1 ; SDAG-NEXT: lsl x19, x19, x8 ; SDAG-NEXT: ldp x9, x13, [x1] ; SDAG-NEXT: lsl x25, x22, x8 ; SDAG-NEXT: lsr x20, x20, x10 ; SDAG-NEXT: ldp x11, x14, [x1, #16] ; SDAG-NEXT: ldp x12, x15, [x1, #32] ; SDAG-NEXT: lsr x21, x21, x4 ; SDAG-NEXT: ldp x17, x2, [x1, #48] ; SDAG-NEXT: orr x19, x19, x20 ; SDAG-NEXT: ldr x1, [x1, #120] ; SDAG-NEXT: lsr x20, x24, #1 ; SDAG-NEXT: lsr x16, x13, #1 ; SDAG-NEXT: lsr x3, x14, #1 ; SDAG-NEXT: lsr x5, x15, #1 ; SDAG-NEXT: orr x21, x25, x21 ; SDAG-NEXT: lsr x7, x2, #1 ; SDAG-NEXT: lsr x25, x23, #1 ; SDAG-NEXT: lsr x28, x27, #1 ; SDAG-NEXT: lsl x1, x1, x8 ; SDAG-NEXT: lsr x20, x20, x10 ; SDAG-NEXT: lsr x16, x16, x4 ; SDAG-NEXT: lsr x3, x3, x4 ; SDAG-NEXT: lsr x5, x5, x4 ; SDAG-NEXT: lsr x7, x7, x4 ; SDAG-NEXT: lsr x22, x22, #1 ; SDAG-NEXT: lsr x25, x25, x4 ; SDAG-NEXT: lsr x4, x28, x4 ; SDAG-NEXT: orr x1, x1, x20 ; SDAG-NEXT: lsl x20, x23, x8 ; SDAG-NEXT: lsl x23, x24, x8 ; SDAG-NEXT: lsr x28, x26, #1 ; SDAG-NEXT: lsr x22, x22, x10 ; SDAG-NEXT: lsl x24, x27, x8 ; SDAG-NEXT: orr x4, x23, x4 ; SDAG-NEXT: lsl x6, x6, x8 ; SDAG-NEXT: lsl x2, x2, x8 ; SDAG-NEXT: lsr x27, x28, x10 ; SDAG-NEXT: stp x4, x1, [x0, #112] ; SDAG-NEXT: lsl x1, x26, x8 ; SDAG-NEXT: orr x20, x20, x22 ; SDAG-NEXT: lsr x4, x9, #1 ; SDAG-NEXT: lsl x13, x13, x8 ; SDAG-NEXT: orr x22, x24, x27 ; SDAG-NEXT: orr x1, x1, x25 ; SDAG-NEXT: stp x21, x20, [x0, #80] ; SDAG-NEXT: lsr x20, x17, #1 ; SDAG-NEXT: stp x1, x22, [x0, #96] ; SDAG-NEXT: lsr x1, x11, #1 ; SDAG-NEXT: lsr x21, x12, #1 ; SDAG-NEXT: lsl x14, x14, x8 ; SDAG-NEXT: lsl x15, x15, x8 ; SDAG-NEXT: lsr x20, x20, x10 ; SDAG-NEXT: lsl x17, x17, x8 ; SDAG-NEXT: orr x6, x6, x7 ; SDAG-NEXT: lsr x7, x21, x10 ; SDAG-NEXT: lsl x12, x12, x8 ; SDAG-NEXT: lsr x1, x1, x10 ; SDAG-NEXT: lsl x11, x11, x8 ; SDAG-NEXT: lsr x10, x4, x10 ; SDAG-NEXT: stp x6, x19, [x0, #64] ; SDAG-NEXT: orr x2, x2, x20 ; SDAG-NEXT: lsl x8, x9, x8 ; SDAG-NEXT: orr x17, x17, x5 ; SDAG-NEXT: ldp x20, x19, [sp, #320] ; 16-byte Folded Reload ; SDAG-NEXT: orr x15, x15, x7 ; SDAG-NEXT: ldp x22, x21, [sp, #304] ; 16-byte Folded Reload ; SDAG-NEXT: orr x12, x12, x3 ; SDAG-NEXT: ldp x24, x23, [sp, #288] ; 16-byte Folded Reload ; SDAG-NEXT: orr x14, x14, x1 ; SDAG-NEXT: ldp x26, x25, [sp, #272] ; 16-byte Folded Reload ; SDAG-NEXT: orr x11, x11, x16 ; SDAG-NEXT: ldp x28, x27, [sp, #256] ; 16-byte Folded Reload ; SDAG-NEXT: orr x9, x13, x10 ; SDAG-NEXT: stp x17, x2, [x0, #48] ; SDAG-NEXT: stp x12, x15, [x0, #32] ; SDAG-NEXT: stp x11, x14, [x0, #16] ; SDAG-NEXT: stp x8, x9, [x0] ; SDAG-NEXT: add sp, sp, #352 ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_shl_i1024: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: sub sp, sp, #432 ; GISEL-NEXT: stp x28, x27, [sp, #336] ; 16-byte Folded Spill ; GISEL-NEXT: stp x26, x25, [sp, #352] ; 16-byte Folded Spill ; GISEL-NEXT: stp x24, x23, [sp, #368] ; 16-byte Folded Spill ; GISEL-NEXT: stp x22, x21, [sp, #384] ; 16-byte Folded Spill ; GISEL-NEXT: stp x20, x19, [sp, #400] ; 16-byte Folded Spill ; GISEL-NEXT: stp x29, x30, [sp, #416] ; 16-byte Folded Spill ; GISEL-NEXT: .cfi_def_cfa_offset 432 ; GISEL-NEXT: .cfi_offset w30, -8 ; GISEL-NEXT: .cfi_offset w29, -16 ; GISEL-NEXT: .cfi_offset w19, -24 ; GISEL-NEXT: .cfi_offset w20, -32 ; GISEL-NEXT: .cfi_offset w21, -40 ; GISEL-NEXT: .cfi_offset w22, -48 ; GISEL-NEXT: .cfi_offset w23, -56 ; GISEL-NEXT: .cfi_offset w24, -64 ; GISEL-NEXT: .cfi_offset w25, -72 ; GISEL-NEXT: .cfi_offset w26, -80 ; GISEL-NEXT: .cfi_offset w27, -88 ; GISEL-NEXT: .cfi_offset w28, -96 ; GISEL-NEXT: ldp x10, x11, [x1] ; GISEL-NEXT: mov w8, w2 ; GISEL-NEXT: lsr x9, x8, #6 ; GISEL-NEXT: and x12, x8, #0x3f ; GISEL-NEXT: str x0, [sp, #144] ; 8-byte Spill ; GISEL-NEXT: and x14, x8, #0x3f ; GISEL-NEXT: mov w13, #64 ; =0x40 ; GISEL-NEXT: and x16, x8, #0x3f ; GISEL-NEXT: lsl x0, x10, x12 ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: sub x2, x13, x14 ; GISEL-NEXT: lsr x3, x10, x2 ; GISEL-NEXT: lsl x6, x11, x14 ; GISEL-NEXT: and x14, x8, #0x3f ; GISEL-NEXT: csel x12, x0, xzr, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: lsr x20, x11, x2 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: mov x24, x0 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: mov x7, x3 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: mov x28, x1 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: and x21, x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: str x6, [sp, #24] ; 8-byte Spill ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: str x28, [sp, #304] ; 8-byte Spill ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: str x7, [sp, #272] ; 8-byte Spill ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: str x20, [sp, #112] ; 8-byte Spill ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x10, x10, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x10, [sp, #232] ; 8-byte Spill ; GISEL-NEXT: csel x10, xzr, x3, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x10, x6, x10 ; GISEL-NEXT: csel x10, x10, xzr, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: csel x10, x0, x10, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x13, xzr, x10, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: ldp x12, x10, [x1, #16] ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: lsl x26, x12, x14 ; GISEL-NEXT: csel x11, x11, x13, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x11, [sp, #224] ; 8-byte Spill ; GISEL-NEXT: csel x11, xzr, x20, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x11, x26, x11 ; GISEL-NEXT: lsr x15, x12, x2 ; GISEL-NEXT: lsl x30, x10, x16 ; GISEL-NEXT: csel x11, x11, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x17, x10, x2 ; GISEL-NEXT: csel x13, xzr, x3, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x13, x6, x13 ; GISEL-NEXT: csel x11, x13, x11, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: csel x11, x0, x11, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x11, [sp, #216] ; 8-byte Spill ; GISEL-NEXT: csel x11, xzr, x15, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x11, x30, x11 ; GISEL-NEXT: csel x11, x11, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x20, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x12, x26, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x3, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x12, x6, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: csel x11, x0, x11, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x13, xzr, x11, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: ldp x12, x11, [x1, #32] ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: lsl x0, x12, x16 ; GISEL-NEXT: csel x10, x10, x13, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x10, [sp, #208] ; 8-byte Spill ; GISEL-NEXT: csel x10, xzr, x17, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x10, x0, x10 ; GISEL-NEXT: lsr x4, x12, x2 ; GISEL-NEXT: lsl x19, x11, x16 ; GISEL-NEXT: csel x10, x10, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: mov x16, x15 ; GISEL-NEXT: csel x13, xzr, x15, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: str x4, [sp, #248] ; 8-byte Spill ; GISEL-NEXT: orr x13, x30, x13 ; GISEL-NEXT: str x0, [sp, #48] ; 8-byte Spill ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x20, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x13, x26, x13 ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x3, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x13, x6, x13 ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x10, x24, x10, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x10, x12, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x10, [sp, #200] ; 8-byte Spill ; GISEL-NEXT: csel x10, xzr, x4, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x10, x19, x10 ; GISEL-NEXT: csel x10, x10, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x17, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x12, x0, x12 ; GISEL-NEXT: csel x10, x12, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x15, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: and x15, x8, #0x3f ; GISEL-NEXT: orr x12, x30, x12 ; GISEL-NEXT: csel x10, x12, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x20, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x12, x26, x12 ; GISEL-NEXT: csel x10, x12, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x3, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: lsr x3, x11, x2 ; GISEL-NEXT: orr x12, x6, x12 ; GISEL-NEXT: csel x10, x12, x10, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x10, x24, x10, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x13, xzr, x10, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: ldp x12, x10, [x1, #48] ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: lsl x22, x12, x15 ; GISEL-NEXT: csel x11, x11, x13, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x11, [sp, #192] ; 8-byte Spill ; GISEL-NEXT: csel x11, xzr, x3, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x11, x22, x11 ; GISEL-NEXT: lsl x5, x10, x15 ; GISEL-NEXT: lsr x27, x10, x2 ; GISEL-NEXT: csel x11, x11, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x4, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: mov x25, x27 ; GISEL-NEXT: orr x13, x19, x13 ; GISEL-NEXT: mov x14, x5 ; GISEL-NEXT: str x27, [sp, #328] ; 8-byte Spill ; GISEL-NEXT: csel x11, x13, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x17, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x13, x0, x13 ; GISEL-NEXT: csel x11, x13, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x16, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x13, x30, x13 ; GISEL-NEXT: csel x11, x13, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x20, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x13, x26, x13 ; GISEL-NEXT: csel x11, x13, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x7, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x13, x6, x13 ; GISEL-NEXT: csel x11, x13, x11, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: lsr x13, x12, x2 ; GISEL-NEXT: csel x11, x24, x11, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: mov x15, x13 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x11, [sp, #184] ; 8-byte Spill ; GISEL-NEXT: csel x11, xzr, x13, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x11, x5, x11 ; GISEL-NEXT: csel x11, x11, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x3, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x12, x22, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x4, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x12, x19, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x17, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x12, x0, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x16, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x12, x30, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x20, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x12, x26, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x7, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x12, x6, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x11, x24, x11, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x12, xzr, x11, eq ; GISEL-NEXT: ldp x11, x1, [x1, #64] ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x12, x10, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsl x23, x11, x21 ; GISEL-NEXT: str x12, [sp, #176] ; 8-byte Spill ; GISEL-NEXT: csel x12, xzr, x27, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x12, x23, x12 ; GISEL-NEXT: lsr x21, x11, x2 ; GISEL-NEXT: str x23, [sp, #288] ; 8-byte Spill ; GISEL-NEXT: csel x12, x12, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x13, x5, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x3, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x13, x22, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x4, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x13, x19, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x17, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x13, x0, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x16, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x13, x30, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x20, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x13, x26, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x7, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: orr x13, x6, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: and x13, x8, #0x3f ; GISEL-NEXT: csel x12, x24, x12, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: lsl x10, x1, x13 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: stp x10, x15, [sp, #312] ; 16-byte Folded Spill ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x11, x11, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x11, [sp, #168] ; 8-byte Spill ; GISEL-NEXT: csel x11, xzr, x21, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x11, x10, x11 ; GISEL-NEXT: mov x10, x23 ; GISEL-NEXT: csel x11, x11, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x27, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: mov x27, x24 ; GISEL-NEXT: orr x12, x23, x12 ; GISEL-NEXT: mov x23, x15 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x15, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: mov x15, x22 ; GISEL-NEXT: orr x12, x5, x12 ; GISEL-NEXT: mov x5, x3 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: stp x14, x5, [sp, #256] ; 16-byte Folded Spill ; GISEL-NEXT: csel x12, xzr, x3, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: mov x5, x4 ; GISEL-NEXT: orr x12, x22, x12 ; GISEL-NEXT: lsr x22, x1, x2 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x4, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: str x22, [sp, #240] ; 8-byte Spill ; GISEL-NEXT: orr x12, x19, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x17, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x12, x0, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x16, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x12, x30, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x20, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: orr x12, x26, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x7, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: mov x7, x14 ; GISEL-NEXT: orr x12, x6, x12 ; GISEL-NEXT: mov x6, x28 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x11, x24, x11, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: ldr x24, [x6, #88] ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: ldr x6, [sp, #272] ; 8-byte Reload ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x12, xzr, x11, eq ; GISEL-NEXT: ldr x11, [x28, #80] ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x12, x1, x12, eq ; GISEL-NEXT: mov x28, x2 ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsl x2, x11, x13 ; GISEL-NEXT: str x12, [sp, #160] ; 8-byte Spill ; GISEL-NEXT: csel x12, xzr, x22, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: ldr x1, [sp, #312] ; 8-byte Reload ; GISEL-NEXT: str x28, [sp, #16] ; 8-byte Spill ; GISEL-NEXT: orr x12, x2, x12 ; GISEL-NEXT: str x2, [sp, #280] ; 8-byte Spill ; GISEL-NEXT: csel x12, x12, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x21, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x13, x1, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x25, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: mov x25, x16 ; GISEL-NEXT: orr x13, x10, x13 ; GISEL-NEXT: mov x10, x30 ; GISEL-NEXT: str x25, [sp, #80] ; 8-byte Spill ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x23, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: mov x23, x3 ; GISEL-NEXT: orr x13, x14, x13 ; GISEL-NEXT: mov x14, x17 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: stp x19, x14, [sp, #64] ; 16-byte Folded Spill ; GISEL-NEXT: csel x13, xzr, x3, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: mov x3, x21 ; GISEL-NEXT: orr x13, x15, x13 ; GISEL-NEXT: str x3, [sp, #32] ; 8-byte Spill ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x4, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: mov x4, x0 ; GISEL-NEXT: orr x13, x19, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x17, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: mov x17, x27 ; GISEL-NEXT: orr x13, x0, x13 ; GISEL-NEXT: ldr x0, [sp, #24] ; 8-byte Reload ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x16, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: orr x13, x30, x13 ; GISEL-NEXT: ldp x30, x16, [sp, #320] ; 16-byte Folded Reload ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x20, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: orr x13, x26, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x6, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: orr x13, x0, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: lsr x13, x11, x28 ; GISEL-NEXT: csel x12, x27, x12, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: str x13, [sp, #96] ; 8-byte Spill ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x11, x11, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x11, [sp, #152] ; 8-byte Spill ; GISEL-NEXT: and x11, x8, #0x3f ; GISEL-NEXT: lsl x27, x24, x11 ; GISEL-NEXT: csel x11, xzr, x13, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x11, x27, x11 ; GISEL-NEXT: str x27, [sp, #56] ; 8-byte Spill ; GISEL-NEXT: csel x11, x11, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x22, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: mov x22, x2 ; GISEL-NEXT: orr x12, x2, x12 ; GISEL-NEXT: mov x2, x14 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x21, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: ldr x21, [sp, #288] ; 8-byte Reload ; GISEL-NEXT: orr x12, x1, x12 ; GISEL-NEXT: mov x1, x27 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x16, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x12, x21, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x30, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x12, x7, x12 ; GISEL-NEXT: mov x7, x15 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x7, [sp, #40] ; 8-byte Spill ; GISEL-NEXT: csel x12, xzr, x23, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x12, x15, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x5, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: mov x5, x19 ; GISEL-NEXT: orr x12, x19, x12 ; GISEL-NEXT: mov x19, x7 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x14, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: lsr x14, x24, x28 ; GISEL-NEXT: orr x12, x4, x12 ; GISEL-NEXT: mov x4, x10 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x25, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: orr x12, x10, x12 ; GISEL-NEXT: ldr x10, [sp, #304] ; 8-byte Reload ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x20, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: orr x12, x26, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x6, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: orr x12, x0, x12 ; GISEL-NEXT: csel x11, x12, x11, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x11, x17, x11, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x12, xzr, x11, eq ; GISEL-NEXT: ldp x11, x6, [x10, #96] ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: and x10, x8, #0x3f ; GISEL-NEXT: csel x12, x24, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x24, [sp, #248] ; 8-byte Reload ; GISEL-NEXT: lsl x15, x11, x10 ; GISEL-NEXT: csel x10, xzr, x14, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: str x12, [sp, #136] ; 8-byte Spill ; GISEL-NEXT: ldr x12, [sp, #312] ; 8-byte Reload ; GISEL-NEXT: orr x10, x15, x10 ; GISEL-NEXT: str x15, [sp, #296] ; 8-byte Spill ; GISEL-NEXT: mov x15, x13 ; GISEL-NEXT: csel x10, x10, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x13, x27, x13 ; GISEL-NEXT: ldr x27, [sp, #240] ; 8-byte Reload ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x27, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x13, x22, x13 ; GISEL-NEXT: ldr x22, [sp, #272] ; 8-byte Reload ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x3, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x13, x12, x13 ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x16, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: mov x16, x17 ; GISEL-NEXT: orr x13, x21, x13 ; GISEL-NEXT: ldp x23, x21, [sp, #256] ; 16-byte Folded Reload ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x30, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: mov x30, x0 ; GISEL-NEXT: orr x13, x23, x13 ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x21, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x13, x7, x13 ; GISEL-NEXT: mov x7, x14 ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x24, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: orr x13, x5, x13 ; GISEL-NEXT: ldr x5, [sp, #48] ; 8-byte Reload ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x2, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: ldr x2, [sp, #296] ; 8-byte Reload ; GISEL-NEXT: orr x13, x5, x13 ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x25, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: mov x25, x6 ; GISEL-NEXT: orr x13, x4, x13 ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x20, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: orr x13, x26, x13 ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x22, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: orr x13, x0, x13 ; GISEL-NEXT: csel x10, x13, x10, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: lsr x13, x11, x28 ; GISEL-NEXT: csel x10, x17, x10, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: ldr x17, [sp, #80] ; 8-byte Reload ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: str x13, [sp, #104] ; 8-byte Spill ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x10, [sp, #128] ; 8-byte Spill ; GISEL-NEXT: and x10, x8, #0x3f ; GISEL-NEXT: lsl x11, x6, x10 ; GISEL-NEXT: csel x10, xzr, x13, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: ldp x0, x13, [sp, #280] ; 16-byte Folded Reload ; GISEL-NEXT: mov x6, x16 ; GISEL-NEXT: orr x10, x11, x10 ; GISEL-NEXT: str x11, [sp, #88] ; 8-byte Spill ; GISEL-NEXT: csel x10, x10, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x14, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x11, x2, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x15, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: mov x15, x3 ; GISEL-NEXT: orr x11, x1, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x27, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x11, x0, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x3, eq ; GISEL-NEXT: ldp x14, x3, [sp, #320] ; 16-byte Folded Reload ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x11, x12, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x3, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x11, x13, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x14, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x11, x23, x11 ; GISEL-NEXT: mov x23, x5 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x21, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: mov x21, x4 ; GISEL-NEXT: orr x11, x19, x11 ; GISEL-NEXT: ldp x12, x19, [sp, #64] ; 16-byte Folded Reload ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x24, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: orr x11, x12, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x19, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: orr x11, x5, x11 ; GISEL-NEXT: mov x5, x30 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x17, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: orr x11, x4, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x20, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: orr x11, x26, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x22, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: orr x11, x30, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x10, x16, x10, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: ldr x16, [sp, #304] ; 8-byte Reload ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x11, xzr, x10, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: ldp x10, x4, [x16, #112] ; GISEL-NEXT: csel x11, x25, x11, eq ; GISEL-NEXT: str x11, [sp, #120] ; 8-byte Spill ; GISEL-NEXT: lsr x11, x25, x28 ; GISEL-NEXT: and x16, x8, #0x3f ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x25, [sp, #88] ; 8-byte Reload ; GISEL-NEXT: lsl x24, x10, x16 ; GISEL-NEXT: csel x1, xzr, x11, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: ldp x16, x28, [sp, #96] ; 16-byte Folded Reload ; GISEL-NEXT: orr x1, x24, x1 ; GISEL-NEXT: csel x1, x1, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x28, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x30, x25, x30 ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x7, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x30, x2, x30 ; GISEL-NEXT: ldr x2, [sp, #56] ; 8-byte Reload ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x16, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x30, x2, x30 ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x27, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: mov x27, x13 ; GISEL-NEXT: orr x30, x0, x30 ; GISEL-NEXT: ldr x0, [sp, #248] ; 8-byte Reload ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x15, eq ; GISEL-NEXT: ldr x15, [sp, #312] ; 8-byte Reload ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x30, x15, x30 ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x3, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: ldr x3, [sp, #40] ; 8-byte Reload ; GISEL-NEXT: orr x30, x13, x30 ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x14, eq ; GISEL-NEXT: ldp x13, x14, [sp, #256] ; 16-byte Folded Reload ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: orr x30, x13, x30 ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x14, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: orr x30, x3, x30 ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x0, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: orr x30, x12, x30 ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x19, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: orr x30, x23, x30 ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x17, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: orr x30, x21, x30 ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x20, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: mov x20, x26 ; GISEL-NEXT: orr x30, x26, x30 ; GISEL-NEXT: mov x26, x5 ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x30, xzr, x22, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: orr x30, x5, x30 ; GISEL-NEXT: ldr x5, [sp, #16] ; 8-byte Reload ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x1, x6, x1, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: lsr x30, x10, x5 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x5, x10, x1, eq ; GISEL-NEXT: and x10, x8, #0x3f ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsl x10, x4, x10 ; GISEL-NEXT: csel x1, xzr, x30, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: ldp x29, x30, [sp, #416] ; 16-byte Folded Reload ; GISEL-NEXT: orr x10, x10, x1 ; GISEL-NEXT: ldr x1, [sp, #296] ; 8-byte Reload ; GISEL-NEXT: csel x10, x10, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x11, x24, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x28, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x11, x25, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x7, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x11, x1, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x16, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: ldr x16, [sp, #280] ; 8-byte Reload ; GISEL-NEXT: orr x11, x2, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: ldr x11, [sp, #240] ; 8-byte Reload ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x11, x16, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: ldr x11, [sp, #32] ; 8-byte Reload ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x11, x15, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: ldr x11, [sp, #328] ; 8-byte Reload ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: orr x11, x27, x11 ; GISEL-NEXT: ldp x28, x27, [sp, #336] ; 16-byte Folded Reload ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: ldr x11, [sp, #320] ; 8-byte Reload ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: orr x11, x13, x11 ; GISEL-NEXT: ldr x13, [sp, #144] ; 8-byte Reload ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x14, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: orr x11, x3, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x0, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: orr x11, x12, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: ldr x11, [sp, #232] ; 8-byte Reload ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x11, [x13] ; GISEL-NEXT: ldp x12, x11, [sp, #216] ; 16-byte Folded Reload ; GISEL-NEXT: stp x11, x12, [x13, #8] ; GISEL-NEXT: csel x11, xzr, x19, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: orr x11, x23, x11 ; GISEL-NEXT: ldp x24, x23, [sp, #368] ; 16-byte Folded Reload ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: ldr x11, [sp, #208] ; 8-byte Reload ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x11, [x13, #24] ; GISEL-NEXT: ldp x12, x11, [sp, #192] ; 16-byte Folded Reload ; GISEL-NEXT: stp x11, x12, [x13, #32] ; GISEL-NEXT: csel x11, xzr, x17, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: orr x11, x21, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: ldr x11, [sp, #184] ; 8-byte Reload ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x11, [x13, #48] ; GISEL-NEXT: ldp x12, x11, [sp, #168] ; 16-byte Folded Reload ; GISEL-NEXT: stp x11, x12, [x13, #56] ; GISEL-NEXT: ldr x11, [sp, #112] ; 8-byte Reload ; GISEL-NEXT: ldr x12, [sp, #136] ; 8-byte Reload ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: orr x11, x20, x11 ; GISEL-NEXT: ldp x20, x19, [sp, #400] ; 16-byte Folded Reload ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: ldr x11, [sp, #160] ; 8-byte Reload ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x11, [x13, #72] ; GISEL-NEXT: ldr x11, [sp, #152] ; 8-byte Reload ; GISEL-NEXT: str x11, [x13, #80] ; GISEL-NEXT: csel x11, xzr, x22, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: orr x11, x26, x11 ; GISEL-NEXT: ldp x22, x21, [sp, #384] ; 16-byte Folded Reload ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: ldr x9, [sp, #128] ; 8-byte Reload ; GISEL-NEXT: ldp x26, x25, [sp, #352] ; 16-byte Folded Reload ; GISEL-NEXT: stp x12, x9, [x13, #88] ; GISEL-NEXT: csel x9, x6, x10, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: ldr x8, [sp, #120] ; 8-byte Reload ; GISEL-NEXT: stp x8, x5, [x13, #104] ; GISEL-NEXT: csel x8, x4, x9, eq ; GISEL-NEXT: str x8, [x13, #120] ; GISEL-NEXT: add sp, sp, #432 ; GISEL-NEXT: ret entry: %input_val = load i1024, ptr %input, align 128 %shift_ext = zext i32 %shift to i1024 %shifted = shl i1024 %input_val, %shift_ext store i1024 %shifted, ptr %result, align 128 ret void } define void @test_lshr_i1024(ptr %result, ptr %input, i32 %shift) { ; SDAG-LABEL: test_lshr_i1024: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: sub sp, sp, #336 ; SDAG-NEXT: stp x28, x27, [sp, #256] ; 16-byte Folded Spill ; SDAG-NEXT: stp x26, x25, [sp, #272] ; 16-byte Folded Spill ; SDAG-NEXT: stp x24, x23, [sp, #288] ; 16-byte Folded Spill ; SDAG-NEXT: stp x22, x21, [sp, #304] ; 16-byte Folded Spill ; SDAG-NEXT: stp x20, x19, [sp, #320] ; 16-byte Folded Spill ; SDAG-NEXT: .cfi_def_cfa_offset 336 ; SDAG-NEXT: .cfi_offset w19, -8 ; SDAG-NEXT: .cfi_offset w20, -16 ; SDAG-NEXT: .cfi_offset w21, -24 ; SDAG-NEXT: .cfi_offset w22, -32 ; SDAG-NEXT: .cfi_offset w23, -40 ; SDAG-NEXT: .cfi_offset w24, -48 ; SDAG-NEXT: .cfi_offset w25, -56 ; SDAG-NEXT: .cfi_offset w26, -64 ; SDAG-NEXT: .cfi_offset w27, -72 ; SDAG-NEXT: .cfi_offset w28, -80 ; SDAG-NEXT: ldp x8, x9, [x1, #112] ; SDAG-NEXT: movi.2d v0, #0000000000000000 ; SDAG-NEXT: ldp q1, q2, [x1] ; SDAG-NEXT: mov x10, sp ; SDAG-NEXT: ldp q3, q4, [x1, #32] ; SDAG-NEXT: ldr q7, [x1, #96] ; SDAG-NEXT: ldp q5, q6, [x1, #64] ; SDAG-NEXT: mvn w1, w2 ; SDAG-NEXT: stp x8, x9, [sp, #112] ; SDAG-NEXT: mov w8, w2 ; SDAG-NEXT: lsr x9, x8, #3 ; SDAG-NEXT: stp q2, q3, [sp, #16] ; SDAG-NEXT: and x14, x8, #0x3f ; SDAG-NEXT: stp q4, q5, [sp, #48] ; SDAG-NEXT: eor x15, x14, #0x3f ; SDAG-NEXT: and x9, x9, #0x78 ; SDAG-NEXT: stp q6, q7, [sp, #80] ; SDAG-NEXT: stp q0, q0, [sp, #128] ; SDAG-NEXT: add x10, x10, x9 ; SDAG-NEXT: stp q0, q0, [sp, #160] ; SDAG-NEXT: stp q0, q0, [sp, #192] ; SDAG-NEXT: stp q0, q0, [sp, #224] ; SDAG-NEXT: str q1, [sp] ; SDAG-NEXT: ldp x11, x9, [x10, #16] ; SDAG-NEXT: ldr x16, [x10, #32] ; SDAG-NEXT: ldp x12, x13, [x10, #40] ; SDAG-NEXT: ldr x3, [x10, #56] ; SDAG-NEXT: ldp x4, x6, [x10, #64] ; SDAG-NEXT: lsl x2, x16, #1 ; SDAG-NEXT: lsl x17, x11, #1 ; SDAG-NEXT: ldp x24, x26, [x10, #112] ; SDAG-NEXT: lsl x5, x13, #1 ; SDAG-NEXT: lsr x13, x13, x8 ; SDAG-NEXT: lsr x11, x11, x8 ; SDAG-NEXT: lsl x14, x17, x1 ; SDAG-NEXT: lsl x7, x6, #1 ; SDAG-NEXT: lsl x17, x2, x1 ; SDAG-NEXT: lsl x2, x5, x1 ; SDAG-NEXT: ldp x5, x22, [x10, #80] ; SDAG-NEXT: lsr x19, x4, x8 ; SDAG-NEXT: lsl x7, x7, x15 ; SDAG-NEXT: lsl x21, x4, #1 ; SDAG-NEXT: lsr x6, x6, x8 ; SDAG-NEXT: lsl x27, x24, #1 ; SDAG-NEXT: lsr x24, x24, x8 ; SDAG-NEXT: lsl x23, x5, #1 ; SDAG-NEXT: orr x4, x7, x19 ; SDAG-NEXT: lsr x25, x22, x8 ; SDAG-NEXT: ldp x20, x7, [x10, #96] ; SDAG-NEXT: lsl x21, x21, x1 ; SDAG-NEXT: lsl x23, x23, x1 ; SDAG-NEXT: lsl x22, x22, #1 ; SDAG-NEXT: lsr x5, x5, x8 ; SDAG-NEXT: lsr x16, x16, x8 ; SDAG-NEXT: lsl x19, x20, #1 ; SDAG-NEXT: orr x6, x6, x23 ; SDAG-NEXT: lsl x23, x7, #1 ; SDAG-NEXT: lsr x20, x20, x8 ; SDAG-NEXT: lsr x7, x7, x8 ; SDAG-NEXT: lsl x22, x22, x15 ; SDAG-NEXT: lsl x19, x19, x1 ; SDAG-NEXT: lsl x1, x27, x1 ; SDAG-NEXT: lsl x23, x23, x15 ; SDAG-NEXT: orr x5, x22, x5 ; SDAG-NEXT: ldp x28, x27, [sp, #256] ; 16-byte Folded Reload ; SDAG-NEXT: orr x19, x25, x19 ; SDAG-NEXT: lsl x25, x26, #1 ; SDAG-NEXT: orr x20, x23, x20 ; SDAG-NEXT: orr x1, x7, x1 ; SDAG-NEXT: ldp x23, x10, [x10] ; SDAG-NEXT: stp x20, x1, [x0, #96] ; SDAG-NEXT: lsl x20, x3, #1 ; SDAG-NEXT: lsl x25, x25, x15 ; SDAG-NEXT: lsr x26, x26, x8 ; SDAG-NEXT: stp x5, x19, [x0, #80] ; SDAG-NEXT: lsr x3, x3, x8 ; SDAG-NEXT: lsl x19, x20, x15 ; SDAG-NEXT: orr x7, x25, x24 ; SDAG-NEXT: lsl x1, x9, #1 ; SDAG-NEXT: stp x7, x26, [x0, #112] ; SDAG-NEXT: lsl x7, x10, #1 ; SDAG-NEXT: orr x3, x3, x21 ; SDAG-NEXT: orr x13, x19, x13 ; SDAG-NEXT: lsl x5, x12, #1 ; SDAG-NEXT: lsr x9, x9, x8 ; SDAG-NEXT: stp x13, x3, [x0, #48] ; SDAG-NEXT: lsl x13, x1, x15 ; SDAG-NEXT: lsr x23, x23, x8 ; SDAG-NEXT: lsr x12, x12, x8 ; SDAG-NEXT: lsr x8, x10, x8 ; SDAG-NEXT: lsl x10, x7, x15 ; SDAG-NEXT: stp x4, x6, [x0, #64] ; SDAG-NEXT: lsl x4, x5, x15 ; SDAG-NEXT: orr x9, x9, x17 ; SDAG-NEXT: orr x11, x13, x11 ; SDAG-NEXT: ldp x20, x19, [sp, #320] ; 16-byte Folded Reload ; SDAG-NEXT: stp x11, x9, [x0, #16] ; SDAG-NEXT: orr x9, x10, x23 ; SDAG-NEXT: orr x12, x12, x2 ; SDAG-NEXT: ldp x22, x21, [sp, #304] ; 16-byte Folded Reload ; SDAG-NEXT: orr x16, x4, x16 ; SDAG-NEXT: ldp x24, x23, [sp, #288] ; 16-byte Folded Reload ; SDAG-NEXT: orr x8, x8, x14 ; SDAG-NEXT: ldp x26, x25, [sp, #272] ; 16-byte Folded Reload ; SDAG-NEXT: stp x16, x12, [x0, #32] ; SDAG-NEXT: stp x9, x8, [x0] ; SDAG-NEXT: add sp, sp, #336 ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_lshr_i1024: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: sub sp, sp, #416 ; GISEL-NEXT: stp x28, x27, [sp, #320] ; 16-byte Folded Spill ; GISEL-NEXT: stp x26, x25, [sp, #336] ; 16-byte Folded Spill ; GISEL-NEXT: stp x24, x23, [sp, #352] ; 16-byte Folded Spill ; GISEL-NEXT: stp x22, x21, [sp, #368] ; 16-byte Folded Spill ; GISEL-NEXT: stp x20, x19, [sp, #384] ; 16-byte Folded Spill ; GISEL-NEXT: stp x29, x30, [sp, #400] ; 16-byte Folded Spill ; GISEL-NEXT: .cfi_def_cfa_offset 416 ; GISEL-NEXT: .cfi_offset w30, -8 ; GISEL-NEXT: .cfi_offset w29, -16 ; GISEL-NEXT: .cfi_offset w19, -24 ; GISEL-NEXT: .cfi_offset w20, -32 ; GISEL-NEXT: .cfi_offset w21, -40 ; GISEL-NEXT: .cfi_offset w22, -48 ; GISEL-NEXT: .cfi_offset w23, -56 ; GISEL-NEXT: .cfi_offset w24, -64 ; GISEL-NEXT: .cfi_offset w25, -72 ; GISEL-NEXT: .cfi_offset w26, -80 ; GISEL-NEXT: .cfi_offset w27, -88 ; GISEL-NEXT: .cfi_offset w28, -96 ; GISEL-NEXT: mov w8, w2 ; GISEL-NEXT: ldp x20, x16, [x1] ; GISEL-NEXT: mov w9, #64 ; =0x40 ; GISEL-NEXT: and x14, x8, #0x3f ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: sub x15, x9, x14 ; GISEL-NEXT: ldp x12, x13, [x1, #16] ; GISEL-NEXT: lsl x10, x16, x15 ; GISEL-NEXT: lsr x9, x8, #6 ; GISEL-NEXT: lsr x11, x20, x14 ; GISEL-NEXT: lsr x19, x16, x14 ; GISEL-NEXT: str x16, [sp, #264] ; 8-byte Spill ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: lsl x22, x12, x15 ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x10, x11, x10 ; GISEL-NEXT: str x12, [sp, #240] ; 8-byte Spill ; GISEL-NEXT: lsr x26, x12, x14 ; GISEL-NEXT: csel x10, x10, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsl x24, x13, x15 ; GISEL-NEXT: csel x11, xzr, x22, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: lsr x5, x13, x14 ; GISEL-NEXT: orr x11, x19, x11 ; GISEL-NEXT: ldp x12, x16, [x1, #32] ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x0, [sp, #296] ; 8-byte Spill ; GISEL-NEXT: csel x11, xzr, x24, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: str x13, [sp, #216] ; 8-byte Spill ; GISEL-NEXT: lsl x23, x12, x15 ; GISEL-NEXT: orr x11, x26, x11 ; GISEL-NEXT: stp x12, x16, [sp, #176] ; 16-byte Folded Spill ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x17, x12, x14 ; GISEL-NEXT: csel x11, xzr, x23, eq ; GISEL-NEXT: lsl x0, x16, x15 ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x11, x5, x11 ; GISEL-NEXT: ldp x13, x12, [x1, #48] ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x7, x16, x14 ; GISEL-NEXT: csel x11, xzr, x0, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: stp x17, x0, [sp, #152] ; 16-byte Folded Spill ; GISEL-NEXT: lsl x2, x13, x15 ; GISEL-NEXT: orr x11, x17, x11 ; GISEL-NEXT: stp x13, x12, [sp, #192] ; 16-byte Folded Spill ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x13, x13, x14 ; GISEL-NEXT: csel x11, xzr, x2, eq ; GISEL-NEXT: lsl x0, x12, x15 ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: stp x13, x2, [sp, #136] ; 16-byte Folded Spill ; GISEL-NEXT: orr x11, x7, x11 ; GISEL-NEXT: lsr x12, x12, x14 ; GISEL-NEXT: ldp x4, x2, [x1, #64] ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x17, [sp, #144] ; 8-byte Reload ; GISEL-NEXT: stp x5, x23, [sp, #24] ; 16-byte Folded Spill ; GISEL-NEXT: csel x11, xzr, x0, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: lsl x3, x4, x15 ; GISEL-NEXT: orr x11, x13, x11 ; GISEL-NEXT: str x4, [sp, #208] ; 8-byte Spill ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsl x6, x2, x15 ; GISEL-NEXT: csel x11, xzr, x3, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: lsr x13, x4, x14 ; GISEL-NEXT: orr x11, x12, x11 ; GISEL-NEXT: str x2, [sp, #224] ; 8-byte Spill ; GISEL-NEXT: csel x16, x11, x10, eq ; GISEL-NEXT: ldp x10, x4, [x1, #80] ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: mov x11, x2 ; GISEL-NEXT: stp x13, x12, [sp, #120] ; 16-byte Folded Spill ; GISEL-NEXT: csel x2, xzr, x6, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: lsr x11, x11, x14 ; GISEL-NEXT: orr x2, x13, x2 ; GISEL-NEXT: lsl x12, x10, x15 ; GISEL-NEXT: str x10, [sp, #232] ; 8-byte Spill ; GISEL-NEXT: csel x16, x2, x16, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x10, x10, x14 ; GISEL-NEXT: csel x2, xzr, x12, eq ; GISEL-NEXT: str x12, [sp, #312] ; 8-byte Spill ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: orr x2, x11, x2 ; GISEL-NEXT: lsl x12, x4, x15 ; GISEL-NEXT: str x10, [sp, #304] ; 8-byte Spill ; GISEL-NEXT: csel x16, x2, x16, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x13, x4, x14 ; GISEL-NEXT: stp x12, x11, [sp, #104] ; 16-byte Folded Spill ; GISEL-NEXT: ldr x11, [x1, #96] ; GISEL-NEXT: csel x2, xzr, x12, eq ; GISEL-NEXT: orr x2, x10, x2 ; GISEL-NEXT: ldp x10, x30, [x1, #104] ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: lsl x28, x11, x15 ; GISEL-NEXT: stp x4, x11, [sp, #248] ; 16-byte Folded Spill ; GISEL-NEXT: csel x16, x2, x16, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x3, [sp, #16] ; 8-byte Spill ; GISEL-NEXT: csel x2, xzr, x28, eq ; GISEL-NEXT: lsl x12, x10, x15 ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: orr x2, x13, x2 ; GISEL-NEXT: lsl x21, x30, x15 ; GISEL-NEXT: stp x10, x30, [sp, #272] ; 16-byte Folded Spill ; GISEL-NEXT: csel x16, x2, x16, eq ; GISEL-NEXT: stp x12, x13, [sp, #88] ; 16-byte Folded Spill ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x13, x11, x14 ; GISEL-NEXT: csel x2, xzr, x12, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: ldr x11, [x1, #120] ; GISEL-NEXT: lsr x10, x10, x14 ; GISEL-NEXT: lsr x27, x30, x14 ; GISEL-NEXT: orr x4, x13, x2 ; GISEL-NEXT: mov x12, x23 ; GISEL-NEXT: str x28, [sp, #48] ; 8-byte Spill ; GISEL-NEXT: csel x16, x4, x16, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsl x25, x11, x15 ; GISEL-NEXT: csel x1, xzr, x21, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: stp x10, x13, [sp, #72] ; 16-byte Folded Spill ; GISEL-NEXT: orr x1, x10, x1 ; GISEL-NEXT: lsr x10, x11, x14 ; GISEL-NEXT: str x11, [sp, #288] ; 8-byte Spill ; GISEL-NEXT: csel x1, x1, x16, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x21, [sp, #40] ; 8-byte Spill ; GISEL-NEXT: csel x30, xzr, x25, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: stp x27, x10, [sp, #56] ; 16-byte Folded Spill ; GISEL-NEXT: orr x30, x27, x30 ; GISEL-NEXT: ldp x11, x13, [sp, #152] ; 16-byte Folded Reload ; GISEL-NEXT: csel x1, x30, x1, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: mov x30, x7 ; GISEL-NEXT: csel x1, x10, x1, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x10, x20, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x1, xzr, x22, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: str x10, [sp, #168] ; 8-byte Spill ; GISEL-NEXT: orr x1, x19, x1 ; GISEL-NEXT: ldp x20, x14, [sp, #112] ; 16-byte Folded Reload ; GISEL-NEXT: csel x1, x1, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x24, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x19, x26, x19 ; GISEL-NEXT: ldp x10, x15, [sp, #304] ; 16-byte Folded Reload ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x23, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x19, x5, x19 ; GISEL-NEXT: ldp x16, x22, [sp, #96] ; 16-byte Folded Reload ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x13, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x19, x11, x19 ; GISEL-NEXT: ldp x4, x2, [sp, #80] ; 16-byte Folded Reload ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x17, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x19, x7, x19 ; GISEL-NEXT: mov x7, x0 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x0, eq ; GISEL-NEXT: ldp x23, x0, [sp, #128] ; 16-byte Folded Reload ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x19, x0, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x3, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x19, x23, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x6, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: orr x19, x14, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x15, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: orr x19, x20, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x22, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: orr x19, x10, x19 ; GISEL-NEXT: ldr x10, [sp, #264] ; 8-byte Reload ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x28, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: orr x19, x16, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x2, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: orr x19, x4, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x21, eq ; GISEL-NEXT: ldp x28, x21, [sp, #64] ; 16-byte Folded Reload ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: orr x19, x21, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x25, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: orr x19, x27, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x1, x28, x1, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x10, x10, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x1, xzr, x24, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: mov x24, x11 ; GISEL-NEXT: orr x1, x26, x1 ; GISEL-NEXT: str x10, [sp, #264] ; 8-byte Spill ; GISEL-NEXT: ldr x10, [sp, #240] ; 8-byte Reload ; GISEL-NEXT: csel x1, x1, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: mov x26, x13 ; GISEL-NEXT: csel x19, xzr, x12, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: mov x12, x30 ; GISEL-NEXT: orr x19, x5, x19 ; GISEL-NEXT: mov x5, x15 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x13, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: mov x13, x23 ; GISEL-NEXT: orr x19, x11, x19 ; GISEL-NEXT: mov x11, x17 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x17, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: mov x17, x20 ; GISEL-NEXT: orr x19, x30, x19 ; GISEL-NEXT: mov x30, x7 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: mov x27, x30 ; GISEL-NEXT: csel x19, xzr, x7, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: mov x7, x14 ; GISEL-NEXT: orr x19, x0, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x3, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: mov x3, x22 ; GISEL-NEXT: orr x19, x23, x19 ; GISEL-NEXT: ldr x23, [sp, #16] ; 8-byte Reload ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x6, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x19, x14, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x15, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: ldr x15, [sp, #304] ; 8-byte Reload ; GISEL-NEXT: orr x19, x20, x19 ; GISEL-NEXT: ldp x14, x20, [sp, #40] ; 16-byte Folded Reload ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x22, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: ldr x22, [sp, #56] ; 8-byte Reload ; GISEL-NEXT: orr x19, x15, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x20, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: orr x19, x16, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x2, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: orr x19, x4, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x14, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: orr x19, x21, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x25, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: orr x19, x22, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x1, x28, x1, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x10, x10, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x10, [sp, #240] ; 8-byte Spill ; GISEL-NEXT: ldr x10, [sp, #32] ; 8-byte Reload ; GISEL-NEXT: csel x1, xzr, x10, eq ; GISEL-NEXT: ldr x10, [sp, #24] ; 8-byte Reload ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x1, x10, x1 ; GISEL-NEXT: ldr x10, [sp, #216] ; 8-byte Reload ; GISEL-NEXT: csel x1, x1, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x26, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x19, x24, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x11, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x19, x12, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x30, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: mov x30, x0 ; GISEL-NEXT: orr x19, x0, x19 ; GISEL-NEXT: mov x0, x13 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x23, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x19, x13, x19 ; GISEL-NEXT: mov x13, x3 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x6, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x19, x7, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x5, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: mov x5, x17 ; GISEL-NEXT: orr x19, x17, x19 ; GISEL-NEXT: mov x17, x22 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x3, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: mov x3, x20 ; GISEL-NEXT: orr x19, x15, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x20, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: mov x20, x14 ; GISEL-NEXT: orr x19, x16, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x2, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: orr x19, x4, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x14, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: mov x14, x13 ; GISEL-NEXT: orr x19, x21, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x25, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: orr x19, x22, x19 ; GISEL-NEXT: mov x22, x30 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x1, x28, x1, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x10, x10, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x1, xzr, x26, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: str x10, [sp, #216] ; 8-byte Spill ; GISEL-NEXT: orr x1, x24, x1 ; GISEL-NEXT: ldr x10, [sp, #176] ; 8-byte Reload ; GISEL-NEXT: mov x24, x3 ; GISEL-NEXT: csel x1, x1, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: mov x26, x5 ; GISEL-NEXT: csel x19, xzr, x11, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x19, x12, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x27, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x19, x30, x19 ; GISEL-NEXT: ldr x30, [sp, #312] ; 8-byte Reload ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x23, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x19, x0, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x6, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x19, x7, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x30, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x19, x5, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x13, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x19, x15, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x3, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: orr x19, x16, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x2, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: orr x19, x4, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x20, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: orr x19, x21, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x19, xzr, x25, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: orr x19, x17, x19 ; GISEL-NEXT: csel x1, x19, x1, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x1, x28, x1, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x19, x10, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x10, [sp, #184] ; 8-byte Reload ; GISEL-NEXT: csel x1, xzr, x11, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: mov x11, x23 ; GISEL-NEXT: orr x1, x12, x1 ; GISEL-NEXT: mov x12, x0 ; GISEL-NEXT: csel x1, x1, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x27, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x3, x22, x3 ; GISEL-NEXT: csel x1, x3, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x23, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: mov x23, x17 ; GISEL-NEXT: orr x3, x0, x3 ; GISEL-NEXT: csel x1, x3, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x6, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x3, x7, x3 ; GISEL-NEXT: csel x1, x3, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x30, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x3, x26, x3 ; GISEL-NEXT: csel x1, x3, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x13, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x3, x15, x3 ; GISEL-NEXT: csel x1, x3, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x24, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x3, x16, x3 ; GISEL-NEXT: csel x1, x3, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x2, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: orr x3, x4, x3 ; GISEL-NEXT: csel x1, x3, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x20, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: orr x3, x21, x3 ; GISEL-NEXT: csel x1, x3, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x25, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: orr x3, x17, x3 ; GISEL-NEXT: csel x1, x3, x1, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: mov x3, x4 ; GISEL-NEXT: csel x1, x28, x1, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x10, x10, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x17, xzr, x27, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: str x10, [sp, #184] ; 8-byte Spill ; GISEL-NEXT: orr x17, x22, x17 ; GISEL-NEXT: ldr x10, [sp, #192] ; 8-byte Reload ; GISEL-NEXT: csel x17, x17, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x11, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x0, x12, x0 ; GISEL-NEXT: csel x17, x0, x17, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x6, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x0, x7, x0 ; GISEL-NEXT: csel x17, x0, x17, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x30, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x0, x26, x0 ; GISEL-NEXT: csel x17, x0, x17, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x13, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x0, x15, x0 ; GISEL-NEXT: csel x17, x0, x17, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x24, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x0, x16, x0 ; GISEL-NEXT: csel x17, x0, x17, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x2, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x0, x4, x0 ; GISEL-NEXT: csel x17, x0, x17, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x20, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: orr x0, x21, x0 ; GISEL-NEXT: csel x17, x0, x17, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x25, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: orr x0, x23, x0 ; GISEL-NEXT: csel x17, x0, x17, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x17, x28, x17, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x17, xzr, x17, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x17, x10, x17, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x10, [sp, #200] ; 8-byte Reload ; GISEL-NEXT: csel x13, xzr, x11, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x12, x12, x13 ; GISEL-NEXT: csel x12, x12, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x6, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x13, x7, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x30, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x13, x26, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x14, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x13, x15, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x24, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x13, x16, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x2, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x13, x4, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x20, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x13, x21, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x25, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: orr x13, x23, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x12, x28, x12, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x12, xzr, x12, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x12, x10, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x6, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x10, x7, x11 ; GISEL-NEXT: csel x10, x10, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x30, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x11, x26, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x14, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x11, x15, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x24, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x11, x16, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x2, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x11, x4, x11 ; GISEL-NEXT: ldr x4, [sp, #168] ; 8-byte Reload ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x20, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x11, x21, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x25, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: orr x11, x23, x11 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: ldr x11, [sp, #208] ; 8-byte Reload ; GISEL-NEXT: csel x10, x28, x10, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x10, x11, x10, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x11, xzr, x30, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x11, x26, x11 ; GISEL-NEXT: ldp x29, x30, [sp, #400] ; 16-byte Folded Reload ; GISEL-NEXT: csel x11, x11, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x14, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x13, x15, x13 ; GISEL-NEXT: csel x11, x13, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x24, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x13, x16, x13 ; GISEL-NEXT: csel x11, x13, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x2, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x13, x3, x13 ; GISEL-NEXT: csel x11, x13, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x20, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x13, x21, x13 ; GISEL-NEXT: csel x11, x13, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x25, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: orr x13, x23, x13 ; GISEL-NEXT: csel x11, x13, x11, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: ldr x13, [sp, #224] ; 8-byte Reload ; GISEL-NEXT: csel x11, x28, x11, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x11, xzr, x11, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x11, x13, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x14, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x13, x15, x13 ; GISEL-NEXT: csel x13, x13, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x24, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x0, x16, x0 ; GISEL-NEXT: csel x13, x0, x13, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x2, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x0, x3, x0 ; GISEL-NEXT: csel x13, x0, x13, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x20, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x0, x21, x0 ; GISEL-NEXT: csel x13, x0, x13, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x25, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: orr x0, x23, x0 ; GISEL-NEXT: csel x13, x0, x13, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: ldr x0, [sp, #232] ; 8-byte Reload ; GISEL-NEXT: csel x13, x28, x13, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x13, xzr, x13, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x13, x0, x13, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x24, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x0, x16, x0 ; GISEL-NEXT: ldr x16, [sp, #280] ; 8-byte Reload ; GISEL-NEXT: csel x0, x0, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x1, xzr, x2, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x1, x3, x1 ; GISEL-NEXT: csel x0, x1, x0, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x1, xzr, x20, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x1, x21, x1 ; GISEL-NEXT: csel x0, x1, x0, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x1, xzr, x25, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: orr x1, x23, x1 ; GISEL-NEXT: csel x0, x1, x0, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: ldr x1, [sp, #248] ; 8-byte Reload ; GISEL-NEXT: csel x0, x28, x0, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x0, xzr, x0, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x0, xzr, x0, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x0, xzr, x0, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x0, xzr, x0, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x0, xzr, x0, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x0, xzr, x0, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x0, xzr, x0, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x0, xzr, x0, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x0, xzr, x0, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x0, xzr, x0, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x0, xzr, x0, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x0, x1, x0, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x1, xzr, x2, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x1, x3, x1 ; GISEL-NEXT: csel x1, x1, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x20, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x3, x21, x3 ; GISEL-NEXT: csel x1, x3, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x25, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: orr x3, x23, x3 ; GISEL-NEXT: csel x1, x3, x1, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: ldr x3, [sp, #256] ; 8-byte Reload ; GISEL-NEXT: csel x1, x28, x1, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x3, x3, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x1, xzr, x20, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x1, x21, x1 ; GISEL-NEXT: ldp x22, x21, [sp, #368] ; 16-byte Folded Reload ; GISEL-NEXT: csel x1, x1, xzr, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x2, xzr, x25, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: orr x2, x23, x2 ; GISEL-NEXT: csel x1, x2, x1, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: ldr x2, [sp, #272] ; 8-byte Reload ; GISEL-NEXT: csel x1, x28, x1, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x1, xzr, x1, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x2, x2, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x1, [sp, #264] ; 8-byte Reload ; GISEL-NEXT: csel x15, xzr, x25, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: orr x15, x23, x15 ; GISEL-NEXT: ldp x24, x23, [sp, #352] ; 16-byte Folded Reload ; GISEL-NEXT: csel x15, x15, xzr, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: csel x15, x28, x15, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x15, xzr, x15, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x15, x16, x15, eq ; GISEL-NEXT: cmp x9, #0 ; GISEL-NEXT: ldr x16, [sp, #296] ; 8-byte Reload ; GISEL-NEXT: csel x14, x28, xzr, eq ; GISEL-NEXT: cmp x9, #1 ; GISEL-NEXT: csel x14, xzr, x14, eq ; GISEL-NEXT: cmp x9, #2 ; GISEL-NEXT: stp x17, x12, [x16, #48] ; GISEL-NEXT: csel x14, xzr, x14, eq ; GISEL-NEXT: cmp x9, #3 ; GISEL-NEXT: stp x10, x11, [x16, #64] ; GISEL-NEXT: csel x14, xzr, x14, eq ; GISEL-NEXT: cmp x9, #4 ; GISEL-NEXT: stp x4, x1, [x16] ; GISEL-NEXT: csel x14, xzr, x14, eq ; GISEL-NEXT: cmp x9, #5 ; GISEL-NEXT: ldr x4, [sp, #240] ; 8-byte Reload ; GISEL-NEXT: csel x14, xzr, x14, eq ; GISEL-NEXT: cmp x9, #6 ; GISEL-NEXT: ldr x1, [sp, #216] ; 8-byte Reload ; GISEL-NEXT: csel x14, xzr, x14, eq ; GISEL-NEXT: cmp x9, #7 ; GISEL-NEXT: stp x13, x0, [x16, #80] ; GISEL-NEXT: csel x14, xzr, x14, eq ; GISEL-NEXT: cmp x9, #8 ; GISEL-NEXT: stp x4, x1, [x16, #16] ; GISEL-NEXT: csel x14, xzr, x14, eq ; GISEL-NEXT: cmp x9, #9 ; GISEL-NEXT: ldr x1, [sp, #184] ; 8-byte Reload ; GISEL-NEXT: csel x12, xzr, x14, eq ; GISEL-NEXT: cmp x9, #10 ; GISEL-NEXT: stp x3, x2, [x16, #96] ; GISEL-NEXT: csel x10, xzr, x12, eq ; GISEL-NEXT: cmp x9, #11 ; GISEL-NEXT: stp x19, x1, [x16, #32] ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #12 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #13 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #14 ; GISEL-NEXT: csel x10, xzr, x10, eq ; GISEL-NEXT: cmp x9, #15 ; GISEL-NEXT: csel x9, xzr, x10, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: ldr x8, [sp, #288] ; 8-byte Reload ; GISEL-NEXT: ldp x20, x19, [sp, #384] ; 16-byte Folded Reload ; GISEL-NEXT: ldp x26, x25, [sp, #336] ; 16-byte Folded Reload ; GISEL-NEXT: csel x8, x8, x9, eq ; GISEL-NEXT: ldp x28, x27, [sp, #320] ; 16-byte Folded Reload ; GISEL-NEXT: stp x15, x8, [x16, #112] ; GISEL-NEXT: add sp, sp, #416 ; GISEL-NEXT: ret entry: %input_val = load i1024, ptr %input, align 128 %shift_ext = zext i32 %shift to i1024 %shifted = lshr i1024 %input_val, %shift_ext store i1024 %shifted, ptr %result, align 128 ret void } define void @test_ashr_i1024(ptr %result, ptr %input, i32 %shift) { ; SDAG-LABEL: test_ashr_i1024: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: sub sp, sp, #336 ; SDAG-NEXT: stp x28, x27, [sp, #256] ; 16-byte Folded Spill ; SDAG-NEXT: stp x26, x25, [sp, #272] ; 16-byte Folded Spill ; SDAG-NEXT: stp x24, x23, [sp, #288] ; 16-byte Folded Spill ; SDAG-NEXT: stp x22, x21, [sp, #304] ; 16-byte Folded Spill ; SDAG-NEXT: stp x20, x19, [sp, #320] ; 16-byte Folded Spill ; SDAG-NEXT: .cfi_def_cfa_offset 336 ; SDAG-NEXT: .cfi_offset w19, -8 ; SDAG-NEXT: .cfi_offset w20, -16 ; SDAG-NEXT: .cfi_offset w21, -24 ; SDAG-NEXT: .cfi_offset w22, -32 ; SDAG-NEXT: .cfi_offset w23, -40 ; SDAG-NEXT: .cfi_offset w24, -48 ; SDAG-NEXT: .cfi_offset w25, -56 ; SDAG-NEXT: .cfi_offset w26, -64 ; SDAG-NEXT: .cfi_offset w27, -72 ; SDAG-NEXT: .cfi_offset w28, -80 ; SDAG-NEXT: ldp x8, x9, [x1, #112] ; SDAG-NEXT: mov x11, sp ; SDAG-NEXT: ldp q0, q1, [x1] ; SDAG-NEXT: ldr q6, [x1, #96] ; SDAG-NEXT: ldp q2, q3, [x1, #32] ; SDAG-NEXT: ldp q4, q5, [x1, #64] ; SDAG-NEXT: mvn w1, w2 ; SDAG-NEXT: stp x8, x9, [sp, #112] ; SDAG-NEXT: mov w8, w2 ; SDAG-NEXT: asr x9, x9, #63 ; SDAG-NEXT: lsr x10, x8, #3 ; SDAG-NEXT: stp q1, q2, [sp, #16] ; SDAG-NEXT: and x14, x8, #0x3f ; SDAG-NEXT: stp q3, q4, [sp, #48] ; SDAG-NEXT: eor x15, x14, #0x3f ; SDAG-NEXT: and x10, x10, #0x78 ; SDAG-NEXT: stp q5, q6, [sp, #80] ; SDAG-NEXT: str q0, [sp] ; SDAG-NEXT: add x10, x11, x10 ; SDAG-NEXT: stp x9, x9, [sp, #240] ; SDAG-NEXT: stp x9, x9, [sp, #224] ; SDAG-NEXT: stp x9, x9, [sp, #208] ; SDAG-NEXT: stp x9, x9, [sp, #192] ; SDAG-NEXT: stp x9, x9, [sp, #176] ; SDAG-NEXT: stp x9, x9, [sp, #160] ; SDAG-NEXT: stp x9, x9, [sp, #144] ; SDAG-NEXT: stp x9, x9, [sp, #128] ; SDAG-NEXT: ldp x11, x9, [x10, #16] ; SDAG-NEXT: ldr x16, [x10, #32] ; SDAG-NEXT: ldp x12, x13, [x10, #40] ; SDAG-NEXT: ldr x3, [x10, #56] ; SDAG-NEXT: ldp x4, x6, [x10, #64] ; SDAG-NEXT: lsl x2, x16, #1 ; SDAG-NEXT: lsl x17, x11, #1 ; SDAG-NEXT: ldp x24, x26, [x10, #112] ; SDAG-NEXT: lsl x5, x13, #1 ; SDAG-NEXT: lsr x13, x13, x8 ; SDAG-NEXT: lsr x11, x11, x8 ; SDAG-NEXT: lsl x14, x17, x1 ; SDAG-NEXT: lsl x7, x6, #1 ; SDAG-NEXT: lsl x17, x2, x1 ; SDAG-NEXT: lsl x2, x5, x1 ; SDAG-NEXT: ldp x5, x22, [x10, #80] ; SDAG-NEXT: lsr x19, x4, x8 ; SDAG-NEXT: lsl x7, x7, x15 ; SDAG-NEXT: lsl x21, x4, #1 ; SDAG-NEXT: lsr x6, x6, x8 ; SDAG-NEXT: lsl x27, x24, #1 ; SDAG-NEXT: lsr x24, x24, x8 ; SDAG-NEXT: lsl x23, x5, #1 ; SDAG-NEXT: orr x4, x7, x19 ; SDAG-NEXT: lsr x25, x22, x8 ; SDAG-NEXT: ldp x20, x7, [x10, #96] ; SDAG-NEXT: lsl x21, x21, x1 ; SDAG-NEXT: lsl x23, x23, x1 ; SDAG-NEXT: lsl x22, x22, #1 ; SDAG-NEXT: lsr x5, x5, x8 ; SDAG-NEXT: lsr x16, x16, x8 ; SDAG-NEXT: lsl x19, x20, #1 ; SDAG-NEXT: orr x6, x6, x23 ; SDAG-NEXT: lsl x23, x7, #1 ; SDAG-NEXT: lsr x20, x20, x8 ; SDAG-NEXT: lsr x7, x7, x8 ; SDAG-NEXT: lsl x22, x22, x15 ; SDAG-NEXT: lsl x19, x19, x1 ; SDAG-NEXT: lsl x1, x27, x1 ; SDAG-NEXT: lsl x23, x23, x15 ; SDAG-NEXT: orr x5, x22, x5 ; SDAG-NEXT: ldp x28, x27, [sp, #256] ; 16-byte Folded Reload ; SDAG-NEXT: orr x19, x25, x19 ; SDAG-NEXT: lsl x25, x26, #1 ; SDAG-NEXT: orr x20, x23, x20 ; SDAG-NEXT: orr x1, x7, x1 ; SDAG-NEXT: ldp x23, x10, [x10] ; SDAG-NEXT: stp x20, x1, [x0, #96] ; SDAG-NEXT: lsl x20, x3, #1 ; SDAG-NEXT: lsl x25, x25, x15 ; SDAG-NEXT: asr x26, x26, x8 ; SDAG-NEXT: stp x5, x19, [x0, #80] ; SDAG-NEXT: lsr x3, x3, x8 ; SDAG-NEXT: lsl x19, x20, x15 ; SDAG-NEXT: orr x7, x25, x24 ; SDAG-NEXT: lsl x1, x9, #1 ; SDAG-NEXT: stp x7, x26, [x0, #112] ; SDAG-NEXT: lsl x7, x10, #1 ; SDAG-NEXT: orr x3, x3, x21 ; SDAG-NEXT: orr x13, x19, x13 ; SDAG-NEXT: lsl x5, x12, #1 ; SDAG-NEXT: lsr x9, x9, x8 ; SDAG-NEXT: stp x13, x3, [x0, #48] ; SDAG-NEXT: lsl x13, x1, x15 ; SDAG-NEXT: lsr x23, x23, x8 ; SDAG-NEXT: lsr x12, x12, x8 ; SDAG-NEXT: lsr x8, x10, x8 ; SDAG-NEXT: lsl x10, x7, x15 ; SDAG-NEXT: stp x4, x6, [x0, #64] ; SDAG-NEXT: lsl x4, x5, x15 ; SDAG-NEXT: orr x9, x9, x17 ; SDAG-NEXT: orr x11, x13, x11 ; SDAG-NEXT: ldp x20, x19, [sp, #320] ; 16-byte Folded Reload ; SDAG-NEXT: stp x11, x9, [x0, #16] ; SDAG-NEXT: orr x9, x10, x23 ; SDAG-NEXT: orr x12, x12, x2 ; SDAG-NEXT: ldp x22, x21, [sp, #304] ; 16-byte Folded Reload ; SDAG-NEXT: orr x16, x4, x16 ; SDAG-NEXT: ldp x24, x23, [sp, #288] ; 16-byte Folded Reload ; SDAG-NEXT: orr x8, x8, x14 ; SDAG-NEXT: ldp x26, x25, [sp, #272] ; 16-byte Folded Reload ; SDAG-NEXT: stp x16, x12, [x0, #32] ; SDAG-NEXT: stp x9, x8, [x0] ; SDAG-NEXT: add sp, sp, #336 ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_ashr_i1024: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: sub sp, sp, #432 ; GISEL-NEXT: stp x28, x27, [sp, #336] ; 16-byte Folded Spill ; GISEL-NEXT: stp x26, x25, [sp, #352] ; 16-byte Folded Spill ; GISEL-NEXT: stp x24, x23, [sp, #368] ; 16-byte Folded Spill ; GISEL-NEXT: stp x22, x21, [sp, #384] ; 16-byte Folded Spill ; GISEL-NEXT: stp x20, x19, [sp, #400] ; 16-byte Folded Spill ; GISEL-NEXT: stp x29, x30, [sp, #416] ; 16-byte Folded Spill ; GISEL-NEXT: .cfi_def_cfa_offset 432 ; GISEL-NEXT: .cfi_offset w30, -8 ; GISEL-NEXT: .cfi_offset w29, -16 ; GISEL-NEXT: .cfi_offset w19, -24 ; GISEL-NEXT: .cfi_offset w20, -32 ; GISEL-NEXT: .cfi_offset w21, -40 ; GISEL-NEXT: .cfi_offset w22, -48 ; GISEL-NEXT: .cfi_offset w23, -56 ; GISEL-NEXT: .cfi_offset w24, -64 ; GISEL-NEXT: .cfi_offset w25, -72 ; GISEL-NEXT: .cfi_offset w26, -80 ; GISEL-NEXT: .cfi_offset w27, -88 ; GISEL-NEXT: .cfi_offset w28, -96 ; GISEL-NEXT: str x0, [sp, #264] ; 8-byte Spill ; GISEL-NEXT: mov w8, w2 ; GISEL-NEXT: mov w9, #64 ; =0x40 ; GISEL-NEXT: ldp x7, x0, [x1] ; GISEL-NEXT: and x15, x8, #0x3f ; GISEL-NEXT: sub x14, x9, x15 ; GISEL-NEXT: ldr x28, [x1, #120] ; GISEL-NEXT: lsr x10, x8, #6 ; GISEL-NEXT: ldp x17, x16, [x1, #16] ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsl x9, x0, x14 ; GISEL-NEXT: lsr x12, x7, x15 ; GISEL-NEXT: asr x11, x28, #63 ; GISEL-NEXT: lsr x20, x0, x15 ; GISEL-NEXT: str x0, [sp, #232] ; 8-byte Spill ; GISEL-NEXT: lsl x27, x28, x14 ; GISEL-NEXT: csel x9, xzr, x9, eq ; GISEL-NEXT: lsl x19, x17, x14 ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x9, x12, x9 ; GISEL-NEXT: str x17, [sp, #208] ; 8-byte Spill ; GISEL-NEXT: lsr x2, x17, x15 ; GISEL-NEXT: csel x9, x9, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsl x30, x16, x14 ; GISEL-NEXT: csel x12, xzr, x19, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: lsr x25, x16, x15 ; GISEL-NEXT: orr x12, x20, x12 ; GISEL-NEXT: ldp x13, x17, [x1, #32] ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x16, [sp, #184] ; 8-byte Spill ; GISEL-NEXT: csel x12, xzr, x30, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: str x2, [sp, #88] ; 8-byte Spill ; GISEL-NEXT: lsl x24, x13, x14 ; GISEL-NEXT: orr x12, x2, x12 ; GISEL-NEXT: str x13, [sp, #168] ; 8-byte Spill ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x21, x13, x15 ; GISEL-NEXT: csel x12, xzr, x24, eq ; GISEL-NEXT: lsl x0, x17, x14 ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x12, x25, x12 ; GISEL-NEXT: ldp x16, x13, [x1, #48] ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x3, x17, x15 ; GISEL-NEXT: csel x12, xzr, x0, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: str x0, [sp, #128] ; 8-byte Spill ; GISEL-NEXT: lsl x2, x16, x14 ; GISEL-NEXT: orr x12, x21, x12 ; GISEL-NEXT: mov x0, x16 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x17, [sp, #144] ; 8-byte Spill ; GISEL-NEXT: csel x12, xzr, x2, eq ; GISEL-NEXT: str x2, [sp, #304] ; 8-byte Spill ; GISEL-NEXT: lsl x2, x13, x14 ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x12, x3, x12 ; GISEL-NEXT: ldr x17, [x1, #64] ; GISEL-NEXT: lsr x6, x0, x15 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x2, eq ; GISEL-NEXT: stp x16, x13, [sp, #152] ; 16-byte Folded Spill ; GISEL-NEXT: mov x16, x13 ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: orr x12, x6, x12 ; GISEL-NEXT: lsl x0, x17, x14 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x16, x16, x15 ; GISEL-NEXT: ldr x13, [x1, #72] ; GISEL-NEXT: csel x12, xzr, x0, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: orr x12, x16, x12 ; GISEL-NEXT: stp x16, x0, [sp, #288] ; 16-byte Folded Spill ; GISEL-NEXT: lsr x0, x17, x15 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: lsl x12, x13, x14 ; GISEL-NEXT: mov x16, x13 ; GISEL-NEXT: str x13, [sp, #192] ; 8-byte Spill ; GISEL-NEXT: ldp x13, x5, [x1, #80] ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x17, [sp, #176] ; 8-byte Spill ; GISEL-NEXT: csel x17, xzr, x12, eq ; GISEL-NEXT: str x0, [sp, #112] ; 8-byte Spill ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: orr x17, x0, x17 ; GISEL-NEXT: lsl x0, x13, x14 ; GISEL-NEXT: str x12, [sp, #280] ; 8-byte Spill ; GISEL-NEXT: csel x17, x17, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x9, x16, x15 ; GISEL-NEXT: csel x4, xzr, x0, eq ; GISEL-NEXT: str x13, [sp, #200] ; 8-byte Spill ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: stp x9, x0, [sp, #96] ; 16-byte Folded Spill ; GISEL-NEXT: orr x4, x9, x4 ; GISEL-NEXT: lsl x23, x5, x14 ; GISEL-NEXT: lsr x12, x13, x15 ; GISEL-NEXT: ldp x9, x13, [x1, #96] ; GISEL-NEXT: csel x17, x4, x17, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x28, [sp, #256] ; 8-byte Spill ; GISEL-NEXT: csel x4, xzr, x23, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: str x3, [sp, #120] ; 8-byte Spill ; GISEL-NEXT: orr x4, x12, x4 ; GISEL-NEXT: lsl x16, x9, x14 ; GISEL-NEXT: stp x5, x9, [sp, #216] ; 16-byte Folded Spill ; GISEL-NEXT: csel x17, x4, x17, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsl x3, x11, x14 ; GISEL-NEXT: stp x16, x12, [sp, #72] ; 16-byte Folded Spill ; GISEL-NEXT: mov x12, x9 ; GISEL-NEXT: lsr x9, x5, x15 ; GISEL-NEXT: csel x4, xzr, x16, eq ; GISEL-NEXT: lsl x16, x13, x14 ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: orr x4, x9, x4 ; GISEL-NEXT: lsr x12, x12, x15 ; GISEL-NEXT: str x30, [sp, #48] ; 8-byte Spill ; GISEL-NEXT: stp x16, x9, [sp, #56] ; 16-byte Folded Spill ; GISEL-NEXT: ldr x9, [x1, #112] ; GISEL-NEXT: csel x17, x4, x17, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: stp x25, x24, [sp, #16] ; 16-byte Folded Spill ; GISEL-NEXT: ldr x5, [sp, #96] ; 8-byte Reload ; GISEL-NEXT: csel x1, xzr, x16, eq ; GISEL-NEXT: lsl x16, x9, x14 ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: orr x1, x12, x1 ; GISEL-NEXT: stp x13, x9, [sp, #240] ; 16-byte Folded Spill ; GISEL-NEXT: stp x16, x12, [sp, #320] ; 16-byte Folded Spill ; GISEL-NEXT: mov x12, x9 ; GISEL-NEXT: csel x1, x1, x17, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x9, x13, x15 ; GISEL-NEXT: lsr x26, x12, x15 ; GISEL-NEXT: csel x17, xzr, x16, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: str x23, [sp, #272] ; 8-byte Spill ; GISEL-NEXT: orr x13, x9, x17 ; GISEL-NEXT: str x9, [sp, #312] ; 8-byte Spill ; GISEL-NEXT: mov x9, x28 ; GISEL-NEXT: csel x13, x13, x1, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: lsr x22, x9, x15 ; GISEL-NEXT: csel x28, xzr, x27, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: str x2, [sp, #8] ; 8-byte Spill ; GISEL-NEXT: orr x28, x26, x28 ; GISEL-NEXT: ldp x0, x16, [sp, #120] ; 16-byte Folded Reload ; GISEL-NEXT: csel x12, x28, x13, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x13, [sp, #304] ; 8-byte Reload ; GISEL-NEXT: csel x28, xzr, x3, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: stp x22, x3, [sp, #32] ; 16-byte Folded Spill ; GISEL-NEXT: orr x28, x22, x28 ; GISEL-NEXT: ldp x15, x14, [sp, #72] ; 16-byte Folded Reload ; GISEL-NEXT: csel x9, x28, x12, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: mov x28, x24 ; GISEL-NEXT: csel x9, x7, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x7, [sp, #88] ; 8-byte Reload ; GISEL-NEXT: str x9, [sp, #136] ; 8-byte Spill ; GISEL-NEXT: csel x9, xzr, x19, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x9, x20, x9 ; GISEL-NEXT: ldr x12, [sp, #280] ; 8-byte Reload ; GISEL-NEXT: csel x9, x9, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x30, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: mov x30, x25 ; GISEL-NEXT: orr x20, x7, x20 ; GISEL-NEXT: ldp x4, x19, [sp, #104] ; 16-byte Folded Reload ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x24, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: mov x24, x6 ; GISEL-NEXT: orr x20, x25, x20 ; GISEL-NEXT: mov x25, x21 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x16, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x20, x21, x20 ; GISEL-NEXT: ldp x1, x17, [sp, #56] ; 16-byte Folded Reload ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x13, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x20, x0, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x2, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x20, x6, x20 ; GISEL-NEXT: ldp x21, x6, [sp, #288] ; 16-byte Folded Reload ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x6, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: orr x20, x21, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x12, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: orr x20, x19, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x4, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: orr x20, x5, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x23, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: ldr x23, [sp, #328] ; 8-byte Reload ; GISEL-NEXT: orr x20, x14, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x15, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: orr x20, x17, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x1, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: orr x20, x23, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: ldp x23, x20, [sp, #312] ; 16-byte Folded Reload ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x20, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: orr x20, x23, x20 ; GISEL-NEXT: mov x23, x26 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x27, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: orr x20, x26, x20 ; GISEL-NEXT: ldr x26, [sp, #272] ; 8-byte Reload ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x3, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: ldr x3, [sp, #232] ; 8-byte Reload ; GISEL-NEXT: orr x20, x22, x20 ; GISEL-NEXT: mov x22, x23 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x9, x3, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: mov x3, x16 ; GISEL-NEXT: str x9, [sp, #232] ; 8-byte Spill ; GISEL-NEXT: ldr x9, [sp, #48] ; 8-byte Reload ; GISEL-NEXT: csel x9, xzr, x9, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x9, x7, x9 ; GISEL-NEXT: ldr x7, [sp, #312] ; 8-byte Reload ; GISEL-NEXT: csel x9, x9, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x28, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: mov x28, x21 ; GISEL-NEXT: orr x20, x30, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x16, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: mov x16, x0 ; GISEL-NEXT: orr x20, x25, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x13, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x20, x0, x20 ; GISEL-NEXT: mov x0, x19 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x2, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: mov x2, x4 ; GISEL-NEXT: orr x20, x24, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x6, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: mov x6, x5 ; GISEL-NEXT: orr x20, x21, x20 ; GISEL-NEXT: mov x21, x25 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x12, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: ldr x12, [sp, #208] ; 8-byte Reload ; GISEL-NEXT: orr x20, x19, x20 ; GISEL-NEXT: mov x19, x27 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x4, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: orr x20, x5, x20 ; GISEL-NEXT: ldp x30, x4, [sp, #320] ; 16-byte Folded Reload ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: mov x5, x3 ; GISEL-NEXT: csel x20, xzr, x26, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: orr x20, x14, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x15, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: orr x20, x17, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x1, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: orr x20, x4, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x30, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: orr x20, x7, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x27, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: orr x20, x23, x20 ; GISEL-NEXT: ldp x27, x23, [sp, #32] ; 16-byte Folded Reload ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x23, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: orr x20, x27, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: str x9, [sp, #208] ; 8-byte Spill ; GISEL-NEXT: ldp x12, x9, [sp, #16] ; 16-byte Folded Reload ; GISEL-NEXT: csel x9, xzr, x9, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x9, x12, x9 ; GISEL-NEXT: ldr x12, [sp, #184] ; 8-byte Reload ; GISEL-NEXT: csel x9, x9, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x3, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: ldr x3, [sp, #296] ; 8-byte Reload ; GISEL-NEXT: orr x20, x25, x20 ; GISEL-NEXT: ldr x25, [sp, #280] ; 8-byte Reload ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x13, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: ldr x13, [sp, #8] ; 8-byte Reload ; GISEL-NEXT: orr x20, x16, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x13, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x20, x24, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x3, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x20, x28, x20 ; GISEL-NEXT: mov x28, x16 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x25, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x20, x0, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x2, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: orr x20, x6, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x26, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: mov x26, x14 ; GISEL-NEXT: orr x20, x14, x20 ; GISEL-NEXT: mov x14, x15 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x15, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: mov x15, x17 ; GISEL-NEXT: orr x20, x17, x20 ; GISEL-NEXT: mov x17, x1 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x1, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: mov x1, x4 ; GISEL-NEXT: orr x20, x4, x20 ; GISEL-NEXT: mov x4, x30 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x30, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: ldr x30, [sp, #272] ; 8-byte Reload ; GISEL-NEXT: orr x20, x7, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x19, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: orr x20, x22, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x23, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: orr x20, x27, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x12, [sp, #168] ; 8-byte Reload ; GISEL-NEXT: str x9, [sp, #184] ; 8-byte Spill ; GISEL-NEXT: csel x9, xzr, x5, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x9, x21, x9 ; GISEL-NEXT: ldr x5, [sp, #304] ; 8-byte Reload ; GISEL-NEXT: mov x21, x0 ; GISEL-NEXT: csel x9, x9, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x5, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x20, x16, x20 ; GISEL-NEXT: mov x16, x24 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x13, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x20, x24, x20 ; GISEL-NEXT: ldr x24, [sp, #288] ; 8-byte Reload ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x3, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x20, x24, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x25, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x20, x0, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x2, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x20, x6, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x30, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: orr x20, x26, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x14, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: orr x20, x15, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x17, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: orr x20, x1, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x4, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: orr x20, x7, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x19, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: orr x20, x22, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x23, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: orr x20, x27, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x12, [sp, #144] ; 8-byte Reload ; GISEL-NEXT: str x9, [sp, #168] ; 8-byte Spill ; GISEL-NEXT: csel x9, xzr, x5, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x9, x28, x9 ; GISEL-NEXT: mov x28, x3 ; GISEL-NEXT: mov x5, x7 ; GISEL-NEXT: csel x9, x9, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x13, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x20, x16, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x3, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x20, x24, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x25, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x20, x0, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x2, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x20, x6, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x30, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x20, x26, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x14, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: orr x20, x15, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x17, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: orr x20, x1, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x4, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: orr x20, x7, x20 ; GISEL-NEXT: mov x7, x19 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x19, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: mov x19, x22 ; GISEL-NEXT: orr x20, x22, x20 ; GISEL-NEXT: mov x22, x23 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x20, xzr, x23, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: orr x20, x27, x20 ; GISEL-NEXT: csel x9, x20, x9, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x12, [sp, #152] ; 8-byte Reload ; GISEL-NEXT: str x9, [sp, #304] ; 8-byte Spill ; GISEL-NEXT: csel x9, xzr, x13, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x9, x16, x9 ; GISEL-NEXT: mov x16, x0 ; GISEL-NEXT: csel x9, x9, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x3, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x3, x24, x3 ; GISEL-NEXT: csel x9, x3, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x25, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x3, x21, x3 ; GISEL-NEXT: csel x9, x3, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x2, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x3, x6, x3 ; GISEL-NEXT: csel x9, x3, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x30, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x3, x26, x3 ; GISEL-NEXT: csel x9, x3, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x14, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x3, x15, x3 ; GISEL-NEXT: csel x9, x3, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x17, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: orr x3, x1, x3 ; GISEL-NEXT: csel x9, x3, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x4, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: orr x3, x5, x3 ; GISEL-NEXT: csel x9, x3, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x7, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: orr x3, x19, x3 ; GISEL-NEXT: csel x9, x3, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x23, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: orr x3, x27, x3 ; GISEL-NEXT: csel x9, x3, x9, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: mov x3, x2 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x20, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x12, [sp, #160] ; 8-byte Reload ; GISEL-NEXT: csel x9, xzr, x28, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x9, x24, x9 ; GISEL-NEXT: csel x9, x9, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x25, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x0, x21, x0 ; GISEL-NEXT: mov x21, x6 ; GISEL-NEXT: csel x9, x0, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x2, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x0, x6, x0 ; GISEL-NEXT: csel x9, x0, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x30, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x0, x26, x0 ; GISEL-NEXT: csel x9, x0, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x14, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x0, x15, x0 ; GISEL-NEXT: csel x9, x0, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x17, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x0, x1, x0 ; GISEL-NEXT: csel x9, x0, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x4, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: orr x0, x5, x0 ; GISEL-NEXT: csel x9, x0, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x7, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: orr x0, x19, x0 ; GISEL-NEXT: csel x9, x0, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x23, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: orr x0, x27, x0 ; GISEL-NEXT: csel x9, x0, x9, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x2, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x12, [sp, #176] ; 8-byte Reload ; GISEL-NEXT: csel x9, xzr, x25, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x9, x16, x9 ; GISEL-NEXT: ldr x16, [sp, #216] ; 8-byte Reload ; GISEL-NEXT: csel x9, x9, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x3, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x13, x6, x13 ; GISEL-NEXT: csel x9, x13, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x30, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x13, x26, x13 ; GISEL-NEXT: csel x9, x13, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x14, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x13, x15, x13 ; GISEL-NEXT: csel x9, x13, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x17, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x13, x1, x13 ; GISEL-NEXT: csel x9, x13, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x4, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x13, x5, x13 ; GISEL-NEXT: csel x9, x13, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x7, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: orr x13, x19, x13 ; GISEL-NEXT: csel x9, x13, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x23, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: orr x13, x27, x13 ; GISEL-NEXT: csel x9, x13, x9, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x6, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x9, xzr, x3, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x9, x21, x9 ; GISEL-NEXT: csel x9, x9, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x30, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x12, x26, x12 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x14, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x12, x15, x12 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x17, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x12, x1, x12 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x4, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x12, x5, x12 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x7, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x12, x19, x12 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x23, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: orr x12, x27, x12 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: ldr x12, [sp, #192] ; 8-byte Reload ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x9, x12, x9, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x30, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x12, x26, x12 ; GISEL-NEXT: ldp x29, x30, [sp, #416] ; 16-byte Folded Reload ; GISEL-NEXT: csel x12, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x14, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x13, x15, x13 ; GISEL-NEXT: ldp x26, x25, [sp, #352] ; 16-byte Folded Reload ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x17, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x13, x1, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x4, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x13, x5, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x7, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: orr x13, x19, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x13, xzr, x23, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: orr x13, x27, x13 ; GISEL-NEXT: csel x12, x13, x12, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: ldr x13, [sp, #200] ; 8-byte Reload ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x13, x13, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x14, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: ldr x14, [sp, #264] ; 8-byte Reload ; GISEL-NEXT: orr x12, x15, x12 ; GISEL-NEXT: ldr x15, [sp, #136] ; 8-byte Reload ; GISEL-NEXT: csel x12, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: stp x9, x13, [x14, #72] ; GISEL-NEXT: csel x0, xzr, x17, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: str x15, [x14] ; GISEL-NEXT: orr x0, x1, x0 ; GISEL-NEXT: ldr x15, [sp, #232] ; 8-byte Reload ; GISEL-NEXT: stp x2, x6, [x14, #56] ; GISEL-NEXT: csel x12, x0, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x4, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: str x15, [x14, #8] ; GISEL-NEXT: orr x0, x5, x0 ; GISEL-NEXT: ldr x15, [sp, #208] ; 8-byte Reload ; GISEL-NEXT: csel x12, x0, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x7, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: str x15, [x14, #16] ; GISEL-NEXT: orr x0, x19, x0 ; GISEL-NEXT: ldr x15, [sp, #184] ; 8-byte Reload ; GISEL-NEXT: csel x12, x0, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x0, xzr, x23, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: str x15, [x14, #24] ; GISEL-NEXT: orr x0, x27, x0 ; GISEL-NEXT: ldr x15, [sp, #168] ; 8-byte Reload ; GISEL-NEXT: csel x12, x0, x12, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: str x15, [x14, #32] ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: ldr x15, [sp, #304] ; 8-byte Reload ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: stp x15, x20, [x14, #40] ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x0, x16, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x16, [sp, #224] ; 8-byte Reload ; GISEL-NEXT: csel x12, xzr, x17, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x12, x1, x12 ; GISEL-NEXT: csel x12, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x4, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x3, x5, x3 ; GISEL-NEXT: csel x12, x3, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x7, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x3, x19, x3 ; GISEL-NEXT: csel x12, x3, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x3, xzr, x23, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: orr x3, x27, x3 ; GISEL-NEXT: ldp x24, x23, [sp, #368] ; 16-byte Folded Reload ; GISEL-NEXT: csel x12, x3, x12, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x3, x16, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x16, [sp, #240] ; 8-byte Reload ; GISEL-NEXT: csel x12, xzr, x4, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: stp x0, x3, [x14, #88] ; GISEL-NEXT: orr x12, x5, x12 ; GISEL-NEXT: csel x12, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x4, xzr, x7, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x4, x19, x4 ; GISEL-NEXT: csel x12, x4, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x4, xzr, x22, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: orr x4, x27, x4 ; GISEL-NEXT: csel x12, x4, x12, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x4, x16, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: ldr x16, [sp, #248] ; 8-byte Reload ; GISEL-NEXT: csel x12, xzr, x7, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: orr x12, x19, x12 ; GISEL-NEXT: ldp x20, x19, [sp, #400] ; 16-byte Folded Reload ; GISEL-NEXT: csel x12, x12, x11, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x17, xzr, x22, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: orr x17, x27, x17 ; GISEL-NEXT: csel x12, x17, x12, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: csel x17, x16, x12, eq ; GISEL-NEXT: tst x8, #0x3f ; GISEL-NEXT: csel x12, xzr, x22, eq ; GISEL-NEXT: cmp x10, #0 ; GISEL-NEXT: stp x4, x17, [x14, #104] ; GISEL-NEXT: orr x12, x27, x12 ; GISEL-NEXT: ldp x22, x21, [sp, #384] ; 16-byte Folded Reload ; GISEL-NEXT: csel x12, x12, x11, eq ; GISEL-NEXT: cmp x10, #1 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #2 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #3 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #4 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #5 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #6 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #7 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #8 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #9 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #10 ; GISEL-NEXT: csel x12, x11, x12, eq ; GISEL-NEXT: cmp x10, #11 ; GISEL-NEXT: csel x9, x11, x12, eq ; GISEL-NEXT: cmp x10, #12 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #13 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #14 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x10, #15 ; GISEL-NEXT: csel x9, x11, x9, eq ; GISEL-NEXT: cmp x8, #0 ; GISEL-NEXT: ldr x8, [sp, #256] ; 8-byte Reload ; GISEL-NEXT: ldp x28, x27, [sp, #336] ; 16-byte Folded Reload ; GISEL-NEXT: csel x8, x8, x9, eq ; GISEL-NEXT: str x8, [x14, #120] ; GISEL-NEXT: add sp, sp, #432 ; GISEL-NEXT: ret entry: %input_val = load i1024, ptr %input, align 128 %shift_ext = zext i32 %shift to i1024 %shifted = ashr i1024 %input_val, %shift_ext store i1024 %shifted, ptr %result, align 128 ret void } ; Constant shift tests. ; Zero shift tests define void @test_shl_i512_const_zero(ptr %result, ptr %input) { ; SDAG-LABEL: test_shl_i512_const_zero: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldr q0, [x1] ; SDAG-NEXT: ldp x11, x10, [x1, #16] ; SDAG-NEXT: ldp x13, x12, [x1, #32] ; SDAG-NEXT: str q0, [x0] ; SDAG-NEXT: stp x9, x8, [x0, #48] ; SDAG-NEXT: stp x11, x10, [x0, #16] ; SDAG-NEXT: stp x13, x12, [x0, #32] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_shl_i512_const_zero: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: ldp x14, x15, [x1, #48] ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: stp x10, x11, [x0, #16] ; GISEL-NEXT: stp x12, x13, [x0, #32] ; GISEL-NEXT: stp x14, x15, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = shl i512 %input_val, 0 store i512 %shifted, ptr %result, align 64 ret void } define void @test_lshr_i512_const_zero(ptr %result, ptr %input) { ; SDAG-LABEL: test_lshr_i512_const_zero: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldr q0, [x1] ; SDAG-NEXT: ldp x11, x10, [x1, #16] ; SDAG-NEXT: ldp x13, x12, [x1, #32] ; SDAG-NEXT: str q0, [x0] ; SDAG-NEXT: stp x9, x8, [x0, #48] ; SDAG-NEXT: stp x11, x10, [x0, #16] ; SDAG-NEXT: stp x13, x12, [x0, #32] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_lshr_i512_const_zero: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: ldp x14, x15, [x1, #48] ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: stp x10, x11, [x0, #16] ; GISEL-NEXT: stp x12, x13, [x0, #32] ; GISEL-NEXT: stp x14, x15, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = lshr i512 %input_val, 0 store i512 %shifted, ptr %result, align 64 ret void } define void @test_ashr_i512_const_zero(ptr %result, ptr %input) { ; SDAG-LABEL: test_ashr_i512_const_zero: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldr q0, [x1] ; SDAG-NEXT: ldp x11, x10, [x1, #16] ; SDAG-NEXT: ldp x13, x12, [x1, #32] ; SDAG-NEXT: str q0, [x0] ; SDAG-NEXT: stp x9, x8, [x0, #48] ; SDAG-NEXT: stp x11, x10, [x0, #16] ; SDAG-NEXT: stp x13, x12, [x0, #32] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_ashr_i512_const_zero: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: ldp x14, x15, [x1, #48] ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: stp x10, x11, [x0, #16] ; GISEL-NEXT: stp x12, x13, [x0, #32] ; GISEL-NEXT: stp x14, x15, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = ashr i512 %input_val, 0 store i512 %shifted, ptr %result, align 64 ret void } ; Word-aligned constant shifts (32-bit multiples for i512 -> i32 narrowing) define void @test_shl_i512_const_32(ptr %result, ptr %input) { ; SDAG-LABEL: test_shl_i512_const_32: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x12, x13, [x1, #16] ; SDAG-NEXT: ldur x8, [x1, #36] ; SDAG-NEXT: ldp x14, x15, [x1] ; SDAG-NEXT: ldur x9, [x1, #28] ; SDAG-NEXT: ldur x10, [x1, #44] ; SDAG-NEXT: ldur x11, [x1, #52] ; SDAG-NEXT: stp x9, x8, [x0, #32] ; SDAG-NEXT: extr x9, x13, x12, #32 ; SDAG-NEXT: stp x10, x11, [x0, #48] ; SDAG-NEXT: extr x10, x12, x15, #32 ; SDAG-NEXT: lsl x8, x14, #32 ; SDAG-NEXT: stp x10, x9, [x0, #16] ; SDAG-NEXT: extr x10, x15, x14, #32 ; SDAG-NEXT: stp x8, x10, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_shl_i512_const_32: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x13, x14, [x1, #32] ; GISEL-NEXT: lsl x12, x8, #32 ; GISEL-NEXT: extr x8, x9, x8, #32 ; GISEL-NEXT: extr x9, x10, x9, #32 ; GISEL-NEXT: extr x10, x11, x10, #32 ; GISEL-NEXT: ldp x15, x16, [x1, #48] ; GISEL-NEXT: stp x12, x8, [x0] ; GISEL-NEXT: extr x8, x13, x11, #32 ; GISEL-NEXT: stp x9, x10, [x0, #16] ; GISEL-NEXT: extr x9, x14, x13, #32 ; GISEL-NEXT: extr x10, x15, x14, #32 ; GISEL-NEXT: stp x8, x9, [x0, #32] ; GISEL-NEXT: extr x8, x16, x15, #32 ; GISEL-NEXT: stp x10, x8, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = shl i512 %input_val, 32 store i512 %shifted, ptr %result, align 64 ret void } define void @test_lshr_i512_const_32(ptr %result, ptr %input) { ; SDAG-LABEL: test_lshr_i512_const_32: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x11, x10, [x1, #48] ; SDAG-NEXT: ldur x8, [x1, #12] ; SDAG-NEXT: ldp x15, x14, [x1, #32] ; SDAG-NEXT: ldur x9, [x1, #4] ; SDAG-NEXT: ldp x12, x13, [x1, #16] ; SDAG-NEXT: extr x16, x10, x11, #32 ; SDAG-NEXT: stp x9, x8, [x0] ; SDAG-NEXT: lsr x9, x10, #32 ; SDAG-NEXT: extr x8, x14, x15, #32 ; SDAG-NEXT: extr x10, x11, x14, #32 ; SDAG-NEXT: stp x16, x9, [x0, #48] ; SDAG-NEXT: extr x9, x13, x12, #32 ; SDAG-NEXT: stp x8, x10, [x0, #32] ; SDAG-NEXT: extr x8, x15, x13, #32 ; SDAG-NEXT: stp x9, x8, [x0, #16] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_lshr_i512_const_32: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: extr x8, x9, x8, #32 ; GISEL-NEXT: ldp x14, x15, [x1, #48] ; GISEL-NEXT: extr x9, x10, x9, #32 ; GISEL-NEXT: extr x10, x11, x10, #32 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x12, x11, #32 ; GISEL-NEXT: extr x9, x13, x12, #32 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: extr x10, x14, x13, #32 ; GISEL-NEXT: extr x8, x15, x14, #32 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: lsr x9, x15, #32 ; GISEL-NEXT: stp x8, x9, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = lshr i512 %input_val, 32 store i512 %shifted, ptr %result, align 64 ret void } define void @test_ashr_i512_const_32(ptr %result, ptr %input) { ; SDAG-LABEL: test_ashr_i512_const_32: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x11, x10, [x1, #48] ; SDAG-NEXT: ldur x8, [x1, #12] ; SDAG-NEXT: ldp x15, x14, [x1, #32] ; SDAG-NEXT: ldur x9, [x1, #4] ; SDAG-NEXT: ldp x12, x13, [x1, #16] ; SDAG-NEXT: extr x16, x10, x11, #32 ; SDAG-NEXT: stp x9, x8, [x0] ; SDAG-NEXT: asr x9, x10, #32 ; SDAG-NEXT: extr x8, x14, x15, #32 ; SDAG-NEXT: extr x10, x11, x14, #32 ; SDAG-NEXT: stp x16, x9, [x0, #48] ; SDAG-NEXT: extr x9, x13, x12, #32 ; SDAG-NEXT: stp x8, x10, [x0, #32] ; SDAG-NEXT: extr x8, x15, x13, #32 ; SDAG-NEXT: stp x9, x8, [x0, #16] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_ashr_i512_const_32: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #48] ; GISEL-NEXT: extr x8, x9, x8, #32 ; GISEL-NEXT: ldp x14, x15, [x1, #32] ; GISEL-NEXT: extr x9, x10, x9, #32 ; GISEL-NEXT: extr x10, x11, x10, #32 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: asr x8, x13, #63 ; GISEL-NEXT: extr x11, x14, x11, #32 ; GISEL-NEXT: extr x9, x15, x14, #32 ; GISEL-NEXT: lsl x8, x8, #32 ; GISEL-NEXT: stp x10, x11, [x0, #16] ; GISEL-NEXT: extr x10, x12, x15, #32 ; GISEL-NEXT: extr x11, x13, x12, #32 ; GISEL-NEXT: orr x8, x8, x13, asr #32 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: stp x11, x8, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = ashr i512 %input_val, 32 store i512 %shifted, ptr %result, align 64 ret void } define void @test_shl_i512_const_64(ptr %result, ptr %input) { ; SDAG-LABEL: test_shl_i512_const_64: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x10, x8, [x1, #40] ; SDAG-NEXT: ldr q0, [x1] ; SDAG-NEXT: ldp x12, x9, [x1, #24] ; SDAG-NEXT: ldr x11, [x1, #16] ; SDAG-NEXT: str xzr, [x0] ; SDAG-NEXT: stp x10, x8, [x0, #48] ; SDAG-NEXT: stp x12, x9, [x0, #32] ; SDAG-NEXT: str x11, [x0, #24] ; SDAG-NEXT: stur q0, [x0, #8] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_shl_i512_const_64: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldr x14, [x1, #48] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: stp xzr, x8, [x0] ; GISEL-NEXT: stp x9, x10, [x0, #16] ; GISEL-NEXT: stp x11, x12, [x0, #32] ; GISEL-NEXT: stp x13, x14, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = shl i512 %input_val, 64 store i512 %shifted, ptr %result, align 64 ret void } define void @test_lshr_i512_const_64(ptr %result, ptr %input) { ; SDAG-LABEL: test_lshr_i512_const_64: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x11, x8, [x1, #48] ; SDAG-NEXT: ldur q0, [x1, #8] ; SDAG-NEXT: ldp x10, x9, [x1, #24] ; SDAG-NEXT: ldr x12, [x1, #40] ; SDAG-NEXT: str q0, [x0] ; SDAG-NEXT: stp x8, xzr, [x0, #48] ; SDAG-NEXT: stp x12, x11, [x0, #32] ; SDAG-NEXT: stp x10, x9, [x0, #16] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_lshr_i512_const_64: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1, #8] ; GISEL-NEXT: ldr x14, [x1, #56] ; GISEL-NEXT: ldp x10, x11, [x1, #24] ; GISEL-NEXT: ldp x12, x13, [x1, #40] ; GISEL-NEXT: stp x14, xzr, [x0, #48] ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: stp x10, x11, [x0, #16] ; GISEL-NEXT: stp x12, x13, [x0, #32] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = lshr i512 %input_val, 64 store i512 %shifted, ptr %result, align 64 ret void } define void @test_ashr_i512_const_64(ptr %result, ptr %input) { ; SDAG-LABEL: test_ashr_i512_const_64: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x8, x9, [x1, #40] ; SDAG-NEXT: ldr x12, [x1, #56] ; SDAG-NEXT: ldp x11, x10, [x1, #24] ; SDAG-NEXT: ldur q0, [x1, #8] ; SDAG-NEXT: stp x8, x9, [x0, #32] ; SDAG-NEXT: asr x8, x12, #63 ; SDAG-NEXT: stp x11, x10, [x0, #16] ; SDAG-NEXT: str q0, [x0] ; SDAG-NEXT: stp x12, x8, [x0, #48] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_ashr_i512_const_64: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1, #8] ; GISEL-NEXT: ldr x14, [x1, #56] ; GISEL-NEXT: ldp x10, x11, [x1, #24] ; GISEL-NEXT: ldp x12, x13, [x1, #40] ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: asr x8, x14, #63 ; GISEL-NEXT: stp x10, x11, [x0, #16] ; GISEL-NEXT: stp x12, x13, [x0, #32] ; GISEL-NEXT: stp x14, x8, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = ashr i512 %input_val, 64 store i512 %shifted, ptr %result, align 64 ret void } define void @test_shl_i512_const_96(ptr %result, ptr %input) { ; SDAG-LABEL: test_shl_i512_const_96: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x12, x11, [x1, #16] ; SDAG-NEXT: ldur x9, [x1, #36] ; SDAG-NEXT: ldur x10, [x1, #44] ; SDAG-NEXT: ldur x8, [x1, #28] ; SDAG-NEXT: ldp x13, x14, [x1] ; SDAG-NEXT: stp x9, x10, [x0, #48] ; SDAG-NEXT: extr x9, x11, x12, #32 ; SDAG-NEXT: extr x10, x14, x13, #32 ; SDAG-NEXT: stp x9, x8, [x0, #32] ; SDAG-NEXT: extr x8, x12, x14, #32 ; SDAG-NEXT: lsl x9, x13, #32 ; SDAG-NEXT: stp x10, x8, [x0, #16] ; SDAG-NEXT: stp xzr, x9, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_shl_i512_const_96: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldr x15, [x1, #48] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: lsl x14, x8, #32 ; GISEL-NEXT: extr x8, x9, x8, #32 ; GISEL-NEXT: extr x9, x10, x9, #32 ; GISEL-NEXT: extr x10, x11, x10, #32 ; GISEL-NEXT: stp xzr, x14, [x0] ; GISEL-NEXT: stp x8, x9, [x0, #16] ; GISEL-NEXT: extr x8, x12, x11, #32 ; GISEL-NEXT: extr x9, x13, x12, #32 ; GISEL-NEXT: stp x10, x8, [x0, #32] ; GISEL-NEXT: extr x10, x15, x13, #32 ; GISEL-NEXT: stp x9, x10, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = shl i512 %input_val, 96 store i512 %shifted, ptr %result, align 64 ret void } define void @test_lshr_i512_const_96(ptr %result, ptr %input) { ; SDAG-LABEL: test_lshr_i512_const_96: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x10, [x1, #48] ; SDAG-NEXT: ldur x8, [x1, #20] ; SDAG-NEXT: ldp x13, x14, [x1, #32] ; SDAG-NEXT: ldur x11, [x1, #12] ; SDAG-NEXT: ldur x12, [x1, #28] ; SDAG-NEXT: lsr x15, x10, #32 ; SDAG-NEXT: stp x11, x8, [x0] ; SDAG-NEXT: extr x8, x10, x9, #32 ; SDAG-NEXT: extr x11, x9, x14, #32 ; SDAG-NEXT: extr x9, x14, x13, #32 ; SDAG-NEXT: stp x15, xzr, [x0, #48] ; SDAG-NEXT: stp x11, x8, [x0, #32] ; SDAG-NEXT: stp x12, x9, [x0, #16] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_lshr_i512_const_96: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1, #8] ; GISEL-NEXT: ldr x14, [x1, #56] ; GISEL-NEXT: ldp x10, x11, [x1, #24] ; GISEL-NEXT: ldp x12, x13, [x1, #40] ; GISEL-NEXT: extr x8, x9, x8, #32 ; GISEL-NEXT: extr x9, x10, x9, #32 ; GISEL-NEXT: extr x10, x11, x10, #32 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x12, x11, #32 ; GISEL-NEXT: extr x9, x13, x12, #32 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: extr x10, x14, x13, #32 ; GISEL-NEXT: lsr x8, x14, #32 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: stp x8, xzr, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = lshr i512 %input_val, 96 store i512 %shifted, ptr %result, align 64 ret void } define void @test_ashr_i512_const_96(ptr %result, ptr %input) { ; SDAG-LABEL: test_ashr_i512_const_96: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x10, [x1, #48] ; SDAG-NEXT: ldur x8, [x1, #12] ; SDAG-NEXT: ldur x11, [x1, #20] ; SDAG-NEXT: ldur x12, [x1, #28] ; SDAG-NEXT: ldp x13, x14, [x1, #32] ; SDAG-NEXT: asr x15, x10, #32 ; SDAG-NEXT: stp x8, x11, [x0] ; SDAG-NEXT: asr x8, x10, #63 ; SDAG-NEXT: extr x11, x9, x14, #32 ; SDAG-NEXT: stp x15, x8, [x0, #48] ; SDAG-NEXT: extr x9, x10, x9, #32 ; SDAG-NEXT: extr x8, x14, x13, #32 ; SDAG-NEXT: stp x11, x9, [x0, #32] ; SDAG-NEXT: stp x12, x8, [x0, #16] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_ashr_i512_const_96: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1, #8] ; GISEL-NEXT: ldr x13, [x1, #40] ; GISEL-NEXT: ldp x10, x11, [x1, #24] ; GISEL-NEXT: ldp x14, x12, [x1, #48] ; GISEL-NEXT: extr x8, x9, x8, #32 ; GISEL-NEXT: extr x9, x10, x9, #32 ; GISEL-NEXT: extr x10, x11, x10, #32 ; GISEL-NEXT: asr x15, x12, #63 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x13, x11, #32 ; GISEL-NEXT: extr x9, x14, x13, #32 ; GISEL-NEXT: lsl x11, x15, #32 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: extr x10, x12, x14, #32 ; GISEL-NEXT: orr x8, x11, x12, asr #32 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: stp x8, x15, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = ashr i512 %input_val, 96 store i512 %shifted, ptr %result, align 64 ret void } ; Bit-only shifts (< 64 bits) define void @test_shl_i512_const_1(ptr %result, ptr %input) { ; SDAG-LABEL: test_shl_i512_const_1: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x8, x9, [x1, #40] ; SDAG-NEXT: ldr x10, [x1, #56] ; SDAG-NEXT: ldp x13, x11, [x1, #24] ; SDAG-NEXT: ldp x15, x14, [x1, #8] ; SDAG-NEXT: extr x12, x9, x8, #63 ; SDAG-NEXT: extr x9, x10, x9, #63 ; SDAG-NEXT: ldr x10, [x1] ; SDAG-NEXT: extr x16, x11, x13, #63 ; SDAG-NEXT: extr x8, x8, x11, #63 ; SDAG-NEXT: stp x12, x9, [x0, #48] ; SDAG-NEXT: extr x9, x14, x15, #63 ; SDAG-NEXT: extr x11, x13, x14, #63 ; SDAG-NEXT: stp x16, x8, [x0, #32] ; SDAG-NEXT: lsl x8, x10, #1 ; SDAG-NEXT: stp x9, x11, [x0, #16] ; SDAG-NEXT: extr x9, x15, x10, #63 ; SDAG-NEXT: stp x8, x9, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_shl_i512_const_1: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x13, x14, [x1, #32] ; GISEL-NEXT: lsl x12, x8, #1 ; GISEL-NEXT: extr x8, x9, x8, #63 ; GISEL-NEXT: extr x9, x10, x9, #63 ; GISEL-NEXT: extr x10, x11, x10, #63 ; GISEL-NEXT: ldp x15, x16, [x1, #48] ; GISEL-NEXT: stp x12, x8, [x0] ; GISEL-NEXT: extr x8, x13, x11, #63 ; GISEL-NEXT: stp x9, x10, [x0, #16] ; GISEL-NEXT: extr x9, x14, x13, #63 ; GISEL-NEXT: extr x10, x15, x14, #63 ; GISEL-NEXT: stp x8, x9, [x0, #32] ; GISEL-NEXT: extr x8, x16, x15, #63 ; GISEL-NEXT: stp x10, x8, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = shl i512 %input_val, 1 store i512 %shifted, ptr %result, align 64 ret void } define void @test_lshr_i512_const_1(ptr %result, ptr %input) { ; SDAG-LABEL: test_lshr_i512_const_1: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldp x11, x10, [x1, #32] ; SDAG-NEXT: ldp x16, x15, [x1, #16] ; SDAG-NEXT: extr x12, x8, x9, #1 ; SDAG-NEXT: lsr x8, x8, #1 ; SDAG-NEXT: ldp x13, x14, [x1] ; SDAG-NEXT: extr x9, x9, x10, #1 ; SDAG-NEXT: stp x12, x8, [x0, #48] ; SDAG-NEXT: extr x12, x10, x11, #1 ; SDAG-NEXT: extr x8, x15, x16, #1 ; SDAG-NEXT: extr x10, x11, x15, #1 ; SDAG-NEXT: stp x12, x9, [x0, #32] ; SDAG-NEXT: extr x9, x14, x13, #1 ; SDAG-NEXT: stp x8, x10, [x0, #16] ; SDAG-NEXT: extr x8, x16, x14, #1 ; SDAG-NEXT: stp x9, x8, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_lshr_i512_const_1: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: extr x8, x9, x8, #1 ; GISEL-NEXT: ldp x14, x15, [x1, #48] ; GISEL-NEXT: extr x9, x10, x9, #1 ; GISEL-NEXT: extr x10, x11, x10, #1 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x12, x11, #1 ; GISEL-NEXT: extr x9, x13, x12, #1 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: extr x10, x14, x13, #1 ; GISEL-NEXT: extr x8, x15, x14, #1 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: lsr x9, x15, #1 ; GISEL-NEXT: stp x8, x9, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = lshr i512 %input_val, 1 store i512 %shifted, ptr %result, align 64 ret void } define void @test_ashr_i512_const_1(ptr %result, ptr %input) { ; SDAG-LABEL: test_ashr_i512_const_1: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldp x11, x10, [x1, #32] ; SDAG-NEXT: ldp x16, x15, [x1, #16] ; SDAG-NEXT: extr x12, x8, x9, #1 ; SDAG-NEXT: asr x8, x8, #1 ; SDAG-NEXT: ldp x13, x14, [x1] ; SDAG-NEXT: extr x9, x9, x10, #1 ; SDAG-NEXT: stp x12, x8, [x0, #48] ; SDAG-NEXT: extr x12, x10, x11, #1 ; SDAG-NEXT: extr x8, x15, x16, #1 ; SDAG-NEXT: extr x10, x11, x15, #1 ; SDAG-NEXT: stp x12, x9, [x0, #32] ; SDAG-NEXT: extr x9, x14, x13, #1 ; SDAG-NEXT: stp x8, x10, [x0, #16] ; SDAG-NEXT: extr x8, x16, x14, #1 ; SDAG-NEXT: stp x9, x8, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_ashr_i512_const_1: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #48] ; GISEL-NEXT: extr x8, x9, x8, #1 ; GISEL-NEXT: ldp x14, x15, [x1, #32] ; GISEL-NEXT: extr x9, x10, x9, #1 ; GISEL-NEXT: extr x10, x11, x10, #1 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: asr x8, x13, #63 ; GISEL-NEXT: extr x11, x14, x11, #1 ; GISEL-NEXT: extr x9, x15, x14, #1 ; GISEL-NEXT: lsl x8, x8, #63 ; GISEL-NEXT: stp x10, x11, [x0, #16] ; GISEL-NEXT: extr x10, x12, x15, #1 ; GISEL-NEXT: extr x11, x13, x12, #1 ; GISEL-NEXT: orr x8, x8, x13, asr #1 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: stp x11, x8, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = ashr i512 %input_val, 1 store i512 %shifted, ptr %result, align 64 ret void } define void @test_shl_i512_const_15(ptr %result, ptr %input) { ; SDAG-LABEL: test_shl_i512_const_15: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x8, x9, [x1, #40] ; SDAG-NEXT: ldr x10, [x1, #56] ; SDAG-NEXT: ldp x13, x11, [x1, #24] ; SDAG-NEXT: ldp x15, x14, [x1, #8] ; SDAG-NEXT: extr x12, x9, x8, #49 ; SDAG-NEXT: extr x9, x10, x9, #49 ; SDAG-NEXT: ldr x10, [x1] ; SDAG-NEXT: extr x16, x11, x13, #49 ; SDAG-NEXT: extr x8, x8, x11, #49 ; SDAG-NEXT: stp x12, x9, [x0, #48] ; SDAG-NEXT: extr x9, x14, x15, #49 ; SDAG-NEXT: extr x11, x13, x14, #49 ; SDAG-NEXT: stp x16, x8, [x0, #32] ; SDAG-NEXT: lsl x8, x10, #15 ; SDAG-NEXT: stp x9, x11, [x0, #16] ; SDAG-NEXT: extr x9, x15, x10, #49 ; SDAG-NEXT: stp x8, x9, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_shl_i512_const_15: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x13, x14, [x1, #32] ; GISEL-NEXT: lsl x12, x8, #15 ; GISEL-NEXT: extr x8, x9, x8, #49 ; GISEL-NEXT: extr x9, x10, x9, #49 ; GISEL-NEXT: extr x10, x11, x10, #49 ; GISEL-NEXT: ldp x15, x16, [x1, #48] ; GISEL-NEXT: stp x12, x8, [x0] ; GISEL-NEXT: extr x8, x13, x11, #49 ; GISEL-NEXT: stp x9, x10, [x0, #16] ; GISEL-NEXT: extr x9, x14, x13, #49 ; GISEL-NEXT: extr x10, x15, x14, #49 ; GISEL-NEXT: stp x8, x9, [x0, #32] ; GISEL-NEXT: extr x8, x16, x15, #49 ; GISEL-NEXT: stp x10, x8, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = shl i512 %input_val, 15 store i512 %shifted, ptr %result, align 64 ret void } define void @test_lshr_i512_const_15(ptr %result, ptr %input) { ; SDAG-LABEL: test_lshr_i512_const_15: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldp x11, x10, [x1, #32] ; SDAG-NEXT: ldp x16, x15, [x1, #16] ; SDAG-NEXT: extr x12, x8, x9, #15 ; SDAG-NEXT: lsr x8, x8, #15 ; SDAG-NEXT: ldp x13, x14, [x1] ; SDAG-NEXT: extr x9, x9, x10, #15 ; SDAG-NEXT: stp x12, x8, [x0, #48] ; SDAG-NEXT: extr x12, x10, x11, #15 ; SDAG-NEXT: extr x8, x15, x16, #15 ; SDAG-NEXT: extr x10, x11, x15, #15 ; SDAG-NEXT: stp x12, x9, [x0, #32] ; SDAG-NEXT: extr x9, x14, x13, #15 ; SDAG-NEXT: stp x8, x10, [x0, #16] ; SDAG-NEXT: extr x8, x16, x14, #15 ; SDAG-NEXT: stp x9, x8, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_lshr_i512_const_15: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: extr x8, x9, x8, #15 ; GISEL-NEXT: ldp x14, x15, [x1, #48] ; GISEL-NEXT: extr x9, x10, x9, #15 ; GISEL-NEXT: extr x10, x11, x10, #15 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x12, x11, #15 ; GISEL-NEXT: extr x9, x13, x12, #15 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: extr x10, x14, x13, #15 ; GISEL-NEXT: extr x8, x15, x14, #15 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: lsr x9, x15, #15 ; GISEL-NEXT: stp x8, x9, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = lshr i512 %input_val, 15 store i512 %shifted, ptr %result, align 64 ret void } define void @test_ashr_i512_const_15(ptr %result, ptr %input) { ; SDAG-LABEL: test_ashr_i512_const_15: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldp x11, x10, [x1, #32] ; SDAG-NEXT: ldp x16, x15, [x1, #16] ; SDAG-NEXT: extr x12, x8, x9, #15 ; SDAG-NEXT: asr x8, x8, #15 ; SDAG-NEXT: ldp x13, x14, [x1] ; SDAG-NEXT: extr x9, x9, x10, #15 ; SDAG-NEXT: stp x12, x8, [x0, #48] ; SDAG-NEXT: extr x12, x10, x11, #15 ; SDAG-NEXT: extr x8, x15, x16, #15 ; SDAG-NEXT: extr x10, x11, x15, #15 ; SDAG-NEXT: stp x12, x9, [x0, #32] ; SDAG-NEXT: extr x9, x14, x13, #15 ; SDAG-NEXT: stp x8, x10, [x0, #16] ; SDAG-NEXT: extr x8, x16, x14, #15 ; SDAG-NEXT: stp x9, x8, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_ashr_i512_const_15: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #48] ; GISEL-NEXT: extr x8, x9, x8, #15 ; GISEL-NEXT: ldp x14, x15, [x1, #32] ; GISEL-NEXT: extr x9, x10, x9, #15 ; GISEL-NEXT: extr x10, x11, x10, #15 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: asr x8, x13, #63 ; GISEL-NEXT: extr x11, x14, x11, #15 ; GISEL-NEXT: extr x9, x15, x14, #15 ; GISEL-NEXT: lsl x8, x8, #49 ; GISEL-NEXT: stp x10, x11, [x0, #16] ; GISEL-NEXT: extr x10, x12, x15, #15 ; GISEL-NEXT: extr x11, x13, x12, #15 ; GISEL-NEXT: orr x8, x8, x13, asr #15 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: stp x11, x8, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = ashr i512 %input_val, 15 store i512 %shifted, ptr %result, align 64 ret void } define void @test_shl_i512_const_63(ptr %result, ptr %input) { ; SDAG-LABEL: test_shl_i512_const_63: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x8, x9, [x1, #40] ; SDAG-NEXT: ldr x10, [x1, #56] ; SDAG-NEXT: ldp x13, x11, [x1, #24] ; SDAG-NEXT: ldp x15, x14, [x1, #8] ; SDAG-NEXT: extr x12, x9, x8, #1 ; SDAG-NEXT: extr x9, x10, x9, #1 ; SDAG-NEXT: ldr x10, [x1] ; SDAG-NEXT: extr x16, x11, x13, #1 ; SDAG-NEXT: extr x8, x8, x11, #1 ; SDAG-NEXT: stp x12, x9, [x0, #48] ; SDAG-NEXT: extr x9, x14, x15, #1 ; SDAG-NEXT: extr x11, x13, x14, #1 ; SDAG-NEXT: stp x16, x8, [x0, #32] ; SDAG-NEXT: lsl x8, x10, #63 ; SDAG-NEXT: stp x9, x11, [x0, #16] ; SDAG-NEXT: extr x9, x15, x10, #1 ; SDAG-NEXT: stp x8, x9, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_shl_i512_const_63: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x13, x14, [x1, #32] ; GISEL-NEXT: lsl x12, x8, #63 ; GISEL-NEXT: extr x8, x9, x8, #1 ; GISEL-NEXT: extr x9, x10, x9, #1 ; GISEL-NEXT: extr x10, x11, x10, #1 ; GISEL-NEXT: ldp x15, x16, [x1, #48] ; GISEL-NEXT: stp x12, x8, [x0] ; GISEL-NEXT: extr x8, x13, x11, #1 ; GISEL-NEXT: stp x9, x10, [x0, #16] ; GISEL-NEXT: extr x9, x14, x13, #1 ; GISEL-NEXT: extr x10, x15, x14, #1 ; GISEL-NEXT: stp x8, x9, [x0, #32] ; GISEL-NEXT: extr x8, x16, x15, #1 ; GISEL-NEXT: stp x10, x8, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = shl i512 %input_val, 63 store i512 %shifted, ptr %result, align 64 ret void } define void @test_lshr_i512_const_63(ptr %result, ptr %input) { ; SDAG-LABEL: test_lshr_i512_const_63: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldp x11, x10, [x1, #32] ; SDAG-NEXT: ldp x16, x15, [x1, #16] ; SDAG-NEXT: extr x12, x8, x9, #63 ; SDAG-NEXT: lsr x8, x8, #63 ; SDAG-NEXT: ldp x13, x14, [x1] ; SDAG-NEXT: extr x9, x9, x10, #63 ; SDAG-NEXT: stp x12, x8, [x0, #48] ; SDAG-NEXT: extr x12, x10, x11, #63 ; SDAG-NEXT: extr x8, x15, x16, #63 ; SDAG-NEXT: extr x10, x11, x15, #63 ; SDAG-NEXT: stp x12, x9, [x0, #32] ; SDAG-NEXT: extr x9, x14, x13, #63 ; SDAG-NEXT: stp x8, x10, [x0, #16] ; SDAG-NEXT: extr x8, x16, x14, #63 ; SDAG-NEXT: stp x9, x8, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_lshr_i512_const_63: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: extr x8, x9, x8, #63 ; GISEL-NEXT: ldp x14, x15, [x1, #48] ; GISEL-NEXT: extr x9, x10, x9, #63 ; GISEL-NEXT: extr x10, x11, x10, #63 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x12, x11, #63 ; GISEL-NEXT: extr x9, x13, x12, #63 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: extr x10, x14, x13, #63 ; GISEL-NEXT: extr x8, x15, x14, #63 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: lsr x9, x15, #63 ; GISEL-NEXT: stp x8, x9, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = lshr i512 %input_val, 63 store i512 %shifted, ptr %result, align 64 ret void } define void @test_ashr_i512_const_63(ptr %result, ptr %input) { ; SDAG-LABEL: test_ashr_i512_const_63: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldp x11, x10, [x1, #32] ; SDAG-NEXT: ldp x16, x15, [x1, #16] ; SDAG-NEXT: extr x12, x8, x9, #63 ; SDAG-NEXT: asr x8, x8, #63 ; SDAG-NEXT: ldp x13, x14, [x1] ; SDAG-NEXT: extr x9, x9, x10, #63 ; SDAG-NEXT: stp x12, x8, [x0, #48] ; SDAG-NEXT: extr x12, x10, x11, #63 ; SDAG-NEXT: extr x8, x15, x16, #63 ; SDAG-NEXT: extr x10, x11, x15, #63 ; SDAG-NEXT: stp x12, x9, [x0, #32] ; SDAG-NEXT: extr x9, x14, x13, #63 ; SDAG-NEXT: stp x8, x10, [x0, #16] ; SDAG-NEXT: extr x8, x16, x14, #63 ; SDAG-NEXT: stp x9, x8, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_ashr_i512_const_63: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: extr x8, x9, x8, #63 ; GISEL-NEXT: ldp x14, x15, [x1, #48] ; GISEL-NEXT: extr x9, x10, x9, #63 ; GISEL-NEXT: extr x10, x11, x10, #63 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x12, x11, #63 ; GISEL-NEXT: extr x9, x13, x12, #63 ; GISEL-NEXT: extr x11, x14, x13, #63 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: asr x10, x15, #63 ; GISEL-NEXT: extr x8, x15, x14, #63 ; GISEL-NEXT: stp x9, x11, [x0, #32] ; GISEL-NEXT: orr x9, x10, x10, lsl #1 ; GISEL-NEXT: stp x8, x9, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = ashr i512 %input_val, 63 store i512 %shifted, ptr %result, align 64 ret void } ; Mixed word+bit shifts define void @test_shl_i512_const_65(ptr %result, ptr %input) { ; SDAG-LABEL: test_shl_i512_const_65: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #32] ; SDAG-NEXT: ldr x10, [x1, #48] ; SDAG-NEXT: ldp x12, x11, [x1, #16] ; SDAG-NEXT: extr x13, x8, x9, #63 ; SDAG-NEXT: extr x8, x10, x8, #63 ; SDAG-NEXT: ldp x10, x14, [x1] ; SDAG-NEXT: extr x15, x11, x12, #63 ; SDAG-NEXT: stp x13, x8, [x0, #48] ; SDAG-NEXT: extr x9, x9, x11, #63 ; SDAG-NEXT: extr x8, x14, x10, #63 ; SDAG-NEXT: extr x11, x12, x14, #63 ; SDAG-NEXT: stp x15, x9, [x0, #32] ; SDAG-NEXT: stp x8, x11, [x0, #16] ; SDAG-NEXT: lsl x8, x10, #1 ; SDAG-NEXT: stp xzr, x8, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_shl_i512_const_65: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldr x15, [x1, #48] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: lsl x14, x8, #1 ; GISEL-NEXT: extr x8, x9, x8, #63 ; GISEL-NEXT: extr x9, x10, x9, #63 ; GISEL-NEXT: extr x10, x11, x10, #63 ; GISEL-NEXT: stp xzr, x14, [x0] ; GISEL-NEXT: stp x8, x9, [x0, #16] ; GISEL-NEXT: extr x8, x12, x11, #63 ; GISEL-NEXT: extr x9, x13, x12, #63 ; GISEL-NEXT: stp x10, x8, [x0, #32] ; GISEL-NEXT: extr x10, x15, x13, #63 ; GISEL-NEXT: stp x9, x10, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = shl i512 %input_val, 65 store i512 %shifted, ptr %result, align 64 ret void } define void @test_lshr_i512_const_65(ptr %result, ptr %input) { ; SDAG-LABEL: test_lshr_i512_const_65: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldr x15, [x1, #24] ; SDAG-NEXT: ldp x14, x10, [x1, #32] ; SDAG-NEXT: ldp x11, x12, [x1, #8] ; SDAG-NEXT: lsr x13, x8, #1 ; SDAG-NEXT: extr x8, x8, x9, #1 ; SDAG-NEXT: extr x16, x9, x10, #1 ; SDAG-NEXT: extr x9, x14, x15, #1 ; SDAG-NEXT: extr x10, x10, x14, #1 ; SDAG-NEXT: stp x13, xzr, [x0, #48] ; SDAG-NEXT: stp x16, x8, [x0, #32] ; SDAG-NEXT: extr x8, x12, x11, #1 ; SDAG-NEXT: stp x9, x10, [x0, #16] ; SDAG-NEXT: extr x9, x15, x12, #1 ; SDAG-NEXT: stp x8, x9, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_lshr_i512_const_65: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1, #8] ; GISEL-NEXT: ldr x14, [x1, #56] ; GISEL-NEXT: ldp x10, x11, [x1, #24] ; GISEL-NEXT: ldp x12, x13, [x1, #40] ; GISEL-NEXT: extr x8, x9, x8, #1 ; GISEL-NEXT: extr x9, x10, x9, #1 ; GISEL-NEXT: extr x10, x11, x10, #1 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x12, x11, #1 ; GISEL-NEXT: extr x9, x13, x12, #1 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: extr x10, x14, x13, #1 ; GISEL-NEXT: lsr x8, x14, #1 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: stp x8, xzr, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = lshr i512 %input_val, 65 store i512 %shifted, ptr %result, align 64 ret void } define void @test_ashr_i512_const_65(ptr %result, ptr %input) { ; SDAG-LABEL: test_ashr_i512_const_65: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldr x16, [x1, #24] ; SDAG-NEXT: ldp x15, x10, [x1, #32] ; SDAG-NEXT: ldp x12, x13, [x1, #8] ; SDAG-NEXT: asr x11, x8, #1 ; SDAG-NEXT: asr x14, x8, #63 ; SDAG-NEXT: extr x8, x8, x9, #1 ; SDAG-NEXT: stp x11, x14, [x0, #48] ; SDAG-NEXT: extr x11, x9, x10, #1 ; SDAG-NEXT: extr x9, x15, x16, #1 ; SDAG-NEXT: extr x10, x10, x15, #1 ; SDAG-NEXT: stp x11, x8, [x0, #32] ; SDAG-NEXT: extr x8, x13, x12, #1 ; SDAG-NEXT: stp x9, x10, [x0, #16] ; SDAG-NEXT: extr x9, x16, x13, #1 ; SDAG-NEXT: stp x8, x9, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_ashr_i512_const_65: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1, #8] ; GISEL-NEXT: ldr x13, [x1, #40] ; GISEL-NEXT: ldp x10, x11, [x1, #24] ; GISEL-NEXT: ldp x14, x12, [x1, #48] ; GISEL-NEXT: extr x8, x9, x8, #1 ; GISEL-NEXT: extr x9, x10, x9, #1 ; GISEL-NEXT: extr x10, x11, x10, #1 ; GISEL-NEXT: asr x15, x12, #63 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x13, x11, #1 ; GISEL-NEXT: extr x9, x14, x13, #1 ; GISEL-NEXT: lsl x11, x15, #63 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: extr x10, x12, x14, #1 ; GISEL-NEXT: orr x8, x11, x12, asr #1 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: stp x8, x15, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = ashr i512 %input_val, 65 store i512 %shifted, ptr %result, align 64 ret void } define void @test_shl_i512_const_100(ptr %result, ptr %input) { ; SDAG-LABEL: test_shl_i512_const_100: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #32] ; SDAG-NEXT: ldr x10, [x1, #48] ; SDAG-NEXT: ldp x12, x11, [x1, #16] ; SDAG-NEXT: extr x13, x8, x9, #28 ; SDAG-NEXT: extr x8, x10, x8, #28 ; SDAG-NEXT: ldp x10, x14, [x1] ; SDAG-NEXT: extr x15, x11, x12, #28 ; SDAG-NEXT: stp x13, x8, [x0, #48] ; SDAG-NEXT: extr x9, x9, x11, #28 ; SDAG-NEXT: extr x8, x14, x10, #28 ; SDAG-NEXT: extr x11, x12, x14, #28 ; SDAG-NEXT: stp x15, x9, [x0, #32] ; SDAG-NEXT: stp x8, x11, [x0, #16] ; SDAG-NEXT: lsl x8, x10, #36 ; SDAG-NEXT: stp xzr, x8, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_shl_i512_const_100: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldr x15, [x1, #48] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: lsl x14, x8, #36 ; GISEL-NEXT: extr x8, x9, x8, #28 ; GISEL-NEXT: extr x9, x10, x9, #28 ; GISEL-NEXT: extr x10, x11, x10, #28 ; GISEL-NEXT: stp xzr, x14, [x0] ; GISEL-NEXT: stp x8, x9, [x0, #16] ; GISEL-NEXT: extr x8, x12, x11, #28 ; GISEL-NEXT: extr x9, x13, x12, #28 ; GISEL-NEXT: stp x10, x8, [x0, #32] ; GISEL-NEXT: extr x10, x15, x13, #28 ; GISEL-NEXT: stp x9, x10, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = shl i512 %input_val, 100 store i512 %shifted, ptr %result, align 64 ret void } define void @test_lshr_i512_const_100(ptr %result, ptr %input) { ; SDAG-LABEL: test_lshr_i512_const_100: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldr x15, [x1, #24] ; SDAG-NEXT: ldp x14, x10, [x1, #32] ; SDAG-NEXT: ldp x11, x12, [x1, #8] ; SDAG-NEXT: lsr x13, x8, #36 ; SDAG-NEXT: extr x8, x8, x9, #36 ; SDAG-NEXT: extr x16, x9, x10, #36 ; SDAG-NEXT: extr x9, x14, x15, #36 ; SDAG-NEXT: extr x10, x10, x14, #36 ; SDAG-NEXT: stp x13, xzr, [x0, #48] ; SDAG-NEXT: stp x16, x8, [x0, #32] ; SDAG-NEXT: extr x8, x12, x11, #36 ; SDAG-NEXT: stp x9, x10, [x0, #16] ; SDAG-NEXT: extr x9, x15, x12, #36 ; SDAG-NEXT: stp x8, x9, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_lshr_i512_const_100: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1, #8] ; GISEL-NEXT: ldr x14, [x1, #56] ; GISEL-NEXT: ldp x10, x11, [x1, #24] ; GISEL-NEXT: ldp x12, x13, [x1, #40] ; GISEL-NEXT: extr x8, x9, x8, #36 ; GISEL-NEXT: extr x9, x10, x9, #36 ; GISEL-NEXT: extr x10, x11, x10, #36 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x12, x11, #36 ; GISEL-NEXT: extr x9, x13, x12, #36 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: extr x10, x14, x13, #36 ; GISEL-NEXT: lsr x8, x14, #36 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: stp x8, xzr, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = lshr i512 %input_val, 100 store i512 %shifted, ptr %result, align 64 ret void } define void @test_ashr_i512_const_100(ptr %result, ptr %input) { ; SDAG-LABEL: test_ashr_i512_const_100: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldr x16, [x1, #24] ; SDAG-NEXT: ldp x15, x10, [x1, #32] ; SDAG-NEXT: ldp x12, x13, [x1, #8] ; SDAG-NEXT: asr x11, x8, #36 ; SDAG-NEXT: asr x14, x8, #63 ; SDAG-NEXT: extr x8, x8, x9, #36 ; SDAG-NEXT: stp x11, x14, [x0, #48] ; SDAG-NEXT: extr x11, x9, x10, #36 ; SDAG-NEXT: extr x9, x15, x16, #36 ; SDAG-NEXT: extr x10, x10, x15, #36 ; SDAG-NEXT: stp x11, x8, [x0, #32] ; SDAG-NEXT: extr x8, x13, x12, #36 ; SDAG-NEXT: stp x9, x10, [x0, #16] ; SDAG-NEXT: extr x9, x16, x13, #36 ; SDAG-NEXT: stp x8, x9, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_ashr_i512_const_100: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1, #8] ; GISEL-NEXT: ldr x13, [x1, #40] ; GISEL-NEXT: ldp x10, x11, [x1, #24] ; GISEL-NEXT: ldp x14, x12, [x1, #48] ; GISEL-NEXT: extr x8, x9, x8, #36 ; GISEL-NEXT: extr x9, x10, x9, #36 ; GISEL-NEXT: extr x10, x11, x10, #36 ; GISEL-NEXT: asr x15, x12, #63 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x13, x11, #36 ; GISEL-NEXT: extr x9, x14, x13, #36 ; GISEL-NEXT: lsl x11, x15, #28 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: extr x10, x12, x14, #36 ; GISEL-NEXT: orr x8, x11, x12, asr #36 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: stp x8, x15, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = ashr i512 %input_val, 100 store i512 %shifted, ptr %result, align 64 ret void } ; Boundary conditions - test exactly at the edge define void @test_shl_i512_const_127(ptr %result, ptr %input) { ; SDAG-LABEL: test_shl_i512_const_127: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #32] ; SDAG-NEXT: ldr x10, [x1, #48] ; SDAG-NEXT: ldp x12, x11, [x1, #16] ; SDAG-NEXT: extr x13, x8, x9, #1 ; SDAG-NEXT: extr x8, x10, x8, #1 ; SDAG-NEXT: ldp x10, x14, [x1] ; SDAG-NEXT: extr x15, x11, x12, #1 ; SDAG-NEXT: stp x13, x8, [x0, #48] ; SDAG-NEXT: extr x9, x9, x11, #1 ; SDAG-NEXT: extr x8, x14, x10, #1 ; SDAG-NEXT: extr x11, x12, x14, #1 ; SDAG-NEXT: stp x15, x9, [x0, #32] ; SDAG-NEXT: stp x8, x11, [x0, #16] ; SDAG-NEXT: lsl x8, x10, #63 ; SDAG-NEXT: stp xzr, x8, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_shl_i512_const_127: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1] ; GISEL-NEXT: ldr x15, [x1, #48] ; GISEL-NEXT: ldp x10, x11, [x1, #16] ; GISEL-NEXT: ldp x12, x13, [x1, #32] ; GISEL-NEXT: lsl x14, x8, #63 ; GISEL-NEXT: extr x8, x9, x8, #1 ; GISEL-NEXT: extr x9, x10, x9, #1 ; GISEL-NEXT: extr x10, x11, x10, #1 ; GISEL-NEXT: stp xzr, x14, [x0] ; GISEL-NEXT: stp x8, x9, [x0, #16] ; GISEL-NEXT: extr x8, x12, x11, #1 ; GISEL-NEXT: extr x9, x13, x12, #1 ; GISEL-NEXT: stp x10, x8, [x0, #32] ; GISEL-NEXT: extr x10, x15, x13, #1 ; GISEL-NEXT: stp x9, x10, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = shl i512 %input_val, 127 store i512 %shifted, ptr %result, align 64 ret void } define void @test_lshr_i512_const_127(ptr %result, ptr %input) { ; SDAG-LABEL: test_lshr_i512_const_127: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldr x15, [x1, #24] ; SDAG-NEXT: ldp x14, x10, [x1, #32] ; SDAG-NEXT: ldp x11, x12, [x1, #8] ; SDAG-NEXT: lsr x13, x8, #63 ; SDAG-NEXT: extr x8, x8, x9, #63 ; SDAG-NEXT: extr x16, x9, x10, #63 ; SDAG-NEXT: extr x9, x14, x15, #63 ; SDAG-NEXT: extr x10, x10, x14, #63 ; SDAG-NEXT: stp x13, xzr, [x0, #48] ; SDAG-NEXT: stp x16, x8, [x0, #32] ; SDAG-NEXT: extr x8, x12, x11, #63 ; SDAG-NEXT: stp x9, x10, [x0, #16] ; SDAG-NEXT: extr x9, x15, x12, #63 ; SDAG-NEXT: stp x8, x9, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_lshr_i512_const_127: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1, #8] ; GISEL-NEXT: ldr x14, [x1, #56] ; GISEL-NEXT: ldp x10, x11, [x1, #24] ; GISEL-NEXT: ldp x12, x13, [x1, #40] ; GISEL-NEXT: extr x8, x9, x8, #63 ; GISEL-NEXT: extr x9, x10, x9, #63 ; GISEL-NEXT: extr x10, x11, x10, #63 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x12, x11, #63 ; GISEL-NEXT: extr x9, x13, x12, #63 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: extr x10, x14, x13, #63 ; GISEL-NEXT: lsr x8, x14, #63 ; GISEL-NEXT: stp x9, x10, [x0, #32] ; GISEL-NEXT: stp x8, xzr, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = lshr i512 %input_val, 127 store i512 %shifted, ptr %result, align 64 ret void } define void @test_ashr_i512_const_127(ptr %result, ptr %input) { ; SDAG-LABEL: test_ashr_i512_const_127: ; SDAG: ; %bb.0: ; %entry ; SDAG-NEXT: ldp x9, x8, [x1, #48] ; SDAG-NEXT: ldr x15, [x1, #24] ; SDAG-NEXT: ldp x14, x10, [x1, #32] ; SDAG-NEXT: ldp x12, x13, [x1, #8] ; SDAG-NEXT: asr x11, x8, #63 ; SDAG-NEXT: extr x8, x8, x9, #63 ; SDAG-NEXT: extr x16, x9, x10, #63 ; SDAG-NEXT: extr x9, x14, x15, #63 ; SDAG-NEXT: extr x10, x10, x14, #63 ; SDAG-NEXT: stp x11, x11, [x0, #48] ; SDAG-NEXT: stp x16, x8, [x0, #32] ; SDAG-NEXT: extr x8, x13, x12, #63 ; SDAG-NEXT: stp x9, x10, [x0, #16] ; SDAG-NEXT: extr x9, x15, x13, #63 ; SDAG-NEXT: stp x8, x9, [x0] ; SDAG-NEXT: ret ; ; GISEL-LABEL: test_ashr_i512_const_127: ; GISEL: ; %bb.0: ; %entry ; GISEL-NEXT: ldp x8, x9, [x1, #8] ; GISEL-NEXT: ldr x14, [x1, #56] ; GISEL-NEXT: ldp x10, x11, [x1, #24] ; GISEL-NEXT: ldp x12, x13, [x1, #40] ; GISEL-NEXT: extr x8, x9, x8, #63 ; GISEL-NEXT: extr x9, x10, x9, #63 ; GISEL-NEXT: extr x10, x11, x10, #63 ; GISEL-NEXT: stp x8, x9, [x0] ; GISEL-NEXT: extr x8, x12, x11, #63 ; GISEL-NEXT: asr x9, x14, #63 ; GISEL-NEXT: extr x11, x13, x12, #63 ; GISEL-NEXT: stp x10, x8, [x0, #16] ; GISEL-NEXT: extr x10, x14, x13, #63 ; GISEL-NEXT: orr x8, x9, x9, lsl #1 ; GISEL-NEXT: stp x11, x10, [x0, #32] ; GISEL-NEXT: stp x8, x9, [x0, #48] ; GISEL-NEXT: ret entry: %input_val = load i512, ptr %input, align 64 %shifted = ashr i512 %input_val, 127 store i512 %shifted, ptr %result, align 64 ret void } ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: ; CHECK: {{.*}}