514 lines · plain
1// RUN: fir-opt --split-input-file --fir-to-llvm-ir="target=x86_64-unknown-linux-gnu" %s | FileCheck %s2// RUN: fir-opt --split-input-file --fir-to-llvm-ir="target=aarch64-unknown-linux-gnu" %s | FileCheck %s3// RUN: fir-opt --split-input-file --fir-to-llvm-ir="target=i386-unknown-linux-gnu" %s | FileCheck %s4// RUN: fir-opt --split-input-file --fir-to-llvm-ir="target=powerpc64le-unknown-linux-gn" %s | FileCheck %s5 6// -----7// CHECK-LABEL: @test_l1_i18// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i89// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i810// CHECK: llvm.return [[t1]] : i111func.func @test_l1_i1(%arg0: !fir.logical<1>) -> i1 {12 %0 = fir.convert %arg0 : (!fir.logical<1>) -> i113 return %0 : i114}15// -----16// CHECK-LABEL: @test_l1_i817// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i818// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i819// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i820// CHECK: llvm.return [[t2]] : i821func.func @test_l1_i8(%arg0: !fir.logical<1>) -> i8 {22 %0 = fir.convert %arg0 : (!fir.logical<1>) -> i823 return %0 : i824}25// -----26// CHECK-LABEL: @test_l1_i1627// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i828// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i829// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i1630// CHECK: llvm.return [[t2]] : i1631func.func @test_l1_i16(%arg0: !fir.logical<1>) -> i16 {32 %0 = fir.convert %arg0 : (!fir.logical<1>) -> i1633 return %0 : i1634}35// -----36// CHECK-LABEL: @test_l1_i3237// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i838// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i839// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i3240// CHECK: llvm.return [[t2]] : i3241func.func @test_l1_i32(%arg0: !fir.logical<1>) -> i32 {42 %0 = fir.convert %arg0 : (!fir.logical<1>) -> i3243 return %0 : i3244}45// -----46// CHECK-LABEL: @test_l1_i6447// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i848// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i849// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i6450// CHECK: llvm.return [[t2]] : i6451func.func @test_l1_i64(%arg0: !fir.logical<1>) -> i64 {52 %0 = fir.convert %arg0 : (!fir.logical<1>) -> i6453 return %0 : i6454}55// -----56// CHECK-LABEL: @test_l2_i157// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i1658// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i1659// CHECK: llvm.return [[t1]] : i160func.func @test_l2_i1(%arg0: !fir.logical<2>) -> i1 {61 %0 = fir.convert %arg0 : (!fir.logical<2>) -> i162 return %0 : i163}64// -----65// CHECK-LABEL: @test_l2_i866// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i1667// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i1668// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i869// CHECK: llvm.return [[t2]] : i870func.func @test_l2_i8(%arg0: !fir.logical<2>) -> i8 {71 %0 = fir.convert %arg0 : (!fir.logical<2>) -> i872 return %0 : i873}74// -----75// CHECK-LABEL: @test_l2_i1676// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i1677// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i1678// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i1679// CHECK: llvm.return [[t2]] : i1680func.func @test_l2_i16(%arg0: !fir.logical<2>) -> i16 {81 %0 = fir.convert %arg0 : (!fir.logical<2>) -> i1682 return %0 : i1683}84// -----85// CHECK-LABEL: @test_l2_i3286// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i1687// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i1688// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i3289// CHECK: llvm.return [[t2]] : i3290func.func @test_l2_i32(%arg0: !fir.logical<2>) -> i32 {91 %0 = fir.convert %arg0 : (!fir.logical<2>) -> i3292 return %0 : i3293}94// -----95// CHECK-LABEL: @test_l2_i6496// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i1697// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i1698// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i6499// CHECK: llvm.return [[t2]] : i64100func.func @test_l2_i64(%arg0: !fir.logical<2>) -> i64 {101 %0 = fir.convert %arg0 : (!fir.logical<2>) -> i64102 return %0 : i64103}104// -----105// CHECK-LABEL: @test_l4_i1106// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32107// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32108// CHECK: llvm.return [[t1]] : i1109func.func @test_l4_i1(%arg0: !fir.logical<4>) -> i1 {110 %0 = fir.convert %arg0 : (!fir.logical<4>) -> i1111 return %0 : i1112}113// -----114// CHECK-LABEL: @test_l4_i8115// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32116// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32117// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8118// CHECK: llvm.return [[t2]] : i8119func.func @test_l4_i8(%arg0: !fir.logical<4>) -> i8 {120 %0 = fir.convert %arg0 : (!fir.logical<4>) -> i8121 return %0 : i8122}123// -----124// CHECK-LABEL: @test_l4_i16125// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32126// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32127// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16128// CHECK: llvm.return [[t2]] : i16129func.func @test_l4_i16(%arg0: !fir.logical<4>) -> i16 {130 %0 = fir.convert %arg0 : (!fir.logical<4>) -> i16131 return %0 : i16132}133// -----134// CHECK-LABEL: @test_l4_i32135// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32136// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32137// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32138// CHECK: llvm.return [[t2]] : i32139func.func @test_l4_i32(%arg0: !fir.logical<4>) -> i32 {140 %0 = fir.convert %arg0 : (!fir.logical<4>) -> i32141 return %0 : i32142}143// -----144// CHECK-LABEL: @test_l4_i64145// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32146// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32147// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64148// CHECK: llvm.return [[t2]] : i64149func.func @test_l4_i64(%arg0: !fir.logical<4>) -> i64 {150 %0 = fir.convert %arg0 : (!fir.logical<4>) -> i64151 return %0 : i64152}153// -----154// CHECK-LABEL: @test_l8_i1155// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i64156// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i64157// CHECK: llvm.return [[t1]] : i1158func.func @test_l8_i1(%arg0: !fir.logical<8>) -> i1 {159 %0 = fir.convert %arg0 : (!fir.logical<8>) -> i1160 return %0 : i1161}162// -----163// CHECK-LABEL: @test_l8_i8164// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i64165// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i64166// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8167// CHECK: llvm.return [[t2]] : i8168func.func @test_l8_i8(%arg0: !fir.logical<8>) -> i8 {169 %0 = fir.convert %arg0 : (!fir.logical<8>) -> i8170 return %0 : i8171}172// -----173// CHECK-LABEL: @test_l8_i16174// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i64175// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i64176// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16177// CHECK: llvm.return [[t2]] : i16178func.func @test_l8_i16(%arg0: !fir.logical<8>) -> i16 {179 %0 = fir.convert %arg0 : (!fir.logical<8>) -> i16180 return %0 : i16181}182// -----183// CHECK-LABEL: @test_l8_i32184// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i64185// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i64186// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32187// CHECK: llvm.return [[t2]] : i32188func.func @test_l8_i32(%arg0: !fir.logical<8>) -> i32 {189 %0 = fir.convert %arg0 : (!fir.logical<8>) -> i32190 return %0 : i32191}192// -----193// CHECK-LABEL: @test_l8_i64194// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i64195// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i64196// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64197// CHECK: llvm.return [[t2]] : i64198func.func @test_l8_i64(%arg0: !fir.logical<8>) -> i64 {199 %0 = fir.convert %arg0 : (!fir.logical<8>) -> i64200 return %0 : i64201}202// -----203// CHECK-LABEL: @test_i1_l1204// CHECK: [[t0:%[0-9]*]] = llvm.zext %arg0 : i1 to i8205// CHECK: llvm.return [[t0]] : i8206func.func @test_i1_l1(%arg0: i1) -> !fir.logical<1> {207 %0 = fir.convert %arg0 : (i1) -> !fir.logical<1>208 return %0 : !fir.logical<1>209}210// -----211// CHECK-LABEL: @test_i1_l2212// CHECK: [[t0:%[0-9]*]] = llvm.zext %arg0 : i1 to i16213// CHECK: llvm.return [[t0]] : i16214func.func @test_i1_l2(%arg0: i1) -> !fir.logical<2> {215 %0 = fir.convert %arg0 : (i1) -> !fir.logical<2>216 return %0 : !fir.logical<2>217}218// -----219// CHECK-LABEL: @test_i1_l4220// CHECK: [[t0:%[0-9]*]] = llvm.zext %arg0 : i1 to i32221// CHECK: llvm.return [[t0]] : i32222func.func @test_i1_l4(%arg0: i1) -> !fir.logical<4> {223 %0 = fir.convert %arg0 : (i1) -> !fir.logical<4>224 return %0 : !fir.logical<4>225}226// -----227// CHECK-LABEL: @test_i1_l8228// CHECK: [[t0:%[0-9]*]] = llvm.zext %arg0 : i1 to i64229// CHECK: llvm.return [[t0]] : i64230func.func @test_i1_l8(%arg0: i1) -> !fir.logical<8> {231 %0 = fir.convert %arg0 : (i1) -> !fir.logical<8>232 return %0 : !fir.logical<8>233}234// -----235// CHECK-LABEL: @test_i8_l1236// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8237// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8238// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8239// CHECK: llvm.return [[t2]] : i8240func.func @test_i8_l1(%arg0: i8) -> !fir.logical<1> {241 %0 = fir.convert %arg0 : (i8) -> !fir.logical<1>242 return %0 : !fir.logical<1>243}244// -----245// CHECK-LABEL: @test_i8_l2246// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8247// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8248// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16249// CHECK: llvm.return [[t2]] : i16250func.func @test_i8_l2(%arg0: i8) -> !fir.logical<2> {251 %0 = fir.convert %arg0 : (i8) -> !fir.logical<2>252 return %0 : !fir.logical<2>253}254// -----255// CHECK-LABEL: @test_i8_l4256// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8257// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8258// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32259// CHECK: llvm.return [[t2]] : i32260func.func @test_i8_l4(%arg0: i8) -> !fir.logical<4> {261 %0 = fir.convert %arg0 : (i8) -> !fir.logical<4>262 return %0 : !fir.logical<4>263}264// -----265// CHECK-LABEL: @test_i8_l8266// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8267// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8268// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64269// CHECK: llvm.return [[t2]] : i64270func.func @test_i8_l8(%arg0: i8) -> !fir.logical<8> {271 %0 = fir.convert %arg0 : (i8) -> !fir.logical<8>272 return %0 : !fir.logical<8>273}274// -----275// CHECK-LABEL: @test_i16_l1276// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16277// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16278// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8279// CHECK: llvm.return [[t2]] : i8280func.func @test_i16_l1(%arg0: i16) -> !fir.logical<1> {281 %0 = fir.convert %arg0 : (i16) -> !fir.logical<1>282 return %0 : !fir.logical<1>283}284// -----285// CHECK-LABEL: @test_i16_l2286// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16287// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16288// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16289// CHECK: llvm.return [[t2]] : i16290func.func @test_i16_l2(%arg0: i16) -> !fir.logical<2> {291 %0 = fir.convert %arg0 : (i16) -> !fir.logical<2>292 return %0 : !fir.logical<2>293}294// -----295// CHECK-LABEL: @test_i16_l4296// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16297// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16298// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32299// CHECK: llvm.return [[t2]] : i32300func.func @test_i16_l4(%arg0: i16) -> !fir.logical<4> {301 %0 = fir.convert %arg0 : (i16) -> !fir.logical<4>302 return %0 : !fir.logical<4>303}304// -----305// CHECK-LABEL: @test_i16_l8306// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16307// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16308// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64309// CHECK: llvm.return [[t2]] : i64310func.func @test_i16_l8(%arg0: i16) -> !fir.logical<8> {311 %0 = fir.convert %arg0 : (i16) -> !fir.logical<8>312 return %0 : !fir.logical<8>313}314// -----315// CHECK-LABEL: @test_i32_l1316// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32317// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32318// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8319// CHECK: llvm.return [[t2]] : i8320func.func @test_i32_l1(%arg0: i32) -> !fir.logical<1> {321 %0 = fir.convert %arg0 : (i32) -> !fir.logical<1>322 return %0 : !fir.logical<1>323}324// -----325// CHECK-LABEL: @test_i32_l2326// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32327// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32328// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16329// CHECK: llvm.return [[t2]] : i16330func.func @test_i32_l2(%arg0: i32) -> !fir.logical<2> {331 %0 = fir.convert %arg0 : (i32) -> !fir.logical<2>332 return %0 : !fir.logical<2>333}334// -----335// CHECK-LABEL: @test_i32_l4336// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32337// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32338// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32339// CHECK: llvm.return [[t2]] : i32340func.func @test_i32_l4(%arg0: i32) -> !fir.logical<4> {341 %0 = fir.convert %arg0 : (i32) -> !fir.logical<4>342 return %0 : !fir.logical<4>343}344// -----345// CHECK-LABEL: @test_i32_l8346// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32347// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32348// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64349// CHECK: llvm.return [[t2]] : i64350func.func @test_i32_l8(%arg0: i32) -> !fir.logical<8> {351 %0 = fir.convert %arg0 : (i32) -> !fir.logical<8>352 return %0 : !fir.logical<8>353}354// -----355// CHECK-LABEL: @test_i64_l1356// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i64357// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i64358// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8359// CHECK: llvm.return [[t2]] : i8360func.func @test_i64_l1(%arg0: i64) -> !fir.logical<1> {361 %0 = fir.convert %arg0 : (i64) -> !fir.logical<1>362 return %0 : !fir.logical<1>363}364// -----365// CHECK-LABEL: @test_i64_l2366// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i64367// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i64368// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16369// CHECK: llvm.return [[t2]] : i16370func.func @test_i64_l2(%arg0: i64) -> !fir.logical<2> {371 %0 = fir.convert %arg0 : (i64) -> !fir.logical<2>372 return %0 : !fir.logical<2>373}374// -----375// CHECK-LABEL: @test_i64_l4376// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i64377// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i64378// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32379// CHECK: llvm.return [[t2]] : i32380func.func @test_i64_l4(%arg0: i64) -> !fir.logical<4> {381 %0 = fir.convert %arg0 : (i64) -> !fir.logical<4>382 return %0 : !fir.logical<4>383}384// -----385// CHECK-LABEL: @test_i64_l8386// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i64387// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i64388// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64389// CHECK: llvm.return [[t2]] : i64390func.func @test_i64_l8(%arg0: i64) -> !fir.logical<8> {391 %0 = fir.convert %arg0 : (i64) -> !fir.logical<8>392 return %0 : !fir.logical<8>393}394// -----395// CHECK-LABEL: @test_l1_l2396// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8397// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8398// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16399// CHECK: llvm.return [[t2]] : i16400func.func @test_l1_l2(%arg0: !fir.logical<1>) -> !fir.logical<2> {401 %0 = fir.convert %arg0 : (!fir.logical<1>) -> !fir.logical<2>402 return %0 : !fir.logical<2>403}404// -----405// CHECK-LABEL: @test_l1_l4406// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8407// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8408// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32409// CHECK: llvm.return [[t2]] : i32410func.func @test_l1_l4(%arg0: !fir.logical<1>) -> !fir.logical<4> {411 %0 = fir.convert %arg0 : (!fir.logical<1>) -> !fir.logical<4>412 return %0 : !fir.logical<4>413}414// -----415// CHECK-LABEL: @test_l1_l8416// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i8417// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i8418// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64419// CHECK: llvm.return [[t2]] : i64420func.func @test_l1_l8(%arg0: !fir.logical<1>) -> !fir.logical<8> {421 %0 = fir.convert %arg0 : (!fir.logical<1>) -> !fir.logical<8>422 return %0 : !fir.logical<8>423}424// -----425// CHECK-LABEL: @test_l2_l1426// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16427// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16428// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8429// CHECK: llvm.return [[t2]] : i8430func.func @test_l2_l1(%arg0: !fir.logical<2>) -> !fir.logical<1> {431 %0 = fir.convert %arg0 : (!fir.logical<2>) -> !fir.logical<1>432 return %0 : !fir.logical<1>433}434// -----435// CHECK-LABEL: @test_l2_l4436// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16437// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16438// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32439// CHECK: llvm.return [[t2]] : i32440func.func @test_l2_l4(%arg0: !fir.logical<2>) -> !fir.logical<4> {441 %0 = fir.convert %arg0 : (!fir.logical<2>) -> !fir.logical<4>442 return %0 : !fir.logical<4>443}444// -----445// CHECK-LABEL: @test_l2_l8446// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i16447// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i16448// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64449// CHECK: llvm.return [[t2]] : i64450func.func @test_l2_l8(%arg0: !fir.logical<2>) -> !fir.logical<8> {451 %0 = fir.convert %arg0 : (!fir.logical<2>) -> !fir.logical<8>452 return %0 : !fir.logical<8>453}454// -----455// CHECK-LABEL: @test_l4_l1456// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32457// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32458// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8459// CHECK: llvm.return [[t2]] : i8460func.func @test_l4_l1(%arg0: !fir.logical<4>) -> !fir.logical<1> {461 %0 = fir.convert %arg0 : (!fir.logical<4>) -> !fir.logical<1>462 return %0 : !fir.logical<1>463}464// -----465// CHECK-LABEL: @test_l4_l2466// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32467// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32468// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16469// CHECK: llvm.return [[t2]] : i16470func.func @test_l4_l2(%arg0: !fir.logical<4>) -> !fir.logical<2> {471 %0 = fir.convert %arg0 : (!fir.logical<4>) -> !fir.logical<2>472 return %0 : !fir.logical<2>473}474// -----475// CHECK-LABEL: @test_l4_l8476// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i32477// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i32478// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i64479// CHECK: llvm.return [[t2]] : i64480func.func @test_l4_l8(%arg0: !fir.logical<4>) -> !fir.logical<8> {481 %0 = fir.convert %arg0 : (!fir.logical<4>) -> !fir.logical<8>482 return %0 : !fir.logical<8>483}484// -----485// CHECK-LABEL: @test_l8_l1486// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i64487// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i64488// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i8489// CHECK: llvm.return [[t2]] : i8490func.func @test_l8_l1(%arg0: !fir.logical<8>) -> !fir.logical<1> {491 %0 = fir.convert %arg0 : (!fir.logical<8>) -> !fir.logical<1>492 return %0 : !fir.logical<1>493}494// -----495// CHECK-LABEL: @test_l8_l2496// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i64497// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i64498// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i16499// CHECK: llvm.return [[t2]] : i16500func.func @test_l8_l2(%arg0: !fir.logical<8>) -> !fir.logical<2> {501 %0 = fir.convert %arg0 : (!fir.logical<8>) -> !fir.logical<2>502 return %0 : !fir.logical<2>503}504// -----505// CHECK-LABEL: @test_l8_l4506// CHECK: [[t0:%[0-9]*]] = llvm.mlir.constant(0 : i64) : i64507// CHECK: [[t1:%[0-9]*]] = llvm.icmp "ne" %arg0, [[t0]] : i64508// CHECK: [[t2:%[0-9]*]] = llvm.zext [[t1]] : i1 to i32509// CHECK: llvm.return [[t2]] : i32510func.func @test_l8_l4(%arg0: !fir.logical<8>) -> !fir.logical<4> {511 %0 = fir.convert %arg0 : (!fir.logical<8>) -> !fir.logical<4>512 return %0 : !fir.logical<4>513}514