brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.3 KiB · ce3aaca Raw
271 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin19.6.0 | FileCheck %s --check-prefix=SSE23; RUN: llc < %s -mtriple=x86_64-apple-darwin19.6.0 -mattr=avx | FileCheck %s --check-prefix=AVX4; RUN: llc < %s -mtriple=x86_64-apple-darwin19.6.0 -mattr=avx512f | FileCheck %s --check-prefix=AVX5 6define void @a(ptr %arg, i32 %arg1) {7; SSE2-LABEL: a:8; SSE2:       ## %bb.0: ## %bb9; SSE2-NEXT:    testl %esi, %esi10; SSE2-NEXT:    jle LBB0_311; SSE2-NEXT:  ## %bb.1: ## %bb212; SSE2-NEXT:    movl %esi, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill13; SSE2-NEXT:    movl %esi, %eax14; SSE2-NEXT:    .p2align 415; SSE2-NEXT:  LBB0_2: ## %bb616; SSE2-NEXT:    ## =>This Inner Loop Header: Depth=117; SSE2-NEXT:    ## InlineAsm Start18; SSE2-NEXT:    ## InlineAsm End19; SSE2-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero20; SSE2-NEXT:    addss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 4-byte Folded Reload21; SSE2-NEXT:    movss %xmm0, (%rdi)22; SSE2-NEXT:    addq $4, %rdi23; SSE2-NEXT:    decq %rax24; SSE2-NEXT:    jne LBB0_225; SSE2-NEXT:  LBB0_3: ## %bb526; SSE2-NEXT:    retq27;28; AVX-LABEL: a:29; AVX:       ## %bb.0: ## %bb30; AVX-NEXT:    testl %esi, %esi31; AVX-NEXT:    jle LBB0_332; AVX-NEXT:  ## %bb.1: ## %bb233; AVX-NEXT:    movl %esi, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill34; AVX-NEXT:    movl %esi, %eax35; AVX-NEXT:    .p2align 436; AVX-NEXT:  LBB0_2: ## %bb637; AVX-NEXT:    ## =>This Inner Loop Header: Depth=138; AVX-NEXT:    ## InlineAsm Start39; AVX-NEXT:    ## InlineAsm End40; AVX-NEXT:    vmovss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 4-byte Reload41; AVX-NEXT:    ## xmm0 = mem[0],zero,zero,zero42; AVX-NEXT:    vaddss (%rdi), %xmm0, %xmm043; AVX-NEXT:    vmovss %xmm0, (%rdi)44; AVX-NEXT:    addq $4, %rdi45; AVX-NEXT:    decq %rax46; AVX-NEXT:    jne LBB0_247; AVX-NEXT:  LBB0_3: ## %bb548; AVX-NEXT:    retq49bb:50  %i = icmp sgt i32 %arg1, 051  br i1 %i, label %bb2, label %bb552 53bb2:                                              ; preds = %bb54  %i3 = bitcast i32 %arg1 to float55  %i4 = zext i32 %arg1 to i6456  br label %bb657 58bb5:                                              ; preds = %bb6, %bb59  ret void60 61bb6:                                              ; preds = %bb6, %bb262  %i7 = phi i64 [ 0, %bb2 ], [ %i11, %bb6 ]63  tail call void asm sideeffect "", "~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{dirflag},~{fpsr},~{flags}"()64  %i8 = getelementptr inbounds float, ptr %arg, i64 %i765  %i9 = load float, ptr %i8, align 466  %i10 = fadd float %i9, %i367  store float %i10, ptr %i8, align 468  %i11 = add nuw nsw i64 %i7, 169  %i12 = icmp eq i64 %i11, %i470  br i1 %i12, label %bb5, label %bb671}72 73define void @b(ptr %arg, i64 %arg1) {74; SSE2-LABEL: b:75; SSE2:       ## %bb.0: ## %bb76; SSE2-NEXT:    testq %rsi, %rsi77; SSE2-NEXT:    jle LBB1_378; SSE2-NEXT:  ## %bb.1: ## %bb279; SSE2-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill80; SSE2-NEXT:    .p2align 481; SSE2-NEXT:  LBB1_2: ## %bb682; SSE2-NEXT:    ## =>This Inner Loop Header: Depth=183; SSE2-NEXT:    ## InlineAsm Start84; SSE2-NEXT:    ## InlineAsm End85; SSE2-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero86; SSE2-NEXT:    addsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 8-byte Folded Reload87; SSE2-NEXT:    movsd %xmm0, (%rdi)88; SSE2-NEXT:    addq $8, %rdi89; SSE2-NEXT:    decq %rsi90; SSE2-NEXT:    jne LBB1_291; SSE2-NEXT:  LBB1_3: ## %bb592; SSE2-NEXT:    retq93;94; AVX-LABEL: b:95; AVX:       ## %bb.0: ## %bb96; AVX-NEXT:    testq %rsi, %rsi97; AVX-NEXT:    jle LBB1_398; AVX-NEXT:  ## %bb.1: ## %bb299; AVX-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill100; AVX-NEXT:    .p2align 4101; AVX-NEXT:  LBB1_2: ## %bb6102; AVX-NEXT:    ## =>This Inner Loop Header: Depth=1103; AVX-NEXT:    ## InlineAsm Start104; AVX-NEXT:    ## InlineAsm End105; AVX-NEXT:    vmovsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 8-byte Reload106; AVX-NEXT:    ## xmm0 = mem[0],zero107; AVX-NEXT:    vaddsd (%rdi), %xmm0, %xmm0108; AVX-NEXT:    vmovsd %xmm0, (%rdi)109; AVX-NEXT:    addq $8, %rdi110; AVX-NEXT:    decq %rsi111; AVX-NEXT:    jne LBB1_2112; AVX-NEXT:  LBB1_3: ## %bb5113; AVX-NEXT:    retq114bb:115  %i = icmp sgt i64 %arg1, 0116  br i1 %i, label %bb2, label %bb5117 118bb2:                                              ; preds = %bb119  %i3 = bitcast i64 %arg1 to double120  br label %bb6121 122bb5:                                              ; preds = %bb6, %bb123  ret void124 125bb6:                                              ; preds = %bb6, %bb2126  %i7 = phi i64 [ 0, %bb2 ], [ %i11, %bb6 ]127  tail call void asm sideeffect "", "~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{dirflag},~{fpsr},~{flags}"()128  %i8 = getelementptr inbounds double, ptr %arg, i64 %i7129  %i9 = load double, ptr %i8, align 4130  %i10 = fadd double %i9, %i3131  store double %i10, ptr %i8, align 4132  %i11 = add nuw nsw i64 %i7, 1133  %i12 = icmp eq i64 %i11, %arg1134  br i1 %i12, label %bb5, label %bb6135}136 137define void @c(ptr %arg, ptr %arg1, i32 %arg2) {138; SSE2-LABEL: c:139; SSE2:       ## %bb.0: ## %bb140; SSE2-NEXT:    testl %edx, %edx141; SSE2-NEXT:    jle LBB2_3142; SSE2-NEXT:  ## %bb.1: ## %bb4143; SSE2-NEXT:    movl %edx, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill144; SSE2-NEXT:    movl %edx, %eax145; SSE2-NEXT:    .p2align 4146; SSE2-NEXT:  LBB2_2: ## %bb8147; SSE2-NEXT:    ## =>This Inner Loop Header: Depth=1148; SSE2-NEXT:    ## InlineAsm Start149; SSE2-NEXT:    ## InlineAsm End150; SSE2-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero151; SSE2-NEXT:    addss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 4-byte Folded Reload152; SSE2-NEXT:    movss %xmm0, (%rdi)153; SSE2-NEXT:    addq $16, %rdi154; SSE2-NEXT:    decq %rax155; SSE2-NEXT:    jne LBB2_2156; SSE2-NEXT:  LBB2_3: ## %bb7157; SSE2-NEXT:    retq158;159; AVX-LABEL: c:160; AVX:       ## %bb.0: ## %bb161; AVX-NEXT:    testl %edx, %edx162; AVX-NEXT:    jle LBB2_3163; AVX-NEXT:  ## %bb.1: ## %bb4164; AVX-NEXT:    movl %edx, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill165; AVX-NEXT:    movl %edx, %eax166; AVX-NEXT:    .p2align 4167; AVX-NEXT:  LBB2_2: ## %bb8168; AVX-NEXT:    ## =>This Inner Loop Header: Depth=1169; AVX-NEXT:    ## InlineAsm Start170; AVX-NEXT:    ## InlineAsm End171; AVX-NEXT:    vmovss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 4-byte Reload172; AVX-NEXT:    ## xmm0 = mem[0],zero,zero,zero173; AVX-NEXT:    vaddss (%rdi), %xmm0, %xmm0174; AVX-NEXT:    vmovss %xmm0, (%rdi)175; AVX-NEXT:    addq $16, %rdi176; AVX-NEXT:    decq %rax177; AVX-NEXT:    jne LBB2_2178; AVX-NEXT:  LBB2_3: ## %bb7179; AVX-NEXT:    retq180bb:181  %i = icmp sgt i32 %arg2, 0182  br i1 %i, label %bb4, label %bb7183 184bb4:                                              ; preds = %bb185  %i5 = bitcast i32 %arg2 to float186  %i6 = zext i32 %arg2 to i64187  br label %bb8188 189bb7:                                              ; preds = %bb8, %bb190  ret void191 192bb8:                                              ; preds = %bb8, %bb4193  %i9 = phi i64 [ 0, %bb4 ], [ %i15, %bb8 ]194  tail call void asm sideeffect "", "~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{dirflag},~{fpsr},~{flags}"()195  %i10 = getelementptr inbounds <4 x float>, ptr %arg, i64 %i9196  %i11 = load <4 x float>, ptr %i10, align 16197  %i12 = extractelement <4 x float> %i11, i32 0198  %i13 = fadd float %i12, %i5199  %i14 = insertelement <4 x float> %i11, float %i13, i32 0200  store <4 x float> %i14, ptr %i10, align 16201  %i15 = add nuw nsw i64 %i9, 1202  %i16 = icmp eq i64 %i15, %i6203  br i1 %i16, label %bb7, label %bb8204}205 206define void @d(ptr %arg, ptr %arg1, i64 %arg2) {207; SSE2-LABEL: d:208; SSE2:       ## %bb.0: ## %bb209; SSE2-NEXT:    testq %rdx, %rdx210; SSE2-NEXT:    jle LBB3_3211; SSE2-NEXT:  ## %bb.1: ## %bb3212; SSE2-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill213; SSE2-NEXT:    .p2align 4214; SSE2-NEXT:  LBB3_2: ## %bb6215; SSE2-NEXT:    ## =>This Inner Loop Header: Depth=1216; SSE2-NEXT:    ## InlineAsm Start217; SSE2-NEXT:    ## InlineAsm End218; SSE2-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero219; SSE2-NEXT:    addsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 8-byte Folded Reload220; SSE2-NEXT:    movsd %xmm0, (%rdi)221; SSE2-NEXT:    addq $16, %rdi222; SSE2-NEXT:    decq %rdx223; SSE2-NEXT:    jne LBB3_2224; SSE2-NEXT:  LBB3_3: ## %bb5225; SSE2-NEXT:    retq226;227; AVX-LABEL: d:228; AVX:       ## %bb.0: ## %bb229; AVX-NEXT:    testq %rdx, %rdx230; AVX-NEXT:    jle LBB3_3231; AVX-NEXT:  ## %bb.1: ## %bb3232; AVX-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) ## 8-byte Spill233; AVX-NEXT:    .p2align 4234; AVX-NEXT:  LBB3_2: ## %bb6235; AVX-NEXT:    ## =>This Inner Loop Header: Depth=1236; AVX-NEXT:    ## InlineAsm Start237; AVX-NEXT:    ## InlineAsm End238; AVX-NEXT:    vmovsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 8-byte Reload239; AVX-NEXT:    ## xmm0 = mem[0],zero240; AVX-NEXT:    vaddsd (%rdi), %xmm0, %xmm0241; AVX-NEXT:    vmovsd %xmm0, (%rdi)242; AVX-NEXT:    addq $16, %rdi243; AVX-NEXT:    decq %rdx244; AVX-NEXT:    jne LBB3_2245; AVX-NEXT:  LBB3_3: ## %bb5246; AVX-NEXT:    retq247bb:248  %i = icmp sgt i64 %arg2, 0249  br i1 %i, label %bb3, label %bb5250 251bb3:                                              ; preds = %bb252  %i4 = bitcast i64 %arg2 to double253  br label %bb6254 255bb5:                                              ; preds = %bb6, %bb256  ret void257 258bb6:                                              ; preds = %bb6, %bb3259  %i7 = phi i64 [ 0, %bb3 ], [ %i13, %bb6 ]260  tail call void asm sideeffect "", "~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{dirflag},~{fpsr},~{flags}"()261  %i8 = getelementptr inbounds <2 x double>, ptr %arg, i64 %i7262  %i9 = load <2 x double>, ptr %i8, align 16263  %i10 = extractelement <2 x double> %i9, i32 0264  %i11 = fadd double %i10, %i4265  %i12 = insertelement <2 x double> %i9, double %i11, i32 0266  store <2 x double> %i12, ptr %i8, align 16267  %i13 = add nuw nsw i64 %i7, 1268  %i14 = icmp eq i64 %i13, %arg2269  br i1 %i14, label %bb5, label %bb6270}271