1d7f2a633SCraig Topper; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2ab2348a6SCraig Topper; RUN: llc < %s -mtriple=riscv64 | FileCheck %s --check-prefixes=CHECK,RV64I 3ab2348a6SCraig Topper; RUN: llc < %s -mtriple=riscv64 -mattr=+zba,+zbb | \ 4ab2348a6SCraig Topper; RUN: FileCheck %s --check-prefixes=CHECK,RV64ZB 5d7f2a633SCraig Topper 6d7f2a633SCraig Topper; Make sure we emit an lw for the stack reload in 'truebb'. 7ab2348a6SCraig Topperdefine i1 @test_sext_w(i64 %x, i32 %y) nounwind { 8ab2348a6SCraig Topper; CHECK-LABEL: test_sext_w: 9d7f2a633SCraig Topper; CHECK: # %bb.0: 10*2dccf11bSCraig Topper; CHECK-NEXT: addi sp, sp, -128 11*2dccf11bSCraig Topper; CHECK-NEXT: sd ra, 120(sp) # 8-byte Folded Spill 12d7f2a633SCraig Topper; CHECK-NEXT: sd s0, 112(sp) # 8-byte Folded Spill 13d7f2a633SCraig Topper; CHECK-NEXT: sd s1, 104(sp) # 8-byte Folded Spill 14d7f2a633SCraig Topper; CHECK-NEXT: sd s2, 96(sp) # 8-byte Folded Spill 15d7f2a633SCraig Topper; CHECK-NEXT: sd s3, 88(sp) # 8-byte Folded Spill 16d7f2a633SCraig Topper; CHECK-NEXT: sd s4, 80(sp) # 8-byte Folded Spill 17d7f2a633SCraig Topper; CHECK-NEXT: sd s5, 72(sp) # 8-byte Folded Spill 18d7f2a633SCraig Topper; CHECK-NEXT: sd s6, 64(sp) # 8-byte Folded Spill 19d7f2a633SCraig Topper; CHECK-NEXT: sd s7, 56(sp) # 8-byte Folded Spill 20d7f2a633SCraig Topper; CHECK-NEXT: sd s8, 48(sp) # 8-byte Folded Spill 21d7f2a633SCraig Topper; CHECK-NEXT: sd s9, 40(sp) # 8-byte Folded Spill 22d7f2a633SCraig Topper; CHECK-NEXT: sd s10, 32(sp) # 8-byte Folded Spill 23d7f2a633SCraig Topper; CHECK-NEXT: sd s11, 24(sp) # 8-byte Folded Spill 24d7f2a633SCraig Topper; CHECK-NEXT: sd a1, 8(sp) # 8-byte Folded Spill 25d7f2a633SCraig Topper; CHECK-NEXT: sd a0, 16(sp) # 8-byte Folded Spill 26d7f2a633SCraig Topper; CHECK-NEXT: #APP 27d7f2a633SCraig Topper; CHECK-NEXT: #NO_APP 28d7f2a633SCraig Topper; CHECK-NEXT: ld a0, 16(sp) # 8-byte Folded Reload 29d7f2a633SCraig Topper; CHECK-NEXT: beqz a0, .LBB0_2 30d7f2a633SCraig Topper; CHECK-NEXT: # %bb.1: # %falsebb 31d7f2a633SCraig Topper; CHECK-NEXT: li a0, 0 32d7f2a633SCraig Topper; CHECK-NEXT: j .LBB0_3 33d7f2a633SCraig Topper; CHECK-NEXT: .LBB0_2: # %truebb 34d7f2a633SCraig Topper; CHECK-NEXT: lw a0, 8(sp) # 8-byte Folded Reload 35d7f2a633SCraig Topper; CHECK-NEXT: slti a0, a0, 0 36d7f2a633SCraig Topper; CHECK-NEXT: .LBB0_3: # %falsebb 37*2dccf11bSCraig Topper; CHECK-NEXT: ld ra, 120(sp) # 8-byte Folded Reload 38d7f2a633SCraig Topper; CHECK-NEXT: ld s0, 112(sp) # 8-byte Folded Reload 39d7f2a633SCraig Topper; CHECK-NEXT: ld s1, 104(sp) # 8-byte Folded Reload 40d7f2a633SCraig Topper; CHECK-NEXT: ld s2, 96(sp) # 8-byte Folded Reload 41d7f2a633SCraig Topper; CHECK-NEXT: ld s3, 88(sp) # 8-byte Folded Reload 42d7f2a633SCraig Topper; CHECK-NEXT: ld s4, 80(sp) # 8-byte Folded Reload 43d7f2a633SCraig Topper; CHECK-NEXT: ld s5, 72(sp) # 8-byte Folded Reload 44d7f2a633SCraig Topper; CHECK-NEXT: ld s6, 64(sp) # 8-byte Folded Reload 45d7f2a633SCraig Topper; CHECK-NEXT: ld s7, 56(sp) # 8-byte Folded Reload 46d7f2a633SCraig Topper; CHECK-NEXT: ld s8, 48(sp) # 8-byte Folded Reload 47d7f2a633SCraig Topper; CHECK-NEXT: ld s9, 40(sp) # 8-byte Folded Reload 48d7f2a633SCraig Topper; CHECK-NEXT: ld s10, 32(sp) # 8-byte Folded Reload 49d7f2a633SCraig Topper; CHECK-NEXT: ld s11, 24(sp) # 8-byte Folded Reload 50*2dccf11bSCraig Topper; CHECK-NEXT: addi sp, sp, 128 51d7f2a633SCraig Topper; CHECK-NEXT: ret 52d7f2a633SCraig Topper tail call void asm sideeffect "", "~{x1},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31}"() 53d7f2a633SCraig Topper %a = icmp eq i64 %x, 0 54d7f2a633SCraig Topper br i1 %a, label %truebb, label %falsebb 55d7f2a633SCraig Toppertruebb: 56d7f2a633SCraig Topper %b = icmp slt i32 %y, 0 57d7f2a633SCraig Topper ret i1 %b 58d7f2a633SCraig Topperfalsebb: 59d7f2a633SCraig Topper ret i1 0 60d7f2a633SCraig Topper} 61ab2348a6SCraig Topper 62ab2348a6SCraig Topper; Make sure we emit an lb for the stack reload in 'truebb' with Zbb. 63ab2348a6SCraig Topperdefine i64 @test_sext_b(i64 %x, i8 %y) nounwind { 64ab2348a6SCraig Topper; RV64I-LABEL: test_sext_b: 65ab2348a6SCraig Topper; RV64I: # %bb.0: 66*2dccf11bSCraig Topper; RV64I-NEXT: addi sp, sp, -128 67*2dccf11bSCraig Topper; RV64I-NEXT: sd ra, 120(sp) # 8-byte Folded Spill 68ab2348a6SCraig Topper; RV64I-NEXT: sd s0, 112(sp) # 8-byte Folded Spill 69ab2348a6SCraig Topper; RV64I-NEXT: sd s1, 104(sp) # 8-byte Folded Spill 70ab2348a6SCraig Topper; RV64I-NEXT: sd s2, 96(sp) # 8-byte Folded Spill 71ab2348a6SCraig Topper; RV64I-NEXT: sd s3, 88(sp) # 8-byte Folded Spill 72ab2348a6SCraig Topper; RV64I-NEXT: sd s4, 80(sp) # 8-byte Folded Spill 73ab2348a6SCraig Topper; RV64I-NEXT: sd s5, 72(sp) # 8-byte Folded Spill 74ab2348a6SCraig Topper; RV64I-NEXT: sd s6, 64(sp) # 8-byte Folded Spill 75ab2348a6SCraig Topper; RV64I-NEXT: sd s7, 56(sp) # 8-byte Folded Spill 76ab2348a6SCraig Topper; RV64I-NEXT: sd s8, 48(sp) # 8-byte Folded Spill 77ab2348a6SCraig Topper; RV64I-NEXT: sd s9, 40(sp) # 8-byte Folded Spill 78ab2348a6SCraig Topper; RV64I-NEXT: sd s10, 32(sp) # 8-byte Folded Spill 79ab2348a6SCraig Topper; RV64I-NEXT: sd s11, 24(sp) # 8-byte Folded Spill 80ab2348a6SCraig Topper; RV64I-NEXT: sd a1, 8(sp) # 8-byte Folded Spill 81ab2348a6SCraig Topper; RV64I-NEXT: sd a0, 16(sp) # 8-byte Folded Spill 82ab2348a6SCraig Topper; RV64I-NEXT: #APP 83ab2348a6SCraig Topper; RV64I-NEXT: #NO_APP 84ab2348a6SCraig Topper; RV64I-NEXT: ld a0, 16(sp) # 8-byte Folded Reload 85ab2348a6SCraig Topper; RV64I-NEXT: beqz a0, .LBB1_2 86ab2348a6SCraig Topper; RV64I-NEXT: # %bb.1: # %falsebb 87ab2348a6SCraig Topper; RV64I-NEXT: li a0, 0 88ab2348a6SCraig Topper; RV64I-NEXT: j .LBB1_3 89ab2348a6SCraig Topper; RV64I-NEXT: .LBB1_2: # %truebb 90ab2348a6SCraig Topper; RV64I-NEXT: ld a0, 8(sp) # 8-byte Folded Reload 91ab2348a6SCraig Topper; RV64I-NEXT: slli a0, a0, 56 92ab2348a6SCraig Topper; RV64I-NEXT: srai a0, a0, 56 93ab2348a6SCraig Topper; RV64I-NEXT: .LBB1_3: # %falsebb 94*2dccf11bSCraig Topper; RV64I-NEXT: ld ra, 120(sp) # 8-byte Folded Reload 95ab2348a6SCraig Topper; RV64I-NEXT: ld s0, 112(sp) # 8-byte Folded Reload 96ab2348a6SCraig Topper; RV64I-NEXT: ld s1, 104(sp) # 8-byte Folded Reload 97ab2348a6SCraig Topper; RV64I-NEXT: ld s2, 96(sp) # 8-byte Folded Reload 98ab2348a6SCraig Topper; RV64I-NEXT: ld s3, 88(sp) # 8-byte Folded Reload 99ab2348a6SCraig Topper; RV64I-NEXT: ld s4, 80(sp) # 8-byte Folded Reload 100ab2348a6SCraig Topper; RV64I-NEXT: ld s5, 72(sp) # 8-byte Folded Reload 101ab2348a6SCraig Topper; RV64I-NEXT: ld s6, 64(sp) # 8-byte Folded Reload 102ab2348a6SCraig Topper; RV64I-NEXT: ld s7, 56(sp) # 8-byte Folded Reload 103ab2348a6SCraig Topper; RV64I-NEXT: ld s8, 48(sp) # 8-byte Folded Reload 104ab2348a6SCraig Topper; RV64I-NEXT: ld s9, 40(sp) # 8-byte Folded Reload 105ab2348a6SCraig Topper; RV64I-NEXT: ld s10, 32(sp) # 8-byte Folded Reload 106ab2348a6SCraig Topper; RV64I-NEXT: ld s11, 24(sp) # 8-byte Folded Reload 107*2dccf11bSCraig Topper; RV64I-NEXT: addi sp, sp, 128 108ab2348a6SCraig Topper; RV64I-NEXT: ret 109ab2348a6SCraig Topper; 110ab2348a6SCraig Topper; RV64ZB-LABEL: test_sext_b: 111ab2348a6SCraig Topper; RV64ZB: # %bb.0: 112*2dccf11bSCraig Topper; RV64ZB-NEXT: addi sp, sp, -128 113*2dccf11bSCraig Topper; RV64ZB-NEXT: sd ra, 120(sp) # 8-byte Folded Spill 114ab2348a6SCraig Topper; RV64ZB-NEXT: sd s0, 112(sp) # 8-byte Folded Spill 115ab2348a6SCraig Topper; RV64ZB-NEXT: sd s1, 104(sp) # 8-byte Folded Spill 116ab2348a6SCraig Topper; RV64ZB-NEXT: sd s2, 96(sp) # 8-byte Folded Spill 117ab2348a6SCraig Topper; RV64ZB-NEXT: sd s3, 88(sp) # 8-byte Folded Spill 118ab2348a6SCraig Topper; RV64ZB-NEXT: sd s4, 80(sp) # 8-byte Folded Spill 119ab2348a6SCraig Topper; RV64ZB-NEXT: sd s5, 72(sp) # 8-byte Folded Spill 120ab2348a6SCraig Topper; RV64ZB-NEXT: sd s6, 64(sp) # 8-byte Folded Spill 121ab2348a6SCraig Topper; RV64ZB-NEXT: sd s7, 56(sp) # 8-byte Folded Spill 122ab2348a6SCraig Topper; RV64ZB-NEXT: sd s8, 48(sp) # 8-byte Folded Spill 123ab2348a6SCraig Topper; RV64ZB-NEXT: sd s9, 40(sp) # 8-byte Folded Spill 124ab2348a6SCraig Topper; RV64ZB-NEXT: sd s10, 32(sp) # 8-byte Folded Spill 125ab2348a6SCraig Topper; RV64ZB-NEXT: sd s11, 24(sp) # 8-byte Folded Spill 126ab2348a6SCraig Topper; RV64ZB-NEXT: sd a1, 8(sp) # 8-byte Folded Spill 127ab2348a6SCraig Topper; RV64ZB-NEXT: sd a0, 16(sp) # 8-byte Folded Spill 128ab2348a6SCraig Topper; RV64ZB-NEXT: #APP 129ab2348a6SCraig Topper; RV64ZB-NEXT: #NO_APP 130ab2348a6SCraig Topper; RV64ZB-NEXT: ld a0, 16(sp) # 8-byte Folded Reload 131ab2348a6SCraig Topper; RV64ZB-NEXT: beqz a0, .LBB1_2 132ab2348a6SCraig Topper; RV64ZB-NEXT: # %bb.1: # %falsebb 133ab2348a6SCraig Topper; RV64ZB-NEXT: li a0, 0 134ab2348a6SCraig Topper; RV64ZB-NEXT: j .LBB1_3 135ab2348a6SCraig Topper; RV64ZB-NEXT: .LBB1_2: # %truebb 136ab2348a6SCraig Topper; RV64ZB-NEXT: lb a0, 8(sp) # 8-byte Folded Reload 137ab2348a6SCraig Topper; RV64ZB-NEXT: .LBB1_3: # %falsebb 138*2dccf11bSCraig Topper; RV64ZB-NEXT: ld ra, 120(sp) # 8-byte Folded Reload 139ab2348a6SCraig Topper; RV64ZB-NEXT: ld s0, 112(sp) # 8-byte Folded Reload 140ab2348a6SCraig Topper; RV64ZB-NEXT: ld s1, 104(sp) # 8-byte Folded Reload 141ab2348a6SCraig Topper; RV64ZB-NEXT: ld s2, 96(sp) # 8-byte Folded Reload 142ab2348a6SCraig Topper; RV64ZB-NEXT: ld s3, 88(sp) # 8-byte Folded Reload 143ab2348a6SCraig Topper; RV64ZB-NEXT: ld s4, 80(sp) # 8-byte Folded Reload 144ab2348a6SCraig Topper; RV64ZB-NEXT: ld s5, 72(sp) # 8-byte Folded Reload 145ab2348a6SCraig Topper; RV64ZB-NEXT: ld s6, 64(sp) # 8-byte Folded Reload 146ab2348a6SCraig Topper; RV64ZB-NEXT: ld s7, 56(sp) # 8-byte Folded Reload 147ab2348a6SCraig Topper; RV64ZB-NEXT: ld s8, 48(sp) # 8-byte Folded Reload 148ab2348a6SCraig Topper; RV64ZB-NEXT: ld s9, 40(sp) # 8-byte Folded Reload 149ab2348a6SCraig Topper; RV64ZB-NEXT: ld s10, 32(sp) # 8-byte Folded Reload 150ab2348a6SCraig Topper; RV64ZB-NEXT: ld s11, 24(sp) # 8-byte Folded Reload 151*2dccf11bSCraig Topper; RV64ZB-NEXT: addi sp, sp, 128 152ab2348a6SCraig Topper; RV64ZB-NEXT: ret 153ab2348a6SCraig Topper tail call void asm sideeffect "", "~{x1},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31}"() 154ab2348a6SCraig Topper %a = icmp eq i64 %x, 0 155ab2348a6SCraig Topper br i1 %a, label %truebb, label %falsebb 156ab2348a6SCraig Toppertruebb: 157ab2348a6SCraig Topper %b = sext i8 %y to i64 158ab2348a6SCraig Topper ret i64 %b 159ab2348a6SCraig Topperfalsebb: 160ab2348a6SCraig Topper ret i64 0 161ab2348a6SCraig Topper} 162ab2348a6SCraig Topper 163ab2348a6SCraig Topper; Make sure we emit an lh for the stack reload in 'truebb' with Zbb. 164ab2348a6SCraig Topperdefine i64 @test_sext_h(i64 %x, i16 %y) nounwind { 165ab2348a6SCraig Topper; RV64I-LABEL: test_sext_h: 166ab2348a6SCraig Topper; RV64I: # %bb.0: 167*2dccf11bSCraig Topper; RV64I-NEXT: addi sp, sp, -128 168*2dccf11bSCraig Topper; RV64I-NEXT: sd ra, 120(sp) # 8-byte Folded Spill 169ab2348a6SCraig Topper; RV64I-NEXT: sd s0, 112(sp) # 8-byte Folded Spill 170ab2348a6SCraig Topper; RV64I-NEXT: sd s1, 104(sp) # 8-byte Folded Spill 171ab2348a6SCraig Topper; RV64I-NEXT: sd s2, 96(sp) # 8-byte Folded Spill 172ab2348a6SCraig Topper; RV64I-NEXT: sd s3, 88(sp) # 8-byte Folded Spill 173ab2348a6SCraig Topper; RV64I-NEXT: sd s4, 80(sp) # 8-byte Folded Spill 174ab2348a6SCraig Topper; RV64I-NEXT: sd s5, 72(sp) # 8-byte Folded Spill 175ab2348a6SCraig Topper; RV64I-NEXT: sd s6, 64(sp) # 8-byte Folded Spill 176ab2348a6SCraig Topper; RV64I-NEXT: sd s7, 56(sp) # 8-byte Folded Spill 177ab2348a6SCraig Topper; RV64I-NEXT: sd s8, 48(sp) # 8-byte Folded Spill 178ab2348a6SCraig Topper; RV64I-NEXT: sd s9, 40(sp) # 8-byte Folded Spill 179ab2348a6SCraig Topper; RV64I-NEXT: sd s10, 32(sp) # 8-byte Folded Spill 180ab2348a6SCraig Topper; RV64I-NEXT: sd s11, 24(sp) # 8-byte Folded Spill 181ab2348a6SCraig Topper; RV64I-NEXT: sd a1, 8(sp) # 8-byte Folded Spill 182ab2348a6SCraig Topper; RV64I-NEXT: sd a0, 16(sp) # 8-byte Folded Spill 183ab2348a6SCraig Topper; RV64I-NEXT: #APP 184ab2348a6SCraig Topper; RV64I-NEXT: #NO_APP 185ab2348a6SCraig Topper; RV64I-NEXT: ld a0, 16(sp) # 8-byte Folded Reload 186ab2348a6SCraig Topper; RV64I-NEXT: beqz a0, .LBB2_2 187ab2348a6SCraig Topper; RV64I-NEXT: # %bb.1: # %falsebb 188ab2348a6SCraig Topper; RV64I-NEXT: li a0, 0 189ab2348a6SCraig Topper; RV64I-NEXT: j .LBB2_3 190ab2348a6SCraig Topper; RV64I-NEXT: .LBB2_2: # %truebb 191ab2348a6SCraig Topper; RV64I-NEXT: ld a0, 8(sp) # 8-byte Folded Reload 192ab2348a6SCraig Topper; RV64I-NEXT: slli a0, a0, 48 193ab2348a6SCraig Topper; RV64I-NEXT: srai a0, a0, 48 194ab2348a6SCraig Topper; RV64I-NEXT: .LBB2_3: # %falsebb 195*2dccf11bSCraig Topper; RV64I-NEXT: ld ra, 120(sp) # 8-byte Folded Reload 196ab2348a6SCraig Topper; RV64I-NEXT: ld s0, 112(sp) # 8-byte Folded Reload 197ab2348a6SCraig Topper; RV64I-NEXT: ld s1, 104(sp) # 8-byte Folded Reload 198ab2348a6SCraig Topper; RV64I-NEXT: ld s2, 96(sp) # 8-byte Folded Reload 199ab2348a6SCraig Topper; RV64I-NEXT: ld s3, 88(sp) # 8-byte Folded Reload 200ab2348a6SCraig Topper; RV64I-NEXT: ld s4, 80(sp) # 8-byte Folded Reload 201ab2348a6SCraig Topper; RV64I-NEXT: ld s5, 72(sp) # 8-byte Folded Reload 202ab2348a6SCraig Topper; RV64I-NEXT: ld s6, 64(sp) # 8-byte Folded Reload 203ab2348a6SCraig Topper; RV64I-NEXT: ld s7, 56(sp) # 8-byte Folded Reload 204ab2348a6SCraig Topper; RV64I-NEXT: ld s8, 48(sp) # 8-byte Folded Reload 205ab2348a6SCraig Topper; RV64I-NEXT: ld s9, 40(sp) # 8-byte Folded Reload 206ab2348a6SCraig Topper; RV64I-NEXT: ld s10, 32(sp) # 8-byte Folded Reload 207ab2348a6SCraig Topper; RV64I-NEXT: ld s11, 24(sp) # 8-byte Folded Reload 208*2dccf11bSCraig Topper; RV64I-NEXT: addi sp, sp, 128 209ab2348a6SCraig Topper; RV64I-NEXT: ret 210ab2348a6SCraig Topper; 211ab2348a6SCraig Topper; RV64ZB-LABEL: test_sext_h: 212ab2348a6SCraig Topper; RV64ZB: # %bb.0: 213*2dccf11bSCraig Topper; RV64ZB-NEXT: addi sp, sp, -128 214*2dccf11bSCraig Topper; RV64ZB-NEXT: sd ra, 120(sp) # 8-byte Folded Spill 215ab2348a6SCraig Topper; RV64ZB-NEXT: sd s0, 112(sp) # 8-byte Folded Spill 216ab2348a6SCraig Topper; RV64ZB-NEXT: sd s1, 104(sp) # 8-byte Folded Spill 217ab2348a6SCraig Topper; RV64ZB-NEXT: sd s2, 96(sp) # 8-byte Folded Spill 218ab2348a6SCraig Topper; RV64ZB-NEXT: sd s3, 88(sp) # 8-byte Folded Spill 219ab2348a6SCraig Topper; RV64ZB-NEXT: sd s4, 80(sp) # 8-byte Folded Spill 220ab2348a6SCraig Topper; RV64ZB-NEXT: sd s5, 72(sp) # 8-byte Folded Spill 221ab2348a6SCraig Topper; RV64ZB-NEXT: sd s6, 64(sp) # 8-byte Folded Spill 222ab2348a6SCraig Topper; RV64ZB-NEXT: sd s7, 56(sp) # 8-byte Folded Spill 223ab2348a6SCraig Topper; RV64ZB-NEXT: sd s8, 48(sp) # 8-byte Folded Spill 224ab2348a6SCraig Topper; RV64ZB-NEXT: sd s9, 40(sp) # 8-byte Folded Spill 225ab2348a6SCraig Topper; RV64ZB-NEXT: sd s10, 32(sp) # 8-byte Folded Spill 226ab2348a6SCraig Topper; RV64ZB-NEXT: sd s11, 24(sp) # 8-byte Folded Spill 227ab2348a6SCraig Topper; RV64ZB-NEXT: sd a1, 8(sp) # 8-byte Folded Spill 228ab2348a6SCraig Topper; RV64ZB-NEXT: sd a0, 16(sp) # 8-byte Folded Spill 229ab2348a6SCraig Topper; RV64ZB-NEXT: #APP 230ab2348a6SCraig Topper; RV64ZB-NEXT: #NO_APP 231ab2348a6SCraig Topper; RV64ZB-NEXT: ld a0, 16(sp) # 8-byte Folded Reload 232ab2348a6SCraig Topper; RV64ZB-NEXT: beqz a0, .LBB2_2 233ab2348a6SCraig Topper; RV64ZB-NEXT: # %bb.1: # %falsebb 234ab2348a6SCraig Topper; RV64ZB-NEXT: li a0, 0 235ab2348a6SCraig Topper; RV64ZB-NEXT: j .LBB2_3 236ab2348a6SCraig Topper; RV64ZB-NEXT: .LBB2_2: # %truebb 237ab2348a6SCraig Topper; RV64ZB-NEXT: lh a0, 8(sp) # 8-byte Folded Reload 238ab2348a6SCraig Topper; RV64ZB-NEXT: .LBB2_3: # %falsebb 239*2dccf11bSCraig Topper; RV64ZB-NEXT: ld ra, 120(sp) # 8-byte Folded Reload 240ab2348a6SCraig Topper; RV64ZB-NEXT: ld s0, 112(sp) # 8-byte Folded Reload 241ab2348a6SCraig Topper; RV64ZB-NEXT: ld s1, 104(sp) # 8-byte Folded Reload 242ab2348a6SCraig Topper; RV64ZB-NEXT: ld s2, 96(sp) # 8-byte Folded Reload 243ab2348a6SCraig Topper; RV64ZB-NEXT: ld s3, 88(sp) # 8-byte Folded Reload 244ab2348a6SCraig Topper; RV64ZB-NEXT: ld s4, 80(sp) # 8-byte Folded Reload 245ab2348a6SCraig Topper; RV64ZB-NEXT: ld s5, 72(sp) # 8-byte Folded Reload 246ab2348a6SCraig Topper; RV64ZB-NEXT: ld s6, 64(sp) # 8-byte Folded Reload 247ab2348a6SCraig Topper; RV64ZB-NEXT: ld s7, 56(sp) # 8-byte Folded Reload 248ab2348a6SCraig Topper; RV64ZB-NEXT: ld s8, 48(sp) # 8-byte Folded Reload 249ab2348a6SCraig Topper; RV64ZB-NEXT: ld s9, 40(sp) # 8-byte Folded Reload 250ab2348a6SCraig Topper; RV64ZB-NEXT: ld s10, 32(sp) # 8-byte Folded Reload 251ab2348a6SCraig Topper; RV64ZB-NEXT: ld s11, 24(sp) # 8-byte Folded Reload 252*2dccf11bSCraig Topper; RV64ZB-NEXT: addi sp, sp, 128 253ab2348a6SCraig Topper; RV64ZB-NEXT: ret 254ab2348a6SCraig Topper tail call void asm sideeffect "", "~{x1},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31}"() 255ab2348a6SCraig Topper %a = icmp eq i64 %x, 0 256ab2348a6SCraig Topper br i1 %a, label %truebb, label %falsebb 257ab2348a6SCraig Toppertruebb: 258ab2348a6SCraig Topper %b = sext i16 %y to i64 259ab2348a6SCraig Topper ret i64 %b 260ab2348a6SCraig Topperfalsebb: 261ab2348a6SCraig Topper ret i64 0 262ab2348a6SCraig Topper} 263ab2348a6SCraig Topper 264ab2348a6SCraig Topper; Make sure we emit an lbu for the stack reload in 'truebb' with Zbb. 265ab2348a6SCraig Topperdefine i64 @test_zext_b(i64 %x, i8 %y) nounwind { 266ab2348a6SCraig Topper; CHECK-LABEL: test_zext_b: 267ab2348a6SCraig Topper; CHECK: # %bb.0: 268*2dccf11bSCraig Topper; CHECK-NEXT: addi sp, sp, -128 269*2dccf11bSCraig Topper; CHECK-NEXT: sd ra, 120(sp) # 8-byte Folded Spill 270ab2348a6SCraig Topper; CHECK-NEXT: sd s0, 112(sp) # 8-byte Folded Spill 271ab2348a6SCraig Topper; CHECK-NEXT: sd s1, 104(sp) # 8-byte Folded Spill 272ab2348a6SCraig Topper; CHECK-NEXT: sd s2, 96(sp) # 8-byte Folded Spill 273ab2348a6SCraig Topper; CHECK-NEXT: sd s3, 88(sp) # 8-byte Folded Spill 274ab2348a6SCraig Topper; CHECK-NEXT: sd s4, 80(sp) # 8-byte Folded Spill 275ab2348a6SCraig Topper; CHECK-NEXT: sd s5, 72(sp) # 8-byte Folded Spill 276ab2348a6SCraig Topper; CHECK-NEXT: sd s6, 64(sp) # 8-byte Folded Spill 277ab2348a6SCraig Topper; CHECK-NEXT: sd s7, 56(sp) # 8-byte Folded Spill 278ab2348a6SCraig Topper; CHECK-NEXT: sd s8, 48(sp) # 8-byte Folded Spill 279ab2348a6SCraig Topper; CHECK-NEXT: sd s9, 40(sp) # 8-byte Folded Spill 280ab2348a6SCraig Topper; CHECK-NEXT: sd s10, 32(sp) # 8-byte Folded Spill 281ab2348a6SCraig Topper; CHECK-NEXT: sd s11, 24(sp) # 8-byte Folded Spill 282ab2348a6SCraig Topper; CHECK-NEXT: sd a1, 8(sp) # 8-byte Folded Spill 283ab2348a6SCraig Topper; CHECK-NEXT: sd a0, 16(sp) # 8-byte Folded Spill 284ab2348a6SCraig Topper; CHECK-NEXT: #APP 285ab2348a6SCraig Topper; CHECK-NEXT: #NO_APP 286ab2348a6SCraig Topper; CHECK-NEXT: ld a0, 16(sp) # 8-byte Folded Reload 287ab2348a6SCraig Topper; CHECK-NEXT: beqz a0, .LBB3_2 288ab2348a6SCraig Topper; CHECK-NEXT: # %bb.1: # %falsebb 289ab2348a6SCraig Topper; CHECK-NEXT: li a0, 0 290ab2348a6SCraig Topper; CHECK-NEXT: j .LBB3_3 291ab2348a6SCraig Topper; CHECK-NEXT: .LBB3_2: # %truebb 292ab2348a6SCraig Topper; CHECK-NEXT: lbu a0, 8(sp) # 8-byte Folded Reload 293ab2348a6SCraig Topper; CHECK-NEXT: .LBB3_3: # %falsebb 294*2dccf11bSCraig Topper; CHECK-NEXT: ld ra, 120(sp) # 8-byte Folded Reload 295ab2348a6SCraig Topper; CHECK-NEXT: ld s0, 112(sp) # 8-byte Folded Reload 296ab2348a6SCraig Topper; CHECK-NEXT: ld s1, 104(sp) # 8-byte Folded Reload 297ab2348a6SCraig Topper; CHECK-NEXT: ld s2, 96(sp) # 8-byte Folded Reload 298ab2348a6SCraig Topper; CHECK-NEXT: ld s3, 88(sp) # 8-byte Folded Reload 299ab2348a6SCraig Topper; CHECK-NEXT: ld s4, 80(sp) # 8-byte Folded Reload 300ab2348a6SCraig Topper; CHECK-NEXT: ld s5, 72(sp) # 8-byte Folded Reload 301ab2348a6SCraig Topper; CHECK-NEXT: ld s6, 64(sp) # 8-byte Folded Reload 302ab2348a6SCraig Topper; CHECK-NEXT: ld s7, 56(sp) # 8-byte Folded Reload 303ab2348a6SCraig Topper; CHECK-NEXT: ld s8, 48(sp) # 8-byte Folded Reload 304ab2348a6SCraig Topper; CHECK-NEXT: ld s9, 40(sp) # 8-byte Folded Reload 305ab2348a6SCraig Topper; CHECK-NEXT: ld s10, 32(sp) # 8-byte Folded Reload 306ab2348a6SCraig Topper; CHECK-NEXT: ld s11, 24(sp) # 8-byte Folded Reload 307*2dccf11bSCraig Topper; CHECK-NEXT: addi sp, sp, 128 308ab2348a6SCraig Topper; CHECK-NEXT: ret 309ab2348a6SCraig Topper tail call void asm sideeffect "", "~{x1},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31}"() 310ab2348a6SCraig Topper %a = icmp eq i64 %x, 0 311ab2348a6SCraig Topper br i1 %a, label %truebb, label %falsebb 312ab2348a6SCraig Toppertruebb: 313ab2348a6SCraig Topper %b = zext i8 %y to i64 314ab2348a6SCraig Topper ret i64 %b 315ab2348a6SCraig Topperfalsebb: 316ab2348a6SCraig Topper ret i64 0 317ab2348a6SCraig Topper} 318ab2348a6SCraig Topper 319ab2348a6SCraig Topper; Make sure we emit an lhu for the stack reload in 'truebb' with Zbb. 320ab2348a6SCraig Topperdefine i64 @test_zext_h(i64 %x, i16 %y) nounwind { 321ab2348a6SCraig Topper; RV64I-LABEL: test_zext_h: 322ab2348a6SCraig Topper; RV64I: # %bb.0: 323*2dccf11bSCraig Topper; RV64I-NEXT: addi sp, sp, -128 324*2dccf11bSCraig Topper; RV64I-NEXT: sd ra, 120(sp) # 8-byte Folded Spill 325ab2348a6SCraig Topper; RV64I-NEXT: sd s0, 112(sp) # 8-byte Folded Spill 326ab2348a6SCraig Topper; RV64I-NEXT: sd s1, 104(sp) # 8-byte Folded Spill 327ab2348a6SCraig Topper; RV64I-NEXT: sd s2, 96(sp) # 8-byte Folded Spill 328ab2348a6SCraig Topper; RV64I-NEXT: sd s3, 88(sp) # 8-byte Folded Spill 329ab2348a6SCraig Topper; RV64I-NEXT: sd s4, 80(sp) # 8-byte Folded Spill 330ab2348a6SCraig Topper; RV64I-NEXT: sd s5, 72(sp) # 8-byte Folded Spill 331ab2348a6SCraig Topper; RV64I-NEXT: sd s6, 64(sp) # 8-byte Folded Spill 332ab2348a6SCraig Topper; RV64I-NEXT: sd s7, 56(sp) # 8-byte Folded Spill 333ab2348a6SCraig Topper; RV64I-NEXT: sd s8, 48(sp) # 8-byte Folded Spill 334ab2348a6SCraig Topper; RV64I-NEXT: sd s9, 40(sp) # 8-byte Folded Spill 335ab2348a6SCraig Topper; RV64I-NEXT: sd s10, 32(sp) # 8-byte Folded Spill 336ab2348a6SCraig Topper; RV64I-NEXT: sd s11, 24(sp) # 8-byte Folded Spill 337ab2348a6SCraig Topper; RV64I-NEXT: sd a1, 8(sp) # 8-byte Folded Spill 338ab2348a6SCraig Topper; RV64I-NEXT: sd a0, 16(sp) # 8-byte Folded Spill 339ab2348a6SCraig Topper; RV64I-NEXT: #APP 340ab2348a6SCraig Topper; RV64I-NEXT: #NO_APP 341ab2348a6SCraig Topper; RV64I-NEXT: ld a0, 16(sp) # 8-byte Folded Reload 342ab2348a6SCraig Topper; RV64I-NEXT: beqz a0, .LBB4_2 343ab2348a6SCraig Topper; RV64I-NEXT: # %bb.1: # %falsebb 344ab2348a6SCraig Topper; RV64I-NEXT: li a0, 0 345ab2348a6SCraig Topper; RV64I-NEXT: j .LBB4_3 346ab2348a6SCraig Topper; RV64I-NEXT: .LBB4_2: # %truebb 347ab2348a6SCraig Topper; RV64I-NEXT: ld a0, 8(sp) # 8-byte Folded Reload 348ab2348a6SCraig Topper; RV64I-NEXT: slli a0, a0, 48 349ab2348a6SCraig Topper; RV64I-NEXT: srli a0, a0, 48 350ab2348a6SCraig Topper; RV64I-NEXT: .LBB4_3: # %falsebb 351*2dccf11bSCraig Topper; RV64I-NEXT: ld ra, 120(sp) # 8-byte Folded Reload 352ab2348a6SCraig Topper; RV64I-NEXT: ld s0, 112(sp) # 8-byte Folded Reload 353ab2348a6SCraig Topper; RV64I-NEXT: ld s1, 104(sp) # 8-byte Folded Reload 354ab2348a6SCraig Topper; RV64I-NEXT: ld s2, 96(sp) # 8-byte Folded Reload 355ab2348a6SCraig Topper; RV64I-NEXT: ld s3, 88(sp) # 8-byte Folded Reload 356ab2348a6SCraig Topper; RV64I-NEXT: ld s4, 80(sp) # 8-byte Folded Reload 357ab2348a6SCraig Topper; RV64I-NEXT: ld s5, 72(sp) # 8-byte Folded Reload 358ab2348a6SCraig Topper; RV64I-NEXT: ld s6, 64(sp) # 8-byte Folded Reload 359ab2348a6SCraig Topper; RV64I-NEXT: ld s7, 56(sp) # 8-byte Folded Reload 360ab2348a6SCraig Topper; RV64I-NEXT: ld s8, 48(sp) # 8-byte Folded Reload 361ab2348a6SCraig Topper; RV64I-NEXT: ld s9, 40(sp) # 8-byte Folded Reload 362ab2348a6SCraig Topper; RV64I-NEXT: ld s10, 32(sp) # 8-byte Folded Reload 363ab2348a6SCraig Topper; RV64I-NEXT: ld s11, 24(sp) # 8-byte Folded Reload 364*2dccf11bSCraig Topper; RV64I-NEXT: addi sp, sp, 128 365ab2348a6SCraig Topper; RV64I-NEXT: ret 366ab2348a6SCraig Topper; 367ab2348a6SCraig Topper; RV64ZB-LABEL: test_zext_h: 368ab2348a6SCraig Topper; RV64ZB: # %bb.0: 369*2dccf11bSCraig Topper; RV64ZB-NEXT: addi sp, sp, -128 370*2dccf11bSCraig Topper; RV64ZB-NEXT: sd ra, 120(sp) # 8-byte Folded Spill 371ab2348a6SCraig Topper; RV64ZB-NEXT: sd s0, 112(sp) # 8-byte Folded Spill 372ab2348a6SCraig Topper; RV64ZB-NEXT: sd s1, 104(sp) # 8-byte Folded Spill 373ab2348a6SCraig Topper; RV64ZB-NEXT: sd s2, 96(sp) # 8-byte Folded Spill 374ab2348a6SCraig Topper; RV64ZB-NEXT: sd s3, 88(sp) # 8-byte Folded Spill 375ab2348a6SCraig Topper; RV64ZB-NEXT: sd s4, 80(sp) # 8-byte Folded Spill 376ab2348a6SCraig Topper; RV64ZB-NEXT: sd s5, 72(sp) # 8-byte Folded Spill 377ab2348a6SCraig Topper; RV64ZB-NEXT: sd s6, 64(sp) # 8-byte Folded Spill 378ab2348a6SCraig Topper; RV64ZB-NEXT: sd s7, 56(sp) # 8-byte Folded Spill 379ab2348a6SCraig Topper; RV64ZB-NEXT: sd s8, 48(sp) # 8-byte Folded Spill 380ab2348a6SCraig Topper; RV64ZB-NEXT: sd s9, 40(sp) # 8-byte Folded Spill 381ab2348a6SCraig Topper; RV64ZB-NEXT: sd s10, 32(sp) # 8-byte Folded Spill 382ab2348a6SCraig Topper; RV64ZB-NEXT: sd s11, 24(sp) # 8-byte Folded Spill 383ab2348a6SCraig Topper; RV64ZB-NEXT: sd a1, 8(sp) # 8-byte Folded Spill 384ab2348a6SCraig Topper; RV64ZB-NEXT: sd a0, 16(sp) # 8-byte Folded Spill 385ab2348a6SCraig Topper; RV64ZB-NEXT: #APP 386ab2348a6SCraig Topper; RV64ZB-NEXT: #NO_APP 387ab2348a6SCraig Topper; RV64ZB-NEXT: ld a0, 16(sp) # 8-byte Folded Reload 388ab2348a6SCraig Topper; RV64ZB-NEXT: beqz a0, .LBB4_2 389ab2348a6SCraig Topper; RV64ZB-NEXT: # %bb.1: # %falsebb 390ab2348a6SCraig Topper; RV64ZB-NEXT: li a0, 0 391ab2348a6SCraig Topper; RV64ZB-NEXT: j .LBB4_3 392ab2348a6SCraig Topper; RV64ZB-NEXT: .LBB4_2: # %truebb 393ab2348a6SCraig Topper; RV64ZB-NEXT: lhu a0, 8(sp) # 8-byte Folded Reload 394ab2348a6SCraig Topper; RV64ZB-NEXT: .LBB4_3: # %falsebb 395*2dccf11bSCraig Topper; RV64ZB-NEXT: ld ra, 120(sp) # 8-byte Folded Reload 396ab2348a6SCraig Topper; RV64ZB-NEXT: ld s0, 112(sp) # 8-byte Folded Reload 397ab2348a6SCraig Topper; RV64ZB-NEXT: ld s1, 104(sp) # 8-byte Folded Reload 398ab2348a6SCraig Topper; RV64ZB-NEXT: ld s2, 96(sp) # 8-byte Folded Reload 399ab2348a6SCraig Topper; RV64ZB-NEXT: ld s3, 88(sp) # 8-byte Folded Reload 400ab2348a6SCraig Topper; RV64ZB-NEXT: ld s4, 80(sp) # 8-byte Folded Reload 401ab2348a6SCraig Topper; RV64ZB-NEXT: ld s5, 72(sp) # 8-byte Folded Reload 402ab2348a6SCraig Topper; RV64ZB-NEXT: ld s6, 64(sp) # 8-byte Folded Reload 403ab2348a6SCraig Topper; RV64ZB-NEXT: ld s7, 56(sp) # 8-byte Folded Reload 404ab2348a6SCraig Topper; RV64ZB-NEXT: ld s8, 48(sp) # 8-byte Folded Reload 405ab2348a6SCraig Topper; RV64ZB-NEXT: ld s9, 40(sp) # 8-byte Folded Reload 406ab2348a6SCraig Topper; RV64ZB-NEXT: ld s10, 32(sp) # 8-byte Folded Reload 407ab2348a6SCraig Topper; RV64ZB-NEXT: ld s11, 24(sp) # 8-byte Folded Reload 408*2dccf11bSCraig Topper; RV64ZB-NEXT: addi sp, sp, 128 409ab2348a6SCraig Topper; RV64ZB-NEXT: ret 410ab2348a6SCraig Topper tail call void asm sideeffect "", "~{x1},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31}"() 411ab2348a6SCraig Topper %a = icmp eq i64 %x, 0 412ab2348a6SCraig Topper br i1 %a, label %truebb, label %falsebb 413ab2348a6SCraig Toppertruebb: 414ab2348a6SCraig Topper %b = zext i16 %y to i64 415ab2348a6SCraig Topper ret i64 %b 416ab2348a6SCraig Topperfalsebb: 417ab2348a6SCraig Topper ret i64 0 418ab2348a6SCraig Topper} 419ab2348a6SCraig Topper 420ab2348a6SCraig Topper; Make sure we emit an lwu for the stack reload in 'truebb' with Zbb. 421ab2348a6SCraig Topperdefine i64 @test_zext_w(i64 %x, i32 %y) nounwind { 422ab2348a6SCraig Topper; RV64I-LABEL: test_zext_w: 423ab2348a6SCraig Topper; RV64I: # %bb.0: 424*2dccf11bSCraig Topper; RV64I-NEXT: addi sp, sp, -128 425*2dccf11bSCraig Topper; RV64I-NEXT: sd ra, 120(sp) # 8-byte Folded Spill 426ab2348a6SCraig Topper; RV64I-NEXT: sd s0, 112(sp) # 8-byte Folded Spill 427ab2348a6SCraig Topper; RV64I-NEXT: sd s1, 104(sp) # 8-byte Folded Spill 428ab2348a6SCraig Topper; RV64I-NEXT: sd s2, 96(sp) # 8-byte Folded Spill 429ab2348a6SCraig Topper; RV64I-NEXT: sd s3, 88(sp) # 8-byte Folded Spill 430ab2348a6SCraig Topper; RV64I-NEXT: sd s4, 80(sp) # 8-byte Folded Spill 431ab2348a6SCraig Topper; RV64I-NEXT: sd s5, 72(sp) # 8-byte Folded Spill 432ab2348a6SCraig Topper; RV64I-NEXT: sd s6, 64(sp) # 8-byte Folded Spill 433ab2348a6SCraig Topper; RV64I-NEXT: sd s7, 56(sp) # 8-byte Folded Spill 434ab2348a6SCraig Topper; RV64I-NEXT: sd s8, 48(sp) # 8-byte Folded Spill 435ab2348a6SCraig Topper; RV64I-NEXT: sd s9, 40(sp) # 8-byte Folded Spill 436ab2348a6SCraig Topper; RV64I-NEXT: sd s10, 32(sp) # 8-byte Folded Spill 437ab2348a6SCraig Topper; RV64I-NEXT: sd s11, 24(sp) # 8-byte Folded Spill 438ab2348a6SCraig Topper; RV64I-NEXT: sd a1, 8(sp) # 8-byte Folded Spill 439ab2348a6SCraig Topper; RV64I-NEXT: sd a0, 16(sp) # 8-byte Folded Spill 440ab2348a6SCraig Topper; RV64I-NEXT: #APP 441ab2348a6SCraig Topper; RV64I-NEXT: #NO_APP 442ab2348a6SCraig Topper; RV64I-NEXT: ld a0, 16(sp) # 8-byte Folded Reload 443ab2348a6SCraig Topper; RV64I-NEXT: beqz a0, .LBB5_2 444ab2348a6SCraig Topper; RV64I-NEXT: # %bb.1: # %falsebb 445ab2348a6SCraig Topper; RV64I-NEXT: li a0, 0 446ab2348a6SCraig Topper; RV64I-NEXT: j .LBB5_3 447ab2348a6SCraig Topper; RV64I-NEXT: .LBB5_2: # %truebb 448ab2348a6SCraig Topper; RV64I-NEXT: ld a0, 8(sp) # 8-byte Folded Reload 449ab2348a6SCraig Topper; RV64I-NEXT: slli a0, a0, 32 450ab2348a6SCraig Topper; RV64I-NEXT: srli a0, a0, 32 451ab2348a6SCraig Topper; RV64I-NEXT: .LBB5_3: # %falsebb 452*2dccf11bSCraig Topper; RV64I-NEXT: ld ra, 120(sp) # 8-byte Folded Reload 453ab2348a6SCraig Topper; RV64I-NEXT: ld s0, 112(sp) # 8-byte Folded Reload 454ab2348a6SCraig Topper; RV64I-NEXT: ld s1, 104(sp) # 8-byte Folded Reload 455ab2348a6SCraig Topper; RV64I-NEXT: ld s2, 96(sp) # 8-byte Folded Reload 456ab2348a6SCraig Topper; RV64I-NEXT: ld s3, 88(sp) # 8-byte Folded Reload 457ab2348a6SCraig Topper; RV64I-NEXT: ld s4, 80(sp) # 8-byte Folded Reload 458ab2348a6SCraig Topper; RV64I-NEXT: ld s5, 72(sp) # 8-byte Folded Reload 459ab2348a6SCraig Topper; RV64I-NEXT: ld s6, 64(sp) # 8-byte Folded Reload 460ab2348a6SCraig Topper; RV64I-NEXT: ld s7, 56(sp) # 8-byte Folded Reload 461ab2348a6SCraig Topper; RV64I-NEXT: ld s8, 48(sp) # 8-byte Folded Reload 462ab2348a6SCraig Topper; RV64I-NEXT: ld s9, 40(sp) # 8-byte Folded Reload 463ab2348a6SCraig Topper; RV64I-NEXT: ld s10, 32(sp) # 8-byte Folded Reload 464ab2348a6SCraig Topper; RV64I-NEXT: ld s11, 24(sp) # 8-byte Folded Reload 465*2dccf11bSCraig Topper; RV64I-NEXT: addi sp, sp, 128 466ab2348a6SCraig Topper; RV64I-NEXT: ret 467ab2348a6SCraig Topper; 468ab2348a6SCraig Topper; RV64ZB-LABEL: test_zext_w: 469ab2348a6SCraig Topper; RV64ZB: # %bb.0: 470*2dccf11bSCraig Topper; RV64ZB-NEXT: addi sp, sp, -128 471*2dccf11bSCraig Topper; RV64ZB-NEXT: sd ra, 120(sp) # 8-byte Folded Spill 472ab2348a6SCraig Topper; RV64ZB-NEXT: sd s0, 112(sp) # 8-byte Folded Spill 473ab2348a6SCraig Topper; RV64ZB-NEXT: sd s1, 104(sp) # 8-byte Folded Spill 474ab2348a6SCraig Topper; RV64ZB-NEXT: sd s2, 96(sp) # 8-byte Folded Spill 475ab2348a6SCraig Topper; RV64ZB-NEXT: sd s3, 88(sp) # 8-byte Folded Spill 476ab2348a6SCraig Topper; RV64ZB-NEXT: sd s4, 80(sp) # 8-byte Folded Spill 477ab2348a6SCraig Topper; RV64ZB-NEXT: sd s5, 72(sp) # 8-byte Folded Spill 478ab2348a6SCraig Topper; RV64ZB-NEXT: sd s6, 64(sp) # 8-byte Folded Spill 479ab2348a6SCraig Topper; RV64ZB-NEXT: sd s7, 56(sp) # 8-byte Folded Spill 480ab2348a6SCraig Topper; RV64ZB-NEXT: sd s8, 48(sp) # 8-byte Folded Spill 481ab2348a6SCraig Topper; RV64ZB-NEXT: sd s9, 40(sp) # 8-byte Folded Spill 482ab2348a6SCraig Topper; RV64ZB-NEXT: sd s10, 32(sp) # 8-byte Folded Spill 483ab2348a6SCraig Topper; RV64ZB-NEXT: sd s11, 24(sp) # 8-byte Folded Spill 484ab2348a6SCraig Topper; RV64ZB-NEXT: sd a1, 8(sp) # 8-byte Folded Spill 485ab2348a6SCraig Topper; RV64ZB-NEXT: sd a0, 16(sp) # 8-byte Folded Spill 486ab2348a6SCraig Topper; RV64ZB-NEXT: #APP 487ab2348a6SCraig Topper; RV64ZB-NEXT: #NO_APP 488ab2348a6SCraig Topper; RV64ZB-NEXT: ld a0, 16(sp) # 8-byte Folded Reload 489ab2348a6SCraig Topper; RV64ZB-NEXT: beqz a0, .LBB5_2 490ab2348a6SCraig Topper; RV64ZB-NEXT: # %bb.1: # %falsebb 491ab2348a6SCraig Topper; RV64ZB-NEXT: li a0, 0 492ab2348a6SCraig Topper; RV64ZB-NEXT: j .LBB5_3 493ab2348a6SCraig Topper; RV64ZB-NEXT: .LBB5_2: # %truebb 494ab2348a6SCraig Topper; RV64ZB-NEXT: lwu a0, 8(sp) # 8-byte Folded Reload 495ab2348a6SCraig Topper; RV64ZB-NEXT: .LBB5_3: # %falsebb 496*2dccf11bSCraig Topper; RV64ZB-NEXT: ld ra, 120(sp) # 8-byte Folded Reload 497ab2348a6SCraig Topper; RV64ZB-NEXT: ld s0, 112(sp) # 8-byte Folded Reload 498ab2348a6SCraig Topper; RV64ZB-NEXT: ld s1, 104(sp) # 8-byte Folded Reload 499ab2348a6SCraig Topper; RV64ZB-NEXT: ld s2, 96(sp) # 8-byte Folded Reload 500ab2348a6SCraig Topper; RV64ZB-NEXT: ld s3, 88(sp) # 8-byte Folded Reload 501ab2348a6SCraig Topper; RV64ZB-NEXT: ld s4, 80(sp) # 8-byte Folded Reload 502ab2348a6SCraig Topper; RV64ZB-NEXT: ld s5, 72(sp) # 8-byte Folded Reload 503ab2348a6SCraig Topper; RV64ZB-NEXT: ld s6, 64(sp) # 8-byte Folded Reload 504ab2348a6SCraig Topper; RV64ZB-NEXT: ld s7, 56(sp) # 8-byte Folded Reload 505ab2348a6SCraig Topper; RV64ZB-NEXT: ld s8, 48(sp) # 8-byte Folded Reload 506ab2348a6SCraig Topper; RV64ZB-NEXT: ld s9, 40(sp) # 8-byte Folded Reload 507ab2348a6SCraig Topper; RV64ZB-NEXT: ld s10, 32(sp) # 8-byte Folded Reload 508ab2348a6SCraig Topper; RV64ZB-NEXT: ld s11, 24(sp) # 8-byte Folded Reload 509*2dccf11bSCraig Topper; RV64ZB-NEXT: addi sp, sp, 128 510ab2348a6SCraig Topper; RV64ZB-NEXT: ret 511ab2348a6SCraig Topper tail call void asm sideeffect "", "~{x1},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31}"() 512ab2348a6SCraig Topper %a = icmp eq i64 %x, 0 513ab2348a6SCraig Topper br i1 %a, label %truebb, label %falsebb 514ab2348a6SCraig Toppertruebb: 515ab2348a6SCraig Topper %b = zext i32 %y to i64 516ab2348a6SCraig Topper ret i64 %b 517ab2348a6SCraig Topperfalsebb: 518ab2348a6SCraig Topper ret i64 0 519ab2348a6SCraig Topper} 520