brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.0 KiB · 416c0cb Raw
278 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-unknown-unknown -force-split-store < %s | FileCheck %s3 4define void @int32_float_pair(i32 %tmp1, float %tmp2, ptr %ref.tmp) {5; CHECK-LABEL: int32_float_pair:6; CHECK:       # %bb.0:7; CHECK-NEXT:    movl %edi, (%rsi)8; CHECK-NEXT:    movss %xmm0, 4(%rsi)9; CHECK-NEXT:    retq10  %t0 = bitcast float %tmp2 to i3211  %t1 = zext i32 %t0 to i6412  %t2 = shl nuw i64 %t1, 3213  %t3 = zext i32 %tmp1 to i6414  %t4 = or i64 %t2, %t315  store i64 %t4, ptr %ref.tmp, align 816  ret void17}18 19define void @float_int32_pair(float %tmp1, i32 %tmp2, ptr %ref.tmp) {20; CHECK-LABEL: float_int32_pair:21; CHECK:       # %bb.0:22; CHECK-NEXT:    movss %xmm0, (%rsi)23; CHECK-NEXT:    movl %edi, 4(%rsi)24; CHECK-NEXT:    retq25  %t0 = bitcast float %tmp1 to i3226  %t1 = zext i32 %tmp2 to i6427  %t2 = shl nuw i64 %t1, 3228  %t3 = zext i32 %t0 to i6429  %t4 = or i64 %t2, %t330  store i64 %t4, ptr %ref.tmp, align 831  ret void32}33 34define void @int16_float_pair(i16 signext %tmp1, float %tmp2, ptr %ref.tmp) {35; CHECK-LABEL: int16_float_pair:36; CHECK:       # %bb.0:37; CHECK-NEXT:    movzwl %di, %eax38; CHECK-NEXT:    movl %eax, (%rsi)39; CHECK-NEXT:    movss %xmm0, 4(%rsi)40; CHECK-NEXT:    retq41  %t0 = bitcast float %tmp2 to i3242  %t1 = zext i32 %t0 to i6443  %t2 = shl nuw i64 %t1, 3244  %t3 = zext i16 %tmp1 to i6445  %t4 = or i64 %t2, %t346  store i64 %t4, ptr %ref.tmp, align 847  ret void48}49 50define void @int8_float_pair(i8 signext %tmp1, float %tmp2, ptr %ref.tmp) {51; CHECK-LABEL: int8_float_pair:52; CHECK:       # %bb.0:53; CHECK-NEXT:    movzbl %dil, %eax54; CHECK-NEXT:    movl %eax, (%rsi)55; CHECK-NEXT:    movss %xmm0, 4(%rsi)56; CHECK-NEXT:    retq57  %t0 = bitcast float %tmp2 to i3258  %t1 = zext i32 %t0 to i6459  %t2 = shl nuw i64 %t1, 3260  %t3 = zext i8 %tmp1 to i6461  %t4 = or i64 %t2, %t362  store i64 %t4, ptr %ref.tmp, align 863  ret void64}65 66define void @int32_int32_pair(i32 %tmp1, i32 %tmp2, ptr %ref.tmp) {67; CHECK-LABEL: int32_int32_pair:68; CHECK:       # %bb.0:69; CHECK-NEXT:    movl %edi, (%rdx)70; CHECK-NEXT:    movl %esi, 4(%rdx)71; CHECK-NEXT:    retq72  %t1 = zext i32 %tmp2 to i6473  %t2 = shl nuw i64 %t1, 3274  %t3 = zext i32 %tmp1 to i6475  %t4 = or i64 %t2, %t376  store i64 %t4, ptr %ref.tmp, align 877  ret void78}79 80define void @int16_int16_pair(i16 signext %tmp1, i16 signext %tmp2, ptr %ref.tmp) {81; CHECK-LABEL: int16_int16_pair:82; CHECK:       # %bb.0:83; CHECK-NEXT:    movw %di, (%rdx)84; CHECK-NEXT:    movw %si, 2(%rdx)85; CHECK-NEXT:    retq86  %t1 = zext i16 %tmp2 to i3287  %t2 = shl nuw i32 %t1, 1688  %t3 = zext i16 %tmp1 to i3289  %t4 = or i32 %t2, %t390  store i32 %t4, ptr %ref.tmp, align 491  ret void92}93 94define void @int8_int8_pair(i8 signext %tmp1, i8 signext %tmp2, ptr %ref.tmp) {95; CHECK-LABEL: int8_int8_pair:96; CHECK:       # %bb.0:97; CHECK-NEXT:    movb %dil, (%rdx)98; CHECK-NEXT:    movb %sil, 1(%rdx)99; CHECK-NEXT:    retq100  %t1 = zext i8 %tmp2 to i16101  %t2 = shl nuw i16 %t1, 8102  %t3 = zext i8 %tmp1 to i16103  %t4 = or i16 %t2, %t3104  store i16 %t4, ptr %ref.tmp, align 2105  ret void106}107 108define void @int31_int31_pair(i31 %tmp1, i31 %tmp2, ptr %ref.tmp) {109; CHECK-LABEL: int31_int31_pair:110; CHECK:       # %bb.0:111; CHECK-NEXT:    andl $2147483647, %edi # imm = 0x7FFFFFFF112; CHECK-NEXT:    movl %edi, (%rdx)113; CHECK-NEXT:    andl $2147483647, %esi # imm = 0x7FFFFFFF114; CHECK-NEXT:    movl %esi, 4(%rdx)115; CHECK-NEXT:    retq116  %t1 = zext i31 %tmp2 to i64117  %t2 = shl nuw i64 %t1, 32118  %t3 = zext i31 %tmp1 to i64119  %t4 = or i64 %t2, %t3120  store i64 %t4, ptr %ref.tmp, align 8121  ret void122}123 124define void @int31_int17_pair(i31 %tmp1, i17 %tmp2, ptr %ref.tmp) {125; CHECK-LABEL: int31_int17_pair:126; CHECK:       # %bb.0:127; CHECK-NEXT:    andl $2147483647, %edi # imm = 0x7FFFFFFF128; CHECK-NEXT:    movl %edi, (%rdx)129; CHECK-NEXT:    andl $131071, %esi # imm = 0x1FFFF130; CHECK-NEXT:    movl %esi, 4(%rdx)131; CHECK-NEXT:    retq132  %t1 = zext i17 %tmp2 to i64133  %t2 = shl nuw i64 %t1, 32134  %t3 = zext i31 %tmp1 to i64135  %t4 = or i64 %t2, %t3136  store i64 %t4, ptr %ref.tmp, align 8137  ret void138}139 140define void @int7_int3_pair(i7 signext %tmp1, i3 signext %tmp2, ptr %ref.tmp) {141; CHECK-LABEL: int7_int3_pair:142; CHECK:       # %bb.0:143; CHECK-NEXT:    andb $127, %dil144; CHECK-NEXT:    movb %dil, (%rdx)145; CHECK-NEXT:    andb $7, %sil146; CHECK-NEXT:    movb %sil, 1(%rdx)147; CHECK-NEXT:    retq148  %t1 = zext i3 %tmp2 to i16149  %t2 = shl nuw i16 %t1, 8150  %t3 = zext i7 %tmp1 to i16151  %t4 = or i16 %t2, %t3152  store i16 %t4, ptr %ref.tmp, align 2153  ret void154}155 156define void @int24_int24_pair(i24 signext %tmp1, i24 signext %tmp2, ptr %ref.tmp) {157; CHECK-LABEL: int24_int24_pair:158; CHECK:       # %bb.0:159; CHECK-NEXT:    movw %di, (%rdx)160; CHECK-NEXT:    shrl $16, %edi161; CHECK-NEXT:    movb %dil, 2(%rdx)162; CHECK-NEXT:    movw %si, 4(%rdx)163; CHECK-NEXT:    shrl $16, %esi164; CHECK-NEXT:    movb %sil, 6(%rdx)165; CHECK-NEXT:    retq166  %t1 = zext i24 %tmp2 to i48167  %t2 = shl nuw i48 %t1, 24168  %t3 = zext i24 %tmp1 to i48169  %t4 = or i48 %t2, %t3170  store i48 %t4, ptr %ref.tmp, align 2171  ret void172}173 174; getTypeSizeInBits(i12) != getTypeStoreSizeInBits(i12), so store split doesn't kick in.175 176define void @int12_int12_pair(i12 signext %tmp1, i12 signext %tmp2, ptr %ref.tmp) {177; CHECK-LABEL: int12_int12_pair:178; CHECK:       # %bb.0:179; CHECK-NEXT:    movl %esi, %eax180; CHECK-NEXT:    shll $12, %eax181; CHECK-NEXT:    andl $4095, %edi # imm = 0xFFF182; CHECK-NEXT:    orl %eax, %edi183; CHECK-NEXT:    shrl $4, %esi184; CHECK-NEXT:    movb %sil, 2(%rdx)185; CHECK-NEXT:    movw %di, (%rdx)186; CHECK-NEXT:    retq187  %t1 = zext i12 %tmp2 to i24188  %t2 = shl nuw i24 %t1, 12189  %t3 = zext i12 %tmp1 to i24190  %t4 = or i24 %t2, %t3191  store i24 %t4, ptr %ref.tmp, align 2192  ret void193}194 195; getTypeSizeInBits(i14) != getTypeStoreSizeInBits(i14), so store split doesn't kick in.196 197define void @int7_int7_pair(i7 signext %tmp1, i7 signext %tmp2, ptr %ref.tmp) {198; CHECK-LABEL: int7_int7_pair:199; CHECK:       # %bb.0:200; CHECK-NEXT:    shll $7, %esi201; CHECK-NEXT:    andl $127, %edi202; CHECK-NEXT:    orl %esi, %edi203; CHECK-NEXT:    andl $16383, %edi # imm = 0x3FFF204; CHECK-NEXT:    movw %di, (%rdx)205; CHECK-NEXT:    retq206  %t1 = zext i7 %tmp2 to i14207  %t2 = shl nuw i14 %t1, 7208  %t3 = zext i7 %tmp1 to i14209  %t4 = or i14 %t2, %t3210  store i14 %t4, ptr %ref.tmp, align 2211  ret void212}213 214; getTypeSizeInBits(i2) != getTypeStoreSizeInBits(i2), so store split doesn't kick in.215 216define void @int1_int1_pair(i1 signext %tmp1, i1 signext %tmp2, ptr %ref.tmp) {217; CHECK-LABEL: int1_int1_pair:218; CHECK:       # %bb.0:219; CHECK-NEXT:    addb %sil, %sil220; CHECK-NEXT:    subb %dil, %sil221; CHECK-NEXT:    andb $3, %sil222; CHECK-NEXT:    movb %sil, (%rdx)223; CHECK-NEXT:    retq224  %t1 = zext i1 %tmp2 to i2225  %t2 = shl nuw i2 %t1, 1226  %t3 = zext i1 %tmp1 to i2227  %t4 = or i2 %t2, %t3228  store i2 %t4, ptr %ref.tmp, align 1229  ret void230}231 232define void @mbb_int32_float_pair(i32 %tmp1, float %tmp2, ptr %ref.tmp) {233; CHECK-LABEL: mbb_int32_float_pair:234; CHECK:       # %bb.0: # %entry235; CHECK-NEXT:    movl %edi, (%rsi)236; CHECK-NEXT:    movss %xmm0, 4(%rsi)237; CHECK-NEXT:    retq238entry:239  %t0 = bitcast float %tmp2 to i32240  br label %next241next:242  %t1 = zext i32 %t0 to i64243  %t2 = shl nuw i64 %t1, 32244  %t3 = zext i32 %tmp1 to i64245  %t4 = or i64 %t2, %t3246  store i64 %t4, ptr %ref.tmp, align 8247  ret void248}249 250define void @mbb_int32_float_multi_stores(i32 %tmp1, float %tmp2, ptr %ref.tmp, ptr %ref.tmp1, i1 %cmp) {251; CHECK-LABEL: mbb_int32_float_multi_stores:252; CHECK:       # %bb.0: # %entry253; CHECK-NEXT:    movl %edi, (%rsi)254; CHECK-NEXT:    movss %xmm0, 4(%rsi)255; CHECK-NEXT:    testb $1, %cl256; CHECK-NEXT:    je .LBB15_2257; CHECK-NEXT:  # %bb.1: # %bb2258; CHECK-NEXT:    movl %edi, (%rdx)259; CHECK-NEXT:    movss %xmm0, 4(%rdx)260; CHECK-NEXT:  .LBB15_2: # %exitbb261; CHECK-NEXT:    retq262entry:263  %t0 = bitcast float %tmp2 to i32264  br label %bb1265bb1:266  %t1 = zext i32 %t0 to i64267  %t2 = shl nuw i64 %t1, 32268  %t3 = zext i32 %tmp1 to i64269  %t4 = or i64 %t2, %t3270  store i64 %t4, ptr %ref.tmp, align 8271  br i1 %cmp, label %bb2, label %exitbb272bb2:273  store i64 %t4, ptr %ref.tmp1, align 8274  br label %exitbb275exitbb:276  ret void277}278