brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · c9cbb32 Raw
137 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-linux-gnu -global-isel -verify-machineinstrs < %s -o - | FileCheck %s --check-prefix=X64_GISEL3; RUN: llc -mtriple=x86_64-linux-gnu              -verify-machineinstrs < %s -o - | FileCheck %s --check-prefix=X644 5define ptr @test_gep_i8(ptr%arr, i8 %ind) {6; X64_GISEL-LABEL: test_gep_i8:7; X64_GISEL:       # %bb.0:8; X64_GISEL-NEXT:    # kill: def $esi killed $esi def $rsi9; X64_GISEL-NEXT:    shlq $56, %rsi10; X64_GISEL-NEXT:    sarq $56, %rsi11; X64_GISEL-NEXT:    imulq $4, %rsi, %rax12; X64_GISEL-NEXT:    addq %rdi, %rax13; X64_GISEL-NEXT:    retq14;15; X64-LABEL: test_gep_i8:16; X64:       # %bb.0:17; X64-NEXT:    # kill: def $esi killed $esi def $rsi18; X64-NEXT:    movsbq %sil, %rax19; X64-NEXT:    leaq (%rdi,%rax,4), %rax20; X64-NEXT:    retq21  %arrayidx = getelementptr i32, ptr %arr, i8 %ind22  ret ptr %arrayidx23}24 25define ptr @test_gep_i8_const(ptr%arr) {26; X64_GISEL-LABEL: test_gep_i8_const:27; X64_GISEL:       # %bb.0:28; X64_GISEL-NEXT:    movl $80, %eax29; X64_GISEL-NEXT:    addq %rdi, %rax30; X64_GISEL-NEXT:    retq31;32; X64-LABEL: test_gep_i8_const:33; X64:       # %bb.0:34; X64-NEXT:    leaq 80(%rdi), %rax35; X64-NEXT:    retq36  %arrayidx = getelementptr i32, ptr %arr, i8 2037  ret ptr %arrayidx38}39 40define ptr @test_gep_i16(ptr%arr, i16 %ind) {41; X64_GISEL-LABEL: test_gep_i16:42; X64_GISEL:       # %bb.0:43; X64_GISEL-NEXT:    # kill: def $esi killed $esi def $rsi44; X64_GISEL-NEXT:    shlq $48, %rsi45; X64_GISEL-NEXT:    sarq $48, %rsi46; X64_GISEL-NEXT:    imulq $4, %rsi, %rax47; X64_GISEL-NEXT:    addq %rdi, %rax48; X64_GISEL-NEXT:    retq49;50; X64-LABEL: test_gep_i16:51; X64:       # %bb.0:52; X64-NEXT:    # kill: def $esi killed $esi def $rsi53; X64-NEXT:    movswq %si, %rax54; X64-NEXT:    leaq (%rdi,%rax,4), %rax55; X64-NEXT:    retq56  %arrayidx = getelementptr i32, ptr %arr, i16 %ind57  ret ptr %arrayidx58}59 60define ptr @test_gep_i16_const(ptr%arr) {61; X64_GISEL-LABEL: test_gep_i16_const:62; X64_GISEL:       # %bb.0:63; X64_GISEL-NEXT:    movl $80, %eax64; X64_GISEL-NEXT:    addq %rdi, %rax65; X64_GISEL-NEXT:    retq66;67; X64-LABEL: test_gep_i16_const:68; X64:       # %bb.0:69; X64-NEXT:    leaq 80(%rdi), %rax70; X64-NEXT:    retq71  %arrayidx = getelementptr i32, ptr %arr, i16 2072  ret ptr %arrayidx73}74 75define ptr @test_gep_i32(ptr%arr, i32 %ind) {76; X64_GISEL-LABEL: test_gep_i32:77; X64_GISEL:       # %bb.0:78; X64_GISEL-NEXT:    movslq %esi, %rax79; X64_GISEL-NEXT:    imulq $4, %rax, %rax80; X64_GISEL-NEXT:    addq %rdi, %rax81; X64_GISEL-NEXT:    retq82;83; X64-LABEL: test_gep_i32:84; X64:       # %bb.0:85; X64-NEXT:    movslq %esi, %rax86; X64-NEXT:    leaq (%rdi,%rax,4), %rax87; X64-NEXT:    retq88  %arrayidx = getelementptr i32, ptr %arr, i32 %ind89  ret ptr %arrayidx90}91 92define ptr @test_gep_i32_const(ptr%arr) {93; X64_GISEL-LABEL: test_gep_i32_const:94; X64_GISEL:       # %bb.0:95; X64_GISEL-NEXT:    movl $20, %eax96; X64_GISEL-NEXT:    addq %rdi, %rax97; X64_GISEL-NEXT:    retq98;99; X64-LABEL: test_gep_i32_const:100; X64:       # %bb.0:101; X64-NEXT:    leaq 20(%rdi), %rax102; X64-NEXT:    retq103  %arrayidx = getelementptr i32, ptr %arr, i32 5104  ret ptr %arrayidx105}106 107define ptr @test_gep_i64(ptr%arr, i64 %ind) {108; X64_GISEL-LABEL: test_gep_i64:109; X64_GISEL:       # %bb.0:110; X64_GISEL-NEXT:    imulq $4, %rsi, %rax111; X64_GISEL-NEXT:    addq %rdi, %rax112; X64_GISEL-NEXT:    retq113;114; X64-LABEL: test_gep_i64:115; X64:       # %bb.0:116; X64-NEXT:    leaq (%rdi,%rsi,4), %rax117; X64-NEXT:    retq118  %arrayidx = getelementptr i32, ptr %arr, i64 %ind119  ret ptr %arrayidx120}121 122define ptr @test_gep_i64_const(ptr%arr) {123; X64_GISEL-LABEL: test_gep_i64_const:124; X64_GISEL:       # %bb.0:125; X64_GISEL-NEXT:    movl $20, %eax126; X64_GISEL-NEXT:    addq %rdi, %rax127; X64_GISEL-NEXT:    retq128;129; X64-LABEL: test_gep_i64_const:130; X64:       # %bb.0:131; X64-NEXT:    leaq 20(%rdi), %rax132; X64-NEXT:    retq133  %arrayidx = getelementptr i32, ptr %arr, i64 5134  ret ptr %arrayidx135}136 137