brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.3 KiB · 1a15588 Raw
206 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -o - %s -mtriple arm64e-apple-darwin             -verify-machineinstrs \3# RUN:     -stop-after=finalize-isel -start-before=finalize-isel | FileCheck %s4# RUN: llc -o - %s -mtriple aarch64-linux-gnu -mattr=+pauth -verify-machineinstrs \5# RUN:     -stop-after=finalize-isel -start-before=finalize-isel | FileCheck %s6 7# This MIR-based test contains several test cases that are hard to implement8# via an LLVM IR input. Most other test cases are in ptrauth-isel.ll file.9 10--- |11  @globalvar = dso_local global i64 012 13  define i64 @movk_correct_blend(i64 %a, i64 %b) {14  entry:15    ret i64 016  }17 18  define i64 @movk_wrong_shift_amount(i64 %a, i64 %b) {19  entry:20    ret i64 021  }22 23  define i64 @movk_non_immediate_operand(i64 %a, i64 %b) {24  entry:25    ret i64 026  }27 28  define i64 @movi64imm_immediate_operand(i64 %a) {29  entry:30    ret i64 031  }32 33  define i64 @movi64imm_non_immediate_operand(i64 %a) {34  entry:35    ret i64 036  }37 38  define i64 @movi32imm_immediate_operand(i64 %a) {39  entry:40    ret i64 041  }42 43  define i64 @movi32imm_non_immediate_operand(i64 %a) {44  entry:45    ret i64 046  }47...48---49name:            movk_correct_blend50tracksRegLiveness: true51body:             |52  bb.0.entry:53    liveins: $x0, $x154 55    ; CHECK-LABEL: name: movk_correct_blend56    ; CHECK: liveins: $x0, $x157    ; CHECK-NEXT: {{  $}}58    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x059    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x160    ; CHECK-NEXT: [[MOVKXi:%[0-9]+]]:gpr64noip = MOVKXi [[COPY1]], 42, 4861    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64noip = COPY [[COPY1]]62    ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 42, killed [[COPY2]], implicit-def dead $x16, implicit-def dead $x1763    ; CHECK-NEXT: $x0 = COPY [[PAC]]64    ; CHECK-NEXT: RET_ReallyLR implicit $x065    %0:gpr64 = COPY $x066    %1:gpr64 = COPY $x167    %2:gpr64noip = MOVKXi %1, 42, 4868    %3:gpr64 = PAC %0, 2, 0, killed %2, implicit-def dead $x16, implicit-def dead $x1769    $x0 = COPY %370    RET_ReallyLR implicit $x071...72---73name:            movk_wrong_shift_amount74tracksRegLiveness: true75body:             |76  bb.0.entry:77    liveins: $x0, $x178 79    ; CHECK-LABEL: name: movk_wrong_shift_amount80    ; CHECK: liveins: $x0, $x181    ; CHECK-NEXT: {{  $}}82    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x083    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x184    ; CHECK-NEXT: [[MOVKXi:%[0-9]+]]:gpr64noip = MOVKXi [[COPY1]], 42, 085    ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 0, killed [[MOVKXi]], implicit-def dead $x16, implicit-def dead $x1786    ; CHECK-NEXT: $x0 = COPY [[PAC]]87    ; CHECK-NEXT: RET_ReallyLR implicit $x088    %0:gpr64 = COPY $x089    %1:gpr64 = COPY $x190    %2:gpr64noip = MOVKXi %1, 42, 091    %3:gpr64 = PAC %0, 2, 0, killed %2, implicit-def dead $x16, implicit-def dead $x1792    $x0 = COPY %393    RET_ReallyLR implicit $x094...95---96name:            movk_non_immediate_operand97tracksRegLiveness: true98body:             |99  bb.0.entry:100    liveins: $x0, $x1101 102    ; CHECK-LABEL: name: movk_non_immediate_operand103    ; CHECK: liveins: $x0, $x1104    ; CHECK-NEXT: {{  $}}105    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0106    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1107    ; CHECK-NEXT: [[MOVKXi:%[0-9]+]]:gpr64noip = MOVKXi [[COPY1]], target-flags(aarch64-pageoff, aarch64-nc) @globalvar, 48108    ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 0, killed [[MOVKXi]], implicit-def dead $x16, implicit-def dead $x17109    ; CHECK-NEXT: $x0 = COPY [[PAC]]110    ; CHECK-NEXT: RET_ReallyLR implicit $x0111    %0:gpr64 = COPY $x0112    %1:gpr64 = COPY $x1113    %2:gpr64noip = MOVKXi %1, target-flags(aarch64-pageoff, aarch64-nc) @globalvar, 48114    %3:gpr64 = PAC %0, 2, 0, killed %2, implicit-def dead $x16, implicit-def dead $x17115    $x0 = COPY %3116    RET_ReallyLR implicit $x0117...118---119name:            movi64imm_immediate_operand120tracksRegLiveness: true121body:             |122  bb.0.entry:123    liveins: $x0, $x1124 125    ; CHECK-LABEL: name: movi64imm_immediate_operand126    ; CHECK: liveins: $x0, $x1127    ; CHECK-NEXT: {{  $}}128    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0129    ; CHECK-NEXT: [[MOVi64imm:%[0-9]+]]:gpr64noip = MOVi64imm 42130    ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 42, killed $noreg, implicit-def dead $x16, implicit-def dead $x17131    ; CHECK-NEXT: $x0 = COPY [[PAC]]132    ; CHECK-NEXT: RET_ReallyLR implicit $x0133    %0:gpr64 = COPY $x0134    %1:gpr64noip = MOVi64imm 42135    %2:gpr64 = PAC %0, 2, 0, killed %1, implicit-def dead $x16, implicit-def dead $x17136    $x0 = COPY %2137    RET_ReallyLR implicit $x0138...139---140name:            movi64imm_non_immediate_operand141tracksRegLiveness: true142body:             |143  bb.0.entry:144    liveins: $x0, $x1145 146    ; CHECK-LABEL: name: movi64imm_non_immediate_operand147    ; CHECK: liveins: $x0, $x1148    ; CHECK-NEXT: {{  $}}149    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0150    ; CHECK-NEXT: [[MOVi64imm:%[0-9]+]]:gpr64noip = MOVi64imm target-flags(aarch64-pageoff, aarch64-nc) @globalvar151    ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 0, killed [[MOVi64imm]], implicit-def dead $x16, implicit-def dead $x17152    ; CHECK-NEXT: $x0 = COPY [[PAC]]153    ; CHECK-NEXT: RET_ReallyLR implicit $x0154    %0:gpr64 = COPY $x0155    %1:gpr64noip = MOVi64imm target-flags(aarch64-pageoff, aarch64-nc) @globalvar156    %2:gpr64 = PAC %0, 2, 0, killed %1, implicit-def dead $x16, implicit-def dead $x17157    $x0 = COPY %2158    RET_ReallyLR implicit $x0159...160---161name:            movi32imm_immediate_operand162tracksRegLiveness: true163body:             |164  bb.0.entry:165    liveins: $x0, $x1166 167    ; CHECK-LABEL: name: movi32imm_immediate_operand168    ; CHECK: liveins: $x0, $x1169    ; CHECK-NEXT: {{  $}}170    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0171    ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 42172    ; CHECK-NEXT: [[SUBREG_TO_REG:%[0-9]+]]:gpr64noip = SUBREG_TO_REG 0, killed [[MOVi32imm]], %subreg.sub_32173    ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 42, killed $noreg, implicit-def dead $x16, implicit-def dead $x17174    ; CHECK-NEXT: $x0 = COPY [[PAC]]175    ; CHECK-NEXT: RET_ReallyLR implicit $x0176    %0:gpr64 = COPY $x0177    %1:gpr32 = MOVi32imm 42178    %2:gpr64noip = SUBREG_TO_REG 0, killed %1, %subreg.sub_32179    %3:gpr64 = PAC %0, 2, 0, killed %2, implicit-def dead $x16, implicit-def dead $x17180    $x0 = COPY %3181    RET_ReallyLR implicit $x0182...183---184name:            movi32imm_non_immediate_operand185tracksRegLiveness: true186body:             |187  bb.0.entry:188    liveins: $x0, $x1189 190    ; CHECK-LABEL: name: movi32imm_non_immediate_operand191    ; CHECK: liveins: $x0, $x1192    ; CHECK-NEXT: {{  $}}193    ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0194    ; CHECK-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm target-flags(aarch64-pageoff, aarch64-nc) @globalvar195    ; CHECK-NEXT: [[SUBREG_TO_REG:%[0-9]+]]:gpr64noip = SUBREG_TO_REG 0, killed [[MOVi32imm]], %subreg.sub_32196    ; CHECK-NEXT: [[PAC:%[0-9]+]]:gpr64 = PAC [[COPY]], 2, 0, killed [[SUBREG_TO_REG]], implicit-def dead $x16, implicit-def dead $x17197    ; CHECK-NEXT: $x0 = COPY [[PAC]]198    ; CHECK-NEXT: RET_ReallyLR implicit $x0199    %0:gpr64 = COPY $x0200    %1:gpr32 = MOVi32imm target-flags(aarch64-pageoff, aarch64-nc) @globalvar201    %2:gpr64noip = SUBREG_TO_REG 0, killed %1, %subreg.sub_32202    %3:gpr64 = PAC %0, 2, 0, killed %2, implicit-def dead $x16, implicit-def dead $x17203    $x0 = COPY %3204    RET_ReallyLR implicit $x0205...206