brintos

brintos / llvm-project-archived public Read only

0
0
Text · 66.8 KiB · 39a0585 Raw
2317 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -verify-machineinstrs -show-mc-encoding | FileCheck %s3 4target triple = "x86_64-unknown-unknown"5 6@g64 = external dso_local global i64, align 87@g32 = external dso_local global i32, align 48@g16 = external dso_local global i16, align 29@g8 = external dso_local global i8, align 110 11declare dso_local void @a()12declare dso_local void @b()13 14define void @add64_imm32_br() nounwind {15; CHECK-LABEL: add64_imm32_br:16; CHECK:       # %bb.0: # %entry17; CHECK-NEXT:    addq $16777214, g64(%rip) # encoding: [0x48,0x81,0x05,A,A,A,A,0xfe,0xff,0xff,0x00]18; CHECK-NEXT:    # fixup A - offset: 3, value: g64-4, kind: reloc_riprel_4byte19; CHECK-NEXT:    # imm = 0xFFFFFE20; CHECK-NEXT:    jns b # TAILCALL21; CHECK-NEXT:    # encoding: [0x79,A]22; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_123; CHECK-NEXT:  # %bb.1: # %a24; CHECK-NEXT:    jmp a # TAILCALL25; CHECK-NEXT:    # encoding: [0xeb,A]26; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_127entry:28  %load1 = load i64, ptr @g6429  ; Add 0x00FFFFFE, a positive immediate requiring 24-bits.30  %add = add i64 %load1, 1677721431  store i64 %add, ptr @g6432  %cond = icmp slt i64 %add, 033  br i1 %cond, label %a, label %b34 35a:36  tail call void @a()37  ret void38 39b:40  tail call void @b()41  ret void42}43 44define void @add64_sext_imm32_br() nounwind {45; CHECK-LABEL: add64_sext_imm32_br:46; CHECK:       # %bb.0: # %entry47; CHECK-NEXT:    addq $-2147483648, g64(%rip) # encoding: [0x48,0x81,0x05,A,A,A,A,0x00,0x00,0x00,0x80]48; CHECK-NEXT:    # fixup A - offset: 3, value: g64-4, kind: reloc_riprel_4byte49; CHECK-NEXT:    # imm = 0x8000000050; CHECK-NEXT:    jns b # TAILCALL51; CHECK-NEXT:    # encoding: [0x79,A]52; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_153; CHECK-NEXT:  # %bb.1: # %a54; CHECK-NEXT:    jmp a # TAILCALL55; CHECK-NEXT:    # encoding: [0xeb,A]56; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_157entry:58  %load1 = load i64, ptr @g6459  ; Add -0x80000000, which requires sign-extended 32 bits.60  %add = add i64 %load1, -214748364861  store i64 %add, ptr @g6462  %cond = icmp slt i64 %add, 063  br i1 %cond, label %a, label %b64 65a:66  tail call void @a()67  ret void68 69b:70  tail call void @b()71  ret void72}73 74define void @add64_imm32_via_sub_br() nounwind {75; CHECK-LABEL: add64_imm32_via_sub_br:76; CHECK:       # %bb.0: # %entry77; CHECK-NEXT:    subq $-2147483648, g64(%rip) # encoding: [0x48,0x81,0x2d,A,A,A,A,0x00,0x00,0x00,0x80]78; CHECK-NEXT:    # fixup A - offset: 3, value: g64-4, kind: reloc_riprel_4byte79; CHECK-NEXT:    # imm = 0x8000000080; CHECK-NEXT:    jns b # TAILCALL81; CHECK-NEXT:    # encoding: [0x79,A]82; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_183; CHECK-NEXT:  # %bb.1: # %a84; CHECK-NEXT:    jmp a # TAILCALL85; CHECK-NEXT:    # encoding: [0xeb,A]86; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_187entry:88  %load1 = load i64, ptr @g6489  ; Add 0x80000000, which cannot fit in a sign extended 32-bit immediate. This90  ; get's folded because we can instead subtract -0x80000000.91  %add = add i64 %load1, 214748364892  store i64 %add, ptr @g6493  %cond = icmp slt i64 %add, 094  br i1 %cond, label %a, label %b95 96a:97  tail call void @a()98  ret void99 100b:101  tail call void @b()102  ret void103}104 105define void @add64_no_imm32_via_sub_due_to_cf_br() nounwind {106; CHECK-LABEL: add64_no_imm32_via_sub_due_to_cf_br:107; CHECK:       # %bb.0: # %entry108; CHECK-NEXT:    movl $2147483648, %eax # encoding: [0xb8,0x00,0x00,0x00,0x80]109; CHECK-NEXT:    # imm = 0x80000000110; CHECK-NEXT:    addq %rax, g64(%rip) # encoding: [0x48,0x01,0x05,A,A,A,A]111; CHECK-NEXT:    # fixup A - offset: 3, value: g64, kind: reloc_riprel_4byte112; CHECK-NEXT:    jae b # TAILCALL113; CHECK-NEXT:    # encoding: [0x73,A]114; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1115; CHECK-NEXT:  # %bb.1: # %a116; CHECK-NEXT:    jmp a # TAILCALL117; CHECK-NEXT:    # encoding: [0xeb,A]118; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1119entry:120  %load1 = load i64, ptr @g64121  ; Add 0x80000000, which cannot fit in a sign extended 32-bit immediate, but122  ; could in theory be folded into an immediate operand of a sub. However, we123  ; use the CF flag here and so shouldn't make that transformation.124  %add = add i64 %load1, 2147483648125  store i64 %add, ptr @g64126  %cond = icmp ult i64 %add, 2147483648127  br i1 %cond, label %a, label %b128 129a:130  tail call void @a()131  ret void132 133b:134  tail call void @b()135  ret void136}137 138define void @add64_too_large_imm32_br() nounwind {139; CHECK-LABEL: add64_too_large_imm32_br:140; CHECK:       # %bb.0: # %entry141; CHECK-NEXT:    movl $2147483649, %eax # encoding: [0xb8,0x01,0x00,0x00,0x80]142; CHECK-NEXT:    # imm = 0x80000001143; CHECK-NEXT:    addq %rax, g64(%rip) # encoding: [0x48,0x01,0x05,A,A,A,A]144; CHECK-NEXT:    # fixup A - offset: 3, value: g64, kind: reloc_riprel_4byte145; CHECK-NEXT:    jns b # TAILCALL146; CHECK-NEXT:    # encoding: [0x79,A]147; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1148; CHECK-NEXT:  # %bb.1: # %a149; CHECK-NEXT:    jmp a # TAILCALL150; CHECK-NEXT:    # encoding: [0xeb,A]151; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1152entry:153  %load1 = load i64, ptr @g64154  ; Add 0x80000001, which cannot fit in a sign extended 32-bit immediate. This155  ; should not get folded into an immediate.156  %add = add i64 %load1, 2147483649157  store i64 %add, ptr @g64158  %cond = icmp slt i64 %add, 0159  br i1 %cond, label %a, label %b160 161a:162  tail call void @a()163  ret void164 165b:166  tail call void @b()167  ret void168}169 170define void @add64_imm8_via_sub_br() nounwind {171; CHECK-LABEL: add64_imm8_via_sub_br:172; CHECK:       # %bb.0: # %entry173; CHECK-NEXT:    subq $-128, g64(%rip) # encoding: [0x48,0x83,0x2d,A,A,A,A,0x80]174; CHECK-NEXT:    # fixup A - offset: 3, value: g64-1, kind: reloc_riprel_4byte175; CHECK-NEXT:    jns b # TAILCALL176; CHECK-NEXT:    # encoding: [0x79,A]177; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1178; CHECK-NEXT:  # %bb.1: # %a179; CHECK-NEXT:    jmp a # TAILCALL180; CHECK-NEXT:    # encoding: [0xeb,A]181; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1182entry:183  %load1 = load i64, ptr @g64184  ; Add 0x80 which can't quite fit into an imm8 because it would be sign185  ; extended, but which can fit if we convert to a sub and negate the value.186  %add = add i64 %load1, 128187  store i64 %add, ptr @g64188  %cond = icmp slt i64 %add, 0189  br i1 %cond, label %a, label %b190 191a:192  tail call void @a()193  ret void194 195b:196  tail call void @b()197  ret void198}199 200define void @add64_imm8_br() nounwind {201; CHECK-LABEL: add64_imm8_br:202; CHECK:       # %bb.0: # %entry203; CHECK-NEXT:    addq $42, g64(%rip) # encoding: [0x48,0x83,0x05,A,A,A,A,0x2a]204; CHECK-NEXT:    # fixup A - offset: 3, value: g64-1, kind: reloc_riprel_4byte205; CHECK-NEXT:    jns b # TAILCALL206; CHECK-NEXT:    # encoding: [0x79,A]207; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1208; CHECK-NEXT:  # %bb.1: # %a209; CHECK-NEXT:    jmp a # TAILCALL210; CHECK-NEXT:    # encoding: [0xeb,A]211; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1212entry:213  %load1 = load i64, ptr @g64214  %add = add i64 %load1, 42215  store i64 %add, ptr @g64216  %cond = icmp slt i64 %add, 0217  br i1 %cond, label %a, label %b218 219a:220  tail call void @a()221  ret void222 223b:224  tail call void @b()225  ret void226}227 228define void @add64_imm8_neg_br() nounwind {229; CHECK-LABEL: add64_imm8_neg_br:230; CHECK:       # %bb.0: # %entry231; CHECK-NEXT:    addq $-42, g64(%rip) # encoding: [0x48,0x83,0x05,A,A,A,A,0xd6]232; CHECK-NEXT:    # fixup A - offset: 3, value: g64-1, kind: reloc_riprel_4byte233; CHECK-NEXT:    jns b # TAILCALL234; CHECK-NEXT:    # encoding: [0x79,A]235; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1236; CHECK-NEXT:  # %bb.1: # %a237; CHECK-NEXT:    jmp a # TAILCALL238; CHECK-NEXT:    # encoding: [0xeb,A]239; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1240entry:241  %load1 = load i64, ptr @g64242  %add = add i64 %load1, -42243  store i64 %add, ptr @g64244  %cond = icmp slt i64 %add, 0245  br i1 %cond, label %a, label %b246 247a:248  tail call void @a()249  ret void250 251b:252  tail call void @b()253  ret void254}255 256define void @add32_imm_br() nounwind {257; CHECK-LABEL: add32_imm_br:258; CHECK:       # %bb.0: # %entry259; CHECK-NEXT:    addl $-2147483648, g32(%rip) # encoding: [0x81,0x05,A,A,A,A,0x00,0x00,0x00,0x80]260; CHECK-NEXT:    # fixup A - offset: 2, value: g32-4, kind: reloc_riprel_4byte261; CHECK-NEXT:    # imm = 0x80000000262; CHECK-NEXT:    jns b # TAILCALL263; CHECK-NEXT:    # encoding: [0x79,A]264; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1265; CHECK-NEXT:  # %bb.1: # %a266; CHECK-NEXT:    jmp a # TAILCALL267; CHECK-NEXT:    # encoding: [0xeb,A]268; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1269entry:270  %load1 = load i32, ptr @g32271  ; Add 0x80000000, a positive number requiring 32 bits of immediate.272  %add = add i32 %load1, 2147483648273  store i32 %add, ptr @g32274  %cond = icmp slt i32 %add, 0275  br i1 %cond, label %a, label %b276 277a:278  tail call void @a()279  ret void280 281b:282  tail call void @b()283  ret void284}285 286define void @add32_imm8_br() nounwind {287; CHECK-LABEL: add32_imm8_br:288; CHECK:       # %bb.0: # %entry289; CHECK-NEXT:    addl $42, g32(%rip) # encoding: [0x83,0x05,A,A,A,A,0x2a]290; CHECK-NEXT:    # fixup A - offset: 2, value: g32-1, kind: reloc_riprel_4byte291; CHECK-NEXT:    jns b # TAILCALL292; CHECK-NEXT:    # encoding: [0x79,A]293; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1294; CHECK-NEXT:  # %bb.1: # %a295; CHECK-NEXT:    jmp a # TAILCALL296; CHECK-NEXT:    # encoding: [0xeb,A]297; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1298entry:299  %load1 = load i32, ptr @g32300  %add = add i32 %load1, 42301  store i32 %add, ptr @g32302  %cond = icmp slt i32 %add, 0303  br i1 %cond, label %a, label %b304 305a:306  tail call void @a()307  ret void308 309b:310  tail call void @b()311  ret void312}313 314define void @add32_imm8_neg_br() nounwind {315; CHECK-LABEL: add32_imm8_neg_br:316; CHECK:       # %bb.0: # %entry317; CHECK-NEXT:    addl $-42, g32(%rip) # encoding: [0x83,0x05,A,A,A,A,0xd6]318; CHECK-NEXT:    # fixup A - offset: 2, value: g32-1, kind: reloc_riprel_4byte319; CHECK-NEXT:    jns b # TAILCALL320; CHECK-NEXT:    # encoding: [0x79,A]321; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1322; CHECK-NEXT:  # %bb.1: # %a323; CHECK-NEXT:    jmp a # TAILCALL324; CHECK-NEXT:    # encoding: [0xeb,A]325; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1326entry:327  %load1 = load i32, ptr @g32328  %add = add i32 %load1, -42329  store i32 %add, ptr @g32330  %cond = icmp slt i32 %add, 0331  br i1 %cond, label %a, label %b332 333a:334  tail call void @a()335  ret void336 337b:338  tail call void @b()339  ret void340}341 342define void @add16_imm_br() nounwind {343; CHECK-LABEL: add16_imm_br:344; CHECK:       # %bb.0: # %entry345; CHECK-NEXT:    addw $-32768, g16(%rip) # encoding: [0x66,0x81,0x05,A,A,A,A,0x00,0x80]346; CHECK-NEXT:    # fixup A - offset: 3, value: g16-2, kind: reloc_riprel_4byte347; CHECK-NEXT:    # imm = 0x8000348; CHECK-NEXT:    jns b # TAILCALL349; CHECK-NEXT:    # encoding: [0x79,A]350; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1351; CHECK-NEXT:  # %bb.1: # %a352; CHECK-NEXT:    jmp a # TAILCALL353; CHECK-NEXT:    # encoding: [0xeb,A]354; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1355entry:356  %load1 = load i16, ptr @g16357  ; Add 0x8000, a positive number requiring 16 bits of immediate.358  %add = add i16 %load1, 32768359  store i16 %add, ptr @g16360  %cond = icmp slt i16 %add, 0361  br i1 %cond, label %a, label %b362 363a:364  tail call void @a()365  ret void366 367b:368  tail call void @b()369  ret void370}371 372define void @add16_imm8_br() nounwind {373; CHECK-LABEL: add16_imm8_br:374; CHECK:       # %bb.0: # %entry375; CHECK-NEXT:    addw $42, g16(%rip) # encoding: [0x66,0x83,0x05,A,A,A,A,0x2a]376; CHECK-NEXT:    # fixup A - offset: 3, value: g16-1, kind: reloc_riprel_4byte377; CHECK-NEXT:    jns b # TAILCALL378; CHECK-NEXT:    # encoding: [0x79,A]379; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1380; CHECK-NEXT:  # %bb.1: # %a381; CHECK-NEXT:    jmp a # TAILCALL382; CHECK-NEXT:    # encoding: [0xeb,A]383; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1384entry:385  %load1 = load i16, ptr @g16386  %add = add i16 %load1, 42387  store i16 %add, ptr @g16388  %cond = icmp slt i16 %add, 0389  br i1 %cond, label %a, label %b390 391a:392  tail call void @a()393  ret void394 395b:396  tail call void @b()397  ret void398}399 400define void @add16_imm8_neg_br() nounwind {401; CHECK-LABEL: add16_imm8_neg_br:402; CHECK:       # %bb.0: # %entry403; CHECK-NEXT:    addw $-42, g16(%rip) # encoding: [0x66,0x83,0x05,A,A,A,A,0xd6]404; CHECK-NEXT:    # fixup A - offset: 3, value: g16-1, kind: reloc_riprel_4byte405; CHECK-NEXT:    jns b # TAILCALL406; CHECK-NEXT:    # encoding: [0x79,A]407; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1408; CHECK-NEXT:  # %bb.1: # %a409; CHECK-NEXT:    jmp a # TAILCALL410; CHECK-NEXT:    # encoding: [0xeb,A]411; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1412entry:413  %load1 = load i16, ptr @g16414  %add = add i16 %load1, -42415  store i16 %add, ptr @g16416  %cond = icmp slt i16 %add, 0417  br i1 %cond, label %a, label %b418 419a:420  tail call void @a()421  ret void422 423b:424  tail call void @b()425  ret void426}427 428define void @add8_imm_br() nounwind {429; CHECK-LABEL: add8_imm_br:430; CHECK:       # %bb.0: # %entry431; CHECK-NEXT:    addb $-2, g8(%rip) # encoding: [0x80,0x05,A,A,A,A,0xfe]432; CHECK-NEXT:    # fixup A - offset: 2, value: g8-1, kind: reloc_riprel_4byte433; CHECK-NEXT:    jns b # TAILCALL434; CHECK-NEXT:    # encoding: [0x79,A]435; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1436; CHECK-NEXT:  # %bb.1: # %a437; CHECK-NEXT:    jmp a # TAILCALL438; CHECK-NEXT:    # encoding: [0xeb,A]439; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1440entry:441  %load1 = load i8, ptr @g8442  %add = add i8 %load1, -2443  store i8 %add, ptr @g8444  %cond = icmp slt i8 %add, 0445  br i1 %cond, label %a, label %b446 447a:448  tail call void @a()449  ret void450 451b:452  tail call void @b()453  ret void454}455 456define void @add64_reg_br(i64 %arg) nounwind {457; CHECK-LABEL: add64_reg_br:458; CHECK:       # %bb.0: # %entry459; CHECK-NEXT:    addq %rdi, g64(%rip) # encoding: [0x48,0x01,0x3d,A,A,A,A]460; CHECK-NEXT:    # fixup A - offset: 3, value: g64, kind: reloc_riprel_4byte461; CHECK-NEXT:    jns b # TAILCALL462; CHECK-NEXT:    # encoding: [0x79,A]463; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1464; CHECK-NEXT:  # %bb.1: # %a465; CHECK-NEXT:    jmp a # TAILCALL466; CHECK-NEXT:    # encoding: [0xeb,A]467; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1468entry:469  %load1 = load i64, ptr @g64470  %add = add i64 %load1, %arg471  store i64 %add, ptr @g64472  %cond = icmp slt i64 %add, 0473  br i1 %cond, label %a, label %b474 475a:476  tail call void @a()477  ret void478 479b:480  tail call void @b()481  ret void482}483 484define void @add32_reg_br(i32 %arg) nounwind {485; CHECK-LABEL: add32_reg_br:486; CHECK:       # %bb.0: # %entry487; CHECK-NEXT:    addl %edi, g32(%rip) # encoding: [0x01,0x3d,A,A,A,A]488; CHECK-NEXT:    # fixup A - offset: 2, value: g32, kind: reloc_riprel_4byte489; CHECK-NEXT:    jns b # TAILCALL490; CHECK-NEXT:    # encoding: [0x79,A]491; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1492; CHECK-NEXT:  # %bb.1: # %a493; CHECK-NEXT:    jmp a # TAILCALL494; CHECK-NEXT:    # encoding: [0xeb,A]495; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1496entry:497  %load1 = load i32, ptr @g32498  %add = add i32 %load1, %arg499  store i32 %add, ptr @g32500  %cond = icmp slt i32 %add, 0501  br i1 %cond, label %a, label %b502 503a:504  tail call void @a()505  ret void506 507b:508  tail call void @b()509  ret void510}511 512define void @add16_reg_br(i16 %arg) nounwind {513; CHECK-LABEL: add16_reg_br:514; CHECK:       # %bb.0: # %entry515; CHECK-NEXT:    addw %di, g16(%rip) # encoding: [0x66,0x01,0x3d,A,A,A,A]516; CHECK-NEXT:    # fixup A - offset: 3, value: g16, kind: reloc_riprel_4byte517; CHECK-NEXT:    jns b # TAILCALL518; CHECK-NEXT:    # encoding: [0x79,A]519; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1520; CHECK-NEXT:  # %bb.1: # %a521; CHECK-NEXT:    jmp a # TAILCALL522; CHECK-NEXT:    # encoding: [0xeb,A]523; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1524entry:525  %load1 = load i16, ptr @g16526  %add = add i16 %load1, %arg527  store i16 %add, ptr @g16528  %cond = icmp slt i16 %add, 0529  br i1 %cond, label %a, label %b530 531a:532  tail call void @a()533  ret void534 535b:536  tail call void @b()537  ret void538}539 540define void @add8_reg_br(i8 %arg) nounwind {541; CHECK-LABEL: add8_reg_br:542; CHECK:       # %bb.0: # %entry543; CHECK-NEXT:    addb %dil, g8(%rip) # encoding: [0x40,0x00,0x3d,A,A,A,A]544; CHECK-NEXT:    # fixup A - offset: 3, value: g8, kind: reloc_riprel_4byte545; CHECK-NEXT:    jns b # TAILCALL546; CHECK-NEXT:    # encoding: [0x79,A]547; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1548; CHECK-NEXT:  # %bb.1: # %a549; CHECK-NEXT:    jmp a # TAILCALL550; CHECK-NEXT:    # encoding: [0xeb,A]551; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1552entry:553  %load1 = load i8, ptr @g8554  %add = add i8 %load1, %arg555  store i8 %add, ptr @g8556  %cond = icmp slt i8 %add, 0557  br i1 %cond, label %a, label %b558 559a:560  tail call void @a()561  ret void562 563b:564  tail call void @b()565  ret void566}567 568define void @sub64_imm32_br() nounwind {569; CHECK-LABEL: sub64_imm32_br:570; CHECK:       # %bb.0: # %entry571; CHECK-NEXT:    subq $-2147483648, g64(%rip) # encoding: [0x48,0x81,0x2d,A,A,A,A,0x00,0x00,0x00,0x80]572; CHECK-NEXT:    # fixup A - offset: 3, value: g64-4, kind: reloc_riprel_4byte573; CHECK-NEXT:    # imm = 0x80000000574; CHECK-NEXT:    jns b # TAILCALL575; CHECK-NEXT:    # encoding: [0x79,A]576; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1577; CHECK-NEXT:  # %bb.1: # %a578; CHECK-NEXT:    jmp a # TAILCALL579; CHECK-NEXT:    # encoding: [0xeb,A]580; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1581entry:582  %load1 = load i64, ptr @g64583  ; Subtract -0x80000000, which can't be negated into a sign-extended 32-bit584  ; immediate, so that we have to select sub here.585  %sub = sub i64 %load1, -2147483648586  store i64 %sub, ptr @g64587  %cond = icmp slt i64 %sub, 0588  br i1 %cond, label %a, label %b589 590a:591  tail call void @a()592  ret void593 594b:595  tail call void @b()596  ret void597}598 599define void @sub64_too_large_imm32_br() nounwind {600; CHECK-LABEL: sub64_too_large_imm32_br:601; CHECK:       # %bb.0: # %entry602; CHECK-NEXT:    movabsq $-4294967295, %rax # encoding: [0x48,0xb8,0x01,0x00,0x00,0x00,0xff,0xff,0xff,0xff]603; CHECK-NEXT:    # imm = 0xFFFFFFFF00000001604; CHECK-NEXT:    addq %rax, g64(%rip) # encoding: [0x48,0x01,0x05,A,A,A,A]605; CHECK-NEXT:    # fixup A - offset: 3, value: g64, kind: reloc_riprel_4byte606; CHECK-NEXT:    jns b # TAILCALL607; CHECK-NEXT:    # encoding: [0x79,A]608; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1609; CHECK-NEXT:  # %bb.1: # %a610; CHECK-NEXT:    jmp a # TAILCALL611; CHECK-NEXT:    # encoding: [0xeb,A]612; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1613entry:614  %load1 = load i64, ptr @g64615  ; Subtract 0xFFFFFFFF, which cannot fit in a sign extended 32-bit immediate,616  ; even if negated and sign extended as an add.617  %sub = sub i64 %load1, 4294967295618  store i64 %sub, ptr @g64619  %cond = icmp slt i64 %sub, 0620  br i1 %cond, label %a, label %b621 622a:623  tail call void @a()624  ret void625 626b:627  tail call void @b()628  ret void629}630 631define void @sub64_imm8_br() nounwind {632; CHECK-LABEL: sub64_imm8_br:633; CHECK:       # %bb.0: # %entry634; CHECK-NEXT:    subq $-128, g64(%rip) # encoding: [0x48,0x83,0x2d,A,A,A,A,0x80]635; CHECK-NEXT:    # fixup A - offset: 3, value: g64-1, kind: reloc_riprel_4byte636; CHECK-NEXT:    jns b # TAILCALL637; CHECK-NEXT:    # encoding: [0x79,A]638; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1639; CHECK-NEXT:  # %bb.1: # %a640; CHECK-NEXT:    jmp a # TAILCALL641; CHECK-NEXT:    # encoding: [0xeb,A]642; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1643entry:644  %load1 = load i64, ptr @g64645  ; Subtract -0x80, which can be done with an 8-bit immediate but only as646  ; a subtract where that immediate can be negative.647  %sub = sub i64 %load1, -128648  store i64 %sub, ptr @g64649  %cond = icmp slt i64 %sub, 0650  br i1 %cond, label %a, label %b651 652a:653  tail call void @a()654  ret void655 656b:657  tail call void @b()658  ret void659}660 661define void @sub32_imm_br() nounwind {662; CHECK-LABEL: sub32_imm_br:663; CHECK:       # %bb.0: # %entry664; CHECK-NEXT:    addl $-2147483648, g32(%rip) # encoding: [0x81,0x05,A,A,A,A,0x00,0x00,0x00,0x80]665; CHECK-NEXT:    # fixup A - offset: 2, value: g32-4, kind: reloc_riprel_4byte666; CHECK-NEXT:    # imm = 0x80000000667; CHECK-NEXT:    jns b # TAILCALL668; CHECK-NEXT:    # encoding: [0x79,A]669; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1670; CHECK-NEXT:  # %bb.1: # %a671; CHECK-NEXT:    jmp a # TAILCALL672; CHECK-NEXT:    # encoding: [0xeb,A]673; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1674entry:675  %load1 = load i32, ptr @g32676  ; Subtract -0x80000000, which requires 32 bits of immediate but still gets677  ; lowered as an add.678  %sub = sub i32 %load1, -2147483648679  store i32 %sub, ptr @g32680  %cond = icmp slt i32 %sub, 0681  br i1 %cond, label %a, label %b682 683a:684  tail call void @a()685  ret void686 687b:688  tail call void @b()689  ret void690}691 692define void @sub32_imm8_br() nounwind {693; CHECK-LABEL: sub32_imm8_br:694; CHECK:       # %bb.0: # %entry695; CHECK-NEXT:    subl $-128, g32(%rip) # encoding: [0x83,0x2d,A,A,A,A,0x80]696; CHECK-NEXT:    # fixup A - offset: 2, value: g32-1, kind: reloc_riprel_4byte697; CHECK-NEXT:    jns b # TAILCALL698; CHECK-NEXT:    # encoding: [0x79,A]699; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1700; CHECK-NEXT:  # %bb.1: # %a701; CHECK-NEXT:    jmp a # TAILCALL702; CHECK-NEXT:    # encoding: [0xeb,A]703; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1704entry:705  %load1 = load i32, ptr @g32706  ; Subtract -0x80, which can be done with an 8-bit immediate but only as707  ; a subtract where that immediate can be negative.708  %sub = sub i32 %load1, -128709  store i32 %sub, ptr @g32710  %cond = icmp slt i32 %sub, 0711  br i1 %cond, label %a, label %b712 713a:714  tail call void @a()715  ret void716 717b:718  tail call void @b()719  ret void720}721 722define void @sub16_imm_br() nounwind {723; CHECK-LABEL: sub16_imm_br:724; CHECK:       # %bb.0: # %entry725; CHECK-NEXT:    addw $-32768, g16(%rip) # encoding: [0x66,0x81,0x05,A,A,A,A,0x00,0x80]726; CHECK-NEXT:    # fixup A - offset: 3, value: g16-2, kind: reloc_riprel_4byte727; CHECK-NEXT:    # imm = 0x8000728; CHECK-NEXT:    jns b # TAILCALL729; CHECK-NEXT:    # encoding: [0x79,A]730; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1731; CHECK-NEXT:  # %bb.1: # %a732; CHECK-NEXT:    jmp a # TAILCALL733; CHECK-NEXT:    # encoding: [0xeb,A]734; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1735entry:736  %load1 = load i16, ptr @g16737  ; Subtract -0x8000, which requires a 16 bits of immediate but still gets738  ; lowered as an add.739  %sub = sub i16 %load1, -32768740  store i16 %sub, ptr @g16741  %cond = icmp slt i16 %sub, 0742  br i1 %cond, label %a, label %b743 744a:745  tail call void @a()746  ret void747 748b:749  tail call void @b()750  ret void751}752 753define void @sub16_imm8_br() nounwind {754; CHECK-LABEL: sub16_imm8_br:755; CHECK:       # %bb.0: # %entry756; CHECK-NEXT:    subw $-128, g16(%rip) # encoding: [0x66,0x83,0x2d,A,A,A,A,0x80]757; CHECK-NEXT:    # fixup A - offset: 3, value: g16-1, kind: reloc_riprel_4byte758; CHECK-NEXT:    jns b # TAILCALL759; CHECK-NEXT:    # encoding: [0x79,A]760; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1761; CHECK-NEXT:  # %bb.1: # %a762; CHECK-NEXT:    jmp a # TAILCALL763; CHECK-NEXT:    # encoding: [0xeb,A]764; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1765entry:766  %load1 = load i16, ptr @g16767  ; Subtract -0x80, which can be done with an 8-bit immediate but only as768  ; a subtract where that immediate can be negative.769  %sub = sub i16 %load1, -128770  store i16 %sub, ptr @g16771  %cond = icmp slt i16 %sub, 0772  br i1 %cond, label %a, label %b773 774a:775  tail call void @a()776  ret void777 778b:779  tail call void @b()780  ret void781}782 783define void @sub8_imm_br() nounwind {784; CHECK-LABEL: sub8_imm_br:785; CHECK:       # %bb.0: # %entry786; CHECK-NEXT:    addb $-128, g8(%rip) # encoding: [0x80,0x05,A,A,A,A,0x80]787; CHECK-NEXT:    # fixup A - offset: 2, value: g8-1, kind: reloc_riprel_4byte788; CHECK-NEXT:    jns b # TAILCALL789; CHECK-NEXT:    # encoding: [0x79,A]790; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1791; CHECK-NEXT:  # %bb.1: # %a792; CHECK-NEXT:    jmp a # TAILCALL793; CHECK-NEXT:    # encoding: [0xeb,A]794; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1795entry:796  %load1 = load i8, ptr @g8797  ; Subtract -0x80, which requires an 8-bit immediate but still gets lowered as798  ; an add.799  %sub = sub i8 %load1, -128800  store i8 %sub, ptr @g8801  %cond = icmp slt i8 %sub, 0802  br i1 %cond, label %a, label %b803 804a:805  tail call void @a()806  ret void807 808b:809  tail call void @b()810  ret void811}812 813define void @sub64_reg_br(i64 %arg) nounwind {814; CHECK-LABEL: sub64_reg_br:815; CHECK:       # %bb.0: # %entry816; CHECK-NEXT:    subq %rdi, g64(%rip) # encoding: [0x48,0x29,0x3d,A,A,A,A]817; CHECK-NEXT:    # fixup A - offset: 3, value: g64, kind: reloc_riprel_4byte818; CHECK-NEXT:    jns b # TAILCALL819; CHECK-NEXT:    # encoding: [0x79,A]820; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1821; CHECK-NEXT:  # %bb.1: # %a822; CHECK-NEXT:    jmp a # TAILCALL823; CHECK-NEXT:    # encoding: [0xeb,A]824; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1825entry:826  %load1 = load i64, ptr @g64827  %sub = sub i64 %load1, %arg828  store i64 %sub, ptr @g64829  %cond = icmp slt i64 %sub, 0830  br i1 %cond, label %a, label %b831 832a:833  tail call void @a()834  ret void835 836b:837  tail call void @b()838  ret void839}840 841define void @sub32_reg_br(i32 %arg) nounwind {842; CHECK-LABEL: sub32_reg_br:843; CHECK:       # %bb.0: # %entry844; CHECK-NEXT:    subl %edi, g32(%rip) # encoding: [0x29,0x3d,A,A,A,A]845; CHECK-NEXT:    # fixup A - offset: 2, value: g32, kind: reloc_riprel_4byte846; CHECK-NEXT:    jns b # TAILCALL847; CHECK-NEXT:    # encoding: [0x79,A]848; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1849; CHECK-NEXT:  # %bb.1: # %a850; CHECK-NEXT:    jmp a # TAILCALL851; CHECK-NEXT:    # encoding: [0xeb,A]852; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1853entry:854  %load1 = load i32, ptr @g32855  %sub = sub i32 %load1, %arg856  store i32 %sub, ptr @g32857  %cond = icmp slt i32 %sub, 0858  br i1 %cond, label %a, label %b859 860a:861  tail call void @a()862  ret void863 864b:865  tail call void @b()866  ret void867}868 869define void @sub16_reg_br(i16 %arg) nounwind {870; CHECK-LABEL: sub16_reg_br:871; CHECK:       # %bb.0: # %entry872; CHECK-NEXT:    subw %di, g16(%rip) # encoding: [0x66,0x29,0x3d,A,A,A,A]873; CHECK-NEXT:    # fixup A - offset: 3, value: g16, kind: reloc_riprel_4byte874; CHECK-NEXT:    jns b # TAILCALL875; CHECK-NEXT:    # encoding: [0x79,A]876; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1877; CHECK-NEXT:  # %bb.1: # %a878; CHECK-NEXT:    jmp a # TAILCALL879; CHECK-NEXT:    # encoding: [0xeb,A]880; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1881entry:882  %load1 = load i16, ptr @g16883  %sub = sub i16 %load1, %arg884  store i16 %sub, ptr @g16885  %cond = icmp slt i16 %sub, 0886  br i1 %cond, label %a, label %b887 888a:889  tail call void @a()890  ret void891 892b:893  tail call void @b()894  ret void895}896 897define void @sub8_reg_br(i8 %arg) nounwind {898; CHECK-LABEL: sub8_reg_br:899; CHECK:       # %bb.0: # %entry900; CHECK-NEXT:    subb %dil, g8(%rip) # encoding: [0x40,0x28,0x3d,A,A,A,A]901; CHECK-NEXT:    # fixup A - offset: 3, value: g8, kind: reloc_riprel_4byte902; CHECK-NEXT:    jns b # TAILCALL903; CHECK-NEXT:    # encoding: [0x79,A]904; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1905; CHECK-NEXT:  # %bb.1: # %a906; CHECK-NEXT:    jmp a # TAILCALL907; CHECK-NEXT:    # encoding: [0xeb,A]908; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1909entry:910  %load1 = load i8, ptr @g8911  %sub = sub i8 %load1, %arg912  store i8 %sub, ptr @g8913  %cond = icmp slt i8 %sub, 0914  br i1 %cond, label %a, label %b915 916a:917  tail call void @a()918  ret void919 920b:921  tail call void @b()922  ret void923}924 925define void @and64_imm32_br() nounwind {926; CHECK-LABEL: and64_imm32_br:927; CHECK:       # %bb.0: # %entry928; CHECK-NEXT:    andq $16777215, g64(%rip) # encoding: [0x48,0x81,0x25,A,A,A,A,0xff,0xff,0xff,0x00]929; CHECK-NEXT:    # fixup A - offset: 3, value: g64-4, kind: reloc_riprel_4byte930; CHECK-NEXT:    # imm = 0xFFFFFF931; CHECK-NEXT:    jne b # TAILCALL932; CHECK-NEXT:    # encoding: [0x75,A]933; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1934; CHECK-NEXT:  # %bb.1: # %a935; CHECK-NEXT:    jmp a # TAILCALL936; CHECK-NEXT:    # encoding: [0xeb,A]937; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1938entry:939  %load1 = load i64, ptr @g64940  ; And 0x00FFFFFF, a positive immediate requiring 24-bits.941  %and = and i64 %load1, 16777215942  store i64 %and, ptr @g64943  %cond = icmp eq i64 %and, 0944  br i1 %cond, label %a, label %b945 946a:947  tail call void @a()948  ret void949 950b:951  tail call void @b()952  ret void953}954 955define void @and64_sext_imm32_br() nounwind {956; CHECK-LABEL: and64_sext_imm32_br:957; CHECK:       # %bb.0: # %entry958; CHECK-NEXT:    andq $-2147483648, g64(%rip) # encoding: [0x48,0x81,0x25,A,A,A,A,0x00,0x00,0x00,0x80]959; CHECK-NEXT:    # fixup A - offset: 3, value: g64-4, kind: reloc_riprel_4byte960; CHECK-NEXT:    # imm = 0x80000000961; CHECK-NEXT:    jne b # TAILCALL962; CHECK-NEXT:    # encoding: [0x75,A]963; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1964; CHECK-NEXT:  # %bb.1: # %a965; CHECK-NEXT:    jmp a # TAILCALL966; CHECK-NEXT:    # encoding: [0xeb,A]967; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1968entry:969  %load1 = load i64, ptr @g64970  ; And -0x80000000, which requires sign-extended 32 bits.971  %and = and i64 %load1, -2147483648972  store i64 %and, ptr @g64973  %cond = icmp eq i64 %and, 0974  br i1 %cond, label %a, label %b975 976a:977  tail call void @a()978  ret void979 980b:981  tail call void @b()982  ret void983}984 985define void @and64_imm8_br() nounwind {986; CHECK-LABEL: and64_imm8_br:987; CHECK:       # %bb.0: # %entry988; CHECK-NEXT:    andq $15, g64(%rip) # encoding: [0x48,0x83,0x25,A,A,A,A,0x0f]989; CHECK-NEXT:    # fixup A - offset: 3, value: g64-1, kind: reloc_riprel_4byte990; CHECK-NEXT:    jne b # TAILCALL991; CHECK-NEXT:    # encoding: [0x75,A]992; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_1993; CHECK-NEXT:  # %bb.1: # %a994; CHECK-NEXT:    jmp a # TAILCALL995; CHECK-NEXT:    # encoding: [0xeb,A]996; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_1997entry:998  %load1 = load i64, ptr @g64999  %and = and i64 %load1, 151000  store i64 %and, ptr @g641001  %cond = icmp eq i64 %and, 01002  br i1 %cond, label %a, label %b1003 1004a:1005  tail call void @a()1006  ret void1007 1008b:1009  tail call void @b()1010  ret void1011}1012 1013define void @and64_imm8_neg_br() nounwind {1014; CHECK-LABEL: and64_imm8_neg_br:1015; CHECK:       # %bb.0: # %entry1016; CHECK-NEXT:    andq $-4, g64(%rip) # encoding: [0x48,0x83,0x25,A,A,A,A,0xfc]1017; CHECK-NEXT:    # fixup A - offset: 3, value: g64-1, kind: reloc_riprel_4byte1018; CHECK-NEXT:    jne b # TAILCALL1019; CHECK-NEXT:    # encoding: [0x75,A]1020; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11021; CHECK-NEXT:  # %bb.1: # %a1022; CHECK-NEXT:    jmp a # TAILCALL1023; CHECK-NEXT:    # encoding: [0xeb,A]1024; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11025entry:1026  %load1 = load i64, ptr @g641027  %and = and i64 %load1, -41028  store i64 %and, ptr @g641029  %cond = icmp eq i64 %and, 01030  br i1 %cond, label %a, label %b1031 1032a:1033  tail call void @a()1034  ret void1035 1036b:1037  tail call void @b()1038  ret void1039}1040 1041define void @and32_imm_br() nounwind {1042; CHECK-LABEL: and32_imm_br:1043; CHECK:       # %bb.0: # %entry1044; CHECK-NEXT:    andl $-2147483648, g32(%rip) # encoding: [0x81,0x25,A,A,A,A,0x00,0x00,0x00,0x80]1045; CHECK-NEXT:    # fixup A - offset: 2, value: g32-4, kind: reloc_riprel_4byte1046; CHECK-NEXT:    # imm = 0x800000001047; CHECK-NEXT:    jne b # TAILCALL1048; CHECK-NEXT:    # encoding: [0x75,A]1049; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11050; CHECK-NEXT:  # %bb.1: # %a1051; CHECK-NEXT:    jmp a # TAILCALL1052; CHECK-NEXT:    # encoding: [0xeb,A]1053; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11054entry:1055  %load1 = load i32, ptr @g321056  ; And 0x80000000, a positive number requiring 32 bits of immediate.1057  %and = and i32 %load1, 21474836481058  store i32 %and, ptr @g321059  %cond = icmp eq i32 %and, 01060  br i1 %cond, label %a, label %b1061 1062a:1063  tail call void @a()1064  ret void1065 1066b:1067  tail call void @b()1068  ret void1069}1070 1071define void @and32_imm8_br() nounwind {1072; CHECK-LABEL: and32_imm8_br:1073; CHECK:       # %bb.0: # %entry1074; CHECK-NEXT:    andl $15, g32(%rip) # encoding: [0x83,0x25,A,A,A,A,0x0f]1075; CHECK-NEXT:    # fixup A - offset: 2, value: g32-1, kind: reloc_riprel_4byte1076; CHECK-NEXT:    jne b # TAILCALL1077; CHECK-NEXT:    # encoding: [0x75,A]1078; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11079; CHECK-NEXT:  # %bb.1: # %a1080; CHECK-NEXT:    jmp a # TAILCALL1081; CHECK-NEXT:    # encoding: [0xeb,A]1082; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11083entry:1084  %load1 = load i32, ptr @g321085  %and = and i32 %load1, 151086  store i32 %and, ptr @g321087  %cond = icmp eq i32 %and, 01088  br i1 %cond, label %a, label %b1089 1090a:1091  tail call void @a()1092  ret void1093 1094b:1095  tail call void @b()1096  ret void1097}1098 1099define void @and32_imm8_neg_br() nounwind {1100; CHECK-LABEL: and32_imm8_neg_br:1101; CHECK:       # %bb.0: # %entry1102; CHECK-NEXT:    andl $-4, g32(%rip) # encoding: [0x83,0x25,A,A,A,A,0xfc]1103; CHECK-NEXT:    # fixup A - offset: 2, value: g32-1, kind: reloc_riprel_4byte1104; CHECK-NEXT:    jne b # TAILCALL1105; CHECK-NEXT:    # encoding: [0x75,A]1106; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11107; CHECK-NEXT:  # %bb.1: # %a1108; CHECK-NEXT:    jmp a # TAILCALL1109; CHECK-NEXT:    # encoding: [0xeb,A]1110; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11111entry:1112  %load1 = load i32, ptr @g321113  %and = and i32 %load1, -41114  store i32 %and, ptr @g321115  %cond = icmp eq i32 %and, 01116  br i1 %cond, label %a, label %b1117 1118a:1119  tail call void @a()1120  ret void1121 1122b:1123  tail call void @b()1124  ret void1125}1126 1127define void @and16_imm_br() nounwind {1128; CHECK-LABEL: and16_imm_br:1129; CHECK:       # %bb.0: # %entry1130; CHECK-NEXT:    andw $-32768, g16(%rip) # encoding: [0x66,0x81,0x25,A,A,A,A,0x00,0x80]1131; CHECK-NEXT:    # fixup A - offset: 3, value: g16-2, kind: reloc_riprel_4byte1132; CHECK-NEXT:    # imm = 0x80001133; CHECK-NEXT:    jne b # TAILCALL1134; CHECK-NEXT:    # encoding: [0x75,A]1135; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11136; CHECK-NEXT:  # %bb.1: # %a1137; CHECK-NEXT:    jmp a # TAILCALL1138; CHECK-NEXT:    # encoding: [0xeb,A]1139; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11140entry:1141  %load1 = load i16, ptr @g161142  %and = and i16 %load1, 327681143  store i16 %and, ptr @g161144  %cond = icmp eq i16 %and, 01145  br i1 %cond, label %a, label %b1146 1147a:1148  tail call void @a()1149  ret void1150 1151b:1152  tail call void @b()1153  ret void1154}1155 1156define void @and16_imm8_br() nounwind {1157; CHECK-LABEL: and16_imm8_br:1158; CHECK:       # %bb.0: # %entry1159; CHECK-NEXT:    andw $15, g16(%rip) # encoding: [0x66,0x83,0x25,A,A,A,A,0x0f]1160; CHECK-NEXT:    # fixup A - offset: 3, value: g16-1, kind: reloc_riprel_4byte1161; CHECK-NEXT:    jne b # TAILCALL1162; CHECK-NEXT:    # encoding: [0x75,A]1163; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11164; CHECK-NEXT:  # %bb.1: # %a1165; CHECK-NEXT:    jmp a # TAILCALL1166; CHECK-NEXT:    # encoding: [0xeb,A]1167; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11168entry:1169  %load1 = load i16, ptr @g161170  %and = and i16 %load1, 151171  store i16 %and, ptr @g161172  %cond = icmp eq i16 %and, 01173  br i1 %cond, label %a, label %b1174 1175a:1176  tail call void @a()1177  ret void1178 1179b:1180  tail call void @b()1181  ret void1182}1183 1184define void @and16_imm8_neg_br() nounwind {1185; CHECK-LABEL: and16_imm8_neg_br:1186; CHECK:       # %bb.0: # %entry1187; CHECK-NEXT:    andw $-4, g16(%rip) # encoding: [0x66,0x83,0x25,A,A,A,A,0xfc]1188; CHECK-NEXT:    # fixup A - offset: 3, value: g16-1, kind: reloc_riprel_4byte1189; CHECK-NEXT:    jne b # TAILCALL1190; CHECK-NEXT:    # encoding: [0x75,A]1191; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11192; CHECK-NEXT:  # %bb.1: # %a1193; CHECK-NEXT:    jmp a # TAILCALL1194; CHECK-NEXT:    # encoding: [0xeb,A]1195; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11196entry:1197  %load1 = load i16, ptr @g161198  %and = and i16 %load1, -41199  store i16 %and, ptr @g161200  %cond = icmp eq i16 %and, 01201  br i1 %cond, label %a, label %b1202 1203a:1204  tail call void @a()1205  ret void1206 1207b:1208  tail call void @b()1209  ret void1210}1211 1212define void @and8_imm_br() nounwind {1213; CHECK-LABEL: and8_imm_br:1214; CHECK:       # %bb.0: # %entry1215; CHECK-NEXT:    andb $-4, g8(%rip) # encoding: [0x80,0x25,A,A,A,A,0xfc]1216; CHECK-NEXT:    # fixup A - offset: 2, value: g8-1, kind: reloc_riprel_4byte1217; CHECK-NEXT:    jne b # TAILCALL1218; CHECK-NEXT:    # encoding: [0x75,A]1219; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11220; CHECK-NEXT:  # %bb.1: # %a1221; CHECK-NEXT:    jmp a # TAILCALL1222; CHECK-NEXT:    # encoding: [0xeb,A]1223; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11224entry:1225  %load1 = load i8, ptr @g81226  %and = and i8 %load1, -41227  store i8 %and, ptr @g81228  %cond = icmp eq i8 %and, 01229  br i1 %cond, label %a, label %b1230 1231a:1232  tail call void @a()1233  ret void1234 1235b:1236  tail call void @b()1237  ret void1238}1239 1240define void @and64_reg_br(i64 %arg) nounwind {1241; CHECK-LABEL: and64_reg_br:1242; CHECK:       # %bb.0: # %entry1243; CHECK-NEXT:    andq %rdi, g64(%rip) # encoding: [0x48,0x21,0x3d,A,A,A,A]1244; CHECK-NEXT:    # fixup A - offset: 3, value: g64, kind: reloc_riprel_4byte1245; CHECK-NEXT:    jne b # TAILCALL1246; CHECK-NEXT:    # encoding: [0x75,A]1247; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11248; CHECK-NEXT:  # %bb.1: # %a1249; CHECK-NEXT:    jmp a # TAILCALL1250; CHECK-NEXT:    # encoding: [0xeb,A]1251; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11252entry:1253  %load1 = load i64, ptr @g641254  %and = and i64 %load1, %arg1255  store i64 %and, ptr @g641256  %cond = icmp eq i64 %and, 01257  br i1 %cond, label %a, label %b1258 1259a:1260  tail call void @a()1261  ret void1262 1263b:1264  tail call void @b()1265  ret void1266}1267 1268define void @and32_reg_br(i32 %arg) nounwind {1269; CHECK-LABEL: and32_reg_br:1270; CHECK:       # %bb.0: # %entry1271; CHECK-NEXT:    andl %edi, g32(%rip) # encoding: [0x21,0x3d,A,A,A,A]1272; CHECK-NEXT:    # fixup A - offset: 2, value: g32, kind: reloc_riprel_4byte1273; CHECK-NEXT:    jne b # TAILCALL1274; CHECK-NEXT:    # encoding: [0x75,A]1275; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11276; CHECK-NEXT:  # %bb.1: # %a1277; CHECK-NEXT:    jmp a # TAILCALL1278; CHECK-NEXT:    # encoding: [0xeb,A]1279; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11280entry:1281  %load1 = load i32, ptr @g321282  %and = and i32 %load1, %arg1283  store i32 %and, ptr @g321284  %cond = icmp eq i32 %and, 01285  br i1 %cond, label %a, label %b1286 1287a:1288  tail call void @a()1289  ret void1290 1291b:1292  tail call void @b()1293  ret void1294}1295 1296define void @and16_reg_br(i16 %arg) nounwind {1297; CHECK-LABEL: and16_reg_br:1298; CHECK:       # %bb.0: # %entry1299; CHECK-NEXT:    andw %di, g16(%rip) # encoding: [0x66,0x21,0x3d,A,A,A,A]1300; CHECK-NEXT:    # fixup A - offset: 3, value: g16, kind: reloc_riprel_4byte1301; CHECK-NEXT:    jne b # TAILCALL1302; CHECK-NEXT:    # encoding: [0x75,A]1303; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11304; CHECK-NEXT:  # %bb.1: # %a1305; CHECK-NEXT:    jmp a # TAILCALL1306; CHECK-NEXT:    # encoding: [0xeb,A]1307; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11308entry:1309  %load1 = load i16, ptr @g161310  %and = and i16 %load1, %arg1311  store i16 %and, ptr @g161312  %cond = icmp eq i16 %and, 01313  br i1 %cond, label %a, label %b1314 1315a:1316  tail call void @a()1317  ret void1318 1319b:1320  tail call void @b()1321  ret void1322}1323 1324define void @and8_reg_br(i8 %arg) nounwind {1325; CHECK-LABEL: and8_reg_br:1326; CHECK:       # %bb.0: # %entry1327; CHECK-NEXT:    andb %dil, g8(%rip) # encoding: [0x40,0x20,0x3d,A,A,A,A]1328; CHECK-NEXT:    # fixup A - offset: 3, value: g8, kind: reloc_riprel_4byte1329; CHECK-NEXT:    jne b # TAILCALL1330; CHECK-NEXT:    # encoding: [0x75,A]1331; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11332; CHECK-NEXT:  # %bb.1: # %a1333; CHECK-NEXT:    jmp a # TAILCALL1334; CHECK-NEXT:    # encoding: [0xeb,A]1335; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11336entry:1337  %load1 = load i8, ptr @g81338  %and = and i8 %load1, %arg1339  store i8 %and, ptr @g81340  %cond = icmp eq i8 %and, 01341  br i1 %cond, label %a, label %b1342 1343a:1344  tail call void @a()1345  ret void1346 1347b:1348  tail call void @b()1349  ret void1350}1351 1352define void @or64_imm32_br() nounwind {1353; CHECK-LABEL: or64_imm32_br:1354; CHECK:       # %bb.0: # %entry1355; CHECK-NEXT:    orq $16777215, g64(%rip) # encoding: [0x48,0x81,0x0d,A,A,A,A,0xff,0xff,0xff,0x00]1356; CHECK-NEXT:    # fixup A - offset: 3, value: g64-4, kind: reloc_riprel_4byte1357; CHECK-NEXT:    # imm = 0xFFFFFF1358; CHECK-NEXT:    jne b # TAILCALL1359; CHECK-NEXT:    # encoding: [0x75,A]1360; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11361; CHECK-NEXT:  # %bb.1: # %a1362; CHECK-NEXT:    jmp a # TAILCALL1363; CHECK-NEXT:    # encoding: [0xeb,A]1364; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11365entry:1366  %load1 = load i64, ptr @g641367  ; Or 0x00FFFFFF, a positive immediate requiring 24-bits.1368  %or = or i64 %load1, 167772151369  store i64 %or, ptr @g641370  %cond = icmp eq i64 %or, 01371  br i1 %cond, label %a, label %b1372 1373a:1374  tail call void @a()1375  ret void1376 1377b:1378  tail call void @b()1379  ret void1380}1381 1382define void @or64_sext_imm32_br() nounwind {1383; CHECK-LABEL: or64_sext_imm32_br:1384; CHECK:       # %bb.0: # %entry1385; CHECK-NEXT:    orq $-2147483648, g64(%rip) # encoding: [0x48,0x81,0x0d,A,A,A,A,0x00,0x00,0x00,0x80]1386; CHECK-NEXT:    # fixup A - offset: 3, value: g64-4, kind: reloc_riprel_4byte1387; CHECK-NEXT:    # imm = 0x800000001388; CHECK-NEXT:    jne b # TAILCALL1389; CHECK-NEXT:    # encoding: [0x75,A]1390; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11391; CHECK-NEXT:  # %bb.1: # %a1392; CHECK-NEXT:    jmp a # TAILCALL1393; CHECK-NEXT:    # encoding: [0xeb,A]1394; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11395entry:1396  %load1 = load i64, ptr @g641397  ; Or -0x80000000, which requires sign-extended 32 bits.1398  %or = or i64 %load1, -21474836481399  store i64 %or, ptr @g641400  %cond = icmp eq i64 %or, 01401  br i1 %cond, label %a, label %b1402 1403a:1404  tail call void @a()1405  ret void1406 1407b:1408  tail call void @b()1409  ret void1410}1411 1412define void @or64_imm8_br() nounwind {1413; CHECK-LABEL: or64_imm8_br:1414; CHECK:       # %bb.0: # %entry1415; CHECK-NEXT:    orq $15, g64(%rip) # encoding: [0x48,0x83,0x0d,A,A,A,A,0x0f]1416; CHECK-NEXT:    # fixup A - offset: 3, value: g64-1, kind: reloc_riprel_4byte1417; CHECK-NEXT:    jne b # TAILCALL1418; CHECK-NEXT:    # encoding: [0x75,A]1419; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11420; CHECK-NEXT:  # %bb.1: # %a1421; CHECK-NEXT:    jmp a # TAILCALL1422; CHECK-NEXT:    # encoding: [0xeb,A]1423; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11424entry:1425  %load1 = load i64, ptr @g641426  %or = or i64 %load1, 151427  store i64 %or, ptr @g641428  %cond = icmp eq i64 %or, 01429  br i1 %cond, label %a, label %b1430 1431a:1432  tail call void @a()1433  ret void1434 1435b:1436  tail call void @b()1437  ret void1438}1439 1440define void @or64_imm8_neg_br() nounwind {1441; CHECK-LABEL: or64_imm8_neg_br:1442; CHECK:       # %bb.0: # %entry1443; CHECK-NEXT:    orq $-4, g64(%rip) # encoding: [0x48,0x83,0x0d,A,A,A,A,0xfc]1444; CHECK-NEXT:    # fixup A - offset: 3, value: g64-1, kind: reloc_riprel_4byte1445; CHECK-NEXT:    jne b # TAILCALL1446; CHECK-NEXT:    # encoding: [0x75,A]1447; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11448; CHECK-NEXT:  # %bb.1: # %a1449; CHECK-NEXT:    jmp a # TAILCALL1450; CHECK-NEXT:    # encoding: [0xeb,A]1451; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11452entry:1453  %load1 = load i64, ptr @g641454  %or = or i64 %load1, -41455  store i64 %or, ptr @g641456  %cond = icmp eq i64 %or, 01457  br i1 %cond, label %a, label %b1458 1459a:1460  tail call void @a()1461  ret void1462 1463b:1464  tail call void @b()1465  ret void1466}1467 1468define void @or32_imm_br() nounwind {1469; CHECK-LABEL: or32_imm_br:1470; CHECK:       # %bb.0: # %entry1471; CHECK-NEXT:    orl $-2147483648, g32(%rip) # encoding: [0x81,0x0d,A,A,A,A,0x00,0x00,0x00,0x80]1472; CHECK-NEXT:    # fixup A - offset: 2, value: g32-4, kind: reloc_riprel_4byte1473; CHECK-NEXT:    # imm = 0x800000001474; CHECK-NEXT:    jne b # TAILCALL1475; CHECK-NEXT:    # encoding: [0x75,A]1476; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11477; CHECK-NEXT:  # %bb.1: # %a1478; CHECK-NEXT:    jmp a # TAILCALL1479; CHECK-NEXT:    # encoding: [0xeb,A]1480; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11481entry:1482  %load1 = load i32, ptr @g321483  ; Or 0x80000000, a positive number requiring 32 bits of immediate.1484  %or = or i32 %load1, 21474836481485  store i32 %or, ptr @g321486  %cond = icmp eq i32 %or, 01487  br i1 %cond, label %a, label %b1488 1489a:1490  tail call void @a()1491  ret void1492 1493b:1494  tail call void @b()1495  ret void1496}1497 1498define void @or32_imm8_br() nounwind {1499; CHECK-LABEL: or32_imm8_br:1500; CHECK:       # %bb.0: # %entry1501; CHECK-NEXT:    orl $15, g32(%rip) # encoding: [0x83,0x0d,A,A,A,A,0x0f]1502; CHECK-NEXT:    # fixup A - offset: 2, value: g32-1, kind: reloc_riprel_4byte1503; CHECK-NEXT:    jne b # TAILCALL1504; CHECK-NEXT:    # encoding: [0x75,A]1505; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11506; CHECK-NEXT:  # %bb.1: # %a1507; CHECK-NEXT:    jmp a # TAILCALL1508; CHECK-NEXT:    # encoding: [0xeb,A]1509; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11510entry:1511  %load1 = load i32, ptr @g321512  %or = or i32 %load1, 151513  store i32 %or, ptr @g321514  %cond = icmp eq i32 %or, 01515  br i1 %cond, label %a, label %b1516 1517a:1518  tail call void @a()1519  ret void1520 1521b:1522  tail call void @b()1523  ret void1524}1525 1526define void @or32_imm8_neg_br() nounwind {1527; CHECK-LABEL: or32_imm8_neg_br:1528; CHECK:       # %bb.0: # %entry1529; CHECK-NEXT:    orl $-4, g32(%rip) # encoding: [0x83,0x0d,A,A,A,A,0xfc]1530; CHECK-NEXT:    # fixup A - offset: 2, value: g32-1, kind: reloc_riprel_4byte1531; CHECK-NEXT:    jne b # TAILCALL1532; CHECK-NEXT:    # encoding: [0x75,A]1533; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11534; CHECK-NEXT:  # %bb.1: # %a1535; CHECK-NEXT:    jmp a # TAILCALL1536; CHECK-NEXT:    # encoding: [0xeb,A]1537; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11538entry:1539  %load1 = load i32, ptr @g321540  %or = or i32 %load1, -41541  store i32 %or, ptr @g321542  %cond = icmp eq i32 %or, 01543  br i1 %cond, label %a, label %b1544 1545a:1546  tail call void @a()1547  ret void1548 1549b:1550  tail call void @b()1551  ret void1552}1553 1554define void @or16_imm_br() nounwind {1555; CHECK-LABEL: or16_imm_br:1556; CHECK:       # %bb.0: # %entry1557; CHECK-NEXT:    orw $-32768, g16(%rip) # encoding: [0x66,0x81,0x0d,A,A,A,A,0x00,0x80]1558; CHECK-NEXT:    # fixup A - offset: 3, value: g16-2, kind: reloc_riprel_4byte1559; CHECK-NEXT:    # imm = 0x80001560; CHECK-NEXT:    jne b # TAILCALL1561; CHECK-NEXT:    # encoding: [0x75,A]1562; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11563; CHECK-NEXT:  # %bb.1: # %a1564; CHECK-NEXT:    jmp a # TAILCALL1565; CHECK-NEXT:    # encoding: [0xeb,A]1566; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11567entry:1568  %load1 = load i16, ptr @g161569  %or = or i16 %load1, 327681570  store i16 %or, ptr @g161571  %cond = icmp eq i16 %or, 01572  br i1 %cond, label %a, label %b1573 1574a:1575  tail call void @a()1576  ret void1577 1578b:1579  tail call void @b()1580  ret void1581}1582 1583define void @or16_imm8_br() nounwind {1584; CHECK-LABEL: or16_imm8_br:1585; CHECK:       # %bb.0: # %entry1586; CHECK-NEXT:    orw $15, g16(%rip) # encoding: [0x66,0x83,0x0d,A,A,A,A,0x0f]1587; CHECK-NEXT:    # fixup A - offset: 3, value: g16-1, kind: reloc_riprel_4byte1588; CHECK-NEXT:    jne b # TAILCALL1589; CHECK-NEXT:    # encoding: [0x75,A]1590; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11591; CHECK-NEXT:  # %bb.1: # %a1592; CHECK-NEXT:    jmp a # TAILCALL1593; CHECK-NEXT:    # encoding: [0xeb,A]1594; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11595entry:1596  %load1 = load i16, ptr @g161597  %or = or i16 %load1, 151598  store i16 %or, ptr @g161599  %cond = icmp eq i16 %or, 01600  br i1 %cond, label %a, label %b1601 1602a:1603  tail call void @a()1604  ret void1605 1606b:1607  tail call void @b()1608  ret void1609}1610 1611define void @or16_imm8_neg_br() nounwind {1612; CHECK-LABEL: or16_imm8_neg_br:1613; CHECK:       # %bb.0: # %entry1614; CHECK-NEXT:    orw $-4, g16(%rip) # encoding: [0x66,0x83,0x0d,A,A,A,A,0xfc]1615; CHECK-NEXT:    # fixup A - offset: 3, value: g16-1, kind: reloc_riprel_4byte1616; CHECK-NEXT:    jne b # TAILCALL1617; CHECK-NEXT:    # encoding: [0x75,A]1618; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11619; CHECK-NEXT:  # %bb.1: # %a1620; CHECK-NEXT:    jmp a # TAILCALL1621; CHECK-NEXT:    # encoding: [0xeb,A]1622; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11623entry:1624  %load1 = load i16, ptr @g161625  %or = or i16 %load1, -41626  store i16 %or, ptr @g161627  %cond = icmp eq i16 %or, 01628  br i1 %cond, label %a, label %b1629 1630a:1631  tail call void @a()1632  ret void1633 1634b:1635  tail call void @b()1636  ret void1637}1638 1639define void @or8_imm_br() nounwind {1640; CHECK-LABEL: or8_imm_br:1641; CHECK:       # %bb.0: # %entry1642; CHECK-NEXT:    orb $-4, g8(%rip) # encoding: [0x80,0x0d,A,A,A,A,0xfc]1643; CHECK-NEXT:    # fixup A - offset: 2, value: g8-1, kind: reloc_riprel_4byte1644; CHECK-NEXT:    jne b # TAILCALL1645; CHECK-NEXT:    # encoding: [0x75,A]1646; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11647; CHECK-NEXT:  # %bb.1: # %a1648; CHECK-NEXT:    jmp a # TAILCALL1649; CHECK-NEXT:    # encoding: [0xeb,A]1650; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11651entry:1652  %load1 = load i8, ptr @g81653  %or = or i8 %load1, -41654  store i8 %or, ptr @g81655  %cond = icmp eq i8 %or, 01656  br i1 %cond, label %a, label %b1657 1658a:1659  tail call void @a()1660  ret void1661 1662b:1663  tail call void @b()1664  ret void1665}1666 1667define void @or64_reg_br(i64 %arg) nounwind {1668; CHECK-LABEL: or64_reg_br:1669; CHECK:       # %bb.0: # %entry1670; CHECK-NEXT:    orq %rdi, g64(%rip) # encoding: [0x48,0x09,0x3d,A,A,A,A]1671; CHECK-NEXT:    # fixup A - offset: 3, value: g64, kind: reloc_riprel_4byte1672; CHECK-NEXT:    jne b # TAILCALL1673; CHECK-NEXT:    # encoding: [0x75,A]1674; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11675; CHECK-NEXT:  # %bb.1: # %a1676; CHECK-NEXT:    jmp a # TAILCALL1677; CHECK-NEXT:    # encoding: [0xeb,A]1678; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11679entry:1680  %load1 = load i64, ptr @g641681  %or = or i64 %load1, %arg1682  store i64 %or, ptr @g641683  %cond = icmp eq i64 %or, 01684  br i1 %cond, label %a, label %b1685 1686a:1687  tail call void @a()1688  ret void1689 1690b:1691  tail call void @b()1692  ret void1693}1694 1695define void @or32_reg_br(i32 %arg) nounwind {1696; CHECK-LABEL: or32_reg_br:1697; CHECK:       # %bb.0: # %entry1698; CHECK-NEXT:    orl %edi, g32(%rip) # encoding: [0x09,0x3d,A,A,A,A]1699; CHECK-NEXT:    # fixup A - offset: 2, value: g32, kind: reloc_riprel_4byte1700; CHECK-NEXT:    jne b # TAILCALL1701; CHECK-NEXT:    # encoding: [0x75,A]1702; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11703; CHECK-NEXT:  # %bb.1: # %a1704; CHECK-NEXT:    jmp a # TAILCALL1705; CHECK-NEXT:    # encoding: [0xeb,A]1706; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11707entry:1708  %load1 = load i32, ptr @g321709  %or = or i32 %load1, %arg1710  store i32 %or, ptr @g321711  %cond = icmp eq i32 %or, 01712  br i1 %cond, label %a, label %b1713 1714a:1715  tail call void @a()1716  ret void1717 1718b:1719  tail call void @b()1720  ret void1721}1722 1723define void @or16_reg_br(i16 %arg) nounwind {1724; CHECK-LABEL: or16_reg_br:1725; CHECK:       # %bb.0: # %entry1726; CHECK-NEXT:    orw %di, g16(%rip) # encoding: [0x66,0x09,0x3d,A,A,A,A]1727; CHECK-NEXT:    # fixup A - offset: 3, value: g16, kind: reloc_riprel_4byte1728; CHECK-NEXT:    jne b # TAILCALL1729; CHECK-NEXT:    # encoding: [0x75,A]1730; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11731; CHECK-NEXT:  # %bb.1: # %a1732; CHECK-NEXT:    jmp a # TAILCALL1733; CHECK-NEXT:    # encoding: [0xeb,A]1734; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11735entry:1736  %load1 = load i16, ptr @g161737  %or = or i16 %load1, %arg1738  store i16 %or, ptr @g161739  %cond = icmp eq i16 %or, 01740  br i1 %cond, label %a, label %b1741 1742a:1743  tail call void @a()1744  ret void1745 1746b:1747  tail call void @b()1748  ret void1749}1750 1751define void @or8_reg_br(i8 %arg) nounwind {1752; CHECK-LABEL: or8_reg_br:1753; CHECK:       # %bb.0: # %entry1754; CHECK-NEXT:    orb %dil, g8(%rip) # encoding: [0x40,0x08,0x3d,A,A,A,A]1755; CHECK-NEXT:    # fixup A - offset: 3, value: g8, kind: reloc_riprel_4byte1756; CHECK-NEXT:    jne b # TAILCALL1757; CHECK-NEXT:    # encoding: [0x75,A]1758; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11759; CHECK-NEXT:  # %bb.1: # %a1760; CHECK-NEXT:    jmp a # TAILCALL1761; CHECK-NEXT:    # encoding: [0xeb,A]1762; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11763entry:1764  %load1 = load i8, ptr @g81765  %or = or i8 %load1, %arg1766  store i8 %or, ptr @g81767  %cond = icmp eq i8 %or, 01768  br i1 %cond, label %a, label %b1769 1770a:1771  tail call void @a()1772  ret void1773 1774b:1775  tail call void @b()1776  ret void1777}1778 1779define void @xor64_imm32_br() nounwind {1780; CHECK-LABEL: xor64_imm32_br:1781; CHECK:       # %bb.0: # %entry1782; CHECK-NEXT:    xorq $16777215, g64(%rip) # encoding: [0x48,0x81,0x35,A,A,A,A,0xff,0xff,0xff,0x00]1783; CHECK-NEXT:    # fixup A - offset: 3, value: g64-4, kind: reloc_riprel_4byte1784; CHECK-NEXT:    # imm = 0xFFFFFF1785; CHECK-NEXT:    jne b # TAILCALL1786; CHECK-NEXT:    # encoding: [0x75,A]1787; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11788; CHECK-NEXT:  # %bb.1: # %a1789; CHECK-NEXT:    jmp a # TAILCALL1790; CHECK-NEXT:    # encoding: [0xeb,A]1791; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11792entry:1793  %load1 = load i64, ptr @g641794  ; Xor 0x00FFFFFF, a positive immediate requiring 24-bits.1795  %xor = xor i64 %load1, 167772151796  store i64 %xor, ptr @g641797  %cond = icmp eq i64 %xor, 01798  br i1 %cond, label %a, label %b1799 1800a:1801  tail call void @a()1802  ret void1803 1804b:1805  tail call void @b()1806  ret void1807}1808 1809define void @xor64_sext_imm32_br() nounwind {1810; CHECK-LABEL: xor64_sext_imm32_br:1811; CHECK:       # %bb.0: # %entry1812; CHECK-NEXT:    xorq $-2147483648, g64(%rip) # encoding: [0x48,0x81,0x35,A,A,A,A,0x00,0x00,0x00,0x80]1813; CHECK-NEXT:    # fixup A - offset: 3, value: g64-4, kind: reloc_riprel_4byte1814; CHECK-NEXT:    # imm = 0x800000001815; CHECK-NEXT:    jne b # TAILCALL1816; CHECK-NEXT:    # encoding: [0x75,A]1817; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11818; CHECK-NEXT:  # %bb.1: # %a1819; CHECK-NEXT:    jmp a # TAILCALL1820; CHECK-NEXT:    # encoding: [0xeb,A]1821; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11822entry:1823  %load1 = load i64, ptr @g641824  ; Xor -0x80000000, which requires sign-extended 32 bits.1825  %xor = xor i64 %load1, -21474836481826  store i64 %xor, ptr @g641827  %cond = icmp eq i64 %xor, 01828  br i1 %cond, label %a, label %b1829 1830a:1831  tail call void @a()1832  ret void1833 1834b:1835  tail call void @b()1836  ret void1837}1838 1839define void @xor64_imm8_br() nounwind {1840; CHECK-LABEL: xor64_imm8_br:1841; CHECK:       # %bb.0: # %entry1842; CHECK-NEXT:    xorq $15, g64(%rip) # encoding: [0x48,0x83,0x35,A,A,A,A,0x0f]1843; CHECK-NEXT:    # fixup A - offset: 3, value: g64-1, kind: reloc_riprel_4byte1844; CHECK-NEXT:    jne b # TAILCALL1845; CHECK-NEXT:    # encoding: [0x75,A]1846; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11847; CHECK-NEXT:  # %bb.1: # %a1848; CHECK-NEXT:    jmp a # TAILCALL1849; CHECK-NEXT:    # encoding: [0xeb,A]1850; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11851entry:1852  %load1 = load i64, ptr @g641853  %xor = xor i64 %load1, 151854  store i64 %xor, ptr @g641855  %cond = icmp eq i64 %xor, 01856  br i1 %cond, label %a, label %b1857 1858a:1859  tail call void @a()1860  ret void1861 1862b:1863  tail call void @b()1864  ret void1865}1866 1867define void @xor64_imm8_neg_br() nounwind {1868; CHECK-LABEL: xor64_imm8_neg_br:1869; CHECK:       # %bb.0: # %entry1870; CHECK-NEXT:    xorq $-4, g64(%rip) # encoding: [0x48,0x83,0x35,A,A,A,A,0xfc]1871; CHECK-NEXT:    # fixup A - offset: 3, value: g64-1, kind: reloc_riprel_4byte1872; CHECK-NEXT:    jne b # TAILCALL1873; CHECK-NEXT:    # encoding: [0x75,A]1874; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11875; CHECK-NEXT:  # %bb.1: # %a1876; CHECK-NEXT:    jmp a # TAILCALL1877; CHECK-NEXT:    # encoding: [0xeb,A]1878; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11879entry:1880  %load1 = load i64, ptr @g641881  %xor = xor i64 %load1, -41882  store i64 %xor, ptr @g641883  %cond = icmp eq i64 %xor, 01884  br i1 %cond, label %a, label %b1885 1886a:1887  tail call void @a()1888  ret void1889 1890b:1891  tail call void @b()1892  ret void1893}1894 1895define void @xor32_imm_br() nounwind {1896; CHECK-LABEL: xor32_imm_br:1897; CHECK:       # %bb.0: # %entry1898; CHECK-NEXT:    xorl $-2147483648, g32(%rip) # encoding: [0x81,0x35,A,A,A,A,0x00,0x00,0x00,0x80]1899; CHECK-NEXT:    # fixup A - offset: 2, value: g32-4, kind: reloc_riprel_4byte1900; CHECK-NEXT:    # imm = 0x800000001901; CHECK-NEXT:    jne b # TAILCALL1902; CHECK-NEXT:    # encoding: [0x75,A]1903; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11904; CHECK-NEXT:  # %bb.1: # %a1905; CHECK-NEXT:    jmp a # TAILCALL1906; CHECK-NEXT:    # encoding: [0xeb,A]1907; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11908entry:1909  %load1 = load i32, ptr @g321910  ; Xor 0x80000000, a positive number requiring 32 bits of immediate.1911  %xor = xor i32 %load1, 21474836481912  store i32 %xor, ptr @g321913  %cond = icmp eq i32 %xor, 01914  br i1 %cond, label %a, label %b1915 1916a:1917  tail call void @a()1918  ret void1919 1920b:1921  tail call void @b()1922  ret void1923}1924 1925define void @xor32_imm8_br() nounwind {1926; CHECK-LABEL: xor32_imm8_br:1927; CHECK:       # %bb.0: # %entry1928; CHECK-NEXT:    xorl $15, g32(%rip) # encoding: [0x83,0x35,A,A,A,A,0x0f]1929; CHECK-NEXT:    # fixup A - offset: 2, value: g32-1, kind: reloc_riprel_4byte1930; CHECK-NEXT:    jne b # TAILCALL1931; CHECK-NEXT:    # encoding: [0x75,A]1932; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11933; CHECK-NEXT:  # %bb.1: # %a1934; CHECK-NEXT:    jmp a # TAILCALL1935; CHECK-NEXT:    # encoding: [0xeb,A]1936; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11937entry:1938  %load1 = load i32, ptr @g321939  %xor = xor i32 %load1, 151940  store i32 %xor, ptr @g321941  %cond = icmp eq i32 %xor, 01942  br i1 %cond, label %a, label %b1943 1944a:1945  tail call void @a()1946  ret void1947 1948b:1949  tail call void @b()1950  ret void1951}1952 1953define void @xor32_imm8_neg_br() nounwind {1954; CHECK-LABEL: xor32_imm8_neg_br:1955; CHECK:       # %bb.0: # %entry1956; CHECK-NEXT:    xorl $-4, g32(%rip) # encoding: [0x83,0x35,A,A,A,A,0xfc]1957; CHECK-NEXT:    # fixup A - offset: 2, value: g32-1, kind: reloc_riprel_4byte1958; CHECK-NEXT:    jne b # TAILCALL1959; CHECK-NEXT:    # encoding: [0x75,A]1960; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11961; CHECK-NEXT:  # %bb.1: # %a1962; CHECK-NEXT:    jmp a # TAILCALL1963; CHECK-NEXT:    # encoding: [0xeb,A]1964; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11965entry:1966  %load1 = load i32, ptr @g321967  %xor = xor i32 %load1, -41968  store i32 %xor, ptr @g321969  %cond = icmp eq i32 %xor, 01970  br i1 %cond, label %a, label %b1971 1972a:1973  tail call void @a()1974  ret void1975 1976b:1977  tail call void @b()1978  ret void1979}1980 1981define void @xor16_imm_br() nounwind {1982; CHECK-LABEL: xor16_imm_br:1983; CHECK:       # %bb.0: # %entry1984; CHECK-NEXT:    xorw $-32768, g16(%rip) # encoding: [0x66,0x81,0x35,A,A,A,A,0x00,0x80]1985; CHECK-NEXT:    # fixup A - offset: 3, value: g16-2, kind: reloc_riprel_4byte1986; CHECK-NEXT:    # imm = 0x80001987; CHECK-NEXT:    jne b # TAILCALL1988; CHECK-NEXT:    # encoding: [0x75,A]1989; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_11990; CHECK-NEXT:  # %bb.1: # %a1991; CHECK-NEXT:    jmp a # TAILCALL1992; CHECK-NEXT:    # encoding: [0xeb,A]1993; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_11994entry:1995  %load1 = load i16, ptr @g161996  %xor = xor i16 %load1, 327681997  store i16 %xor, ptr @g161998  %cond = icmp eq i16 %xor, 01999  br i1 %cond, label %a, label %b2000 2001a:2002  tail call void @a()2003  ret void2004 2005b:2006  tail call void @b()2007  ret void2008}2009 2010define void @xor16_imm8_br() nounwind {2011; CHECK-LABEL: xor16_imm8_br:2012; CHECK:       # %bb.0: # %entry2013; CHECK-NEXT:    xorw $15, g16(%rip) # encoding: [0x66,0x83,0x35,A,A,A,A,0x0f]2014; CHECK-NEXT:    # fixup A - offset: 3, value: g16-1, kind: reloc_riprel_4byte2015; CHECK-NEXT:    jne b # TAILCALL2016; CHECK-NEXT:    # encoding: [0x75,A]2017; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_12018; CHECK-NEXT:  # %bb.1: # %a2019; CHECK-NEXT:    jmp a # TAILCALL2020; CHECK-NEXT:    # encoding: [0xeb,A]2021; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_12022entry:2023  %load1 = load i16, ptr @g162024  %xor = xor i16 %load1, 152025  store i16 %xor, ptr @g162026  %cond = icmp eq i16 %xor, 02027  br i1 %cond, label %a, label %b2028 2029a:2030  tail call void @a()2031  ret void2032 2033b:2034  tail call void @b()2035  ret void2036}2037 2038define void @xor16_imm8_neg_br() nounwind {2039; CHECK-LABEL: xor16_imm8_neg_br:2040; CHECK:       # %bb.0: # %entry2041; CHECK-NEXT:    xorw $-4, g16(%rip) # encoding: [0x66,0x83,0x35,A,A,A,A,0xfc]2042; CHECK-NEXT:    # fixup A - offset: 3, value: g16-1, kind: reloc_riprel_4byte2043; CHECK-NEXT:    jne b # TAILCALL2044; CHECK-NEXT:    # encoding: [0x75,A]2045; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_12046; CHECK-NEXT:  # %bb.1: # %a2047; CHECK-NEXT:    jmp a # TAILCALL2048; CHECK-NEXT:    # encoding: [0xeb,A]2049; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_12050entry:2051  %load1 = load i16, ptr @g162052  %xor = xor i16 %load1, -42053  store i16 %xor, ptr @g162054  %cond = icmp eq i16 %xor, 02055  br i1 %cond, label %a, label %b2056 2057a:2058  tail call void @a()2059  ret void2060 2061b:2062  tail call void @b()2063  ret void2064}2065 2066define void @xor8_imm_br() nounwind {2067; CHECK-LABEL: xor8_imm_br:2068; CHECK:       # %bb.0: # %entry2069; CHECK-NEXT:    xorb $-4, g8(%rip) # encoding: [0x80,0x35,A,A,A,A,0xfc]2070; CHECK-NEXT:    # fixup A - offset: 2, value: g8-1, kind: reloc_riprel_4byte2071; CHECK-NEXT:    jne b # TAILCALL2072; CHECK-NEXT:    # encoding: [0x75,A]2073; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_12074; CHECK-NEXT:  # %bb.1: # %a2075; CHECK-NEXT:    jmp a # TAILCALL2076; CHECK-NEXT:    # encoding: [0xeb,A]2077; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_12078entry:2079  %load1 = load i8, ptr @g82080  %xor = xor i8 %load1, -42081  store i8 %xor, ptr @g82082  %cond = icmp eq i8 %xor, 02083  br i1 %cond, label %a, label %b2084 2085a:2086  tail call void @a()2087  ret void2088 2089b:2090  tail call void @b()2091  ret void2092}2093 2094define void @xor64_reg_br(i64 %arg) nounwind {2095; CHECK-LABEL: xor64_reg_br:2096; CHECK:       # %bb.0: # %entry2097; CHECK-NEXT:    xorq %rdi, g64(%rip) # encoding: [0x48,0x31,0x3d,A,A,A,A]2098; CHECK-NEXT:    # fixup A - offset: 3, value: g64, kind: reloc_riprel_4byte2099; CHECK-NEXT:    jne b # TAILCALL2100; CHECK-NEXT:    # encoding: [0x75,A]2101; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_12102; CHECK-NEXT:  # %bb.1: # %a2103; CHECK-NEXT:    jmp a # TAILCALL2104; CHECK-NEXT:    # encoding: [0xeb,A]2105; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_12106entry:2107  %load1 = load i64, ptr @g642108  %xor = xor i64 %load1, %arg2109  store i64 %xor, ptr @g642110  %cond = icmp eq i64 %xor, 02111  br i1 %cond, label %a, label %b2112 2113a:2114  tail call void @a()2115  ret void2116 2117b:2118  tail call void @b()2119  ret void2120}2121 2122define void @xor32_reg_br(i32 %arg) nounwind {2123; CHECK-LABEL: xor32_reg_br:2124; CHECK:       # %bb.0: # %entry2125; CHECK-NEXT:    xorl %edi, g32(%rip) # encoding: [0x31,0x3d,A,A,A,A]2126; CHECK-NEXT:    # fixup A - offset: 2, value: g32, kind: reloc_riprel_4byte2127; CHECK-NEXT:    jne b # TAILCALL2128; CHECK-NEXT:    # encoding: [0x75,A]2129; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_12130; CHECK-NEXT:  # %bb.1: # %a2131; CHECK-NEXT:    jmp a # TAILCALL2132; CHECK-NEXT:    # encoding: [0xeb,A]2133; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_12134entry:2135  %load1 = load i32, ptr @g322136  %xor = xor i32 %load1, %arg2137  store i32 %xor, ptr @g322138  %cond = icmp eq i32 %xor, 02139  br i1 %cond, label %a, label %b2140 2141a:2142  tail call void @a()2143  ret void2144 2145b:2146  tail call void @b()2147  ret void2148}2149 2150define void @xor16_reg_br(i16 %arg) nounwind {2151; CHECK-LABEL: xor16_reg_br:2152; CHECK:       # %bb.0: # %entry2153; CHECK-NEXT:    xorw %di, g16(%rip) # encoding: [0x66,0x31,0x3d,A,A,A,A]2154; CHECK-NEXT:    # fixup A - offset: 3, value: g16, kind: reloc_riprel_4byte2155; CHECK-NEXT:    jne b # TAILCALL2156; CHECK-NEXT:    # encoding: [0x75,A]2157; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_12158; CHECK-NEXT:  # %bb.1: # %a2159; CHECK-NEXT:    jmp a # TAILCALL2160; CHECK-NEXT:    # encoding: [0xeb,A]2161; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_12162entry:2163  %load1 = load i16, ptr @g162164  %xor = xor i16 %load1, %arg2165  store i16 %xor, ptr @g162166  %cond = icmp eq i16 %xor, 02167  br i1 %cond, label %a, label %b2168 2169a:2170  tail call void @a()2171  ret void2172 2173b:2174  tail call void @b()2175  ret void2176}2177 2178define void @xor8_reg_br(i8 %arg) nounwind {2179; CHECK-LABEL: xor8_reg_br:2180; CHECK:       # %bb.0: # %entry2181; CHECK-NEXT:    xorb %dil, g8(%rip) # encoding: [0x40,0x30,0x3d,A,A,A,A]2182; CHECK-NEXT:    # fixup A - offset: 3, value: g8, kind: reloc_riprel_4byte2183; CHECK-NEXT:    jne b # TAILCALL2184; CHECK-NEXT:    # encoding: [0x75,A]2185; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_12186; CHECK-NEXT:  # %bb.1: # %a2187; CHECK-NEXT:    jmp a # TAILCALL2188; CHECK-NEXT:    # encoding: [0xeb,A]2189; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_12190entry:2191  %load1 = load i8, ptr @g82192  %xor = xor i8 %load1, %arg2193  store i8 %xor, ptr @g82194  %cond = icmp eq i8 %xor, 02195  br i1 %cond, label %a, label %b2196 2197a:2198  tail call void @a()2199  ret void2200 2201b:2202  tail call void @b()2203  ret void2204}2205 2206define void @neg64_br() nounwind {2207; CHECK-LABEL: neg64_br:2208; CHECK:       # %bb.0: # %entry2209; CHECK-NEXT:    negq g64(%rip) # encoding: [0x48,0xf7,0x1d,A,A,A,A]2210; CHECK-NEXT:    # fixup A - offset: 3, value: g64, kind: reloc_riprel_4byte2211; CHECK-NEXT:    jns b # TAILCALL2212; CHECK-NEXT:    # encoding: [0x79,A]2213; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_12214; CHECK-NEXT:  # %bb.1: # %a2215; CHECK-NEXT:    jmp a # TAILCALL2216; CHECK-NEXT:    # encoding: [0xeb,A]2217; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_12218entry:2219  %load1 = load i64, ptr @g642220  %sub = sub i64 0, %load12221  store i64 %sub, ptr @g642222  %cond = icmp slt i64 %sub, 02223  br i1 %cond, label %a, label %b2224 2225a:2226  tail call void @a()2227  ret void2228 2229b:2230  tail call void @b()2231  ret void2232}2233 2234define void @neg32_br() nounwind {2235; CHECK-LABEL: neg32_br:2236; CHECK:       # %bb.0: # %entry2237; CHECK-NEXT:    negl g32(%rip) # encoding: [0xf7,0x1d,A,A,A,A]2238; CHECK-NEXT:    # fixup A - offset: 2, value: g32, kind: reloc_riprel_4byte2239; CHECK-NEXT:    jns b # TAILCALL2240; CHECK-NEXT:    # encoding: [0x79,A]2241; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_12242; CHECK-NEXT:  # %bb.1: # %a2243; CHECK-NEXT:    jmp a # TAILCALL2244; CHECK-NEXT:    # encoding: [0xeb,A]2245; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_12246entry:2247  %load1 = load i32, ptr @g322248  %sub = sub i32 0, %load12249  store i32 %sub, ptr @g322250  %cond = icmp slt i32 %sub, 02251  br i1 %cond, label %a, label %b2252 2253a:2254  tail call void @a()2255  ret void2256 2257b:2258  tail call void @b()2259  ret void2260}2261 2262define void @neg16_br() nounwind {2263; CHECK-LABEL: neg16_br:2264; CHECK:       # %bb.0: # %entry2265; CHECK-NEXT:    negw g16(%rip) # encoding: [0x66,0xf7,0x1d,A,A,A,A]2266; CHECK-NEXT:    # fixup A - offset: 3, value: g16, kind: reloc_riprel_4byte2267; CHECK-NEXT:    jns b # TAILCALL2268; CHECK-NEXT:    # encoding: [0x79,A]2269; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_12270; CHECK-NEXT:  # %bb.1: # %a2271; CHECK-NEXT:    jmp a # TAILCALL2272; CHECK-NEXT:    # encoding: [0xeb,A]2273; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_12274entry:2275  %load1 = load i16, ptr @g162276  %sub = sub i16 0, %load12277  store i16 %sub, ptr @g162278  %cond = icmp slt i16 %sub, 02279  br i1 %cond, label %a, label %b2280 2281a:2282  tail call void @a()2283  ret void2284 2285b:2286  tail call void @b()2287  ret void2288}2289 2290define void @neg8_br() nounwind {2291; CHECK-LABEL: neg8_br:2292; CHECK:       # %bb.0: # %entry2293; CHECK-NEXT:    negb g8(%rip) # encoding: [0xf6,0x1d,A,A,A,A]2294; CHECK-NEXT:    # fixup A - offset: 2, value: g8, kind: reloc_riprel_4byte2295; CHECK-NEXT:    jns b # TAILCALL2296; CHECK-NEXT:    # encoding: [0x79,A]2297; CHECK-NEXT:    # fixup A - offset: 1, value: b, kind: FK_PCRel_12298; CHECK-NEXT:  # %bb.1: # %a2299; CHECK-NEXT:    jmp a # TAILCALL2300; CHECK-NEXT:    # encoding: [0xeb,A]2301; CHECK-NEXT:    # fixup A - offset: 1, value: a, kind: FK_PCRel_12302entry:2303  %load1 = load i8, ptr @g82304  %sub = sub i8 0, %load12305  store i8 %sub, ptr @g82306  %cond = icmp slt i8 %sub, 02307  br i1 %cond, label %a, label %b2308 2309a:2310  tail call void @a()2311  ret void2312 2313b:2314  tail call void @b()2315  ret void2316}2317