brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · e1df07c Raw
158 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -o - -verify-machineinstrs -global-isel=1 -global-isel-abort=1 | FileCheck %s --check-prefixes=CHECK,GISEL3; RUN: llc < %s -o - -verify-machineinstrs -global-isel=0 | FileCheck %s --check-prefixes=CHECK,SDAG4 5target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"6target triple = "arm64-apple-ios14.5.0"7 8define i32 @bfi_w_31(i32 %in1, i32 %in2) {9; CHECK-LABEL: bfi_w_31:10; CHECK:       ; %bb.0: ; %bb11; CHECK-NEXT:    bfi w1, w0, #31, #112; CHECK-NEXT:    mov w0, w113; CHECK-NEXT:    ret14bb:15  %tmp3 = shl i32 %in1, 3116  %tmp4 = and i32 %in2, 214748364717  %out = or i32 %tmp3, %tmp418  ret i32 %out19}20 21define i32 @bfi_w_8(i32 %in1, i32 %in2) {22; CHECK-LABEL: bfi_w_8:23; CHECK:       ; %bb.0: ; %bb24; CHECK-NEXT:    bfi w1, w0, #8, #2425; CHECK-NEXT:    mov w0, w126; CHECK-NEXT:    ret27bb:28  %tmp3 = shl i32 %in1, 829  %tmp4 = and i32 %in2, 25530  %out = or i32 %tmp3, %tmp431  ret i32 %out32}33 34define i32 @bfi_w_1(i32 %in1, i32 %in2) {35; CHECK-LABEL: bfi_w_1:36; CHECK:       ; %bb.0: ; %bb37; CHECK-NEXT:    bfi w1, w0, #1, #3138; CHECK-NEXT:    mov w0, w139; CHECK-NEXT:    ret40bb:41  %tmp3 = shl i32 %in1, 142  %tmp4 = and i32 %in2, 143  %out = or i32 %tmp3, %tmp444  ret i32 %out45}46 47define i64 @bfi_x_63(i64 %in1, i64 %in2) {48; CHECK-LABEL: bfi_x_63:49; CHECK:       ; %bb.0: ; %bb50; CHECK-NEXT:    bfi x1, x0, #63, #151; CHECK-NEXT:    mov x0, x152; CHECK-NEXT:    ret53bb:54  %tmp3 = shl i64 %in1, 6355  %tmp4 = and i64 %in2, 922337203685477580756  %out = or i64 %tmp3, %tmp457  ret i64 %out58}59 60define i64 @bfi_x_31(i64 %in1, i64 %in2) {61; CHECK-LABEL: bfi_x_31:62; CHECK:       ; %bb.0: ; %bb63; CHECK-NEXT:    bfi x1, x0, #31, #3364; CHECK-NEXT:    mov x0, x165; CHECK-NEXT:    ret66bb:67  %tmp3 = shl i64 %in1, 3168  %tmp4 = and i64 %in2, 214748364769  %out = or i64 %tmp3, %tmp470  ret i64 %out71}72 73define i64 @bfi_x_8(i64 %in1, i64 %in2) {74; CHECK-LABEL: bfi_x_8:75; CHECK:       ; %bb.0: ; %bb76; CHECK-NEXT:    bfi x1, x0, #8, #5677; CHECK-NEXT:    mov x0, x178; CHECK-NEXT:    ret79bb:80  %tmp3 = shl i64 %in1, 881  %tmp4 = and i64 %in2, 25582  %out = or i64 %tmp3, %tmp483  ret i64 %out84}85 86define i64 @bfi_x_1(i64 %in1, i64 %in2) {87; CHECK-LABEL: bfi_x_1:88; CHECK:       ; %bb.0: ; %bb89; CHECK-NEXT:    bfi x1, x0, #1, #6390; CHECK-NEXT:    mov x0, x191; CHECK-NEXT:    ret92bb:93  %tmp3 = shl i64 %in1, 194  %tmp4 = and i64 %in2, 195  %out = or i64 %tmp3, %tmp496  ret i64 %out97}98 99define i64 @bfi_x_1_swapped(i64 %in1, i64 %in2) {100; CHECK-LABEL: bfi_x_1_swapped:101; CHECK:       ; %bb.0: ; %bb102; CHECK-NEXT:    bfi x1, x0, #1, #63103; CHECK-NEXT:    mov x0, x1104; CHECK-NEXT:    ret105bb:106  %tmp3 = shl i64 %in1, 1107  %tmp4 = and i64 %in2, 1108  %out = or i64 %tmp4, %tmp3109  ret i64 %out110}111 112define i64 @extra_use1(i64 %in1, i64 %in2, ptr %p) {113; GISEL-LABEL: extra_use1:114; GISEL:       ; %bb.0: ; %bb115; GISEL-NEXT:    lsl x8, x0, #1116; GISEL-NEXT:    and x9, x1, #0x1117; GISEL-NEXT:    orr x0, x8, x9118; GISEL-NEXT:    str x8, [x2]119; GISEL-NEXT:    ret120;121; SDAG-LABEL: extra_use1:122; SDAG:       ; %bb.0: ; %bb123; SDAG-NEXT:    bfi x1, x0, #1, #63124; SDAG-NEXT:    lsl x8, x0, #1125; SDAG-NEXT:    mov x0, x1126; SDAG-NEXT:    str x8, [x2]127; SDAG-NEXT:    ret128bb:129  %tmp3 = shl i64 %in1, 1130  %tmp4 = and i64 %in2, 1131  %out = or i64 %tmp3, %tmp4132  store i64 %tmp3, ptr %p133  ret i64 %out134}135 136define i64 @extra_use2(i64 %in1, i64 %in2, ptr %p) {137; GISEL-LABEL: extra_use2:138; GISEL:       ; %bb.0: ; %bb139; GISEL-NEXT:    and x8, x1, #0x1140; GISEL-NEXT:    orr x0, x8, x0, lsl #1141; GISEL-NEXT:    str x8, [x2]142; GISEL-NEXT:    ret143;144; SDAG-LABEL: extra_use2:145; SDAG:       ; %bb.0: ; %bb146; SDAG-NEXT:    and x8, x1, #0x1147; SDAG-NEXT:    bfi x1, x0, #1, #63148; SDAG-NEXT:    str x8, [x2]149; SDAG-NEXT:    mov x0, x1150; SDAG-NEXT:    ret151bb:152  %tmp3 = shl i64 %in1, 1153  %tmp4 = and i64 %in2, 1154  %out = or i64 %tmp3, %tmp4155  store i64 %tmp4, ptr %p156  ret i64 %out157}158