brintos

brintos / llvm-project-archived public Read only

0
0
Text · 12.4 KiB · 322c38d Raw
165 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals all --version 52; REQUIRES: x86-registered-target3; REQUIRES: aarch64-registered-target4; RUN: opt < %s -passes=rel-lookup-table-converter -relocation-model=pic -mtriple=x86_64-apple-darwin -S | FileCheck -check-prefix=x86_64-apple-darwin %s5; RUN: opt < %s -passes=rel-lookup-table-converter -relocation-model=pic -mtriple=aarch64 -S | FileCheck -check-prefix=aarch64 %s6; RUN: opt < %s -passes=rel-lookup-table-converter -relocation-model=pic -mtriple=x86_64 -S | FileCheck -check-prefix=x86_64 %s7 8@a0 = private unnamed_addr constant i32 09@a1 = private unnamed_addr constant i32 110@a2 = private unnamed_addr constant i32 211@load_relative_1.table = private unnamed_addr constant [3 x ptr] [ptr @a0, ptr @a1, ptr @a2]12 13@x0 = internal unnamed_addr constant i64 014@x1 = internal unnamed_addr constant i64 115@x2 = internal unnamed_addr constant i64 216@x3 = internal unnamed_addr constant i64 317@y0 = internal unnamed_addr constant ptr @x318@y1 = internal unnamed_addr constant ptr @x219@y2 = internal unnamed_addr constant ptr @x120@y3 = internal unnamed_addr constant ptr @x021@load_relative_2.table = private unnamed_addr constant [4 x ptr] [ptr @y3, ptr @y2, ptr @y1, ptr @y0]22 23@b0 = private unnamed_addr constant [8 x i8] c"00000000"24@b1 = private unnamed_addr constant [8 x i8] c"11111111"25@b2 = private unnamed_addr constant [8 x i8] c"22222222"26@load_relative_3.table = private unnamed_addr constant [3 x ptr] [27  ptr getelementptr inbounds (i8, ptr @b0, i64 8),28  ptr getelementptr inbounds (i8, ptr @b1, i64 8),29  ptr getelementptr inbounds (i8, ptr @b2, i64 8)]30 31;.32; x86_64-apple-darwin: @a0 = private constant i32 033; x86_64-apple-darwin: @a1 = private constant i32 134; x86_64-apple-darwin: @a2 = private constant i32 235; x86_64-apple-darwin: @load_relative_1.table.rel = private unnamed_addr constant [3 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @a0 to i64), i64 ptrtoint (ptr @load_relative_1.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @a1 to i64), i64 ptrtoint (ptr @load_relative_1.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @a2 to i64), i64 ptrtoint (ptr @load_relative_1.table.rel to i64)) to i32)], align 436; x86_64-apple-darwin: @x0 = internal unnamed_addr constant i64 037; x86_64-apple-darwin: @x1 = internal unnamed_addr constant i64 138; x86_64-apple-darwin: @x2 = internal unnamed_addr constant i64 239; x86_64-apple-darwin: @x3 = internal unnamed_addr constant i64 340; x86_64-apple-darwin: @y0 = internal constant ptr @x341; x86_64-apple-darwin: @y1 = internal constant ptr @x242; x86_64-apple-darwin: @y2 = internal constant ptr @x143; x86_64-apple-darwin: @y3 = internal constant ptr @x044; x86_64-apple-darwin: @load_relative_2.table.rel = private unnamed_addr constant [4 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @y3 to i64), i64 ptrtoint (ptr @load_relative_2.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @y2 to i64), i64 ptrtoint (ptr @load_relative_2.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @y1 to i64), i64 ptrtoint (ptr @load_relative_2.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @y0 to i64), i64 ptrtoint (ptr @load_relative_2.table.rel to i64)) to i32)], align 445; x86_64-apple-darwin: @b0 = private constant [8 x i8] c"00000000"46; x86_64-apple-darwin: @b1 = private constant [8 x i8] c"11111111"47; x86_64-apple-darwin: @b2 = private constant [8 x i8] c"22222222"48; x86_64-apple-darwin: @load_relative_3.table.rel = private unnamed_addr constant [3 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @b0, i64 8) to i64), i64 ptrtoint (ptr @load_relative_3.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @b1, i64 8) to i64), i64 ptrtoint (ptr @load_relative_3.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @b2, i64 8) to i64), i64 ptrtoint (ptr @load_relative_3.table.rel to i64)) to i32)], align 449;.50; aarch64: @a0 = private constant i32 051; aarch64: @a1 = private constant i32 152; aarch64: @a2 = private constant i32 253; aarch64: @load_relative_1.table.rel = private unnamed_addr constant [3 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @a0 to i64), i64 ptrtoint (ptr @load_relative_1.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @a1 to i64), i64 ptrtoint (ptr @load_relative_1.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @a2 to i64), i64 ptrtoint (ptr @load_relative_1.table.rel to i64)) to i32)], align 454; aarch64: @x0 = internal unnamed_addr constant i64 055; aarch64: @x1 = internal unnamed_addr constant i64 156; aarch64: @x2 = internal unnamed_addr constant i64 257; aarch64: @x3 = internal unnamed_addr constant i64 358; aarch64: @y0 = internal constant ptr @x359; aarch64: @y1 = internal constant ptr @x260; aarch64: @y2 = internal constant ptr @x161; aarch64: @y3 = internal constant ptr @x062; aarch64: @load_relative_2.table.rel = private unnamed_addr constant [4 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @y3 to i64), i64 ptrtoint (ptr @load_relative_2.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @y2 to i64), i64 ptrtoint (ptr @load_relative_2.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @y1 to i64), i64 ptrtoint (ptr @load_relative_2.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @y0 to i64), i64 ptrtoint (ptr @load_relative_2.table.rel to i64)) to i32)], align 463; aarch64: @b0 = private constant [8 x i8] c"00000000"64; aarch64: @b1 = private constant [8 x i8] c"11111111"65; aarch64: @b2 = private constant [8 x i8] c"22222222"66; aarch64: @load_relative_3.table.rel = private unnamed_addr constant [3 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @b0, i64 8) to i64), i64 ptrtoint (ptr @load_relative_3.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @b1, i64 8) to i64), i64 ptrtoint (ptr @load_relative_3.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @b2, i64 8) to i64), i64 ptrtoint (ptr @load_relative_3.table.rel to i64)) to i32)], align 467;.68; x86_64: @a0 = private unnamed_addr constant i32 069; x86_64: @a1 = private unnamed_addr constant i32 170; x86_64: @a2 = private unnamed_addr constant i32 271; x86_64: @load_relative_1.table.rel = private unnamed_addr constant [3 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @a0 to i64), i64 ptrtoint (ptr @load_relative_1.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @a1 to i64), i64 ptrtoint (ptr @load_relative_1.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @a2 to i64), i64 ptrtoint (ptr @load_relative_1.table.rel to i64)) to i32)], align 472; x86_64: @x0 = internal unnamed_addr constant i64 073; x86_64: @x1 = internal unnamed_addr constant i64 174; x86_64: @x2 = internal unnamed_addr constant i64 275; x86_64: @x3 = internal unnamed_addr constant i64 376; x86_64: @y0 = internal unnamed_addr constant ptr @x377; x86_64: @y1 = internal unnamed_addr constant ptr @x278; x86_64: @y2 = internal unnamed_addr constant ptr @x179; x86_64: @y3 = internal unnamed_addr constant ptr @x080; x86_64: @load_relative_2.table.rel = private unnamed_addr constant [4 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr @y3 to i64), i64 ptrtoint (ptr @load_relative_2.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @y2 to i64), i64 ptrtoint (ptr @load_relative_2.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @y1 to i64), i64 ptrtoint (ptr @load_relative_2.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr @y0 to i64), i64 ptrtoint (ptr @load_relative_2.table.rel to i64)) to i32)], align 481; x86_64: @b0 = private unnamed_addr constant [8 x i8] c"00000000"82; x86_64: @b1 = private unnamed_addr constant [8 x i8] c"11111111"83; x86_64: @b2 = private unnamed_addr constant [8 x i8] c"22222222"84; x86_64: @load_relative_3.table.rel = private unnamed_addr constant [3 x i32] [i32 trunc (i64 sub (i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @b0, i64 8) to i64), i64 ptrtoint (ptr @load_relative_3.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @b1, i64 8) to i64), i64 ptrtoint (ptr @load_relative_3.table.rel to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr getelementptr inbounds (i8, ptr @b2, i64 8) to i64), i64 ptrtoint (ptr @load_relative_3.table.rel to i64)) to i32)], align 485;.86define ptr @load_relative_1(i64 %offset) {87; x86_64-apple-darwin-LABEL: define ptr @load_relative_1(88; x86_64-apple-darwin-SAME: i64 [[OFFSET:%.*]]) {89; x86_64-apple-darwin-NEXT:    [[RELTABLE_SHIFT:%.*]] = shl i64 [[OFFSET]], 290; x86_64-apple-darwin-NEXT:    [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i64(ptr @load_relative_1.table.rel, i64 [[RELTABLE_SHIFT]])91; x86_64-apple-darwin-NEXT:    ret ptr [[RELTABLE_INTRINSIC]]92;93; aarch64-LABEL: define ptr @load_relative_1(94; aarch64-SAME: i64 [[OFFSET:%.*]]) {95; aarch64-NEXT:    [[RELTABLE_SHIFT:%.*]] = shl i64 [[OFFSET]], 296; aarch64-NEXT:    [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i64(ptr @load_relative_1.table.rel, i64 [[RELTABLE_SHIFT]])97; aarch64-NEXT:    ret ptr [[RELTABLE_INTRINSIC]]98;99; x86_64-LABEL: define ptr @load_relative_1(100; x86_64-SAME: i64 [[OFFSET:%.*]]) {101; x86_64-NEXT:    [[RELTABLE_SHIFT:%.*]] = shl i64 [[OFFSET]], 2102; x86_64-NEXT:    [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i64(ptr @load_relative_1.table.rel, i64 [[RELTABLE_SHIFT]])103; x86_64-NEXT:    ret ptr [[RELTABLE_INTRINSIC]]104;105  %gep = getelementptr inbounds [3 x ptr], ptr @load_relative_1.table, i64 0, i64 %offset106  %load = load ptr, ptr %gep107  ret ptr %load108}109 110define ptr @load_relative_2(i64 %offset) {111; x86_64-apple-darwin-LABEL: define ptr @load_relative_2(112; x86_64-apple-darwin-SAME: i64 [[OFFSET:%.*]]) {113; x86_64-apple-darwin-NEXT:    [[RELTABLE_SHIFT:%.*]] = shl i64 [[OFFSET]], 2114; x86_64-apple-darwin-NEXT:    [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i64(ptr @load_relative_2.table.rel, i64 [[RELTABLE_SHIFT]])115; x86_64-apple-darwin-NEXT:    ret ptr [[RELTABLE_INTRINSIC]]116;117; aarch64-LABEL: define ptr @load_relative_2(118; aarch64-SAME: i64 [[OFFSET:%.*]]) {119; aarch64-NEXT:    [[RELTABLE_SHIFT:%.*]] = shl i64 [[OFFSET]], 2120; aarch64-NEXT:    [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i64(ptr @load_relative_2.table.rel, i64 [[RELTABLE_SHIFT]])121; aarch64-NEXT:    ret ptr [[RELTABLE_INTRINSIC]]122;123; x86_64-LABEL: define ptr @load_relative_2(124; x86_64-SAME: i64 [[OFFSET:%.*]]) {125; x86_64-NEXT:    [[RELTABLE_SHIFT:%.*]] = shl i64 [[OFFSET]], 2126; x86_64-NEXT:    [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i64(ptr @load_relative_2.table.rel, i64 [[RELTABLE_SHIFT]])127; x86_64-NEXT:    ret ptr [[RELTABLE_INTRINSIC]]128;129  %gep = getelementptr inbounds [4 x ptr], ptr @load_relative_2.table, i64 0, i64 %offset130  %load = load ptr, ptr %gep131  ret ptr %load132}133 134define ptr @load_relative_3(i64 %offset) {135; x86_64-apple-darwin-LABEL: define ptr @load_relative_3(136; x86_64-apple-darwin-SAME: i64 [[OFFSET:%.*]]) {137; x86_64-apple-darwin-NEXT:    [[RELTABLE_SHIFT:%.*]] = shl i64 [[OFFSET]], 2138; x86_64-apple-darwin-NEXT:    [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i64(ptr @load_relative_3.table.rel, i64 [[RELTABLE_SHIFT]])139; x86_64-apple-darwin-NEXT:    ret ptr [[RELTABLE_INTRINSIC]]140;141; aarch64-LABEL: define ptr @load_relative_3(142; aarch64-SAME: i64 [[OFFSET:%.*]]) {143; aarch64-NEXT:    [[RELTABLE_SHIFT:%.*]] = shl i64 [[OFFSET]], 2144; aarch64-NEXT:    [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i64(ptr @load_relative_3.table.rel, i64 [[RELTABLE_SHIFT]])145; aarch64-NEXT:    ret ptr [[RELTABLE_INTRINSIC]]146;147; x86_64-LABEL: define ptr @load_relative_3(148; x86_64-SAME: i64 [[OFFSET:%.*]]) {149; x86_64-NEXT:    [[RELTABLE_SHIFT:%.*]] = shl i64 [[OFFSET]], 2150; x86_64-NEXT:    [[RELTABLE_INTRINSIC:%.*]] = call ptr @llvm.load.relative.i64(ptr @load_relative_3.table.rel, i64 [[RELTABLE_SHIFT]])151; x86_64-NEXT:    ret ptr [[RELTABLE_INTRINSIC]]152;153  %gep = getelementptr inbounds [3 x ptr], ptr @load_relative_3.table, i64 0, i64 %offset154  %load = load ptr, ptr %gep155  ret ptr %load156}157 158;.159; x86_64-apple-darwin: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }160;.161; aarch64: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }162;.163; x86_64: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(argmem: read) }164;.165