brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 27eaf13 Raw
82 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -fast-isel < %s | FileCheck -check-prefixes=CHECK,FASTISEL %s3; RUN: llc < %s | FileCheck -check-prefixes=CHECK,SDAG %s4 5target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"6target triple = "x86_64-unknown-windows-msvc"7 8define void @issue56055(ptr addrspace(270) %ptr, ptr %out) {9; CHECK-LABEL: issue56055:10; CHECK:       # %bb.0:11; CHECK-NEXT:    addl $2, %ecx12; CHECK-NEXT:    movl %ecx, (%rdx)13; CHECK-NEXT:    retq14  %add.ptr = getelementptr inbounds i8, ptr addrspace(270) %ptr, i32 215  store ptr addrspace(270) %add.ptr, ptr %out16  ret void17}18 19define void @issue56055_vector(<2 x ptr addrspace(270)> %ptr, ptr %out) {20; CHECK-LABEL: issue56055_vector:21; CHECK:       # %bb.0:22; CHECK-NEXT:    movdqa (%rcx), %xmm023; CHECK-NEXT:    paddd __xmm@00000000000000000000000200000002(%rip), %xmm024; CHECK-NEXT:    movq %xmm0, (%rdx)25; CHECK-NEXT:    retq26  %add.ptr = getelementptr inbounds i8, <2 x ptr addrspace(270)> %ptr, <2 x i32> <i32 2, i32 2>27  store <2 x ptr addrspace(270)> %add.ptr, ptr %out28  ret void29}30 31define void @issue56055_small_idx(ptr addrspace(270) %ptr, ptr %out, i16 %idx) {32; CHECK-LABEL: issue56055_small_idx:33; CHECK:       # %bb.0:34; CHECK-NEXT:    movswl %r8w, %eax35; CHECK-NEXT:    addl %ecx, %eax36; CHECK-NEXT:    movl %eax, (%rdx)37; CHECK-NEXT:    retq38  %add.ptr = getelementptr inbounds i8, ptr addrspace(270) %ptr, i16 %idx39  store ptr addrspace(270) %add.ptr, ptr %out40  ret void41}42 43define void @issue56055_small_idx_vector(<2 x ptr addrspace(270)> %ptr, ptr %out, <2 x i16> %idx) {44; CHECK-LABEL: issue56055_small_idx_vector:45; CHECK:       # %bb.0:46; CHECK-NEXT:    pshuflw {{.*#+}} xmm0 = mem[0,0,2,1,4,5,6,7]47; CHECK-NEXT:    psrad $16, %xmm048; CHECK-NEXT:    paddd (%rcx), %xmm049; CHECK-NEXT:    movq %xmm0, (%rdx)50; CHECK-NEXT:    retq51  %add.ptr = getelementptr inbounds i8, <2 x ptr addrspace(270)> %ptr, <2 x i16> %idx52  store <2 x ptr addrspace(270)> %add.ptr, ptr %out53  ret void54}55 56define void @issue56055_large_idx(ptr addrspace(270) %ptr, ptr %out, i64 %idx) {57; CHECK-LABEL: issue56055_large_idx:58; CHECK:       # %bb.0:59; CHECK-NEXT:    addl %ecx, %r8d60; CHECK-NEXT:    movl %r8d, (%rdx)61; CHECK-NEXT:    retq62  %add.ptr = getelementptr inbounds i8, ptr addrspace(270) %ptr, i64 %idx63  store ptr addrspace(270) %add.ptr, ptr %out64  ret void65}66 67define void @issue56055_large_idx_vector(<2 x ptr addrspace(270)> %ptr, ptr %out, <2 x i64> %idx) {68; CHECK-LABEL: issue56055_large_idx_vector:69; CHECK:       # %bb.0:70; CHECK-NEXT:    pshufd {{.*#+}} xmm0 = mem[0,2,2,3]71; CHECK-NEXT:    paddd (%rcx), %xmm072; CHECK-NEXT:    movq %xmm0, (%rdx)73; CHECK-NEXT:    retq74  %add.ptr = getelementptr inbounds i8, <2 x ptr addrspace(270)> %ptr, <2 x i64> %idx75  store <2 x ptr addrspace(270)> %add.ptr, ptr %out76  ret void77}78 79;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:80; FASTISEL: {{.*}}81; SDAG: {{.*}}82