brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · d2e06d6 Raw
151 lines · plain
1# RUN: llc -verify-machineinstrs -mtriple=aarch64-none-linux-gnu \2# RUN:     -start-before aarch64-sls-hardening -o - %s \3# RUN:     -mattr=+pauth,+harden-sls-retbr \4# RUN:   | FileCheck %s --check-prefixes=CHECK,ISBDSB5# RUN: llc -verify-machineinstrs -mtriple=aarch64-none-linux-gnu \6# RUN:     -start-before aarch64-sls-hardening -o - %s \7# RUN:     -mattr=+pauth,+harden-sls-retbr -mattr=+sb \8# RUN:   | FileCheck %s --check-prefixes=CHECK,SB9 10# Check that the SLS hardening pass also protects BRA* indirect branches that11# llvm currently does not generate.12--- |13  @ptr_aa = private unnamed_addr constant [2 x ptr] [ptr blockaddress(@br_aa, %return), ptr blockaddress(@br_aa, %l2)], align 814  @ptr_aaz = private unnamed_addr constant [2 x ptr] [ptr blockaddress(@br_aaz, %return), ptr blockaddress(@br_aaz, %l2)], align 815  @ptr_ab = private unnamed_addr constant [2 x ptr] [ptr blockaddress(@br_ab, %return), ptr blockaddress(@br_ab, %l2)], align 816  @ptr_abz = private unnamed_addr constant [2 x ptr] [ptr blockaddress(@br_abz, %return), ptr blockaddress(@br_abz, %l2)], align 817 18  define dso_local i32 @br_aa(i32 %a, i32 %b, i32 %i) {19  entry:20    br label %l221  l2:22    br label %return23  return:24    ret i32 undef25  }26  define dso_local i32 @br_aaz(i32 %a, i32 %b, i32 %i) {27  entry:28    br label %l229  l2:30    br label %return31  return:32    ret i32 undef33  }34  define dso_local i32 @br_ab(i32 %a, i32 %b, i32 %i) {35  entry:36    br label %l237  l2:38    br label %return39  return:40    ret i32 undef41  }42  define dso_local i32 @br_abz(i32 %a, i32 %b, i32 %i) {43  entry:44    br label %l245  l2:46    br label %return47  return:48    ret i32 undef49  }50...51---52name:            br_aa53tracksRegLiveness: true54body:             |55  ; CHECK-LABEL: br_aa:56  bb.0.entry:57    successors: %bb.2, %bb.158    liveins: $w259    $x8 = ADRP target-flags(aarch64-page) @ptr_aa60    renamable $x8 = ADDXri $x8, target-flags(aarch64-pageoff, aarch64-nc) @ptr_aa, 061    renamable $x8 = LDRXroW killed renamable $x8, killed renamable $w2, 1, 162    BRAA killed renamable $x8, $sp63  ; CHECK:       braa x8, sp64  ; ISBDSB-NEXT: dsb sy65  ; ISBDSB-NEXT: isb66  ; SB-NEXT:     {{ sb$}}67 68  bb.1.l2 (ir-block-address-taken %ir-block.l2):69    renamable $w0 = MOVZWi 1, 070    RET undef $lr, implicit $w071 72  bb.2.return (ir-block-address-taken %ir-block.return):73    $w0 = ORRWrs $wzr, $wzr, 074    RET undef $lr, implicit $w075...76---77name:            br_aaz78tracksRegLiveness: true79body:             |80  ; CHECK-LABEL: br_aaz:81  bb.0.entry:82    successors: %bb.2, %bb.183    liveins: $w284    $x8 = ADRP target-flags(aarch64-page) @ptr_aaz85    renamable $x8 = ADDXri $x8, target-flags(aarch64-pageoff, aarch64-nc) @ptr_aaz, 086    renamable $x8 = LDRXroW killed renamable $x8, killed renamable $w2, 1, 187    BRAAZ killed renamable $x888  ; CHECK:       braaz x889  ; ISBDSB-NEXT: dsb sy90  ; ISBDSB-NEXT: isb91  ; SB-NEXT:     {{ sb$}}92 93  bb.1.l2 (ir-block-address-taken %ir-block.l2):94    renamable $w0 = MOVZWi 1, 095    RET undef $lr, implicit $w096 97  bb.2.return (ir-block-address-taken %ir-block.return):98    $w0 = ORRWrs $wzr, $wzr, 099    RET undef $lr, implicit $w0100...101---102name:            br_ab103tracksRegLiveness: true104body:             |105  ; CHECK-LABEL: br_ab:106  bb.0.entry:107    successors: %bb.2, %bb.1108    liveins: $w2109    $x8 = ADRP target-flags(aarch64-page) @ptr_ab110    renamable $x8 = ADDXri $x8, target-flags(aarch64-pageoff, aarch64-nc) @ptr_ab, 0111    renamable $x8 = LDRXroW killed renamable $x8, killed renamable $w2, 1, 1112    BRAA killed renamable $x8, $sp113  ; CHECK:       braa x8, sp114  ; ISBDSB-NEXT: dsb sy115  ; ISBDSB-NEXT: isb116  ; SB-NEXT:     {{ sb$}}117 118  bb.1.l2 (ir-block-address-taken %ir-block.l2):119    renamable $w0 = MOVZWi 1, 0120    RET undef $lr, implicit $w0121 122  bb.2.return (ir-block-address-taken %ir-block.return):123    $w0 = ORRWrs $wzr, $wzr, 0124    RET undef $lr, implicit $w0125...126---127name:            br_abz128tracksRegLiveness: true129body:             |130  ; CHECK-LABEL: br_abz:131  bb.0.entry:132    successors: %bb.2, %bb.1133    liveins: $w2134    $x8 = ADRP target-flags(aarch64-page) @ptr_abz135    renamable $x8 = ADDXri $x8, target-flags(aarch64-pageoff, aarch64-nc) @ptr_abz, 0136    renamable $x8 = LDRXroW killed renamable $x8, killed renamable $w2, 1, 1137    BRAAZ killed renamable $x8138  ; CHECK:       braaz x8139  ; ISBDSB-NEXT: dsb sy140  ; ISBDSB-NEXT: isb141  ; SB-NEXT:     {{ sb$}}142 143  bb.1.l2 (ir-block-address-taken %ir-block.l2):144    renamable $w0 = MOVZWi 1, 0145    RET undef $lr, implicit $w0146 147  bb.2.return (ir-block-address-taken %ir-block.return):148    $w0 = ORRWrs $wzr, $wzr, 0149    RET undef $lr, implicit $w0150...151